2020-09-14 09:32:45 +00:00

12 lines
39 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 document ;import (_ed "encoding/binary";_g "fmt";_ec "github.com/unidoc/unipdf/v3/common";_cg "github.com/unidoc/unipdf/v3/internal/bitwise";_fb "github.com/unidoc/unipdf/v3/internal/jbig2/basic";_b "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";_ecc "github.com/unidoc/unipdf/v3/internal/jbig2/document/segments";_gg "github.com/unidoc/unipdf/v3/internal/jbig2/encoder/classer";_cd "github.com/unidoc/unipdf/v3/internal/jbig2/errors";_c "io";_a "math";_f "runtime/debug";);func (_cgc *Document )addSymbolDictionary (_cege int ,_fee *_b .Bitmaps ,_cba []int ,_add map[int ]int ,_de bool )(*_ecc .Header ,error ){const _eab ="\u0061\u0064\u0064\u0053ym\u0062\u006f\u006c\u0044\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079";_ba :=&_ecc .SymbolDictionary {};if _bbg :=_ba .InitEncode (_fee ,_cba ,_add ,_de );_bbg !=nil {return nil ,_bbg ;};_be :=&_ecc .Header {Type :_ecc .TSymbolDictionary ,PageAssociation :_cege ,SegmentData :_ba };if _cege ==0{if _cgc .GlobalSegments ==nil {_cgc .GlobalSegments =&Globals {};};_cgc .GlobalSegments .AddSegment (_be );return _be ,nil ;};_cgd ,_gf :=_cgc .Pages [_cege ];if !_gf {return nil ,_cd .Errorf (_eab ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_cege );};var (_db int ;_fea *_ecc .Header ;);for _db ,_fea =range _cgd .Segments {if _fea .Type ==_ecc .TPageInformation {break ;};};_db ++;_cgd .Segments =append (_cgd .Segments ,nil );copy (_cgd .Segments [_db +1:],_cgd .Segments [_db :]);_cgd .Segments [_db ]=_be ;return _be ,nil ;};func _gcc (_dde _cg .StreamReader ,_gcb *Globals )(*Document ,error ){_cbe :=&Document {Pages :make (map[int ]*Page ),InputStream :_dde ,OrganizationType :_ecc .OSequential ,NumberOfPagesUnknown :true ,GlobalSegments :_gcb ,_fe :9};if _cbe .GlobalSegments ==nil {_cbe .GlobalSegments =&Globals {};};if _afbd :=_cbe .mapData ();_afbd !=nil {return nil ,_afbd ;};return _cbe ,nil ;};func (_degff *Page )getResolutionY ()(int ,error ){const _eceb ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0059";if _degff .ResolutionY !=0{return _degff .ResolutionY ,nil ;};_bffg :=_degff .getPageInformationSegment ();if _bffg ==nil {return 0,_cd .Error (_eceb ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_ddd ,_edgag :=_bffg .GetSegmentData ();if _edgag !=nil {return 0,_cd .Wrap (_edgag ,_eceb ,"");};_bgb ,_daa :=_ddd .(*_ecc .PageInformationSegment );if !_daa {return 0,_cd .Errorf (_eceb ,"\u0070\u0061\u0067\u0065\u0020\u0069\u006e\u0066o\u0072\u006d\u0061ti\u006f\u006e\u0020\u0073\u0065\u0067m\u0065\u006e\u0074\u0020\u0069\u0073\u0020\u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006ci\u0064\u0020\u0074\u0079\u0070\u0065\u003a\u0027%\u0054\u0027",_ddd );};_degff .ResolutionY =_bgb .ResolutionY ;return _degff .ResolutionY ,nil ;};func (_egc *Document )encodeEOFHeader (_ega _cg .BinaryWriter )(_bgg int ,_dgf error ){_fbb :=&_ecc .Header {SegmentNumber :_egc .nextSegmentNumber (),Type :_ecc .TEndOfFile };if _bgg ,_dgf =_fbb .Encode (_ega );_dgf !=nil {return 0,_cd .Wrap (_dgf ,"\u0065n\u0063o\u0064\u0065\u0045\u004f\u0046\u0048\u0065\u0061\u0064\u0065\u0072","");};return _bgg ,nil ;};func (_eccb *Document )produceClassifiedPage (_dc *Page ,_eef *_ecc .Header )(_ad error ){const _ab ="p\u0072\u006f\u0064\u0075ce\u0043l\u0061\u0073\u0073\u0069\u0066i\u0065\u0064\u0050\u0061\u0067\u0065";var _bbd map[int ]int ;_fad :=_eccb ._ce ;_gcg :=[]*_ecc .Header {_eef };if len (_eccb ._fa [_dc .PageNumber ])> 0{_bbd =map[int ]int {};_ebf ,_cf :=_eccb .addSymbolDictionary (_dc .PageNumber ,_eccb .Classer .UndilatedTemplates ,_eccb ._fa [_dc .PageNumber ],_bbd ,false );if _cf !=nil {return _cd .Wrap (_cf ,_ab ,"");};_gcg =append (_gcg ,_ebf );_fad +=len (_eccb ._fa [_dc .PageNumber ]);};_fge :=_eccb ._d [_dc .PageNumber ];_ec .Log .Debug ("P\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020c\u006f\u006d\u0070\u0073: \u0025\u0076",_dc .PageNumber ,_fge );_dc .addTextRegionSegment (_gcg ,_eccb ._bb ,_bbd ,_eccb ._d [_dc .PageNumber ],_eccb .Classer .PtaLL ,_eccb .Classer .UndilatedTemplates ,_eccb .Classer .ClassIDs ,nil ,_dfg (_fad ),len (_eccb ._d [_dc .PageNumber ]));return nil ;};func (_dcbe *Page )getPageInformationSegment ()*_ecc .Header {for _ ,_gdfg :=range _dcbe .Segments {if _gdfg .Type ==_ecc .TPageInformation {return _gdfg ;};};_ec .Log .Debug ("\u0050\u0061\u0067\u0065\u0020\u0069\u006e\u0066o\u0072\u006d\u0061ti\u006f\u006e\u0020\u0073\u0065\u0067m\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u0020\u0066o\u0072\u0020\u0070\u0061\u0067\u0065\u003a\u0020%\u0073\u002e",_dcbe );return nil ;};var _ac =[]byte {0x97,0x4A,0x42,0x32,0x0D,0x0A,0x1A,0x0A};func (_abb *Document )nextPageNumber ()uint32 {_abb .NumberOfPages ++;return _abb .NumberOfPages };func (_afa *Page )GetWidth ()(int ,error ){return _afa .getWidth ()};func (_cbf *Page )composePageBitmap ()error {const _cec ="\u0063\u006f\u006d\u0070\u006f\u0073\u0065\u0050\u0061\u0067\u0065\u0042i\u0074\u006d\u0061\u0070";if _cbf .PageNumber ==0{return nil ;};_bgc :=_cbf .getPageInformationSegment ();if _bgc ==nil {return _cd .Error (_cec ,"\u0070\u0061\u0067e \u0069\u006e\u0066\u006f\u0072\u006d\u0061\u0074\u0069o\u006e \u0073e\u0067m\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064");};_ebg ,_cdca :=_bgc .GetSegmentData ();if _cdca !=nil {return _cdca ;};_ef ,_beba :=_ebg .(*_ecc .PageInformationSegment );if !_beba {return _cd .Error (_cec ,"\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006da\u0074\u0069\u006f\u006e \u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u0069\u0073\u0020\u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0074\u0079\u0070\u0065");};if _cdca =_cbf .createPage (_ef );_cdca !=nil {return _cd .Wrap (_cdca ,_cec ,"");};_cbf .clearSegmentData ();return nil ;};func (_cfg *Page )clearSegmentData (){for _cbde :=range _cfg .Segments {_cfg .Segments [_cbde ].CleanSegmentData ();};};func (_bdda *Page )collectPageStripes ()(_fefa []_ecc .Segmenter ,_aca error ){const _ccb ="\u0063o\u006cl\u0065\u0063\u0074\u0050\u0061g\u0065\u0053t\u0072\u0069\u0070\u0065\u0073";var _gga _ecc .Segmenter ;for _ ,_gdec :=range _bdda .Segments {switch _gdec .Type {case 6,7,22,23,38,39,42,43:_gga ,_aca =_gdec .GetSegmentData ();if _aca !=nil {return nil ,_cd .Wrap (_aca ,_ccb ,"");};_fefa =append (_fefa ,_gga );case 50:_gga ,_aca =_gdec .GetSegmentData ();if _aca !=nil {return nil ,_aca ;};_eee ,_edga :=_gga .(*_ecc .EndOfStripe );if !_edga {return nil ,_cd .Errorf (_ccb ,"\u0045\u006e\u0064\u004f\u0066\u0053\u0074\u0072\u0069\u0070\u0065\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u006f\u0066\u0020\u0076\u0061l\u0069\u0064\u0020\u0074\u0079p\u0065\u003a \u0027\u0025\u0054\u0027",_gga );};_fefa =append (_fefa ,_eee );_bdda .FinalHeight =_eee .LineNumber ();};};return _fefa ,nil ;};func (_bba *Document )determineRandomDataOffsets (_cgb []*_ecc .Header ,_gag uint64 ){if _bba .OrganizationType !=_ecc .ORandom {return ;};for _ ,_gcfc :=range _cgb {_gcfc .SegmentDataStartOffset =_gag ;_gag +=_gcfc .SegmentDataLength ;};};func (_cdf *Document )parseFileHeader ()error {const _aff ="\u0070a\u0072s\u0065\u0046\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";_ ,_ced :=_cdf .InputStream .Seek (8,_c .SeekStart );if _ced !=nil {return _cd .Wrap (_ced ,_aff ,"\u0069\u0064");};_ ,_ced =_cdf .InputStream .ReadBits (5);if _ced !=nil {return _cd .Wrap (_ced ,_aff ,"\u0072\u0065\u0073\u0065\u0072\u0076\u0065\u0064\u0020\u0062\u0069\u0074\u0073");};_ged ,_ced :=_cdf .InputStream .ReadBit ();if _ced !=nil {return _cd .Wrap (_ced ,_aff ,"\u0065x\u0074e\u006e\u0064\u0065\u0064\u0020t\u0065\u006dp\u006c\u0061\u0074\u0065\u0073");};if _ged ==1{_cdf .GBUseExtTemplate =true ;};_ged ,_ced =_cdf .InputStream .ReadBit ();if _ced !=nil {return _cd .Wrap (_ced ,_aff ,"\u0075\u006e\u006b\u006eow\u006e\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};if _ged !=1{_cdf .NumberOfPagesUnknown =false ;};_ged ,_ced =_cdf .InputStream .ReadBit ();if _ced !=nil {return _cd .Wrap (_ced ,_aff ,"\u006f\u0072\u0067\u0061\u006e\u0069\u007a\u0061\u0074\u0069\u006f\u006e \u0074\u0079\u0070\u0065");};_cdf .OrganizationType =_ecc .OrganizationType (_ged );if !_cdf .NumberOfPagesUnknown {_cdf .NumberOfPages ,_ced =_cdf .InputStream .ReadUint32 ();if _ced !=nil {return _cd .Wrap (_ced ,_aff ,"\u006eu\u006db\u0065\u0072\u0020\u006f\u0066\u0020\u0070\u0061\u0067\u0065\u0073");};_cdf ._fe =13;};return nil ;};func (_cgdb *Document )reachedEOF (_ead int64 )(bool ,error ){const _dcb ="\u0072\u0065\u0061\u0063\u0068\u0065\u0064\u0045\u004f\u0046";_ ,_gdf :=_cgdb .InputStream .Seek (_ead ,_c .SeekStart );if _gdf !=nil {_ec .Log .Debug ("\u0072\u0065\u0061c\u0068\u0065\u0064\u0045\u004f\u0046\u0020\u002d\u0020\u0064\u002e\u0049\u006e\u0070\u0075\u0074\u0053\u0074\u0072\u0065\u0061\u006d\u002e\u0053\u0065\u0065\u006b\u0020\u0066a\u0069\u006c\u0065\u0064\u003a\u0020\u0025\u0076",_gdf );return false ,_cd .Wrap (_gdf ,_dcb ,"\u0069n\u0070\u0075\u0074\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020s\u0065\u0065\u006b\u0020\u0066\u0061\u0069\u006c\u0065\u0064");};_ ,_gdf =_cgdb .InputStream .ReadBits (32);if _gdf ==_c .EOF {return true ,nil ;}else if _gdf !=nil {return false ,_cd .Wrap (_gdf ,_dcb ,"");};return false ,nil ;};func (_bee *Page )AddGenericRegion (bm *_b .Bitmap ,xloc ,yloc ,template int ,tp _ecc .Type ,duplicateLineRemoval bool )error {const _cab ="P\u0061\u0067\u0065\u002eAd\u0064G\u0065\u006e\u0065\u0072\u0069c\u0052\u0065\u0067\u0069\u006f\u006e";_cbec :=&_ecc .GenericRegion {};if _dce :=_cbec .InitEncode (bm ,xloc ,yloc ,template ,duplicateLineRemoval );_dce !=nil {return _cd .Wrap (_dce ,_cab ,"");};_gfg :=&_ecc .Header {Type :_ecc .TImmediateGenericRegion ,PageAssociation :_bee .PageNumber ,SegmentData :_cbec };_bee .Segments =append (_bee .Segments ,_gfg );return nil ;};func (_acdd *Page )Encode (w _cg .BinaryWriter )(_bcdf int ,_cbd error ){const _cdd ="P\u0061\u0067\u0065\u002e\u0045\u006e\u0063\u006f\u0064\u0065";var _abbg int ;for _ ,_ecca :=range _acdd .Segments {if _abbg ,_cbd =_ecca .Encode (w );_cbd !=nil {return _bcdf ,_cd .Wrap (_cbd ,_cdd ,"");};_bcdf +=_abbg ;};return _bcdf ,nil ;};func (_fcf *Document )mapData ()error {const _daee ="\u006da\u0070\u0044\u0061\u0074\u0061";var (_agc []*_ecc .Header ;_fcb int64 ;_fabb _ecc .Type ;);_cefb ,_deaa :=_fcf .isFileHeaderPresent ();if _deaa !=nil {return _cd .Wrap (_deaa ,_daee ,"");};if _cefb {if _deaa =_fcf .parseFileHeader ();_deaa !=nil {return _cd .Wrap (_deaa ,_daee ,"");};_fcb +=int64 (_fcf ._fe );_fcf .FullHeaders =true ;};var (_cgff *Page ;_eage bool ;);for _fabb !=51&&!_eage {_ece ,_cfc :=_ecc .NewHeader (_fcf ,_fcf .InputStream ,_fcb ,_fcf .OrganizationType );if _cfc !=nil {return _cd .Wrap (_cfc ,_daee ,"");};_ec .Log .Trace ("\u0044\u0065c\u006f\u0064\u0069\u006eg\u0020\u0073e\u0067\u006d\u0065\u006e\u0074\u0020\u006e\u0075m\u0062\u0065\u0072\u003a\u0020\u0025\u0064\u002c\u0020\u0054\u0079\u0070e\u003a\u0020\u0025\u0073",_ece .SegmentNumber ,_ece .Type );_fabb =_ece .Type ;if _fabb !=_ecc .TEndOfFile {if _ece .PageAssociation !=0{_cgff =_fcf .Pages [_ece .PageAssociation ];if _cgff ==nil {_cgff =_deg (_fcf ,_ece .PageAssociation );_fcf .Pages [_ece .PageAssociation ]=_cgff ;if _fcf .NumberOfPagesUnknown {_fcf .NumberOfPages ++;};};_cgff .Segments =append (_cgff .Segments ,_ece );}else {_fcf .GlobalSegments .AddSegment (_ece );};};_agc =append (_agc ,_ece );_fcb =_fcf .InputStream .StreamPosition ();if _fcf .OrganizationType ==_ecc .OSequential {_fcb +=int64 (_ece .SegmentDataLength );};_eage ,_cfc =_fcf .reachedEOF (_fcb );if _cfc !=nil {_ec .Log .Debug ("\u006a\u0062\u0069\u0067\u0032 \u0064\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u0020\u0072\u0065\u0061\u0063h\u0065\u0064\u0020\u0045\u004f\u0046\u0020\u0077\u0069\u0074\u0068\u0020\u0065\u0072\u0072\u006f\u0072\u003a\u0020\u0025\u0076",_cfc );return _cd .Wrap (_cfc ,_daee ,"");};};_fcf .determineRandomDataOffsets (_agc ,uint64 (_fcb ));return nil ;};func (_fec *Document )GetNumberOfPages ()(uint32 ,error ){if _fec .NumberOfPagesUnknown ||_fec .NumberOfPages ==0{if len (_fec .Pages )==0{if _bfd :=_fec .mapData ();_bfd !=nil {return 0,_cd .Wrap (_bfd ,"\u0044o\u0063\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074N\u0075m\u0062e\u0072\u004f\u0066\u0050\u0061\u0067\u0065s","");};};return uint32 (len (_fec .Pages )),nil ;};return _fec .NumberOfPages ,nil ;};type Page struct{Segments []*_ecc .Header ;PageNumber int ;Bitmap *_b .Bitmap ;FinalHeight int ;FinalWidth int ;ResolutionX int ;ResolutionY int ;IsLossless bool ;Document *Document ;FirstSegmentNumber int ;EncodingMethod EncodingMethod ;};func (_geb *Globals )GetSymbolDictionary ()(*_ecc .Header ,error ){const _daeb ="G\u006c\u006f\u0062\u0061\u006c\u0073.\u0047\u0065\u0074\u0053\u0079\u006d\u0062\u006f\u006cD\u0069\u0063\u0074i\u006fn\u0061\u0072\u0079";if _geb ==nil {return nil ,_cd .Error (_daeb ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_geb .Segments )==0{return nil ,_cd .Error (_daeb ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};for _ ,_fgb :=range _geb .Segments {if _fgb .Type ==_ecc .TSymbolDictionary {return _fgb ,nil ;};};return nil ,_cd .Error (_daeb ,"\u0067\u006c\u006fba\u006c\u0020\u0073\u0079\u006d\u0062\u006f\u006c\u0020d\u0069c\u0074i\u006fn\u0061\u0072\u0079\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064");};func (_abe *Document )isFileHeaderPresent ()(bool ,error ){_abe .InputStream .Mark ();for _ ,_gda :=range _ac {_daf ,_bd :=_abe .InputStream .ReadByte ();if _bd !=nil {return false ,_bd ;};if _gda !=_daf {_abe .InputStream .Reset ();return false ,nil ;};};_abe .InputStream .Reset ();return true ,nil ;};const (GenericEM EncodingMethod =iota ;CorrelationEM ;RankHausEM ;);func (_bdc *Page )AddPageInformationSegment (){_gcd :=&_ecc .PageInformationSegment {PageBMWidth :_bdc .FinalWidth ,PageBMHeight :_bdc .FinalHeight ,ResolutionX :_bdc .ResolutionX ,ResolutionY :_bdc .ResolutionY ,IsLossless :_bdc .IsLossless };_beb :=&_ecc .Header {PageAssociation :_bdc .PageNumber ,SegmentDataLength :uint64 (_gcd .Size ()),SegmentData :_gcd ,Type :_ecc .TPageInformation };_bdc .Segments =append (_bdc .Segments ,_beb );};type EncodingMethod int ;func (_eeb *Page )addTextRegionSegment (_abd []*_ecc .Header ,_cabf ,_gedg map[int ]int ,_ebb []int ,_bdd *_b .Points ,_dgfe *_b .Bitmaps ,_bdg *_fb .IntSlice ,_bbgg *_b .Boxes ,_bef ,_cga int ){_agg :=&_ecc .TextRegion {NumberOfSymbols :uint32 (_cga )};_agg .InitEncode (_cabf ,_gedg ,_ebb ,_bdd ,_dgfe ,_bdg ,_bbgg ,_eeb .FinalWidth ,_eeb .FinalHeight ,_bef );_cgec :=&_ecc .Header {RTSegments :_abd ,SegmentData :_agg ,PageAssociation :_eeb .PageNumber ,Type :_ecc .TImmediateTextRegion };_eabc :=_ecc .TPageInformation ;if _gedg !=nil {_eabc =_ecc .TSymbolDictionary ;};var _bbgb int ;for ;_bbgb < len (_eeb .Segments );_bbgb ++{if _eeb .Segments [_bbgb ].Type ==_eabc {_bbgb ++;break ;};};_eeb .Segments =append (_eeb .Segments ,nil );copy (_eeb .Segments [_bbgb +1:],_eeb .Segments [_bbgb :]);_eeb .Segments [_bbgb ]=_cgec ;};func (_bfe *Document )nextSegmentNumber ()uint32 {_cdc :=_bfe .CurrentSegmentNumber ;_bfe .CurrentSegmentNumber ++;return _cdc ;};func (_bea *Page )fitsPage (_bdcf *_ecc .PageInformationSegment ,_cagg *_b .Bitmap )bool {return _bea .countRegions ()==1&&_bdcf .DefaultPixelValue ()==0&&_bdcf .PageBMWidth ==_cagg .Width &&_bdcf .PageBMHeight ==_cagg .Height ;};func (_cgaa *Page )lastSegmentNumber ()(_fbd uint32 ,_afc error ){const _acc ="\u006c\u0061\u0073\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u004eu\u006d\u0062\u0065\u0072";if len (_cgaa .Segments )==0{return _fbd ,_cd .Errorf (_acc ,"\u006e\u006f\u0020se\u0067\u006d\u0065\u006e\u0074\u0073\u0020\u0066\u006fu\u006ed\u0020i\u006e \u0074\u0068\u0065\u0020\u0070\u0061\u0067\u0065\u0020\u0027\u0025\u0064\u0027",_cgaa .PageNumber );};return _cgaa .Segments [len (_cgaa .Segments )-1].SegmentNumber ,nil ;};func (_aeg *Page )createNormalPage (_aggg *_ecc .PageInformationSegment )error {const _bdb ="\u0063\u0072e\u0061\u0074\u0065N\u006f\u0072\u006d\u0061\u006c\u0050\u0061\u0067\u0065";_aeg .Bitmap =_b .New (_aggg .PageBMWidth ,_aggg .PageBMHeight );if _aggg .DefaultPixelValue ()!=0{_aeg .Bitmap .SetDefaultPixel ();};for _ ,_fecb :=range _aeg .Segments {switch _fecb .Type {case 6,7,22,23,38,39,42,43:_ec .Log .Trace ("\u0047\u0065\u0074\u0074in\u0067\u0020\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0025\u0064",_fecb .SegmentNumber );_fbbg ,_efa :=_fecb .GetSegmentData ();if _efa !=nil {return _efa ;};_fba ,_cbfc :=_fbbg .(_ecc .Regioner );if !_cbfc {_ec .Log .Debug ("\u0053\u0065g\u006d\u0065\u006e\u0074\u003a\u0020\u0025\u0054\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u0061\u0020\u0052\u0065\u0067\u0069on\u0065\u0072",_fbbg );return _cd .Errorf (_bdb ,"i\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006a\u0062i\u0067\u0032\u0020\u0073\u0065\u0067\u006den\u0074\u0020\u0074\u0079p\u0065\u0020\u002d\u0020\u006e\u006f\u0074\u0020\u0061 R\u0065\u0067i\u006f\u006e\u0065\u0072\u003a\u0020\u0025\u0054",_fbbg );};_ecg ,_efa :=_fba .GetRegionBitmap ();if _efa !=nil {return _cd .Wrap (_efa ,_bdb ,"");};if _aeg .fitsPage (_aggg ,_ecg ){_aeg .Bitmap =_ecg ;}else {_dcc :=_fba .GetRegionInfo ();_eed :=_aeg .getCombinationOperator (_aggg ,_dcc .CombinaionOperator );_efa =_b .Blit (_ecg ,_aeg .Bitmap ,int (_dcc .XLocation ),int (_dcc .YLocation ),_eed );if _efa !=nil {return _cd .Wrap (_efa ,_bdb ,"");};};};};return nil ;};func (_aec *Page )String ()string {return _g .Sprintf ("\u0050\u0061\u0067\u0065\u0020\u0023\u0025\u0064",_aec .PageNumber );};func (_fcfg *Page )getHeight ()(int ,error ){const _ddg ="\u0067e\u0074\u0048\u0065\u0069\u0067\u0068t";if _fcfg .FinalHeight !=0{return _fcfg .FinalHeight ,nil ;};_dgbc :=_fcfg .getPageInformationSegment ();if _dgbc ==nil {return 0,_cd .Error (_ddg ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_fefd ,_bfcbg :=_dgbc .GetSegmentData ();if _bfcbg !=nil {return 0,_cd .Wrap (_bfcbg ,_ddg ,"");};_degf ,_eeag :=_fefd .(*_ecc .PageInformationSegment );if !_eeag {return 0,_cd .Errorf (_ddg ,"\u0070\u0061\u0067\u0065\u0020\u0069n\u0066\u006f\u0072\u006d\u0061\u0074\u0069\u006f\u006e\u0020\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u0069\u0073 \u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0074\u0079\u0070e\u003a \u0027\u0025\u0054\u0027",_fefd );};if _degf .PageBMHeight ==_a .MaxInt32 {_ ,_bfcbg =_fcfg .GetBitmap ();if _bfcbg !=nil {return 0,_cd .Wrap (_bfcbg ,_ddg ,"");};}else {_fcfg .FinalHeight =_degf .PageBMHeight ;};return _fcfg .FinalHeight ,nil ;};func (_ge *Document )produceClassifiedPages ()(_gd error ){const _bfc ="\u0070\u0072\u006f\u0064uc\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067e\u0073";if _ge .Classer ==nil {return nil ;};var (_acd *Page ;_cb bool ;_fc *_ecc .Header ;);for _aa :=1;_aa <=int (_ge .NumberOfPages );_aa ++{if _acd ,_cb =_ge .Pages [_aa ];!_cb {return _cd .Errorf (_bfc ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_aa );};if _acd .EncodingMethod ==GenericEM {continue ;};if _fc ==nil {if _fc ,_gd =_ge .GlobalSegments .GetSymbolDictionary ();_gd !=nil {return _cd .Wrap (_gd ,_bfc ,"");};};if _gd =_ge .produceClassifiedPage (_acd ,_fc );_gd !=nil {return _cd .Wrapf (_gd ,_bfc ,"\u0070\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027",_aa );};};return nil ;};type Document struct{Pages map[int ]*Page ;NumberOfPagesUnknown bool ;NumberOfPages uint32 ;GBUseExtTemplate bool ;InputStream _cg .StreamReader ;GlobalSegments *Globals ;OrganizationType _ecc .OrganizationType ;Classer *_gg .Classer ;XRes ,YRes int ;FullHeaders bool ;CurrentSegmentNumber uint32 ;AverageTemplates *_b .Bitmaps ;BaseIndexes []int ;Refinement bool ;RefineLevel int ;_fe uint8 ;_gb *_cg .BufferedWriter ;EncodeGlobals bool ;_ce int ;_fa map[int ][]int ;_d map[int ][]int ;_eb []int ;_bb map[int ]int ;};func (_bdca *Page )GetBitmap ()(_bfcb *_b .Bitmap ,_fcc error ){_ec .Log .Trace (_g .Sprintf ("\u005b\u0050\u0041G\u0045\u005d\u005b\u0023%\u0064\u005d\u0020\u0047\u0065\u0074\u0042i\u0074\u006d\u0061\u0070\u0020\u0062\u0065\u0067\u0069\u006e\u0073\u002e\u002e\u002e",_bdca .PageNumber ));defer func (){if _fcc !=nil {_ec .Log .Trace (_g .Sprintf ("\u005b\u0050\u0041\u0047\u0045\u005d\u005b\u0023\u0025\u0064\u005d\u0020\u0047\u0065\u0074B\u0069t\u006d\u0061\u0070\u0020\u0066\u0061\u0069\u006c\u0065\u0064\u002e\u0020\u0025\u0076",_bdca .PageNumber ,_fcc ));}else {_ec .Log .Trace (_g .Sprintf ("\u005b\u0050\u0041\u0047\u0045\u005d\u005b\u0023\u0025\u0064]\u0020\u0047\u0065\u0074\u0042\u0069\u0074m\u0061\u0070\u0020\u0066\u0069\u006e\u0069\u0073\u0068\u0065\u0064",_bdca .PageNumber ));};}();if _bdca .Bitmap !=nil {return _bdca .Bitmap ,nil ;};_fcc =_bdca .composePageBitmap ();if _fcc !=nil {return nil ,_fcc ;};return _bdca .Bitmap ,nil ;};func (_bge *Page )nextSegmentNumber ()uint32 {return _bge .Document .nextSegmentNumber ()};func (_cca *Page )getWidth ()(int ,error ){const _fde ="\u0067\u0065\u0074\u0057\u0069\u0064\u0074\u0068";if _cca .FinalWidth !=0{return _cca .FinalWidth ,nil ;};_faf :=_cca .getPageInformationSegment ();if _faf ==nil {return 0,_cd .Error (_fde ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_cede ,_gec :=_faf .GetSegmentData ();if _gec !=nil {return 0,_cd .Wrap (_gec ,_fde ,"");};_aege ,_bacd :=_cede .(*_ecc .PageInformationSegment );if !_bacd {return 0,_cd .Errorf (_fde ,"\u0070\u0061\u0067\u0065\u0020\u0069n\u0066\u006f\u0072\u006d\u0061\u0074\u0069\u006f\u006e\u0020\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u0069\u0073 \u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0074\u0079\u0070e\u003a \u0027\u0025\u0054\u0027",_cede );};_cca .FinalWidth =_aege .PageBMWidth ;return _cca .FinalWidth ,nil ;};func (_aab *Page )GetResolutionX ()(int ,error ){return _aab .getResolutionX ()};func (_gdaf *Page )GetResolutionY ()(int ,error ){return _gdaf .getResolutionY ()};func (_bcd *Document )completeSymbols ()(_caa error ){const _ag ="\u0063o\u006dp\u006c\u0065\u0074\u0065\u0053\u0079\u006d\u0062\u006f\u006c\u0073";if _bcd .Classer ==nil {return nil ;};if _bcd .Classer .UndilatedTemplates ==nil {return _cd .Error (_ag ,"\u006e\u006f t\u0065\u006d\u0070l\u0061\u0074\u0065\u0073 de\u0066in\u0065\u0064\u0020\u0066\u006f\u0072\u0020th\u0065\u0020\u0063\u006c\u0061\u0073\u0073e\u0072");};_eaba :=len (_bcd .Pages )==1;_egd :=make ([]int ,_bcd .Classer .UndilatedTemplates .Size ());var _gggbg int ;for _dbd :=0;_dbd < _bcd .Classer .ClassIDs .Size ();_dbd ++{_gggbg ,_caa =_bcd .Classer .ClassIDs .Get (_dbd );if _caa !=nil {return _cd .Wrap (_caa ,_ag ,"\u0063\u006c\u0061\u0073\u0073\u0020\u0049\u0044\u0027\u0073");};_egd [_gggbg ]++;};var _cc []int ;for _aaa :=0;_aaa < _bcd .Classer .UndilatedTemplates .Size ();_aaa ++{if _egd [_aaa ]==0{return _cd .Error (_ag ,"\u006eo\u0020\u0073y\u006d\u0062\u006f\u006cs\u0020\u0069\u006es\u0074\u0061\u006e\u0063\u0065\u0073\u0020\u0066\u006fun\u0064\u0020\u0066o\u0072\u0020g\u0069\u0076\u0065\u006e\u0020\u0063l\u0061\u0073s\u003f\u0020");};if _egd [_aaa ]> 1||_eaba {_cc =append (_cc ,_aaa );};};_bcd ._ce =len (_cc );var _fbf ,_gcf int ;for _fcg :=0;_fcg < _bcd .Classer .ComponentPageNumbers .Size ();_fcg ++{_fbf ,_caa =_bcd .Classer .ComponentPageNumbers .Get (_fcg );if _caa !=nil {return _cd .Wrapf (_caa ,_ag ,"p\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027 \u006e\u006f\u0074\u0020\u0066\u006f\u0075nd\u0020\u0069\u006e\u0020t\u0068\u0065\u0020\u0063\u006c\u0061\u0073\u0073\u0065r \u0070\u0061g\u0065\u006e\u0075\u006d\u0062\u0065\u0072\u0073",_fcg );};_gcf ,_caa =_bcd .Classer .ClassIDs .Get (_fcg );if _caa !=nil {return _cd .Wrapf (_caa ,_ag ,"\u0063\u0061\u006e\u0027\u0074\u0020\u0067e\u0074\u0020\u0073y\u006d\u0062\u006f\u006c \u0066\u006f\u0072\u0020\u0070\u0061\u0067\u0065\u0020\u0027\u0025\u0064\u0027\u0020\u0066\u0072\u006f\u006d\u0020\u0063\u006c\u0061\u0073\u0073\u0065\u0072",_fbf );};if _egd [_gcf ]==1&&!_eaba {_bcd ._fa [_fbf ]=append (_bcd ._fa [_fbf ],_gcf );};};if _caa =_bcd .Classer .ComputeLLCorners ();_caa !=nil {return _cd .Wrap (_caa ,_ag ,"");};return nil ;};func (_cbfe *Page )countRegions ()int {var _eba int ;for _ ,_fd :=range _cbfe .Segments {switch _fd .Type {case 6,7,22,23,38,39,42,43:_eba ++;};};return _eba ;};func (_dba *Page )AddEndOfPageSegment (){_baa :=&_ecc .Header {Type :_ecc .TEndOfPage ,PageAssociation :_dba .PageNumber };_dba .Segments =append (_dba .Segments ,_baa );};func (_eg *Document )AddGenericPage (bm *_b .Bitmap ,duplicateLineRemoval bool )(_dd error ){const _bf ="\u0044\u006f\u0063um\u0065\u006e\u0074\u002e\u0041\u0064\u0064\u0047\u0065\u006e\u0065\u0072\u0069\u0063\u0050\u0061\u0067\u0065";if !_eg .FullHeaders &&_eg .NumberOfPages !=0{return _cd .Error (_bf ,"\u0064\u006f\u0063\u0075\u006de\u006e\u0074\u0020\u0061\u006c\u0072\u0065a\u0064\u0079\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0073\u0020\u0070\u0061\u0067\u0065\u002e\u0020\u0046\u0069\u006c\u0065\u004d\u006f\u0064\u0065\u0020\u0064\u0069\u0073\u0061\u006c\u006c\u006f\u0077\u0073\u0020\u0061\u0064\u0064i\u006e\u0067\u0020\u006d\u006f\u0072\u0065\u0020\u0074\u0068\u0061\u006e \u006f\u006e\u0065\u0020\u0070\u0061g\u0065");};_cef :=&Page {Segments :[]*_ecc .Header {},Bitmap :bm ,Document :_eg ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,IsLossless :true };_cef .PageNumber =int (_eg .nextPageNumber ());_eg .Pages [_cef .PageNumber ]=_cef ;_cef .AddPageInformationSegment ();if _dd =_cef .AddGenericRegion (bm ,0,0,0,_ecc .TImmediateGenericRegion ,duplicateLineRemoval );_dd !=nil {return _cd .Wrap (_dd ,_bf ,"");};if _eg .FullHeaders {_cef .AddEndOfPageSegment ();};return nil ;};func (_cfe *Globals )GetSegment (segmentNumber int )(*_ecc .Header ,error ){const _feb ="\u0047l\u006fb\u0061\u006c\u0073\u002e\u0047e\u0074\u0053e\u0067\u006d\u0065\u006e\u0074";if _cfe ==nil {return nil ,_cd .Error (_feb ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_cfe .Segments )==0{return nil ,_cd .Error (_feb ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};var _gede *_ecc .Header ;for _ ,_gede =range _cfe .Segments {if _gede .SegmentNumber ==uint32 (segmentNumber ){break ;};};if _gede ==nil {return nil ,_cd .Error (_feb ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};return _gede ,nil ;};func (_bcdd *Document )Encode ()(_da []byte ,_dfe error ){const _baf ="\u0044o\u0063u\u006d\u0065\u006e\u0074\u002e\u0045\u006e\u0063\u006f\u0064\u0065";var _bed ,_bgf int ;if _bcdd .FullHeaders {if _bed ,_dfe =_bcdd .encodeFileHeader (_bcdd ._gb );_dfe !=nil {return nil ,_cd .Wrap (_dfe ,_baf ,"");};};var (_af bool ;_dge *_ecc .Header ;_cad *Page ;);if _dfe =_bcdd .completeClassifiedPages ();_dfe !=nil {return nil ,_cd .Wrap (_dfe ,_baf ,"");};if _dfe =_bcdd .produceClassifiedPages ();_dfe !=nil {return nil ,_cd .Wrap (_dfe ,_baf ,"");};if _bcdd .GlobalSegments !=nil {for _ ,_dge =range _bcdd .GlobalSegments .Segments {if _dfe =_bcdd .encodeSegment (_dge ,&_bed );_dfe !=nil {return nil ,_cd .Wrap (_dfe ,_baf ,"");};};};for _cfb :=1;_cfb <=int (_bcdd .NumberOfPages );_cfb ++{if _cad ,_af =_bcdd .Pages [_cfb ];!_af {return nil ,_cd .Errorf (_baf ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_cfb );};for _ ,_dge =range _cad .Segments {if _dfe =_bcdd .encodeSegment (_dge ,&_bed );_dfe !=nil {return nil ,_cd .Wrap (_dfe ,_baf ,"");};};};if _bcdd .FullHeaders {if _bgf ,_dfe =_bcdd .encodeEOFHeader (_bcdd ._gb );_dfe !=nil {return nil ,_cd .Wrap (_dfe ,_baf ,"");};_bed +=_bgf ;};_da =_bcdd ._gb .Data ();if len (_da )!=_bed {_ec .Log .Debug ("\u0042\u0079\u0074\u0065\u0073 \u0077\u0072\u0069\u0074\u0074\u0065\u006e \u0028\u006e\u0029\u003a\u0020\u0027\u0025\u0064\u0027\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u0065\u0071\u0075\u0061\u006c\u0020\u0074\u006f\u0020\u0074\u0068\u0065\u0020\u006c\u0065\u006e\u0067\u0074\u0068\u0020\u006f\u0066\u0020t\u0068\u0065\u0020\u0064\u0061\u0074\u0061\u0020\u0065\u006e\u0063\u006fd\u0065\u0064\u003a\u0020\u0027\u0025d\u0027",_bed ,len (_da ));};return _da ,nil ;};func (_cdb *Page )createPage (_ddb *_ecc .PageInformationSegment )error {var _gada error ;if !_ddb .IsStripe ||_ddb .PageBMHeight !=-1{_gada =_cdb .createNormalPage (_ddb );}else {_gada =_cdb .createStripedPage (_ddb );};return _gada ;};func (_ea *Document )AddClassifiedPage (bm *_b .Bitmap ,method _gg .Method )(_ee error ){const _bc ="\u0044\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u002e\u0041\u0064d\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064P\u0061\u0067\u0065";if !_ea .FullHeaders &&_ea .NumberOfPages !=0{return _cd .Error (_bc ,"\u0064\u006f\u0063\u0075\u006de\u006e\u0074\u0020\u0061\u006c\u0072\u0065a\u0064\u0079\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0073\u0020\u0070\u0061\u0067\u0065\u002e\u0020\u0046\u0069\u006c\u0065\u004d\u006f\u0064\u0065\u0020\u0064\u0069\u0073\u0061\u006c\u006c\u006f\u0077\u0073\u0020\u0061\u0064\u0064i\u006e\u0067\u0020\u006d\u006f\u0072\u0065\u0020\u0074\u0068\u0061\u006e \u006f\u006e\u0065\u0020\u0070\u0061g\u0065");};if _ea .Classer ==nil {if _ea .Classer ,_ee =_gg .Init (_gg .DefaultSettings ());_ee !=nil {return _cd .Wrap (_ee ,_bc ,"");};};_fg :=int (_ea .nextPageNumber ());_bce :=&Page {Segments :[]*_ecc .Header {},Bitmap :bm ,Document :_ea ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,PageNumber :_fg };_ea .Pages [_fg ]=_bce ;switch method {case _gg .RankHaus :_bce .EncodingMethod =RankHausEM ;case _gg .Correlation :_bce .EncodingMethod =CorrelationEM ;};_bce .AddPageInformationSegment ();if _ee =_ea .Classer .AddPage (bm ,_fg ,method );_ee !=nil {return _cd .Wrap (_ee ,_bc ,"");};if _ea .FullHeaders {_bce .AddEndOfPageSegment ();};return nil ;};func (_gfd *Page )getCombinationOperator (_edb *_ecc .PageInformationSegment ,_gdfd _b .CombinationOperator )_b .CombinationOperator {if _edb .CombinationOperatorOverrideAllowed (){return _gdfd ;};return _edb .CombinationOperator ();};func (_gae *Page )createStripedPage (_gdaa *_ecc .PageInformationSegment )error {const _dgfef ="\u0063\u0072\u0065\u0061\u0074\u0065\u0053\u0074\u0072\u0069\u0070\u0065d\u0050\u0061\u0067\u0065";_agb ,_abf :=_gae .collectPageStripes ();if _abf !=nil {return _cd .Wrap (_abf ,_dgfef ,"");};var _eceg int ;for _ ,_fbbb :=range _agb {if _gbe ,_ccff :=_fbbb .(*_ecc .EndOfStripe );_ccff {_eceg =_gbe .LineNumber ()+1;}else {_cefd :=_fbbb .(_ecc .Regioner );_edg :=_cefd .GetRegionInfo ();_caf :=_gae .getCombinationOperator (_gdaa ,_edg .CombinaionOperator );_cdg ,_affa :=_cefd .GetRegionBitmap ();if _affa !=nil {return _cd .Wrap (_affa ,_dgfef ,"");};_affa =_b .Blit (_cdg ,_gae .Bitmap ,int (_edg .XLocation ),_eceg ,_caf );if _affa !=nil {return _cd .Wrap (_affa ,_dgfef ,"");};};};return nil ;};func DecodeDocument (input _cg .StreamReader ,globals *Globals )(*Document ,error ){return _gcc (input ,globals );};func (_cag *Document )GetGlobalSegment (i int )(*_ecc .Header ,error ){_fef ,_bbf :=_cag .GlobalSegments .GetSegment (i );if _bbf !=nil {return nil ,_cd .Wrap (_bbf ,"\u0047\u0065t\u0047\u006c\u006fb\u0061\u006c\u0053\u0065\u0067\u006d\u0065\u006e\u0074","");};return _fef ,nil ;};func (_dbda *Document )GetPage (pageNumber int )(_ecc .Pager ,error ){const _cge ="\u0044\u006fc\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074\u0050\u0061\u0067\u0065";if pageNumber < 0{_ec .Log .Debug ("\u004a\u0042\u0049\u00472\u0020\u0050\u0061\u0067\u0065\u0020\u002d\u0020\u0047e\u0074\u0050\u0061\u0067\u0065\u003a\u0020\u0025\u0064\u002e\u0020\u0050\u0061\u0067\u0065\u0020\u0063\u0061n\u006e\u006f\u0074\u0020\u0062e\u0020\u006c\u006f\u0077\u0065\u0072\u0020\u0074\u0068\u0061\u006e\u0020\u0030\u002e\u0020\u0025\u0073",pageNumber ,_f .Stack ());return nil ,_cd .Errorf (_cge ,"\u0069\u006e\u0076\u0061l\u0069\u0064\u0020\u006a\u0062\u0069\u0067\u0032\u0020d\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u0020\u002d\u0020\u0070\u0072\u006f\u0076\u0069\u0064\u0065\u0064 \u0069\u006e\u0076\u0061\u006ci\u0064\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u003a\u0020\u0025\u0064",pageNumber );};if pageNumber > len (_dbda .Pages ){_ec .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_f .Stack ());return nil ,_cd .Error (_cge ,"\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006a\u0062\u0069\u0067\u0032 \u0064\u006f\u0063\u0075\u006d\u0065n\u0074\u0020\u002d\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};_ae ,_ada :=_dbda .Pages [pageNumber ];if !_ada {_ec .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_f .Stack ());return nil ,_cd .Errorf (_cge ,"\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006a\u0062\u0069\u0067\u0032 \u0064\u006f\u0063\u0075\u006d\u0065n\u0074\u0020\u002d\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};return _ae ,nil ;};func (_eaca *Page )GetHeight ()(int ,error ){return _eaca .getHeight ()};func _deg (_aaag *Document ,_bgfc int )*Page {return &Page {Document :_aaag ,PageNumber :_bgfc ,Segments :[]*_ecc .Header {}};};func (_bgd *Page )getResolutionX ()(int ,error ){const _ecgb ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0058";if _bgd .ResolutionX !=0{return _bgd .ResolutionX ,nil ;};_cfcf :=_bgd .getPageInformationSegment ();if _cfcf ==nil {return 0,_cd .Error (_ecgb ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_fbfd ,_eebg :=_cfcf .GetSegmentData ();if _eebg !=nil {return 0,_cd .Wrap (_eebg ,_ecgb ,"");};_eca ,_ggf :=_fbfd .(*_ecc .PageInformationSegment );if !_ggf {return 0,_cd .Errorf (_ecgb ,"\u0070\u0061\u0067\u0065\u0020\u0069n\u0066\u006f\u0072\u006d\u0061\u0074\u0069\u006f\u006e\u0020\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u0069\u0073 \u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0074\u0079\u0070e\u003a \u0027\u0025\u0054\u0027",_fbfd );};_bgd .ResolutionX =_eca .ResolutionX ;return _bgd .ResolutionX ,nil ;};func (_dea *Document )encodeFileHeader (_cgde _cg .BinaryWriter )(_eag int ,_dgb error ){const _adg ="\u0065\u006ec\u006f\u0064\u0065F\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";_eag ,_dgb =_cgde .Write (_ac );if _dgb !=nil {return _eag ,_cd .Wrap (_dgb ,_adg ,"\u0069\u0064");};if _dgb =_cgde .WriteByte (0x01);_dgb !=nil {return _eag ,_cd .Wrap (_dgb ,_adg ,"\u0066\u006c\u0061g\u0073");};_eag ++;_fab :=make ([]byte ,4);_ed .BigEndian .PutUint32 (_fab ,_dea .NumberOfPages );_ddcc ,_dgb :=_cgde .Write (_fab );if _dgb !=nil {return _ddcc ,_cd .Wrap (_dgb ,_adg ,"p\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_eag +=_ddcc ;return _eag ,nil ;};func (_gaa *Globals )AddSegment (segment *_ecc .Header ){_gaa .Segments =append (_gaa .Segments ,segment )};func _dfg (_gad int )int {_acg :=0;_fbc :=(_gad &(_gad -1))==0;_gad >>=1;for ;_gad !=0;_gad >>=1{_acg ++;};if _fbc {return _acg ;};return _acg +1;};func (_bbff *Globals )GetSegmentByIndex (index int )(*_ecc .Header ,error ){const _ebff ="\u0047l\u006f\u0062\u0061\u006cs\u002e\u0047\u0065\u0074\u0053e\u0067m\u0065n\u0074\u0042\u0079\u0049\u006e\u0064\u0065x";if _bbff ==nil {return nil ,_cd .Error (_ebff ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_bbff .Segments )==0{return nil ,_cd .Error (_ebff ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};if index > len (_bbff .Segments )-1{return nil ,_cd .Error (_ebff ,"\u0069n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");};return _bbff .Segments [index ],nil ;};func (_bedc *Page )GetSegment (number int )(*_ecc .Header ,error ){const _cbb ="\u0050a\u0067e\u002e\u0047\u0065\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074";for _ ,_bffb :=range _bedc .Segments {if _bffb .SegmentNumber ==uint32 (number ){return _bffb ,nil ;};};_bca :=make ([]uint32 ,len (_bedc .Segments ));for _eade ,_cgg :=range _bedc .Segments {_bca [_eade ]=_cgg .SegmentNumber ;};return nil ,_cd .Errorf (_cbb ,"\u0073e\u0067\u006d\u0065n\u0074\u0020\u0077i\u0074h \u006e\u0075\u006d\u0062\u0065\u0072\u003a \u0027\u0025\u0064\u0027\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u0020\u0069\u006e\u0020\u0074\u0068\u0065\u0020\u0070\u0061\u0067\u0065\u003a\u0020'%\u0064'\u002e\u0020\u004b\u006e\u006f\u0077n\u0020\u0073\u0065\u0067\u006de\u006e\u0074\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0073\u003a \u0025\u0076",number ,_bedc .PageNumber ,_bca );};func InitEncodeDocument (fullHeaders bool )*Document {return &Document {FullHeaders :fullHeaders ,_gb :_cg .BufferedMSB (),Pages :map[int ]*Page {},_fa :map[int ][]int {},_bb :map[int ]int {},_d :map[int ][]int {}};};type Globals struct{Segments []*_ecc .Header ;};func (_egb *Document )completeClassifiedPages ()(_ggg error ){const _ga ="\u0063\u006f\u006dpl\u0065\u0074\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067\u0065\u0073";if _egb .Classer ==nil {return nil ;};_egb ._eb =make ([]int ,_egb .Classer .UndilatedTemplates .Size ());for _dg :=0;_dg < _egb .Classer .ClassIDs .Size ();_dg ++{_fga ,_bff :=_egb .Classer .ClassIDs .Get (_dg );if _bff !=nil {return _cd .Wrapf (_bff ,_ga ,"\u0063\u006c\u0061\u0073s \u0077\u0069\u0074\u0068\u0020\u0069\u0064\u003a\u0020\u0027\u0025\u0064\u0027",_dg );};_egb ._eb [_fga ]++;};var _df []int ;for _gggb :=0;_gggb < _egb .Classer .UndilatedTemplates .Size ();_gggb ++{if _egb .NumberOfPages ==1||_egb ._eb [_gggb ]> 1{_df =append (_df ,_gggb );};};var (_ceg *Page ;_eac bool ;);for _eea ,_bg :=range *_egb .Classer .ComponentPageNumbers {if _ceg ,_eac =_egb .Pages [_bg ];!_eac {return _cd .Errorf (_ga ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_eea );};if _ceg .EncodingMethod ==GenericEM {_ec .Log .Error ("\u0047\u0065\u006e\u0065\u0072\u0069c\u0020\u0070\u0061g\u0065\u0020\u0077i\u0074\u0068\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u003a \u0027\u0025\u0064\u0027\u0020ma\u0070\u0070\u0065\u0064\u0020\u0061\u0073\u0020\u0063\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0020\u0070\u0061\u0067\u0065",_eea );continue ;};_egb ._d [_bg ]=append (_egb ._d [_bg ],_eea );_gc ,_ggd :=_egb .Classer .ClassIDs .Get (_eea );if _ggd !=nil {return _cd .Wrapf (_ggd ,_ga ,"\u006e\u006f\u0020\u0073uc\u0068\u0020\u0063\u006c\u0061\u0073\u0073\u0049\u0044\u003a\u0020\u0025\u0064",_eea );};if _egb ._eb [_gc ]==1&&_egb .NumberOfPages !=1{_ca :=append (_egb ._fa [_bg ],_gc );_egb ._fa [_bg ]=_ca ;};};if _ggg =_egb .Classer .ComputeLLCorners ();_ggg !=nil {return _cd .Wrap (_ggg ,_ga ,"");};if _ ,_ggg =_egb .addSymbolDictionary (0,_egb .Classer .UndilatedTemplates ,_df ,_egb ._bb ,false );_ggg !=nil {return _cd .Wrap (_ggg ,_ga ,"");};return nil ;};func (_ccf *Document )encodeSegment (_dae *_ecc .Header ,_dgc *int )error {const _bab ="\u0065\u006e\u0063\u006f\u0064\u0065\u0053\u0065\u0067\u006d\u0065\u006e\u0074";_dae .SegmentNumber =_ccf .nextSegmentNumber ();_ceb ,_cgf :=_dae .Encode (_ccf ._gb );if _cgf !=nil {return _cd .Wrapf (_cgf ,_bab ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0027\u0025\u0064\u0027",_dae .SegmentNumber );};*_dgc +=_ceb ;return nil ;};