2022-03-13 12:41:53 +00:00

131 lines
40 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 (_g "encoding/binary";_bb "fmt";_a "github.com/unidoc/unipdf/v3/common";_d "github.com/unidoc/unipdf/v3/internal/bitwise";_dg "github.com/unidoc/unipdf/v3/internal/jbig2/basic";_af "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";
_gg "github.com/unidoc/unipdf/v3/internal/jbig2/document/segments";_ab "github.com/unidoc/unipdf/v3/internal/jbig2/encoder/classer";_dgg "github.com/unidoc/unipdf/v3/internal/jbig2/errors";_bg "io";_bd "math";_gb "runtime/debug";);func InitEncodeDocument (fullHeaders bool )*Document {return &Document {FullHeaders :fullHeaders ,_fb :_d .BufferedMSB (),Pages :map[int ]*Page {},_ff :map[int ][]int {},_e :map[int ]int {},_c :map[int ][]int {}};
};type Globals struct{Segments []*_gg .Header ;};func (_ebgb *Page )createNormalPage (_ecb *_gg .PageInformationSegment )error {const _fdd ="\u0063\u0072e\u0061\u0074\u0065N\u006f\u0072\u006d\u0061\u006c\u0050\u0061\u0067\u0065";_ebgb .Bitmap =_af .New (_ecb .PageBMWidth ,_ecb .PageBMHeight );
if _ecb .DefaultPixelValue !=0{_ebgb .Bitmap .SetDefaultPixel ();};for _ ,_bdgd :=range _ebgb .Segments {switch _bdgd .Type {case 6,7,22,23,38,39,42,43:_a .Log .Trace ("\u0047\u0065\u0074\u0074in\u0067\u0020\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0025\u0064",_bdgd .SegmentNumber );
_dgfa ,_dgcf :=_bdgd .GetSegmentData ();if _dgcf !=nil {return _dgcf ;};_beb ,_ecba :=_dgfa .(_gg .Regioner );if !_ecba {_a .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",_dgfa );
return _dgg .Errorf (_fdd ,"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",_dgfa );
};_cdad ,_dgcf :=_beb .GetRegionBitmap ();if _dgcf !=nil {return _dgg .Wrap (_dgcf ,_fdd ,"");};if _ebgb .fitsPage (_ecb ,_cdad ){_ebgb .Bitmap =_cdad ;}else {_ffc :=_beb .GetRegionInfo ();_aff :=_ebgb .getCombinationOperator (_ecb ,_ffc .CombinaionOperator );
_dgcf =_af .Blit (_cdad ,_ebgb .Bitmap ,int (_ffc .XLocation ),int (_ffc .YLocation ),_aff );if _dgcf !=nil {return _dgg .Wrap (_dgcf ,_fdd ,"");};};};};return nil ;};func (_fc *Document )addSymbolDictionary (_ed int ,_eec *_af .Bitmaps ,_ad []int ,_bf map[int ]int ,_fac bool )(*_gg .Header ,error ){const _gbg ="\u0061\u0064\u0064\u0053ym\u0062\u006f\u006c\u0044\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079";
_cda :=&_gg .SymbolDictionary {};if _fbg :=_cda .InitEncode (_eec ,_ad ,_bf ,_fac );_fbg !=nil {return nil ,_fbg ;};_dea :=&_gg .Header {Type :_gg .TSymbolDictionary ,PageAssociation :_ed ,SegmentData :_cda };if _ed ==0{if _fc .GlobalSegments ==nil {_fc .GlobalSegments =&Globals {};
};_fc .GlobalSegments .AddSegment (_dea );return _dea ,nil ;};_dba ,_ce :=_fc .Pages [_ed ];if !_ce {return nil ,_dgg .Errorf (_gbg ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_ed );};var (_fbe int ;
_ccg *_gg .Header ;);for _fbe ,_ccg =range _dba .Segments {if _ccg .Type ==_gg .TPageInformation {break ;};};_fbe ++;_dba .Segments =append (_dba .Segments ,nil );copy (_dba .Segments [_fbe +1:],_dba .Segments [_fbe :]);_dba .Segments [_fbe ]=_dea ;return _dea ,nil ;
};func (_fa *Document )produceClassifiedPage (_eab *Page ,_gcf *_gg .Header )(_gcb error ){const _ggc ="p\u0072\u006f\u0064\u0075ce\u0043l\u0061\u0073\u0073\u0069\u0066i\u0065\u0064\u0050\u0061\u0067\u0065";var _dgde map[int ]int ;_de :=_fa ._fg ;_eg :=[]*_gg .Header {_gcf };
if len (_fa ._ff [_eab .PageNumber ])> 0{_dgde =map[int ]int {};_bda ,_daa :=_fa .addSymbolDictionary (_eab .PageNumber ,_fa .Classer .UndilatedTemplates ,_fa ._ff [_eab .PageNumber ],_dgde ,false );if _daa !=nil {return _dgg .Wrap (_daa ,_ggc ,"");};_eg =append (_eg ,_bda );
_de +=len (_fa ._ff [_eab .PageNumber ]);};_fgcf :=_fa ._c [_eab .PageNumber ];_a .Log .Debug ("P\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020c\u006f\u006d\u0070\u0073: \u0025\u0076",_eab .PageNumber ,_fgcf );_eab .addTextRegionSegment (_eg ,_fa ._e ,_dgde ,_fa ._c [_eab .PageNumber ],_fa .Classer .PtaLL ,_fa .Classer .UndilatedTemplates ,_fa .Classer .ClassIDs ,nil ,_ffe (_de ),len (_fa ._c [_eab .PageNumber ]));
return nil ;};func (_ffb *Document )determineRandomDataOffsets (_gfa []*_gg .Header ,_bbe uint64 ){if _ffb .OrganizationType !=_gg .ORandom {return ;};for _ ,_dag :=range _gfa {_dag .SegmentDataStartOffset =_bbe ;_bbe +=_dag .SegmentDataLength ;};};const (GenericEM EncodingMethod =iota ;
CorrelationEM ;RankHausEM ;);func (_cab *Globals )AddSegment (segment *_gg .Header ){_cab .Segments =append (_cab .Segments ,segment )};func _bddc (_ccc *Document ,_faf int )*Page {return &Page {Document :_ccc ,PageNumber :_faf ,Segments :[]*_gg .Header {}};
};func (_cd *Document )AddGenericPage (bm *_af .Bitmap ,duplicateLineRemoval bool )(_ca error ){const _fda ="\u0044\u006f\u0063um\u0065\u006e\u0074\u002e\u0041\u0064\u0064\u0047\u0065\u006e\u0065\u0072\u0069\u0063\u0050\u0061\u0067\u0065";if !_cd .FullHeaders &&_cd .NumberOfPages !=0{return _dgg .Error (_fda ,"\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");
};_dc :=&Page {Segments :[]*_gg .Header {},Bitmap :bm ,Document :_cd ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,IsLossless :true ,BlackIsOne :bm .Color ==_af .Chocolate };_dc .PageNumber =int (_cd .nextPageNumber ());_cd .Pages [_dc .PageNumber ]=_dc ;
bm .InverseData ();_dc .AddPageInformationSegment ();if _ca =_dc .AddGenericRegion (bm ,0,0,0,_gg .TImmediateGenericRegion ,duplicateLineRemoval );_ca !=nil {return _dgg .Wrap (_ca ,_fda ,"");};if _cd .FullHeaders {_dc .AddEndOfPageSegment ();};return nil ;
};func (_fdf *Page )AddGenericRegion (bm *_af .Bitmap ,xloc ,yloc ,template int ,tp _gg .Type ,duplicateLineRemoval bool )error {const _efd ="P\u0061\u0067\u0065\u002eAd\u0064G\u0065\u006e\u0065\u0072\u0069c\u0052\u0065\u0067\u0069\u006f\u006e";_bbdb :=&_gg .GenericRegion {};
if _efb :=_bbdb .InitEncode (bm ,xloc ,yloc ,template ,duplicateLineRemoval );_efb !=nil {return _dgg .Wrap (_efb ,_efd ,"");};_ccf :=&_gg .Header {Type :_gg .TImmediateGenericRegion ,PageAssociation :_fdf .PageNumber ,SegmentData :_bbdb };_fdf .Segments =append (_fdf .Segments ,_ccf );
return nil ;};func (_dagg *Document )mapData ()error {const _gbb ="\u006da\u0070\u0044\u0061\u0074\u0061";var (_dfd []*_gg .Header ;_caa int64 ;_bfb _gg .Type ;);_cfcc ,_bad :=_dagg .isFileHeaderPresent ();if _bad !=nil {return _dgg .Wrap (_bad ,_gbb ,"");
};if _cfcc {if _bad =_dagg .parseFileHeader ();_bad !=nil {return _dgg .Wrap (_bad ,_gbb ,"");};_caa +=int64 (_dagg ._fd );_dagg .FullHeaders =true ;};var (_bbeg *Page ;_adb bool ;);for _bfb !=51&&!_adb {_edb ,_gac :=_gg .NewHeader (_dagg ,_dagg .InputStream ,_caa ,_dagg .OrganizationType );
if _gac !=nil {return _dgg .Wrap (_gac ,_gbb ,"");};_a .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",_edb .SegmentNumber ,_edb .Type );
_bfb =_edb .Type ;if _bfb !=_gg .TEndOfFile {if _edb .PageAssociation !=0{_bbeg =_dagg .Pages [_edb .PageAssociation ];if _bbeg ==nil {_bbeg =_bddc (_dagg ,_edb .PageAssociation );_dagg .Pages [_edb .PageAssociation ]=_bbeg ;if _dagg .NumberOfPagesUnknown {_dagg .NumberOfPages ++;
};};_bbeg .Segments =append (_bbeg .Segments ,_edb );}else {_dagg .GlobalSegments .AddSegment (_edb );};};_dfd =append (_dfd ,_edb );_caa =_dagg .InputStream .StreamPosition ();if _dagg .OrganizationType ==_gg .OSequential {_caa +=int64 (_edb .SegmentDataLength );
};_adb ,_gac =_dagg .reachedEOF (_caa );if _gac !=nil {_a .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",_gac );
return _dgg .Wrap (_gac ,_gbb ,"");};};_dagg .determineRandomDataOffsets (_dfd ,uint64 (_caa ));return nil ;};func (_dcad *Page )GetSegment (number int )(*_gg .Header ,error ){const _egf ="\u0050a\u0067e\u002e\u0047\u0065\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074";
for _ ,_fcf :=range _dcad .Segments {if _fcf .SegmentNumber ==uint32 (number ){return _fcf ,nil ;};};_gfgg :=make ([]uint32 ,len (_dcad .Segments ));for _aged ,_gffd :=range _dcad .Segments {_gfgg [_aged ]=_gffd .SegmentNumber ;};return nil ,_dgg .Errorf (_egf ,"\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 ,_dcad .PageNumber ,_gfgg );
};func (_bfd *Page )collectPageStripes ()(_dcga []_gg .Segmenter ,_dcdb error ){const _afg ="\u0063o\u006cl\u0065\u0063\u0074\u0050\u0061g\u0065\u0053t\u0072\u0069\u0070\u0065\u0073";var _fea _gg .Segmenter ;for _ ,_ebf :=range _bfd .Segments {switch _ebf .Type {case 6,7,22,23,38,39,42,43:_fea ,_dcdb =_ebf .GetSegmentData ();
if _dcdb !=nil {return nil ,_dgg .Wrap (_dcdb ,_afg ,"");};_dcga =append (_dcga ,_fea );case 50:_fea ,_dcdb =_ebf .GetSegmentData ();if _dcdb !=nil {return nil ,_dcdb ;};_ggbe ,_cfbf :=_fea .(*_gg .EndOfStripe );if !_cfbf {return nil ,_dgg .Errorf (_afg ,"\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",_fea );
};_dcga =append (_dcga ,_ggbe );_bfd .FinalHeight =_ggbe .LineNumber ();};};return _dcga ,nil ;};func _bdb (_fag _d .StreamReader ,_eef *Globals )(*Document ,error ){_acb :=&Document {Pages :make (map[int ]*Page ),InputStream :_fag ,OrganizationType :_gg .OSequential ,NumberOfPagesUnknown :true ,GlobalSegments :_eef ,_fd :9};
if _acb .GlobalSegments ==nil {_acb .GlobalSegments =&Globals {};};if _dfa :=_acb .mapData ();_dfa !=nil {return nil ,_dfa ;};return _acb ,nil ;};func (_dae *Document )nextSegmentNumber ()uint32 {_ceda :=_dae .CurrentSegmentNumber ;_dae .CurrentSegmentNumber ++;
return _ceda ;};func (_ceb *Document )encodeFileHeader (_fcd _d .BinaryWriter )(_dgc int ,_cgc error ){const _cde ="\u0065\u006ec\u006f\u0064\u0065F\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";_dgc ,_cgc =_fcd .Write (_f );if _cgc !=nil {return _dgc ,_dgg .Wrap (_cgc ,_cde ,"\u0069\u0064");
};if _cgc =_fcd .WriteByte (0x01);_cgc !=nil {return _dgc ,_dgg .Wrap (_cgc ,_cde ,"\u0066\u006c\u0061g\u0073");};_dgc ++;_cea :=make ([]byte ,4);_g .BigEndian .PutUint32 (_cea ,_ceb .NumberOfPages );_beg ,_cgc :=_fcd .Write (_cea );if _cgc !=nil {return _beg ,_dgg .Wrap (_cgc ,_cde ,"p\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");
};_dgc +=_beg ;return _dgc ,nil ;};func (_gee *Document )reachedEOF (_ef int64 )(bool ,error ){const _fef ="\u0072\u0065\u0061\u0063\u0068\u0065\u0064\u0045\u004f\u0046";_ ,_dgf :=_gee .InputStream .Seek (_ef ,_bg .SeekStart );if _dgf !=nil {_a .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",_dgf );
return false ,_dgg .Wrap (_dgf ,_fef ,"\u0069n\u0070\u0075\u0074\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020s\u0065\u0065\u006b\u0020\u0066\u0061\u0069\u006c\u0065\u0064");};_ ,_dgf =_gee .InputStream .ReadBits (32);if _dgf ==_bg .EOF {return true ,nil ;
}else if _dgf !=nil {return false ,_dgg .Wrap (_dgf ,_fef ,"");};return false ,nil ;};func (_cbb *Page )AddPageInformationSegment (){_ddd :=&_gg .PageInformationSegment {PageBMWidth :_cbb .FinalWidth ,PageBMHeight :_cbb .FinalHeight ,ResolutionX :_cbb .ResolutionX ,ResolutionY :_cbb .ResolutionY ,IsLossless :_cbb .IsLossless };
if _cbb .BlackIsOne {_ddd .DefaultPixelValue =uint8 (0x1);};_cfd :=&_gg .Header {PageAssociation :_cbb .PageNumber ,SegmentDataLength :uint64 (_ddd .Size ()),SegmentData :_ddd ,Type :_gg .TPageInformation };_cbb .Segments =append (_cbb .Segments ,_cfd );
};func (_fad *Page )GetWidth ()(int ,error ){return _fad .getWidth ()};func _ffe (_eed int )int {_dge :=0;_fgb :=(_eed &(_eed -1))==0;_eed >>=1;for ;_eed !=0;_eed >>=1{_dge ++;};if _fgb {return _dge ;};return _dge +1;};func (_bba *Document )Encode ()(_ga []byte ,_bbc error ){const _ac ="\u0044o\u0063u\u006d\u0065\u006e\u0074\u002e\u0045\u006e\u0063\u006f\u0064\u0065";
var _bcg ,_fdc int ;if _bba .FullHeaders {if _bcg ,_bbc =_bba .encodeFileHeader (_bba ._fb );_bbc !=nil {return nil ,_dgg .Wrap (_bbc ,_ac ,"");};};var (_gbgd bool ;_dcc *_gg .Header ;_bgc *Page ;);if _bbc =_bba .completeClassifiedPages ();_bbc !=nil {return nil ,_dgg .Wrap (_bbc ,_ac ,"");
};if _bbc =_bba .produceClassifiedPages ();_bbc !=nil {return nil ,_dgg .Wrap (_bbc ,_ac ,"");};if _bba .GlobalSegments !=nil {for _ ,_dcc =range _bba .GlobalSegments .Segments {if _bbc =_bba .encodeSegment (_dcc ,&_bcg );_bbc !=nil {return nil ,_dgg .Wrap (_bbc ,_ac ,"");
};};};for _dcg :=1;_dcg <=int (_bba .NumberOfPages );_dcg ++{if _bgc ,_gbgd =_bba .Pages [_dcg ];!_gbgd {return nil ,_dgg .Errorf (_ac ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_dcg );};for _ ,_dcc =range _bgc .Segments {if _bbc =_bba .encodeSegment (_dcc ,&_bcg );
_bbc !=nil {return nil ,_dgg .Wrap (_bbc ,_ac ,"");};};};if _bba .FullHeaders {if _fdc ,_bbc =_bba .encodeEOFHeader (_bba ._fb );_bbc !=nil {return nil ,_dgg .Wrap (_bbc ,_ac ,"");};_bcg +=_fdc ;};_ga =_bba ._fb .Data ();if len (_ga )!=_bcg {_a .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",_bcg ,len (_ga ));
};return _ga ,nil ;};func (_gbe *Page )lastSegmentNumber ()(_eeaf uint32 ,_dfac error ){const _ffgc ="\u006c\u0061\u0073\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u004eu\u006d\u0062\u0065\u0072";if len (_gbe .Segments )==0{return _eeaf ,_dgg .Errorf (_ffgc ,"\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",_gbe .PageNumber );
};return _gbe .Segments [len (_gbe .Segments )-1].SegmentNumber ,nil ;};func (_ebca *Page )getCombinationOperator (_dcca *_gg .PageInformationSegment ,_feg _af .CombinationOperator )_af .CombinationOperator {if _dcca .CombinationOperatorOverrideAllowed (){return _feg ;
};return _dcca .CombinationOperator ();};func (_dfab *Page )getHeight ()(int ,error ){const _gcdg ="\u0067e\u0074\u0048\u0065\u0069\u0067\u0068t";if _dfab .FinalHeight !=0{return _dfab .FinalHeight ,nil ;};_cebd :=_dfab .getPageInformationSegment ();if _cebd ==nil {return 0,_dgg .Error (_gcdg ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");
};_cgg ,_cdf :=_cebd .GetSegmentData ();if _cdf !=nil {return 0,_dgg .Wrap (_cdf ,_gcdg ,"");};_ecg ,_ddaf :=_cgg .(*_gg .PageInformationSegment );if !_ddaf {return 0,_dgg .Errorf (_gcdg ,"\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",_cgg );
};if _ecg .PageBMHeight ==_bd .MaxInt32 {_ ,_cdf =_dfab .GetBitmap ();if _cdf !=nil {return 0,_dgg .Wrap (_cdf ,_gcdg ,"");};}else {_dfab .FinalHeight =_ecg .PageBMHeight ;};return _dfab .FinalHeight ,nil ;};func (_cgb *Page )AddEndOfPageSegment (){_dac :=&_gg .Header {Type :_gg .TEndOfPage ,PageAssociation :_cgb .PageNumber };
_cgb .Segments =append (_cgb .Segments ,_dac );};type Page struct{Segments []*_gg .Header ;PageNumber int ;Bitmap *_af .Bitmap ;FinalHeight int ;FinalWidth int ;ResolutionX int ;ResolutionY int ;IsLossless bool ;Document *Document ;FirstSegmentNumber int ;
EncodingMethod EncodingMethod ;BlackIsOne bool ;};func DecodeDocument (input _d .StreamReader ,globals *Globals )(*Document ,error ){return _bdb (input ,globals );};func (_faa *Document )completeSymbols ()(_bbd error ){const _dgb ="\u0063o\u006dp\u006c\u0065\u0074\u0065\u0053\u0079\u006d\u0062\u006f\u006c\u0073";
if _faa .Classer ==nil {return nil ;};if _faa .Classer .UndilatedTemplates ==nil {return _dgg .Error (_dgb ,"\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");
};_eae :=len (_faa .Pages )==1;_dbf :=make ([]int ,_faa .Classer .UndilatedTemplates .Size ());var _cae int ;for _cb :=0;_cb < _faa .Classer .ClassIDs .Size ();_cb ++{_cae ,_bbd =_faa .Classer .ClassIDs .Get (_cb );if _bbd !=nil {return _dgg .Wrap (_bbd ,_dgb ,"\u0063\u006c\u0061\u0073\u0073\u0020\u0049\u0044\u0027\u0073");
};_dbf [_cae ]++;};var _ead []int ;for _be :=0;_be < _faa .Classer .UndilatedTemplates .Size ();_be ++{if _dbf [_be ]==0{return _dgg .Error (_dgb ,"\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 _dbf [_be ]> 1||_eae {_ead =append (_ead ,_be );};};_faa ._fg =len (_ead );var _aee ,_gff int ;for _cdd :=0;_cdd < _faa .Classer .ComponentPageNumbers .Size ();_cdd ++{_aee ,_bbd =_faa .Classer .ComponentPageNumbers .Get (_cdd );if _bbd !=nil {return _dgg .Wrapf (_bbd ,_dgb ,"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",_cdd );
};_gff ,_bbd =_faa .Classer .ClassIDs .Get (_cdd );if _bbd !=nil {return _dgg .Wrapf (_bbd ,_dgb ,"\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",_aee );
};if _dbf [_gff ]==1&&!_eae {_faa ._ff [_aee ]=append (_faa ._ff [_aee ],_gff );};};if _bbd =_faa .Classer .ComputeLLCorners ();_bbd !=nil {return _dgg .Wrap (_bbd ,_dgb ,"");};return nil ;};func (_facc *Page )GetResolutionX ()(int ,error ){return _facc .getResolutionX ()};
func (_ded *Page )getPageInformationSegment ()*_gg .Header {for _ ,_cdee :=range _ded .Segments {if _cdee .Type ==_gg .TPageInformation {return _cdee ;};};_a .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",_ded );
return nil ;};func (_gdd *Page )getResolutionX ()(int ,error ){const _ebga ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0058";if _gdd .ResolutionX !=0{return _gdd .ResolutionX ,nil ;};_bddd :=_gdd .getPageInformationSegment ();
if _bddd ==nil {return 0,_dgg .Error (_ebga ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_ege ,_ffcc :=_bddd .GetSegmentData ();if _ffcc !=nil {return 0,_dgg .Wrap (_ffcc ,_ebga ,"");};_ebfg ,_acbg :=_ege .(*_gg .PageInformationSegment );
if !_acbg {return 0,_dgg .Errorf (_ebga ,"\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",_ege );
};_gdd .ResolutionX =_ebfg .ResolutionX ;return _gdd .ResolutionX ,nil ;};func (_agg *Page )GetHeight ()(int ,error ){return _agg .getHeight ()};func (_cfe *Globals )GetSegment (segmentNumber int )(*_gg .Header ,error ){const _cad ="\u0047l\u006fb\u0061\u006c\u0073\u002e\u0047e\u0074\u0053e\u0067\u006d\u0065\u006e\u0074";
if _cfe ==nil {return nil ,_dgg .Error (_cad ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_cfe .Segments )==0{return nil ,_dgg .Error (_cad ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");
};var _eeb *_gg .Header ;for _ ,_eeb =range _cfe .Segments {if _eeb .SegmentNumber ==uint32 (segmentNumber ){break ;};};if _eeb ==nil {return nil ,_dgg .Error (_cad ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");
};return _eeb ,nil ;};func (_bgg *Document )produceClassifiedPages ()(_ba error ){const _gga ="\u0070\u0072\u006f\u0064uc\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067e\u0073";if _bgg .Classer ==nil {return nil ;};
var (_cg *Page ;_gf bool ;_fgf *_gg .Header ;);for _dd :=1;_dd <=int (_bgg .NumberOfPages );_dd ++{if _cg ,_gf =_bgg .Pages [_dd ];!_gf {return _dgg .Errorf (_gga ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_dd );
};if _cg .EncodingMethod ==GenericEM {continue ;};if _fgf ==nil {if _fgf ,_ba =_bgg .GlobalSegments .GetSymbolDictionary ();_ba !=nil {return _dgg .Wrap (_ba ,_gga ,"");};};if _ba =_bgg .produceClassifiedPage (_cg ,_fgf );_ba !=nil {return _dgg .Wrapf (_ba ,_gga ,"\u0070\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027",_dd );
};};return nil ;};func (_fcb *Document )isFileHeaderPresent ()(bool ,error ){_fcb .InputStream .Mark ();for _ ,_ffeg :=range _f {_cfb ,_eag :=_fcb .InputStream .ReadByte ();if _eag !=nil {return false ,_eag ;};if _ffeg !=_cfb {_fcb .InputStream .Reset ();
return false ,nil ;};};_fcb .InputStream .Reset ();return true ,nil ;};func (_gag *Page )Encode (w _d .BinaryWriter )(_dff int ,_acf error ){const _faad ="P\u0061\u0067\u0065\u002e\u0045\u006e\u0063\u006f\u0064\u0065";var _fbc int ;for _ ,_eea :=range _gag .Segments {if _fbc ,_acf =_eea .Encode (w );
_acf !=nil {return _dff ,_dgg .Wrap (_acf ,_faad ,"");};_dff +=_fbc ;};return _dff ,nil ;};func (_aad *Page )nextSegmentNumber ()uint32 {return _aad .Document .nextSegmentNumber ()};func (_ega *Page )countRegions ()int {var _bgcc int ;for _ ,_ebe :=range _ega .Segments {switch _ebe .Type {case 6,7,22,23,38,39,42,43:_bgcc ++;
};};return _bgcc ;};func (_ec *Page )addTextRegionSegment (_abb []*_gg .Header ,_ggbf ,_gde map[int ]int ,_gcd []int ,_aeg *_af .Points ,_fgfb *_af .Bitmaps ,_aed *_dg .IntSlice ,_afda *_af .Boxes ,_ffg ,_cdg int ){_eba :=&_gg .TextRegion {NumberOfSymbols :uint32 (_cdg )};
_eba .InitEncode (_ggbf ,_gde ,_gcd ,_aeg ,_fgfb ,_aed ,_afda ,_ec .FinalWidth ,_ec .FinalHeight ,_ffg );_fge :=&_gg .Header {RTSegments :_abb ,SegmentData :_eba ,PageAssociation :_ec .PageNumber ,Type :_gg .TImmediateTextRegion };_gfg :=_gg .TPageInformation ;
if _gde !=nil {_gfg =_gg .TSymbolDictionary ;};var _ecc int ;for ;_ecc < len (_ec .Segments );_ecc ++{if _ec .Segments [_ecc ].Type ==_gfg {_ecc ++;break ;};};_ec .Segments =append (_ec .Segments ,nil );copy (_ec .Segments [_ecc +1:],_ec .Segments [_ecc :]);
_ec .Segments [_ecc ]=_fge ;};type EncodingMethod int ;func (_fgbc *Globals )GetSymbolDictionary ()(*_gg .Header ,error ){const _dee ="G\u006c\u006f\u0062\u0061\u006c\u0073.\u0047\u0065\u0074\u0053\u0079\u006d\u0062\u006f\u006cD\u0069\u0063\u0074i\u006fn\u0061\u0072\u0079";
if _fgbc ==nil {return nil ,_dgg .Error (_dee ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_fgbc .Segments )==0{return nil ,_dgg .Error (_dee ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");
};for _ ,_gba :=range _fgbc .Segments {if _gba .Type ==_gg .TSymbolDictionary {return _gba ,nil ;};};return nil ,_dgg .Error (_dee ,"\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 (_egc *Page )fitsPage (_dfc *_gg .PageInformationSegment ,_efc *_af .Bitmap )bool {return _egc .countRegions ()==1&&_dfc .DefaultPixelValue ==0&&_dfc .PageBMWidth ==_efc .Width &&_dfc .PageBMHeight ==_efc .Height ;};func (_da *Document )completeClassifiedPages ()(_fgc error ){const _ae ="\u0063\u006f\u006dpl\u0065\u0074\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067\u0065\u0073";
if _da .Classer ==nil {return nil ;};_da ._dgd =make ([]int ,_da .Classer .UndilatedTemplates .Size ());for _feb :=0;_feb < _da .Classer .ClassIDs .Size ();_feb ++{_ea ,_abc :=_da .Classer .ClassIDs .Get (_feb );if _abc !=nil {return _dgg .Wrapf (_abc ,_ae ,"\u0063\u006c\u0061\u0073s \u0077\u0069\u0074\u0068\u0020\u0069\u0064\u003a\u0020\u0027\u0025\u0064\u0027",_feb );
};_da ._dgd [_ea ]++;};var _db []int ;for _gbc :=0;_gbc < _da .Classer .UndilatedTemplates .Size ();_gbc ++{if _da .NumberOfPages ==1||_da ._dgd [_gbc ]> 1{_db =append (_db ,_gbc );};};var (_dcd *Page ;_gc bool ;);for _dca ,_cf :=range *_da .Classer .ComponentPageNumbers {if _dcd ,_gc =_da .Pages [_cf ];
!_gc {return _dgg .Errorf (_ae ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_dca );};if _dcd .EncodingMethod ==GenericEM {_a .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",_dca );
continue ;};_da ._c [_cf ]=append (_da ._c [_cf ],_dca );_eb ,_caf :=_da .Classer .ClassIDs .Get (_dca );if _caf !=nil {return _dgg .Wrapf (_caf ,_ae ,"\u006e\u006f\u0020\u0073uc\u0068\u0020\u0063\u006c\u0061\u0073\u0073\u0049\u0044\u003a\u0020\u0025\u0064",_dca );
};if _da ._dgd [_eb ]==1&&_da .NumberOfPages !=1{_ffd :=append (_da ._ff [_cf ],_eb );_da ._ff [_cf ]=_ffd ;};};if _fgc =_da .Classer .ComputeLLCorners ();_fgc !=nil {return _dgg .Wrap (_fgc ,_ae ,"");};if _ ,_fgc =_da .addSymbolDictionary (0,_da .Classer .UndilatedTemplates ,_db ,_da ._e ,false );
_fgc !=nil {return _dgg .Wrap (_fgc ,_ae ,"");};return nil ;};func (_gdf *Document )GetPage (pageNumber int )(_gg .Pager ,error ){const _ag ="\u0044\u006fc\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074\u0050\u0061\u0067\u0065";if pageNumber < 0{_a .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 ,_gb .Stack ());
return nil ,_dgg .Errorf (_ag ,"\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 (_gdf .Pages ){_a .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_gb .Stack ());return nil ,_dgg .Error (_ag ,"\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");
};_eaba ,_feba :=_gdf .Pages [pageNumber ];if !_feba {_a .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_gb .Stack ());return nil ,_dgg .Errorf (_ag ,"\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 _eaba ,nil ;};func (_ebg *Page )GetResolutionY ()(int ,error ){return _ebg .getResolutionY ()};func (_ee *Document )AddClassifiedPage (bm *_af .Bitmap ,method _ab .Method )(_fe 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 !_ee .FullHeaders &&_ee .NumberOfPages !=0{return _dgg .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 _ee .Classer ==nil {if _ee .Classer ,_fe =_ab .Init (_ab .DefaultSettings ());_fe !=nil {return _dgg .Wrap (_fe ,_bc ,"");};};_bdg :=int (_ee .nextPageNumber ());_cc :=&Page {Segments :[]*_gg .Header {},Bitmap :bm ,Document :_ee ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,PageNumber :_bdg };
_ee .Pages [_bdg ]=_cc ;switch method {case _ab .RankHaus :_cc .EncodingMethod =RankHausEM ;case _ab .Correlation :_cc .EncodingMethod =CorrelationEM ;};_cc .AddPageInformationSegment ();if _fe =_ee .Classer .AddPage (bm ,_bdg ,method );_fe !=nil {return _dgg .Wrap (_fe ,_bc ,"");
};if _ee .FullHeaders {_cc .AddEndOfPageSegment ();};return nil ;};func (_deg *Document )encodeEOFHeader (_abg _d .BinaryWriter )(_aac int ,_age error ){_edg :=&_gg .Header {SegmentNumber :_deg .nextSegmentNumber (),Type :_gg .TEndOfFile };if _aac ,_age =_edg .Encode (_abg );
_age !=nil {return 0,_dgg .Wrap (_age ,"\u0065n\u0063o\u0064\u0065\u0045\u004f\u0046\u0048\u0065\u0061\u0064\u0065\u0072","");};return _aac ,nil ;};type Document struct{Pages map[int ]*Page ;NumberOfPagesUnknown bool ;NumberOfPages uint32 ;GBUseExtTemplate bool ;
InputStream _d .StreamReader ;GlobalSegments *Globals ;OrganizationType _gg .OrganizationType ;Classer *_ab .Classer ;XRes ,YRes int ;FullHeaders bool ;CurrentSegmentNumber uint32 ;AverageTemplates *_af .Bitmaps ;BaseIndexes []int ;Refinement bool ;RefineLevel int ;
_fd uint8 ;_fb *_d .BufferedWriter ;EncodeGlobals bool ;_fg int ;_ff map[int ][]int ;_c map[int ][]int ;_dgd []int ;_e map[int ]int ;};func (_fde *Page )clearSegmentData (){for _fdbd :=range _fde .Segments {_fde .Segments [_fdbd ].CleanSegmentData ();};
};func (_cgba *Page )createStripedPage (_faca *_gg .PageInformationSegment )error {const _fcc ="\u0063\u0072\u0065\u0061\u0074\u0065\u0053\u0074\u0072\u0069\u0070\u0065d\u0050\u0061\u0067\u0065";_gfd ,_dfaf :=_cgba .collectPageStripes ();if _dfaf !=nil {return _dgg .Wrap (_dfaf ,_fcc ,"");
};var _abbd int ;for _ ,_gaf :=range _gfd {if _fcg ,_ebc :=_gaf .(*_gg .EndOfStripe );_ebc {_abbd =_fcg .LineNumber ()+1;}else {_gcg :=_gaf .(_gg .Regioner );_gbga :=_gcg .GetRegionInfo ();_gdc :=_cgba .getCombinationOperator (_faca ,_gbga .CombinaionOperator );
_gbbg ,_fbb :=_gcg .GetRegionBitmap ();if _fbb !=nil {return _dgg .Wrap (_fbb ,_fcc ,"");};_fbb =_af .Blit (_gbbg ,_cgba .Bitmap ,int (_gbga .XLocation ),_abbd ,_gdc );if _fbb !=nil {return _dgg .Wrap (_fbb ,_fcc ,"");};};};return nil ;};func (_dda *Document )parseFileHeader ()error {const _bdd ="\u0070a\u0072s\u0065\u0046\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";
_ ,_egb :=_dda .InputStream .Seek (8,_bg .SeekStart );if _egb !=nil {return _dgg .Wrap (_egb ,_bdd ,"\u0069\u0064");};_ ,_egb =_dda .InputStream .ReadBits (5);if _egb !=nil {return _dgg .Wrap (_egb ,_bdd ,"\u0072\u0065\u0073\u0065\u0072\u0076\u0065\u0064\u0020\u0062\u0069\u0074\u0073");
};_gge ,_egb :=_dda .InputStream .ReadBit ();if _egb !=nil {return _dgg .Wrap (_egb ,_bdd ,"\u0065x\u0074e\u006e\u0064\u0065\u0064\u0020t\u0065\u006dp\u006c\u0061\u0074\u0065\u0073");};if _gge ==1{_dda .GBUseExtTemplate =true ;};_gge ,_egb =_dda .InputStream .ReadBit ();
if _egb !=nil {return _dgg .Wrap (_egb ,_bdd ,"\u0075\u006e\u006b\u006eow\u006e\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};if _gge !=1{_dda .NumberOfPagesUnknown =false ;};_gge ,_egb =_dda .InputStream .ReadBit ();if _egb !=nil {return _dgg .Wrap (_egb ,_bdd ,"\u006f\u0072\u0067\u0061\u006e\u0069\u007a\u0061\u0074\u0069\u006f\u006e \u0074\u0079\u0070\u0065");
};_dda .OrganizationType =_gg .OrganizationType (_gge );if !_dda .NumberOfPagesUnknown {_dda .NumberOfPages ,_egb =_dda .InputStream .ReadUint32 ();if _egb !=nil {return _dgg .Wrap (_egb ,_bdd ,"\u006eu\u006db\u0065\u0072\u0020\u006f\u0066\u0020\u0070\u0061\u0067\u0065\u0073");
};_dda ._fd =13;};return nil ;};func (_eecb *Page )getResolutionY ()(int ,error ){const _acg ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0059";if _eecb .ResolutionY !=0{return _eecb .ResolutionY ,nil ;};_eead :=_eecb .getPageInformationSegment ();
if _eead ==nil {return 0,_dgg .Error (_acg ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_eeee ,_aga :=_eead .GetSegmentData ();if _aga !=nil {return 0,_dgg .Wrap (_aga ,_acg ,"");};_ddf ,_aab :=_eeee .(*_gg .PageInformationSegment );
if !_aab {return 0,_dgg .Errorf (_acg ,"\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",_eeee );
};_eecb .ResolutionY =_ddf .ResolutionY ;return _eecb .ResolutionY ,nil ;};func (_acc *Document )GetGlobalSegment (i int )(*_gg .Header ,error ){_aa ,_dfb :=_acc .GlobalSegments .GetSegment (i );if _dfb !=nil {return nil ,_dgg .Wrap (_dfb ,"\u0047\u0065t\u0047\u006c\u006fb\u0061\u006c\u0053\u0065\u0067\u006d\u0065\u006e\u0074","");
};return _aa ,nil ;};func (_gce *Page )GetBitmap ()(_ceg *_af .Bitmap ,_eff error ){_a .Log .Trace (_bb .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",_gce .PageNumber ));
defer func (){if _eff !=nil {_a .Log .Trace (_bb .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",_gce .PageNumber ,_eff ));
}else {_a .Log .Trace (_bb .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",_gce .PageNumber ));};}();if _gce .Bitmap !=nil {return _gce .Bitmap ,nil ;
};_eff =_gce .composePageBitmap ();if _eff !=nil {return nil ,_eff ;};return _gce .Bitmap ,nil ;};var _f =[]byte {0x97,0x4A,0x42,0x32,0x0D,0x0A,0x1A,0x0A};func (_aec *Document )encodeSegment (_ge *_gg .Header ,_cfc *int )error {const _aea ="\u0065\u006e\u0063\u006f\u0064\u0065\u0053\u0065\u0067\u006d\u0065\u006e\u0074";
_ge .SegmentNumber =_aec .nextSegmentNumber ();_ced ,_df :=_ge .Encode (_aec ._fb );if _df !=nil {return _dgg .Wrapf (_df ,_aea ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0027\u0025\u0064\u0027",_ge .SegmentNumber );};*_cfc +=_ced ;return nil ;
};func (_cbf *Page )composePageBitmap ()error {const _bcb ="\u0063\u006f\u006d\u0070\u006f\u0073\u0065\u0050\u0061\u0067\u0065\u0042i\u0074\u006d\u0061\u0070";if _cbf .PageNumber ==0{return nil ;};_febf :=_cbf .getPageInformationSegment ();if _febf ==nil {return _dgg .Error (_bcb ,"\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");
};_aegb ,_fdb :=_febf .GetSegmentData ();if _fdb !=nil {return _fdb ;};_gagc ,_edf :=_aegb .(*_gg .PageInformationSegment );if !_edf {return _dgg .Error (_bcb ,"\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 _fdb =_cbf .createPage (_gagc );_fdb !=nil {return _dgg .Wrap (_fdb ,_bcb ,"");};_cbf .clearSegmentData ();return nil ;};func (_afd *Globals )GetSegmentByIndex (index int )(*_gg .Header ,error ){const _afdf ="\u0047l\u006f\u0062\u0061\u006cs\u002e\u0047\u0065\u0074\u0053e\u0067m\u0065n\u0074\u0042\u0079\u0049\u006e\u0064\u0065x";
if _afd ==nil {return nil ,_dgg .Error (_afdf ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_afd .Segments )==0{return nil ,_dgg .Error (_afdf ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");
};if index > len (_afd .Segments )-1{return nil ,_dgg .Error (_afdf ,"\u0069n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");};return _afd .Segments [index ],nil ;};func (_gaa *Document )nextPageNumber ()uint32 {_gaa .NumberOfPages ++;
return _gaa .NumberOfPages };func (_cdgc *Page )getWidth ()(int ,error ){const _abd ="\u0067\u0065\u0074\u0057\u0069\u0064\u0074\u0068";if _cdgc .FinalWidth !=0{return _cdgc .FinalWidth ,nil ;};_eefc :=_cdgc .getPageInformationSegment ();if _eefc ==nil {return 0,_dgg .Error (_abd ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");
};_def ,_dbg :=_eefc .GetSegmentData ();if _dbg !=nil {return 0,_dgg .Wrap (_dbg ,_abd ,"");};_efg ,_adc :=_def .(*_gg .PageInformationSegment );if !_adc {return 0,_dgg .Errorf (_abd ,"\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",_def );
};_cdgc .FinalWidth =_efg .PageBMWidth ;return _cdgc .FinalWidth ,nil ;};func (_cdec *Page )String ()string {return _bb .Sprintf ("\u0050\u0061\u0067\u0065\u0020\u0023\u0025\u0064",_cdec .PageNumber );};func (_bac *Page )createPage (_bab *_gg .PageInformationSegment )error {var _afdfa error ;
if !_bab .IsStripe ||_bab .PageBMHeight !=-1{_afdfa =_bac .createNormalPage (_bab );}else {_afdfa =_bac .createStripedPage (_bab );};return _afdfa ;};func (_ggb *Document )GetNumberOfPages ()(uint32 ,error ){if _ggb .NumberOfPagesUnknown ||_ggb .NumberOfPages ==0{if len (_ggb .Pages )==0{if _gcfd :=_ggb .mapData ();
_gcfd !=nil {return 0,_dgg .Wrap (_gcfd ,"\u0044o\u0063\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074N\u0075m\u0062e\u0072\u004f\u0066\u0050\u0061\u0067\u0065s","");};};return uint32 (len (_ggb .Pages )),nil ;};return _ggb .NumberOfPages ,nil ;};