2023-06-10 07:12:37 +00:00

59 lines
38 KiB
Go

//
// Copyright 2020 FoxyUtils ehf. All rights reserved.
//
// This is a commercial product and requires a license to operate.
// A trial license can be obtained at https://unidoc.io
//
// DO NOT EDIT: generated by unitwist Go source code obfuscator.
//
// Use of this source code is governed by the UniDoc End User License Agreement
// terms that can be accessed at https://unidoc.io/eula/
// Package format provides support for parsing and evaluating
// spreadsheetml/Excel number formats.
//
// Internally spreadsheets store numbers and dates values as a text
// representation of a floating point number (e.g. 1.2345). This number is then
// displayed in Excel or another spreadsheet viewer differently depending on the
// number fornat of the cell style applied to the cell.
//
// As an example, the same value of 1.2345 can be displayed as:
// - "1" with format "0"
// - "1.2" with format "0.0"
// - "1.23" with format "0.00"
// - "1.235" with format "0.000"
// - "123%" with format "0%"
// - "1 23/100" with fornat "0 0/100"
// - "1.23E+00" with format "0.00E+00"
// - "29:37:41s" with format `[h]:mm:ss"s"`
package format ;import (_fd "bytes";_a "fmt";_ag "github.com/unidoc/unioffice/common/logger";_e "io";_d "math";_b "strconv";_g "strings";_eg "time";);const _eab int =34;func _cgb (_fdd ,_gbf float64 ,_aeb Format )[]byte {if len (_aeb .Fractional )==0{return nil ;};_gbg :=_b .AppendFloat (nil ,_fdd ,'f',-1,64);if len (_gbg )> 2{_gbg =_gbg [2:];}else {_gbg =nil ;};_ee :=make ([]byte ,0,len (_gbg ));_ee =append (_ee ,'.');_cgg :=0;_add :for _cdg :=0;_cdg < len (_aeb .Fractional );_cdg ++{_fgf :=_cdg ;_eag :=_aeb .Fractional [_cdg ];switch _eag .Type {case FmtTypeDigit :if _fgf < len (_gbg ){_ee =append (_ee ,_gbg [_fgf ]);_cgg ++;}else {_ee =append (_ee ,'0');};case FmtTypeDigitOpt :if _fgf >=0{_ee =append (_ee ,_gbg [_fgf ]);_cgg ++;}else {break _add ;};case FmtTypeLiteral :_ee =append (_ee ,_eag .Literal );default:_ag .Log .Debug ("\u0075\u006e\u0073\u0075\u0070\u0070o\u0072\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065\u0020\u0069\u006e\u0020f\u0072\u0061\u0063\u0074\u0069\u006f\u006ea\u006c\u0020\u0025\u0076",_eag );};};return _ee ;};const _ebc int =0;
// Token is a format token in the Excel format string.
type Token struct{Type FmtType ;Literal byte ;DateTime string ;};
// Number is used to format a number with a format string. If the format
// string is empty, then General number formatting is used which attempts to mimic
// Excel's general formatting.
func Number (v float64 ,f string )string {if f ==""||f =="\u0047e\u006e\u0065\u0072\u0061\u006c"||f =="\u0040"{return NumberGeneric (v );};_ea :=Parse (f );if len (_ea )==1{return _fdg (v ,_ea [0],false );}else if len (_ea )> 1&&v < 0{return _fdg (v ,_ea [1],true );}else if len (_ea )> 2&&v ==0{return _fdg (v ,_ea [2],false );};return _fdg (v ,_ea [0],false );};const _c =1e11;func IsNumber (data string )(_cdb bool ){_fga ,_aae ,_bed :=0,0,len (data );_aeba :=len (data );_eagb ,_cfc ,_gce :=0,0,0;_ =_cfc ;_ =_gce ;_ =_eagb ;{_fga =_ffd ;_eagb =0;_cfc =0;_gce =0;};{if _aae ==_bed {goto _ead ;};switch _fga {case 0:goto _dfa ;case 1:goto _dcb ;case 2:goto _bbb ;case 3:goto _eaf ;case 4:goto _fbf ;case 5:goto _geb ;case 6:goto _bgf ;case 7:goto _ceba ;};goto _bfc ;_cdd :_cfc =_aae ;_aae --;{_cdb =false ;};goto _fda ;_gab :_cfc =_aae ;_aae --;{_cdb =_cfc ==len (data );};goto _fda ;_dea :_cfc =_aae ;_aae --;{_cdb =_cfc ==len (data );};goto _fda ;_ffc :switch _gce {case 2:{_aae =(_cfc )-1;_cdb =_cfc ==len (data );};case 3:{_aae =(_cfc )-1;_cdb =false ;};};goto _fda ;_fda :_eagb =0;if _aae ++;_aae ==_bed {goto _efa ;};_dfa :_eagb =_aae ;switch data [_aae ]{case 43:goto _ecg ;case 45:goto _ecg ;};if 48<=data [_aae ]&&data [_aae ]<=57{goto _ggf ;};goto _aaed ;_aaed :if _aae ++;_aae ==_bed {goto _effc ;};_dcb :goto _aaed ;_ecg :if _aae ++;_aae ==_bed {goto _faee ;};_bbb :if 48<=data [_aae ]&&data [_aae ]<=57{goto _ggf ;};goto _aaed ;_ggf :if _aae ++;_aae ==_bed {goto _adbc ;};_eaf :if data [_aae ]==46{goto _fdf ;};if 48<=data [_aae ]&&data [_aae ]<=57{goto _ggf ;};goto _aaed ;_fdf :if _aae ++;_aae ==_bed {goto _gdbb ;};_fbf :if 48<=data [_aae ]&&data [_aae ]<=57{goto _cb ;};goto _aaed ;_cb :if _aae ++;_aae ==_bed {goto _cef ;};_geb :if data [_aae ]==69{goto _bcb ;};if 48<=data [_aae ]&&data [_aae ]<=57{goto _cb ;};goto _aaed ;_bcb :if _aae ++;_aae ==_bed {goto _adfd ;};_bgf :switch data [_aae ]{case 43:goto _cee ;case 45:goto _cee ;};goto _aaed ;_cee :_cfc =_aae +1;_gce =3;goto _cff ;_dgca :_cfc =_aae +1;_gce =2;goto _cff ;_cff :if _aae ++;_aae ==_bed {goto _fccf ;};_ceba :if 48<=data [_aae ]&&data [_aae ]<=57{goto _dgca ;};goto _aaed ;_bfc :_efa :_fga =0;goto _ead ;_effc :_fga =1;goto _ead ;_faee :_fga =2;goto _ead ;_adbc :_fga =3;goto _ead ;_gdbb :_fga =4;goto _ead ;_cef :_fga =5;goto _ead ;_adfd :_fga =6;goto _ead ;_fccf :_fga =7;goto _ead ;_ead :{};if _aae ==_aeba {switch _fga {case 1:goto _cdd ;case 2:goto _cdd ;case 3:goto _gab ;case 4:goto _cdd ;case 5:goto _dea ;case 6:goto _cdd ;case 7:goto _ffc ;};};};if _fga ==_aee {return false ;};return ;};func _cgea (_de []byte )[]byte {for _fcc :=len (_de )-1;_fcc > 0;_fcc --{if _de [_fcc ]=='9'+1{_de [_fcc ]='0';if _de [_fcc -1]=='.'{_fcc --;};_de [_fcc -1]++;};};if _de [0]=='9'+1{_de [0]='0';copy (_de [1:],_de [0:]);_de [0]='1';};return _de ;};const _fead int =34;func _be (_dc []byte )[]byte {for _bfe :=0;_bfe < len (_dc )/2;_bfe ++{_bd :=len (_dc )-1-_bfe ;_dc [_bfe ],_dc [_bd ]=_dc [_bd ],_dc [_bfe ];};return _dc ;};
// Value formats a value as a number or string depending on if it appears to be
// a number or string.
func Value (v string ,f string )string {if IsNumber (v ){_af ,_ :=_b .ParseFloat (v ,64);return Number (_af ,f );};return String (v ,f );};func (_fca *Lexer )nextFmt (){_fca ._bad =append (_fca ._bad ,_fca ._cbe );_fca ._cbe =Format {}};
// AddToken adds a format token to the format.
func (_ec *Format )AddToken (t FmtType ,l []byte ){if _ec ._ad {_ec ._ad =false ;return ;};switch t {case FmtTypeDecimal :_ec ._fb =true ;case FmtTypeUnderscore :_ec ._ad =true ;case FmtTypeText :_ec .Whole =append (_ec .Whole ,Token {Type :t });case FmtTypeDate ,FmtTypeTime :_ec .Whole =append (_ec .Whole ,Token {Type :t ,DateTime :string (l )});case FmtTypePercent :_ec ._ce =true ;t =FmtTypeLiteral ;l =[]byte {'%'};fallthrough;case FmtTypeDigitOpt :fallthrough;case FmtTypeLiteral ,FmtTypeDigit ,FmtTypeDollar ,FmtTypeComma :if l ==nil {l =[]byte {0};};for _ ,_fg :=range l {if _ec .IsExponential {_ec .Exponent =append (_ec .Exponent ,Token {Type :t ,Literal :_fg });}else if !_ec ._fb {_ec .Whole =append (_ec .Whole ,Token {Type :t ,Literal :_fg });}else {_ec .Fractional =append (_ec .Fractional ,Token {Type :t ,Literal :_fg });};};case FmtTypeDigitOptThousands :_ec ._aa =true ;case FmtTypeFraction :_dg :=_g .Split (string (l ),"\u002f");if len (_dg )==2{_ec ._cd =true ;_ec ._cc ,_ =_b .ParseInt (_dg [1],10,64);for _ ,_cg :=range _dg [1]{if _cg =='?'||_cg =='0'{_ec ._ccd ++;};};};default:_ag .Log .Debug ("\u0075\u006e\u0073u\u0070\u0070\u006f\u0072t\u0065\u0064\u0020\u0070\u0068\u0020\u0074y\u0070\u0065\u0020\u0069\u006e\u0020\u0070\u0061\u0072\u0073\u0065\u0020\u0025\u0076",t );};};func _beg (_baf _eg .Time )_eg .Time {_baf =_baf .UTC ();return _eg .Date (_baf .Year (),_baf .Month (),_baf .Day (),_baf .Hour (),_baf .Minute (),_baf .Second (),_baf .Nanosecond (),_eg .Local );};
// NumberGeneric formats the number with the generic format which attemps to
// mimic Excel's general formatting.
func NumberGeneric (v float64 )string {if _d .Abs (v )>=_c ||_d .Abs (v )<=_ae &&v !=0{return _bge (v );};_aebf :=make ([]byte ,0,15);_aebf =_b .AppendFloat (_aebf ,v ,'f',-1,64);if len (_aebf )> 11{_afge :=_aebf [11]-'0';if _afge >=5&&_afge <=9{_aebf [10]++;_aebf =_aebf [0:11];_aebf =_cgea (_aebf );};_aebf =_aebf [0:11];}else if len (_aebf )==11{if _aebf [len (_aebf )-1]=='9'{_aebf [len (_aebf )-1]++;_aebf =_cgea (_aebf );};};_aebf =_bb (_aebf );return string (_aebf );};
// Format is a parsed number format.
type Format struct{Whole []Token ;Fractional []Token ;Exponent []Token ;IsExponential bool ;_cd bool ;_ce bool ;_eb bool ;_aa bool ;_ad bool ;_fb bool ;_cc int64 ;_ccd int ;};func _fdg (_ccb float64 ,_gdcc Format ,_eaa bool )string {if _gdcc ._eb {return NumberGeneric (_ccb );};_aed :=make ([]byte ,0,20);_afg :=_d .Signbit (_ccb );_fad :=_d .Abs (_ccb );_bg :=int64 (0);_ge :=int64 (0);if _gdcc .IsExponential {for _fad >=10{_ge ++;_fad /=10;};for _fad < 1{_ge --;_fad *=10;};}else if _gdcc ._ce {_fad *=100;}else if _gdcc ._cd {if _gdcc ._cc ==0{_bfg :=_d .Pow (10,float64 (_gdcc ._ccd ));_ed ,_cde :=1.0,1.0;_ =_ed ;for _dfe :=1.0;_dfe < _bfg ;_dfe ++{_ ,_ga :=_d .Modf (_fad *float64 (_dfe ));if _ga < _cde {_cde =_ga ;_ed =_dfe ;if _ga ==0{break ;};};};_gdcc ._cc =int64 (_ed );};_bg =int64 (_fad *float64 (_gdcc ._cc )+0.5);if len (_gdcc .Whole )> 0&&_bg > _gdcc ._cc {_bg =int64 (_fad *float64 (_gdcc ._cc ))%_gdcc ._cc ;_fad -=float64 (_bg )/float64 (_gdcc ._cc );}else {_fad -=float64 (_bg )/float64 (_gdcc ._cc );if _d .Abs (_fad )< 1{_faa :=true ;for _ ,_fag :=range _gdcc .Whole {if _fag .Type ==FmtTypeDigitOpt {continue ;};if _fag .Type ==FmtTypeLiteral &&_fag .Literal ==' '{continue ;};_faa =false ;};if _faa {_gdcc .Whole =nil ;};};};};_beb :=1;for _ ,_dgd :=range _gdcc .Fractional {if _dgd .Type ==FmtTypeDigit ||_dgd .Type ==FmtTypeDigitOpt {_beb ++;};};_fad +=5*_d .Pow10 (-_beb );_ef ,_ca :=_d .Modf (_fad );_aed =append (_aed ,_bac (_ef ,_ccb ,_gdcc )...);_aed =append (_aed ,_cgb (_ca ,_ccb ,_gdcc )...);_aed =append (_aed ,_geg (_ge ,_gdcc )...);if _gdcc ._cd {_aed =_b .AppendInt (_aed ,_bg ,10);_aed =append (_aed ,'/');_aed =_b .AppendInt (_aed ,_gdcc ._cc ,10);};if !_eaa &&_afg {return "\u002d"+string (_aed );};return string (_aed );};var _da =[...]uint8 {0,14,26,41,53,67,81,94,118,135,146,157,172,183};
// String returns the string formatted according to the type. In format strings
// this is the fourth item, where '@' is used as a placeholder for text.
func String (v string ,f string )string {_ebd :=Parse (f );var _gdc Format ;if len (_ebd )==1{_gdc =_ebd [0];}else if len (_ebd )==4{_gdc =_ebd [3];};_gf :=false ;for _ ,_fe :=range _gdc .Whole {if _fe .Type ==FmtTypeText {_gf =true ;};};if !_gf {return v ;};_cdc :=_fd .Buffer {};for _ ,_fa :=range _gdc .Whole {switch _fa .Type {case FmtTypeLiteral :_cdc .WriteByte (_fa .Literal );case FmtTypeText :_cdc .WriteString (v );};};return _cdc .String ();};func _cgd (_bgb _eg .Time ,_agf float64 ,_ccf string )[]byte {_fec :=[]byte {};_abg :=0;for _adg :=0;_adg < len (_ccf );_adg ++{var _eaad string ;if _ccf [_adg ]==':'{_eaad =string (_ccf [_abg :_adg ]);_abg =_adg +1;}else if _adg ==len (_ccf )-1{_eaad =string (_ccf [_abg :_adg +1]);}else {continue ;};switch _eaad {case "\u0064":_fec =_bgb .AppendFormat (_fec ,"\u0032");case "\u0068":_fec =_bgb .AppendFormat (_fec ,"\u0033");case "\u0068\u0068":_fec =_bgb .AppendFormat (_fec ,"\u0031\u0035");case "\u006d":_fec =_bgb .AppendFormat (_fec ,"\u0034");case "\u006d\u006d":_fec =_bgb .AppendFormat (_fec ,"\u0030\u0034");case "\u0073":_fec =_bgb .Round (_eg .Second ).AppendFormat (_fec ,"\u0035");case "\u0073\u002e\u0030":_fec =_bgb .Round (_eg .Second /10).AppendFormat (_fec ,"\u0035\u002e\u0030");case "\u0073\u002e\u0030\u0030":_fec =_bgb .Round (_eg .Second /100).AppendFormat (_fec ,"\u0035\u002e\u0030\u0030");case "\u0073\u002e\u00300\u0030":_fec =_bgb .Round (_eg .Second /1000).AppendFormat (_fec ,"\u0035\u002e\u00300\u0030");case "\u0073\u0073":_fec =_bgb .Round (_eg .Second ).AppendFormat (_fec ,"\u0030\u0035");case "\u0073\u0073\u002e\u0030":_fec =_bgb .Round (_eg .Second /10).AppendFormat (_fec ,"\u0030\u0035\u002e\u0030");case "\u0073\u0073\u002e0\u0030":_fec =_bgb .Round (_eg .Second /100).AppendFormat (_fec ,"\u0030\u0035\u002e0\u0030");case "\u0073\u0073\u002e\u0030\u0030\u0030":_fec =_bgb .Round (_eg .Second /1000).AppendFormat (_fec ,"\u0030\u0035\u002e\u0030\u0030\u0030");case "\u0041\u004d\u002fP\u004d":_fec =_bgb .AppendFormat (_fec ,"\u0050\u004d");case "\u005b\u0068\u005d":_fec =_b .AppendInt (_fec ,int64 (_agf *24),10);case "\u005b\u006d\u005d":_fec =_b .AppendInt (_fec ,int64 (_agf *24*60),10);case "\u005b\u0073\u005d":_fec =_b .AppendInt (_fec ,int64 (_agf *24*60*60),10);case "":default:_ag .Log .Debug ("\u0075\u006e\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064 \u0074\u0069\u006d\u0065\u0020\u0066\u006f\u0072\u006d\u0061t\u0020\u0025\u0073",_eaad );};if _ccf [_adg ]==':'{_fec =append (_fec ,':');};};return _fec ;};func _fea (_eda int64 )int64 {if _eda < 0{return -_eda ;};return _eda ;};const _gd ="\u0046\u006d\u0074\u0054\u0079\u0070\u0065\u004c\u0069\u0074\u0065\u0072a\u006c\u0046\u006d\u0074\u0054\u0079\u0070\u0065\u0044\u0069\u0067\u0069\u0074\u0046\u006d\u0074\u0054y\u0070\u0065\u0044i\u0067\u0069\u0074\u004f\u0070\u0074\u0046\u006d\u0074\u0054\u0079\u0070\u0065\u0043o\u006d\u006d\u0061\u0046\u006d\u0074\u0054\u0079\u0070\u0065\u0044\u0065\u0063\u0069\u006da\u006c\u0046\u006d\u0074\u0054\u0079\u0070\u0065Pe\u0072\u0063e\u006e\u0074\u0046\u006d\u0074\u0054\u0079\u0070e\u0044\u006f\u006c\u006c\u0061\u0072\u0046\u006d\u0074Ty\u0070\u0065\u0044i\u0067\u0069\u0074\u004f\u0070\u0074\u0054\u0068\u006f\u0075\u0073\u0061n\u0064\u0073\u0046\u006d\u0074\u0054\u0079\u0070\u0065\u0055n\u0064\u0065\u0072\u0073c\u006f\u0072\u0065\u0046\u006d\u0074T\u0079\u0070\u0065\u0044\u0061\u0074\u0065\u0046\u006d\u0074\u0054y\u0070e\u0054\u0069\u006d\u0065\u0046\u006d\u0074\u0054\u0079\u0070\u0065\u0046\u0072\u0061\u0063t\u0069\u006f\u006e\u0046\u006dt\u0054\u0079\u0070\u0065\u0054e\u0078\u0074";func _gcb (_abf _eg .Time ,_ged string )[]byte {_acg :=[]byte {};_fae :=0;for _dfc :=0;_dfc < len (_ged );_dfc ++{var _bbd string ;if _ged [_dfc ]=='/'{_bbd =string (_ged [_fae :_dfc ]);_fae =_dfc +1;}else if _dfc ==len (_ged )-1{_bbd =string (_ged [_fae :_dfc +1]);}else {continue ;};switch _bbd {case "\u0079\u0079":_acg =_abf .AppendFormat (_acg ,"\u0030\u0036");case "\u0079\u0079\u0079\u0079":_acg =_abf .AppendFormat (_acg ,"\u0032\u0030\u0030\u0036");case "\u006d":_acg =_abf .AppendFormat (_acg ,"\u0031");case "\u006d\u006d":_acg =_abf .AppendFormat (_acg ,"\u0030\u0031");case "\u006d\u006d\u006d":_acg =_abf .AppendFormat (_acg ,"\u004a\u0061\u006e");case "\u006d\u006d\u006d\u006d":_acg =_abf .AppendFormat (_acg ,"\u004aa\u006e\u0075\u0061\u0072\u0079");case "\u006d\u006d\u006dm\u006d":switch _abf .Month (){case _eg .January ,_eg .July ,_eg .June :_acg =append (_acg ,'J');case _eg .February :_acg =append (_acg ,'M');case _eg .March ,_eg .May :_acg =append (_acg ,'M');case _eg .April ,_eg .August :_acg =append (_acg ,'A');case _eg .September :_acg =append (_acg ,'S');case _eg .October :_acg =append (_acg ,'O');case _eg .November :_acg =append (_acg ,'N');case _eg .December :_acg =append (_acg ,'D');};case "\u0064":_acg =_abf .AppendFormat (_acg ,"\u0032");case "\u0064\u0064":_acg =_abf .AppendFormat (_acg ,"\u0030\u0032");case "\u0064\u0064\u0064":_acg =_abf .AppendFormat (_acg ,"\u004d\u006f\u006e");case "\u0064\u0064\u0064\u0064":_acg =_abf .AppendFormat (_acg ,"\u004d\u006f\u006e\u0064\u0061\u0079");default:_ag .Log .Debug ("\u0075\u006e\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064 \u0064\u0061\u0074\u0065\u0020\u0066\u006f\u0072\u006d\u0061t\u0020\u0025\u0073",_bbd );};if _ged [_dfc ]=='/'{_acg =append (_acg ,'/');};};return _acg ;};const _gda int =0;const _fgfe int =-1;func (_fc FmtType )String ()string {if _fc >=FmtType (len (_da )-1){return _a .Sprintf ("F\u006d\u0074\u0054\u0079\u0070\u0065\u0028\u0025\u0064\u0029",_fc );};return _gd [_da [_fc ]:_da [_fc +1]];};
// FmtType is the type of a format token.
//go:generate stringer -type=FmtType
type FmtType byte ;func _bb (_fbb []byte )[]byte {_cfb :=len (_fbb );_dd :=false ;_gdbg :=false ;for _ecd :=len (_fbb )-1;_ecd >=0;_ecd --{if _fbb [_ecd ]=='0'&&!_gdbg &&!_dd {_cfb =_ecd ;}else if _fbb [_ecd ]=='.'{_dd =true ;}else {_gdbg =true ;};};if _dd &&_gdbg {if _fbb [_cfb -1]=='.'{_cfb --;};return _fbb [0:_cfb ];};return _fbb ;};func (_ebdg *Lexer )Lex (r _e .Reader ){_egd ,_dbc ,_fcd :=0,0,0;_fff :=-1;_ccc ,_cccg ,_eaaf :=0,0,0;_ =_cccg ;_ =_eaaf ;_dgf :=1;_ =_dgf ;_gga :=make ([]byte ,4096);_eac :=false ;for !_eac {_dce :=0;if _ccc > 0{_dce =_dbc -_ccc ;};_dbc =0;_dbg ,_adgc :=r .Read (_gga [_dce :]);if _dbg ==0||_adgc !=nil {_eac =true ;};_fcd =_dbg +_dce ;if _fcd < len (_gga ){_fff =_fcd ;};{_egd =_fead ;_ccc =0;_cccg =0;_eaaf =0;};{if _dbc ==_fcd {goto _bgce ;};switch _egd {case 34:goto _dbcg ;case 35:goto _dgfa ;case 0:goto _egdg ;case 36:goto _ffa ;case 37:goto _ebdd ;case 1:goto _gea ;case 2:goto _bca ;case 38:goto _dge ;case 3:goto _ebcd ;case 4:goto _cdce ;case 39:goto _cgdd ;case 5:goto _gdfe ;case 6:goto _adc ;case 7:goto _ggfd ;case 8:goto _ddb ;case 40:goto _efc ;case 9:goto _ebcg ;case 41:goto _fbc ;case 10:goto _ecgf ;case 42:goto _aab ;case 11:goto _cbec ;case 43:goto _dcea ;case 44:goto _gffa ;case 45:goto _gbd ;case 12:goto _fadf ;case 46:goto _aga ;case 13:goto _ace ;case 14:goto _fdb ;case 15:goto _acgb ;case 16:goto _ega ;case 47:goto _bdb ;case 17:goto _eeb ;case 48:goto _ccce ;case 18:goto _dca ;case 19:goto _dafd ;case 20:goto _bfcf ;case 49:goto _bec ;case 50:goto _eggg ;case 21:goto _acec ;case 22:goto _dde ;case 23:goto _cgef ;case 24:goto _cggfg ;case 25:goto _abb ;case 51:goto _ege ;case 26:goto _gabd ;case 52:goto _cdgf ;case 53:goto _eae ;case 54:goto _dae ;case 55:goto _gcbg ;case 56:goto _bgab ;case 57:goto _cbd ;case 27:goto _gcg ;case 28:goto _egca ;case 29:goto _agg ;case 30:goto _cec ;case 31:goto _edea ;case 58:goto _ggdg ;case 32:goto _bbg ;case 59:goto _ddf ;case 33:goto _fgb ;case 60:goto _edc ;case 61:goto _gfba ;case 62:goto _bgaa ;};goto _gegg ;_gaa :switch _eaaf {case 2:{_dbc =(_cccg )-1;_ebdg ._cbe .AddToken (FmtTypeDigit ,nil );};case 3:{_dbc =(_cccg )-1;_ebdg ._cbe .AddToken (FmtTypeDigitOpt ,nil );};case 5:{_dbc =(_cccg )-1;};case 8:{_dbc =(_cccg )-1;_ebdg ._cbe .AddToken (FmtTypePercent ,nil );};case 13:{_dbc =(_cccg )-1;_ebdg ._cbe .AddToken (FmtTypeFraction ,_gga [_ccc :_cccg ]);};case 14:{_dbc =(_cccg )-1;_ebdg ._cbe .AddToken (FmtTypeDate ,_gga [_ccc :_cccg ]);};case 15:{_dbc =(_cccg )-1;_ebdg ._cbe .AddToken (FmtTypeTime ,_gga [_ccc :_cccg ]);};case 16:{_dbc =(_cccg )-1;_ebdg ._cbe .AddToken (FmtTypeTime ,_gga [_ccc :_cccg ]);};case 18:{_dbc =(_cccg )-1;};case 20:{_dbc =(_cccg )-1;_ebdg ._cbe .AddToken (FmtTypeLiteral ,_gga [_ccc :_cccg ]);};case 21:{_dbc =(_cccg )-1;_ebdg ._cbe .AddToken (FmtTypeLiteral ,_gga [_ccc +1:_cccg -1]);};};goto _ebe ;_gdg :_dbc =(_cccg )-1;{_ebdg ._cbe .AddToken (FmtTypeFraction ,_gga [_ccc :_cccg ]);};goto _ebe ;_fccg :_dbc =(_cccg )-1;{_ebdg ._cbe .AddToken (FmtTypeDigitOpt ,nil );};goto _ebe ;_babe :_cccg =_dbc +1;{_ebdg ._cbe .AddToken (FmtTypeDigitOptThousands ,nil );};goto _ebe ;_ecf :_dbc =(_cccg )-1;{_ebdg ._cbe .AddToken (FmtTypePercent ,nil );};goto _ebe ;_fcab :_dbc =(_cccg )-1;{_ebdg ._cbe .AddToken (FmtTypeDate ,_gga [_ccc :_cccg ]);};goto _ebe ;_def :_dbc =(_cccg )-1;{_ebdg ._cbe .AddToken (FmtTypeDigit ,nil );};goto _ebe ;_ccbe :_dbc =(_cccg )-1;{_ebdg ._cbe .AddToken (FmtTypeTime ,_gga [_ccc :_cccg ]);};goto _ebe ;_efe :_dbc =(_cccg )-1;{_ebdg ._cbe .AddToken (FmtTypeLiteral ,_gga [_ccc :_cccg ]);};goto _ebe ;_cgga :_cccg =_dbc +1;{_ebdg ._cbe ._eb =true ;};goto _ebe ;_deb :_cccg =_dbc +1;{_ebdg ._cbe .AddToken (FmtTypeLiteral ,_gga [_ccc :_cccg ]);};goto _ebe ;_gdag :_cccg =_dbc +1;{_ebdg ._cbe .AddToken (FmtTypeDollar ,nil );};goto _ebe ;_gebf :_cccg =_dbc +1;{_ebdg ._cbe .AddToken (FmtTypeComma ,nil );};goto _ebe ;_cda :_cccg =_dbc +1;{_ebdg ._cbe .AddToken (FmtTypeDecimal ,nil );};goto _ebe ;_dgfd :_cccg =_dbc +1;{_ebdg .nextFmt ();};goto _ebe ;_eed :_cccg =_dbc +1;{_ebdg ._cbe .AddToken (FmtTypeText ,nil );};goto _ebe ;_ecfg :_cccg =_dbc +1;{_ebdg ._cbe .AddToken (FmtTypeUnderscore ,nil );};goto _ebe ;_ffg :_cccg =_dbc ;_dbc --;{_ebdg ._cbe .AddToken (FmtTypeLiteral ,_gga [_ccc :_cccg ]);};goto _ebe ;_ecdf :_cccg =_dbc ;_dbc --;{_ebdg ._cbe .AddToken (FmtTypeLiteral ,_gga [_ccc +1:_cccg -1]);};goto _ebe ;_agfb :_cccg =_dbc ;_dbc --;{_ebdg ._cbe .AddToken (FmtTypeDigitOpt ,nil );};goto _ebe ;_fdad :_cccg =_dbc ;_dbc --;{_ebdg ._cbe .AddToken (FmtTypeFraction ,_gga [_ccc :_cccg ]);};goto _ebe ;_gfg :_cccg =_dbc ;_dbc --;{_ebdg ._cbe .AddToken (FmtTypePercent ,nil );};goto _ebe ;_bfd :_cccg =_dbc ;_dbc --;{_ebdg ._cbe .AddToken (FmtTypeDate ,_gga [_ccc :_cccg ]);};goto _ebe ;_ddc :_cccg =_dbc ;_dbc --;{_ebdg ._cbe .AddToken (FmtTypeDigit ,nil );};goto _ebe ;_ccdb :_cccg =_dbc ;_dbc --;{_ebdg ._cbe .AddToken (FmtTypeTime ,_gga [_ccc :_cccg ]);};goto _ebe ;_gbc :_cccg =_dbc ;_dbc --;{};goto _ebe ;_gba :_cccg =_dbc +1;{_ebdg ._cbe .IsExponential =true ;};goto _ebe ;_gadc :_cccg =_dbc +1;{_ebdg ._cbe .AddToken (FmtTypeLiteral ,_gga [_ccc +1:_cccg ]);};goto _ebe ;_ebe :_ccc =0;if _dbc ++;_dbc ==_fcd {goto _bcc ;};_dbcg :_ccc =_dbc ;switch _gga [_dbc ]{case 34:goto _cggf ;case 35:goto _gac ;case 36:goto _gdag ;case 37:goto _ggeb ;case 44:goto _gebf ;case 46:goto _cda ;case 47:goto _gfb ;case 48:goto _bgbd ;case 58:goto _ada ;case 59:goto _dgfd ;case 63:goto _eebe ;case 64:goto _eed ;case 65:goto _bbf ;case 69:goto _dgg ;case 71:goto _aeee ;case 91:goto _gcc ;case 92:goto _fbcc ;case 95:goto _ecfg ;case 100:goto _gfb ;case 104:goto _ada ;case 109:goto _egfb ;case 115:goto _gace ;case 121:goto _gdbd ;};if 49<=_gga [_dbc ]&&_gga [_dbc ]<=57{goto _gfgd ;};goto _deb ;_cggf :_cccg =_dbc +1;_eaaf =20;goto _cccd ;_cccd :if _dbc ++;_dbc ==_fcd {goto _gec ;};_dgfa :if _gga [_dbc ]==34{goto _ebb ;};goto _edg ;_edg :if _dbc ++;_dbc ==_fcd {goto _face ;};_egdg :if _gga [_dbc ]==34{goto _ebb ;};goto _edg ;_ebb :_cccg =_dbc +1;_eaaf =21;goto _fffe ;_fffe :if _dbc ++;_dbc ==_fcd {goto _fdde ;};_ffa :if _gga [_dbc ]==34{goto _edg ;};goto _ecdf ;_gac :_cccg =_dbc +1;_eaaf =3;goto _dda ;_dda :if _dbc ++;_dbc ==_fcd {goto _gfbb ;};_ebdd :switch _gga [_dbc ]{case 35:goto _bcbg ;case 37:goto _bcbg ;case 44:goto _gcd ;case 47:goto _feea ;case 48:goto _bcbg ;case 63:goto _bcbg ;};goto _agfb ;_bcbg :if _dbc ++;_dbc ==_fcd {goto _ded ;};_gea :switch _gga [_dbc ]{case 35:goto _bcbg ;case 37:goto _bcbg ;case 47:goto _feea ;case 48:goto _bcbg ;case 63:goto _bcbg ;};goto _gaa ;_feea :if _dbc ++;_dbc ==_fcd {goto _cffd ;};_bca :switch _gga [_dbc ]{case 35:goto _aec ;case 37:goto _ffdd ;case 48:goto _eacc ;case 63:goto _aec ;};if 49<=_gga [_dbc ]&&_gga [_dbc ]<=57{goto _cedb ;};goto _gaa ;_aec :_cccg =_dbc +1;goto _egc ;_egc :if _dbc ++;_dbc ==_fcd {goto _eca ;};_dge :switch _gga [_dbc ]{case 35:goto _aec ;case 37:goto _aec ;case 44:goto _aec ;case 46:goto _aec ;case 48:goto _aec ;case 63:goto _aec ;case 65:goto _ece ;};goto _fdad ;_ece :if _dbc ++;_dbc ==_fcd {goto _bada ;};_ebcd :switch _gga [_dbc ]{case 47:goto _dgfg ;case 77:goto _ggd ;};goto _gdg ;_dgfg :if _dbc ++;_dbc ==_fcd {goto _gcee ;};_cdce :if _gga [_dbc ]==80{goto _fab ;};goto _gdg ;_fab :_cccg =_dbc +1;goto _dbge ;_dbge :if _dbc ++;_dbc ==_fcd {goto _bede ;};_cgdd :if _gga [_dbc ]==65{goto _ece ;};goto _fdad ;_ggd :if _dbc ++;_dbc ==_fcd {goto _fgg ;};_gdfe :if _gga [_dbc ]==47{goto _dfcb ;};goto _gdg ;_dfcb :if _dbc ++;_dbc ==_fcd {goto _afed ;};_adc :if _gga [_dbc ]==80{goto _bgc ;};goto _gdg ;_bgc :if _dbc ++;_dbc ==_fcd {goto _bfdc ;};_ggfd :if _gga [_dbc ]==77{goto _fab ;};goto _gdg ;_ffdd :if _dbc ++;_dbc ==_fcd {goto _gdcb ;};_ddb :switch _gga [_dbc ]{case 35:goto _gcba ;case 37:goto _dcd ;case 63:goto _gcba ;};if 48<=_gga [_dbc ]&&_gga [_dbc ]<=57{goto _bga ;};goto _gaa ;_gcba :_cccg =_dbc +1;goto _ggb ;_ggb :if _dbc ++;_dbc ==_fcd {goto _aeec ;};_efc :switch _gga [_dbc ]{case 35:goto _aec ;case 37:goto _efb ;case 44:goto _aec ;case 46:goto _aec ;case 48:goto _aec ;case 63:goto _aec ;case 65:goto _ece ;};goto _fdad ;_efb :if _dbc ++;_dbc ==_fcd {goto _fcdb ;};_ebcg :switch _gga [_dbc ]{case 35:goto _efae ;case 44:goto _efae ;case 46:goto _efae ;case 48:goto _efae ;case 63:goto _efae ;};goto _gdg ;_efae :_cccg =_dbc +1;goto _adcb ;_adcb :if _dbc ++;_dbc ==_fcd {goto _agca ;};_fbc :switch _gga [_dbc ]{case 35:goto _efae ;case 44:goto _efae ;case 46:goto _efae ;case 48:goto _efae ;case 63:goto _efae ;case 65:goto _ece ;};goto _fdad ;_dcd :if _dbc ++;_dbc ==_fcd {goto _dcfc ;};_ecgf :if _gga [_dbc ]==37{goto _dcd ;};if 48<=_gga [_dbc ]&&_gga [_dbc ]<=57{goto _bga ;};goto _gaa ;_bga :_cccg =_dbc +1;_eaaf =13;goto _gaad ;_gaad :if _dbc ++;_dbc ==_fcd {goto _efce ;};_aab :switch _gga [_dbc ]{case 35:goto _aec ;case 37:goto _cdfb ;case 44:goto _aec ;case 46:goto _aec ;case 48:goto _gff ;case 63:goto _aec ;case 65:goto _ece ;};if 49<=_gga [_dbc ]&&_gga [_dbc ]<=57{goto _bga ;};goto _fdad ;_cdfb :if _dbc ++;_dbc ==_fcd {goto _ebbe ;};_cbec :switch _gga [_dbc ]{case 35:goto _efae ;case 37:goto _dcd ;case 44:goto _efae ;case 46:goto _efae ;case 63:goto _efae ;};if 48<=_gga [_dbc ]&&_gga [_dbc ]<=57{goto _bga ;};goto _gdg ;_gff :_cccg =_dbc +1;goto _gbe ;_gbe :if _dbc ++;_dbc ==_fcd {goto _cad ;};_dcea :switch _gga [_dbc ]{case 35:goto _aec ;case 37:goto _gff ;case 44:goto _aec ;case 46:goto _aec ;case 48:goto _gff ;case 63:goto _aec ;case 65:goto _ece ;};if 49<=_gga [_dbc ]&&_gga [_dbc ]<=57{goto _bga ;};goto _fdad ;_eacc :_cccg =_dbc +1;goto _gge ;_gge :if _dbc ++;_dbc ==_fcd {goto _defe ;};_gffa :switch _gga [_dbc ]{case 35:goto _aec ;case 37:goto _gff ;case 44:goto _aec ;case 46:goto _aec ;case 48:goto _eacc ;case 63:goto _aec ;case 65:goto _ece ;};if 49<=_gga [_dbc ]&&_gga [_dbc ]<=57{goto _cedb ;};goto _fdad ;_cedb :_cccg =_dbc +1;goto _bae ;_bae :if _dbc ++;_dbc ==_fcd {goto _gfbf ;};_gbd :switch _gga [_dbc ]{case 35:goto _aec ;case 37:goto _bga ;case 44:goto _aec ;case 46:goto _aec ;case 48:goto _eacc ;case 63:goto _aec ;case 65:goto _ece ;};if 49<=_gga [_dbc ]&&_gga [_dbc ]<=57{goto _cedb ;};goto _fdad ;_gcd :if _dbc ++;_dbc ==_fcd {goto _eceg ;};_fadf :if _gga [_dbc ]==35{goto _babe ;};goto _fccg ;_ggeb :_cccg =_dbc +1;_eaaf =8;goto _geba ;_geba :if _dbc ++;_dbc ==_fcd {goto _fgd ;};_aga :switch _gga [_dbc ]{case 35:goto _ceg ;case 37:goto _dcf ;case 48:goto _aea ;case 63:goto _ceg ;};if 49<=_gga [_dbc ]&&_gga [_dbc ]<=57{goto _dec ;};goto _gfg ;_ceg :if _dbc ++;_dbc ==_fcd {goto _bdd ;};_ace :switch _gga [_dbc ]{case 35:goto _ceg ;case 47:goto _feea ;case 48:goto _ceg ;case 63:goto _ceg ;};goto _ecf ;_dcf :if _dbc ++;_dbc ==_fcd {goto _dcg ;};_fdb :if _gga [_dbc ]==37{goto _dcf ;};if 48<=_gga [_dbc ]&&_gga [_dbc ]<=57{goto _dec ;};goto _gaa ;_dec :if _dbc ++;_dbc ==_fcd {goto _gbb ;};_acgb :switch _gga [_dbc ]{case 37:goto _dcf ;case 47:goto _feea ;};if 48<=_gga [_dbc ]&&_gga [_dbc ]<=57{goto _dec ;};goto _gaa ;_aea :if _dbc ++;_dbc ==_fcd {goto _ffe ;};_ega :switch _gga [_dbc ]{case 35:goto _ceg ;case 37:goto _dcf ;case 47:goto _feea ;case 48:goto _aea ;case 63:goto _ceg ;};if 49<=_gga [_dbc ]&&_gga [_dbc ]<=57{goto _dec ;};goto _ecf ;_gfb :_cccg =_dbc +1;goto _afd ;_afd :if _dbc ++;_dbc ==_fcd {goto _ggfc ;};_bdb :switch _gga [_dbc ]{case 47:goto _gfb ;case 100:goto _gfb ;case 109:goto _gfb ;case 121:goto _cdbf ;};goto _bfd ;_cdbf :if _dbc ++;_dbc ==_fcd {goto _agcg ;};_eeb :if _gga [_dbc ]==121{goto _gfb ;};goto _fcab ;_bgbd :_cccg =_dbc +1;_eaaf =2;goto _egbd ;_egbd :if _dbc ++;_dbc ==_fcd {goto _ecac ;};_ccce :switch _gga [_dbc ]{case 35:goto _bcbg ;case 37:goto _aabf ;case 47:goto _feea ;case 48:goto _ede ;case 63:goto _bcbg ;};if 49<=_gga [_dbc ]&&_gga [_dbc ]<=57{goto _ddad ;};goto _ddc ;_aabf :if _dbc ++;_dbc ==_fcd {goto _debd ;};_dca :switch _gga [_dbc ]{case 35:goto _bcbg ;case 37:goto _aabf ;case 47:goto _feea ;case 48:goto _aabf ;case 63:goto _bcbg ;};if 49<=_gga [_dbc ]&&_gga [_dbc ]<=57{goto _dec ;};goto _def ;_ede :if _dbc ++;_dbc ==_fcd {goto _dcaa ;};_dafd :switch _gga [_dbc ]{case 35:goto _bcbg ;case 37:goto _aabf ;case 47:goto _feea ;case 48:goto _ede ;case 63:goto _bcbg ;};if 49<=_gga [_dbc ]&&_gga [_dbc ]<=57{goto _ddad ;};goto _def ;_ddad :if _dbc ++;_dbc ==_fcd {goto _eafb ;};_bfcf :switch _gga [_dbc ]{case 37:goto _dec ;case 47:goto _feea ;};if 48<=_gga [_dbc ]&&_gga [_dbc ]<=57{goto _ddad ;};goto _gaa ;_gfgd :_cccg =_dbc +1;_eaaf =20;goto _aede ;_aede :if _dbc ++;_dbc ==_fcd {goto _eeeb ;};_bec :switch _gga [_dbc ]{case 37:goto _dec ;case 47:goto _feea ;};if 48<=_gga [_dbc ]&&_gga [_dbc ]<=57{goto _ddad ;};goto _ffg ;_ada :_cccg =_dbc +1;_eaaf =15;goto _eee ;_eee :if _dbc ++;_dbc ==_fcd {goto _cded ;};_eggg :switch _gga [_dbc ]{case 58:goto _ada ;case 65:goto _dfb ;case 104:goto _ada ;case 109:goto _ada ;case 115:goto _gace ;};goto _ccdb ;_dfb :if _dbc ++;_dbc ==_fcd {goto _abff ;};_acec :switch _gga [_dbc ]{case 47:goto _gbda ;case 77:goto _agag ;};goto _gaa ;_gbda :if _dbc ++;_dbc ==_fcd {goto _eacg ;};_dde :if _gga [_dbc ]==80{goto _ada ;};goto _gaa ;_agag :if _dbc ++;_dbc ==_fcd {goto _fdfd ;};_cgef :if _gga [_dbc ]==47{goto _eabb ;};goto _gaa ;_eabb :if _dbc ++;_dbc ==_fcd {goto _bfce ;};_cggfg :if _gga [_dbc ]==80{goto _fbbb ;};goto _gaa ;_fbbb :if _dbc ++;_dbc ==_fcd {goto _aaf ;};_abb :if _gga [_dbc ]==77{goto _ada ;};goto _gaa ;_gace :_cccg =_dbc +1;_eaaf =15;goto _adfe ;_adfe :if _dbc ++;_dbc ==_fcd {goto _cecb ;};_ege :switch _gga [_dbc ]{case 46:goto _dafa ;case 58:goto _ada ;case 65:goto _dfb ;case 104:goto _ada ;case 109:goto _ada ;case 115:goto _gace ;};goto _ccdb ;_dafa :if _dbc ++;_dbc ==_fcd {goto _abge ;};_gabd :if _gga [_dbc ]==48{goto _fcg ;};goto _ccbe ;_fcg :_cccg =_dbc +1;_eaaf =15;goto _gbgc ;_gbgc :if _dbc ++;_dbc ==_fcd {goto _faf ;};_cdgf :switch _gga [_dbc ]{case 48:goto _fdc ;case 58:goto _ada ;case 65:goto _dfb ;case 104:goto _ada ;case 109:goto _ada ;case 115:goto _gace ;};goto _ccdb ;_fdc :_cccg =_dbc +1;_eaaf =15;goto _bff ;_bff :if _dbc ++;_dbc ==_fcd {goto _efbe ;};_eae :switch _gga [_dbc ]{case 48:goto _ada ;case 58:goto _ada ;case 65:goto _dfb ;case 104:goto _ada ;case 109:goto _ada ;case 115:goto _gace ;};goto _ccdb ;_eebe :_cccg =_dbc +1;_eaaf =5;goto _cbc ;_cbc :if _dbc ++;_dbc ==_fcd {goto _bcbc ;};_dae :switch _gga [_dbc ]{case 35:goto _bcbg ;case 37:goto _bcbg ;case 47:goto _feea ;case 48:goto _bcbg ;case 63:goto _bcbg ;};goto _gbc ;_bbf :_cccg =_dbc +1;_eaaf =20;goto _dafc ;_dafc :if _dbc ++;_dbc ==_fcd {goto _ddeb ;};_gcbg :switch _gga [_dbc ]{case 47:goto _gbda ;case 77:goto _agag ;};goto _ffg ;_dgg :if _dbc ++;_dbc ==_fcd {goto _cbg ;};_bgab :switch _gga [_dbc ]{case 43:goto _gba ;case 45:goto _gba ;};goto _ffg ;_aeee :_cccg =_dbc +1;goto _eade ;_eade :if _dbc ++;_dbc ==_fcd {goto _bgg ;};_cbd :if _gga [_dbc ]==101{goto _cae ;};goto _ffg ;_cae :if _dbc ++;_dbc ==_fcd {goto _bgeb ;};_gcg :if _gga [_dbc ]==110{goto _fcac ;};goto _efe ;_fcac :if _dbc ++;_dbc ==_fcd {goto _dcc ;};_egca :if _gga [_dbc ]==101{goto _fbfd ;};goto _efe ;_fbfd :if _dbc ++;_dbc ==_fcd {goto _efaa ;};_agg :if _gga [_dbc ]==114{goto _aad ;};goto _efe ;_aad :if _dbc ++;_dbc ==_fcd {goto _cggb ;};_cec :if _gga [_dbc ]==97{goto _ggdd ;};goto _efe ;_ggdd :if _dbc ++;_dbc ==_fcd {goto _bedg ;};_edea :if _gga [_dbc ]==108{goto _cgga ;};goto _efe ;_gcc :_cccg =_dbc +1;_eaaf =20;goto _agac ;_agac :if _dbc ++;_dbc ==_fcd {goto _cbb ;};_ggdg :switch _gga [_dbc ]{case 104:goto _bdcc ;case 109:goto _bdcc ;case 115:goto _bdcc ;};goto _age ;_age :if _dbc ++;_dbc ==_fcd {goto _gcdg ;};_bbg :if _gga [_dbc ]==93{goto _ddae ;};goto _age ;_ddae :_cccg =_dbc +1;_eaaf =18;goto _bdbb ;_fagd :_cccg =_dbc +1;_eaaf =16;goto _bdbb ;_bdbb :if _dbc ++;_dbc ==_fcd {goto _aacf ;};_ddf :if _gga [_dbc ]==93{goto _ddae ;};goto _age ;_bdcc :if _dbc ++;_dbc ==_fcd {goto _cfbd ;};_fgb :if _gga [_dbc ]==93{goto _fagd ;};goto _age ;_fbcc :if _dbc ++;_dbc ==_fcd {goto _dfgg ;};_edc :goto _gadc ;_egfb :_cccg =_dbc +1;_eaaf =14;goto _ecgg ;_ecgg :if _dbc ++;_dbc ==_fcd {goto _egag ;};_gfba :switch _gga [_dbc ]{case 47:goto _gfb ;case 58:goto _ada ;case 65:goto _dfb ;case 100:goto _gfb ;case 104:goto _ada ;case 109:goto _egfb ;case 115:goto _gace ;case 121:goto _cdbf ;};goto _bfd ;_gdbd :if _dbc ++;_dbc ==_fcd {goto _aff ;};_bgaa :if _gga [_dbc ]==121{goto _gfb ;};goto _ffg ;_gegg :_bcc :_egd =34;goto _bgce ;_gec :_egd =35;goto _bgce ;_face :_egd =0;goto _bgce ;_fdde :_egd =36;goto _bgce ;_gfbb :_egd =37;goto _bgce ;_ded :_egd =1;goto _bgce ;_cffd :_egd =2;goto _bgce ;_eca :_egd =38;goto _bgce ;_bada :_egd =3;goto _bgce ;_gcee :_egd =4;goto _bgce ;_bede :_egd =39;goto _bgce ;_fgg :_egd =5;goto _bgce ;_afed :_egd =6;goto _bgce ;_bfdc :_egd =7;goto _bgce ;_gdcb :_egd =8;goto _bgce ;_aeec :_egd =40;goto _bgce ;_fcdb :_egd =9;goto _bgce ;_agca :_egd =41;goto _bgce ;_dcfc :_egd =10;goto _bgce ;_efce :_egd =42;goto _bgce ;_ebbe :_egd =11;goto _bgce ;_cad :_egd =43;goto _bgce ;_defe :_egd =44;goto _bgce ;_gfbf :_egd =45;goto _bgce ;_eceg :_egd =12;goto _bgce ;_fgd :_egd =46;goto _bgce ;_bdd :_egd =13;goto _bgce ;_dcg :_egd =14;goto _bgce ;_gbb :_egd =15;goto _bgce ;_ffe :_egd =16;goto _bgce ;_ggfc :_egd =47;goto _bgce ;_agcg :_egd =17;goto _bgce ;_ecac :_egd =48;goto _bgce ;_debd :_egd =18;goto _bgce ;_dcaa :_egd =19;goto _bgce ;_eafb :_egd =20;goto _bgce ;_eeeb :_egd =49;goto _bgce ;_cded :_egd =50;goto _bgce ;_abff :_egd =21;goto _bgce ;_eacg :_egd =22;goto _bgce ;_fdfd :_egd =23;goto _bgce ;_bfce :_egd =24;goto _bgce ;_aaf :_egd =25;goto _bgce ;_cecb :_egd =51;goto _bgce ;_abge :_egd =26;goto _bgce ;_faf :_egd =52;goto _bgce ;_efbe :_egd =53;goto _bgce ;_bcbc :_egd =54;goto _bgce ;_ddeb :_egd =55;goto _bgce ;_cbg :_egd =56;goto _bgce ;_bgg :_egd =57;goto _bgce ;_bgeb :_egd =27;goto _bgce ;_dcc :_egd =28;goto _bgce ;_efaa :_egd =29;goto _bgce ;_cggb :_egd =30;goto _bgce ;_bedg :_egd =31;goto _bgce ;_cbb :_egd =58;goto _bgce ;_gcdg :_egd =32;goto _bgce ;_aacf :_egd =59;goto _bgce ;_cfbd :_egd =33;goto _bgce ;_dfgg :_egd =60;goto _bgce ;_egag :_egd =61;goto _bgce ;_aff :_egd =62;goto _bgce ;_bgce :{};if _dbc ==_fff {switch _egd {case 35:goto _ffg ;case 0:goto _gaa ;case 36:goto _ecdf ;case 37:goto _agfb ;case 1:goto _gaa ;case 2:goto _gaa ;case 38:goto _fdad ;case 3:goto _gdg ;case 4:goto _gdg ;case 39:goto _fdad ;case 5:goto _gdg ;case 6:goto _gdg ;case 7:goto _gdg ;case 8:goto _gaa ;case 40:goto _fdad ;case 9:goto _gdg ;case 41:goto _fdad ;case 10:goto _gaa ;case 42:goto _fdad ;case 11:goto _gdg ;case 43:goto _fdad ;case 44:goto _fdad ;case 45:goto _fdad ;case 12:goto _fccg ;case 46:goto _gfg ;case 13:goto _ecf ;case 14:goto _gaa ;case 15:goto _gaa ;case 16:goto _ecf ;case 47:goto _bfd ;case 17:goto _fcab ;case 48:goto _ddc ;case 18:goto _def ;case 19:goto _def ;case 20:goto _gaa ;case 49:goto _ffg ;case 50:goto _ccdb ;case 21:goto _gaa ;case 22:goto _gaa ;case 23:goto _gaa ;case 24:goto _gaa ;case 25:goto _gaa ;case 51:goto _ccdb ;case 26:goto _ccbe ;case 52:goto _ccdb ;case 53:goto _ccdb ;case 54:goto _gbc ;case 55:goto _ffg ;case 56:goto _ffg ;case 57:goto _ffg ;case 27:goto _efe ;case 28:goto _efe ;case 29:goto _efe ;case 30:goto _efe ;case 31:goto _efe ;case 58:goto _ffg ;case 32:goto _gaa ;case 59:goto _gaa ;case 33:goto _efe ;case 60:goto _ffg ;case 61:goto _bfd ;case 62:goto _ffg ;};};};if _ccc > 0{copy (_gga [0:],_gga [_ccc :]);};};_ =_fff ;if _egd ==_aee {_ag .Log .Debug ("\u0066o\u0072m\u0061\u0074\u0020\u0070\u0061r\u0073\u0065 \u0065\u0072\u0072\u006f\u0072");};};type Lexer struct{_cbe Format ;_bad []Format ;};const (FmtTypeLiteral FmtType =iota ;FmtTypeDigit ;FmtTypeDigitOpt ;FmtTypeComma ;FmtTypeDecimal ;FmtTypePercent ;FmtTypeDollar ;FmtTypeDigitOptThousands ;FmtTypeUnderscore ;FmtTypeDate ;FmtTypeTime ;FmtTypeFraction ;FmtTypeText ;);func _bac (_bag ,_afga float64 ,_egb Format )[]byte {if len (_egb .Whole )==0{return nil ;};_fbe :=_eg .Date (1899,12,30,0,0,0,0,_eg .UTC );_cge :=_fbe .Add (_eg .Duration (_afga *float64 (24*_eg .Hour )));_cge =_beg (_cge );_ab :=_b .AppendFloat (nil ,_bag ,'f',-1,64);_eff :=make ([]byte ,0,len (_ab ));_gb :=0;_cdf :=1;_db :for _daf :=len (_egb .Whole )-1;_daf >=0;_daf --{_edb :=len (_ab )-1-_gb ;_agc :=_egb .Whole [_daf ];switch _agc .Type {case FmtTypeDigit :if _edb >=0{_eff =append (_eff ,_ab [_edb ]);_gb ++;_cdf =_daf ;}else {_eff =append (_eff ,'0');};case FmtTypeDigitOpt :if _edb >=0{_eff =append (_eff ,_ab [_edb ]);_gb ++;_cdf =_daf ;}else {for _adf :=_daf ;_adf >=0;_adf --{_fee :=_egb .Whole [_adf ];if _fee .Type ==FmtTypeLiteral {_eff =append (_eff ,_fee .Literal );};};break _db ;};case FmtTypeDollar :for _bc :=_gb ;_bc < len (_ab );_bc ++{_eff =append (_eff ,_ab [len (_ab )-1-_bc ]);_gb ++;};_eff =append (_eff ,'$');case FmtTypeComma :if !_egb ._aa {_eff =append (_eff ,',');};case FmtTypeLiteral :_eff =append (_eff ,_agc .Literal );case FmtTypeDate :_eff =append (_eff ,_be (_gcb (_cge ,_agc .DateTime ))...);case FmtTypeTime :_eff =append (_eff ,_be (_cgd (_cge ,_afga ,_agc .DateTime ))...);default:_ag .Log .Debug ("\u0075\u006e\u0073\u0075p\u0070\u006f\u0072\u0074\u0065\u0064\u0020\u0074\u0079\u0070e\u0020i\u006e\u0020\u0077\u0068\u006f\u006c\u0065 \u0025\u0076",_agc );};};_fcb :=_be (_eff );if _gb < len (_ab )&&(_gb !=0||_egb ._fb ){_ac :=len (_ab )-_gb ;_bdf :=make ([]byte ,len (_fcb )+_ac );copy (_bdf ,_fcb [0:_cdf ]);copy (_bdf [_cdf :],_ab [0:]);copy (_bdf [_cdf +_ac :],_fcb [_cdf :]);_fcb =_bdf ;};if _egb ._aa {_bdc :=_fd .Buffer {};_ff :=0;for _cgf :=len (_fcb )-1;_cgf >=0;_cgf --{if !(_fcb [_cgf ]>='0'&&_fcb [_cgf ]<='9'){_ff ++;}else {break ;};};for _egg :=0;_egg < len (_fcb );_egg ++{_ced :=(len (_fcb )-_egg -_ff );if _ced %3==0&&_ced !=0&&_egg !=0{_bdc .WriteByte (',');};_bdc .WriteByte (_fcb [_egg ]);};_fcb =_bdc .Bytes ();};return _fcb ;};const _ffd int =0;const _ae =1e-10;func Parse (s string )[]Format {_dfg :=Lexer {};_dfg .Lex (_g .NewReader (s ));_dfg ._bad =append (_dfg ._bad ,_dfg ._cbe );return _dfg ._bad ;};func _geg (_cgee int64 ,_gc Format )[]byte {if !_gc .IsExponential ||len (_gc .Exponent )==0{return nil ;};_gdf :=_b .AppendInt (nil ,_fea (_cgee ),10);_fagb :=make ([]byte ,0,len (_gdf )+2);_fagb =append (_fagb ,'E');if _cgee >=0{_fagb =append (_fagb ,'+');}else {_fagb =append (_fagb ,'-');_cgee *=-1;};_adb :=0;_cdfe :for _aca :=len (_gc .Exponent )-1;_aca >=0;_aca --{_aac :=len (_gdf )-1-_adb ;_ceb :=_gc .Exponent [_aca ];switch _ceb .Type {case FmtTypeDigit :if _aac >=0{_fagb =append (_fagb ,_gdf [_aac ]);_adb ++;}else {_fagb =append (_fagb ,'0');};case FmtTypeDigitOpt :if _aac >=0{_fagb =append (_fagb ,_gdf [_aac ]);_adb ++;}else {for _ebf :=_aca ;_ebf >=0;_ebf --{_dfd :=_gc .Exponent [_ebf ];if _dfd .Type ==FmtTypeLiteral {_fagb =append (_fagb ,_dfd .Literal );};};break _cdfe ;};case FmtTypeLiteral :_fagb =append (_fagb ,_ceb .Literal );default:_ag .Log .Debug ("\u0075\u006e\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064 \u0074\u0079\u0070\u0065\u0020\u0069\u006e\u0020\u0065\u0078p\u0020\u0025\u0076",_ceb );};};if _adb < len (_gdf ){_fagb =append (_fagb ,_gdf [len (_gdf )-_adb -1:_adb -1]...);};_be (_fagb [2:]);return _fagb ;};const _gcfc int =34;const _aee int =-1;func _bge (_gg float64 )string {_egfc :=_b .FormatFloat (_gg ,'E',-1,64);_gad :=_b .FormatFloat (_gg ,'E',5,64);if len (_egfc )< len (_gad ){return _b .FormatFloat (_gg ,'E',2,64);};return _gad ;};