2021-05-31 17:17:31 +00:00

137 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 (_dd "encoding/binary";_c "fmt";_eb "github.com/unidoc/unipdf/v3/common";_af "github.com/unidoc/unipdf/v3/internal/bitwise";_afa "github.com/unidoc/unipdf/v3/internal/jbig2/basic";_ceb "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";
_cb "github.com/unidoc/unipdf/v3/internal/jbig2/document/segments";_ea "github.com/unidoc/unipdf/v3/internal/jbig2/encoder/classer";_ee "github.com/unidoc/unipdf/v3/internal/jbig2/errors";_a "io";_e "math";_ce "runtime/debug";);func (_eccf *Page )createStripedPage (_dca *_cb .PageInformationSegment )error {const _ddbg ="\u0063\u0072\u0065\u0061\u0074\u0065\u0053\u0074\u0072\u0069\u0070\u0065d\u0050\u0061\u0067\u0065";
_fbb ,_eaee :=_eccf .collectPageStripes ();if _eaee !=nil {return _ee .Wrap (_eaee ,_ddbg ,"");};var _efdd int ;for _ ,_aef :=range _fbb {if _gbdg ,_geb :=_aef .(*_cb .EndOfStripe );_geb {_efdd =_gbdg .LineNumber ()+1;}else {_ffg :=_aef .(_cb .Regioner );
_gbfa :=_ffg .GetRegionInfo ();_dga :=_eccf .getCombinationOperator (_dca ,_gbfa .CombinaionOperator );_aedg ,_aeb :=_ffg .GetRegionBitmap ();if _aeb !=nil {return _ee .Wrap (_aeb ,_ddbg ,"");};_aeb =_ceb .Blit (_aedg ,_eccf .Bitmap ,int (_gbfa .XLocation ),_efdd ,_dga );
if _aeb !=nil {return _ee .Wrap (_aeb ,_ddbg ,"");};};};return nil ;};func (_bada *Document )reachedEOF (_cbac int64 )(bool ,error ){const _adc ="\u0072\u0065\u0061\u0063\u0068\u0065\u0064\u0045\u004f\u0046";_ ,_fdgfe :=_bada .InputStream .Seek (_cbac ,_a .SeekStart );
if _fdgfe !=nil {_eb .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",_fdgfe );
return false ,_ee .Wrap (_fdgfe ,_adc ,"\u0069n\u0070\u0075\u0074\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020s\u0065\u0065\u006b\u0020\u0066\u0061\u0069\u006c\u0065\u0064");};_ ,_fdgfe =_bada .InputStream .ReadBits (32);if _fdgfe ==_a .EOF {return true ,nil ;
}else if _fdgfe !=nil {return false ,_ee .Wrap (_fdgfe ,_adc ,"");};return false ,nil ;};func (_efde *Page )getWidth ()(int ,error ){const _dde ="\u0067\u0065\u0074\u0057\u0069\u0064\u0074\u0068";if _efde .FinalWidth !=0{return _efde .FinalWidth ,nil ;
};_agbdd :=_efde .getPageInformationSegment ();if _agbdd ==nil {return 0,_ee .Error (_dde ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_bdcd ,_bdcb :=_agbdd .GetSegmentData ();if _bdcb !=nil {return 0,_ee .Wrap (_bdcb ,_dde ,"");
};_cbf ,_bbaf :=_bdcd .(*_cb .PageInformationSegment );if !_bbaf {return 0,_ee .Errorf (_dde ,"\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",_bdcd );
};_efde .FinalWidth =_cbf .PageBMWidth ;return _efde .FinalWidth ,nil ;};func (_gbf *Document )isFileHeaderPresent ()(bool ,error ){_gbf .InputStream .Mark ();for _ ,_cbaf :=range _da {_dfbb ,_cefd :=_gbf .InputStream .ReadByte ();if _cefd !=nil {return false ,_cefd ;
};if _cbaf !=_dfbb {_gbf .InputStream .Reset ();return false ,nil ;};};_gbf .InputStream .Reset ();return true ,nil ;};func (_cfd *Page )getPageInformationSegment ()*_cb .Header {for _ ,_dfga :=range _cfd .Segments {if _dfga .Type ==_cb .TPageInformation {return _dfga ;
};};_eb .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",_cfd );
return nil ;};type EncodingMethod int ;func (_bgdd *Page )GetSegment (number int )(*_cb .Header ,error ){const _gfge ="\u0050a\u0067e\u002e\u0047\u0065\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074";for _ ,_bcc :=range _bgdd .Segments {if _bcc .SegmentNumber ==uint32 (number ){return _bcc ,nil ;
};};_bgcd :=make ([]uint32 ,len (_bgdd .Segments ));for _ffa ,_abf :=range _bgdd .Segments {_bgcd [_ffa ]=_abf .SegmentNumber ;};return nil ,_ee .Errorf (_gfge ,"\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 ,_bgdd .PageNumber ,_bgcd );
};func (_gcb *Document )GetPage (pageNumber int )(_cb .Pager ,error ){const _dfbe ="\u0044\u006fc\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074\u0050\u0061\u0067\u0065";if pageNumber < 0{_eb .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 ,_ce .Stack ());
return nil ,_ee .Errorf (_dfbe ,"\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 (_gcb .Pages ){_eb .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_ce .Stack ());return nil ,_ee .Error (_dfbe ,"\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");
};_ebbf ,_ccd :=_gcb .Pages [pageNumber ];if !_ccd {_eb .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_ce .Stack ());return nil ,_ee .Errorf (_dfbe ,"\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 _ebbf ,nil ;};func (_cbbd *Page )createPage (_ccab *_cb .PageInformationSegment )error {var _ed error ;if !_ccab .IsStripe ||_ccab .PageBMHeight !=-1{_ed =_cbbd .createNormalPage (_ccab );}else {_ed =_cbbd .createStripedPage (_ccab );};return _ed ;
};func (_gf *Document )produceClassifiedPage (_bbf *Page ,_gfb *_cb .Header )(_cebf error ){const _ebe ="p\u0072\u006f\u0064\u0075ce\u0043l\u0061\u0073\u0073\u0069\u0066i\u0065\u0064\u0050\u0061\u0067\u0065";var _fb map[int ]int ;_gca :=_gf ._b ;_gce :=[]*_cb .Header {_gfb };
if len (_gf ._gc [_bbf .PageNumber ])> 0{_fb =map[int ]int {};_bbfb ,_gfe :=_gf .addSymbolDictionary (_bbf .PageNumber ,_gf .Classer .UndilatedTemplates ,_gf ._gc [_bbf .PageNumber ],_fb ,false );if _gfe !=nil {return _ee .Wrap (_gfe ,_ebe ,"");};_gce =append (_gce ,_bbfb );
_gca +=len (_gf ._gc [_bbf .PageNumber ]);};_bca :=_gf ._eee [_bbf .PageNumber ];_eb .Log .Debug ("P\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020c\u006f\u006d\u0070\u0073: \u0025\u0076",_bbf .PageNumber ,_bca );_bbf .addTextRegionSegment (_gce ,_gf ._cc ,_fb ,_gf ._eee [_bbf .PageNumber ],_gf .Classer .PtaLL ,_gf .Classer .UndilatedTemplates ,_gf .Classer .ClassIDs ,nil ,_dce (_gca ),len (_gf ._eee [_bbf .PageNumber ]));
return nil ;};type Globals struct{Segments []*_cb .Header ;};func (_bfag *Page )collectPageStripes ()(_fcae []_cb .Segmenter ,_ffgc error ){const _agea ="\u0063o\u006cl\u0065\u0063\u0074\u0050\u0061g\u0065\u0053t\u0072\u0069\u0070\u0065\u0073";var _daf _cb .Segmenter ;
for _ ,_fgc :=range _bfag .Segments {switch _fgc .Type {case 6,7,22,23,38,39,42,43:_daf ,_ffgc =_fgc .GetSegmentData ();if _ffgc !=nil {return nil ,_ee .Wrap (_ffgc ,_agea ,"");};_fcae =append (_fcae ,_daf );case 50:_daf ,_ffgc =_fgc .GetSegmentData ();
if _ffgc !=nil {return nil ,_ffgc ;};_ded ,_cce :=_daf .(*_cb .EndOfStripe );if !_cce {return nil ,_ee .Errorf (_agea ,"\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",_daf );
};_fcae =append (_fcae ,_ded );_bfag .FinalHeight =_ded .LineNumber ();};};return _fcae ,nil ;};func (_eecg *Document )completeSymbols ()(_fea error ){const _ca ="\u0063o\u006dp\u006c\u0065\u0074\u0065\u0053\u0079\u006d\u0062\u006f\u006c\u0073";if _eecg .Classer ==nil {return nil ;
};if _eecg .Classer .UndilatedTemplates ==nil {return _ee .Error (_ca ,"\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");};_bad :=len (_eecg .Pages )==1;
_fg :=make ([]int ,_eecg .Classer .UndilatedTemplates .Size ());var _cgc int ;for _ebc :=0;_ebc < _eecg .Classer .ClassIDs .Size ();_ebc ++{_cgc ,_fea =_eecg .Classer .ClassIDs .Get (_ebc );if _fea !=nil {return _ee .Wrap (_fea ,_ca ,"\u0063\u006c\u0061\u0073\u0073\u0020\u0049\u0044\u0027\u0073");
};_fg [_cgc ]++;};var _dbe []int ;for _ced :=0;_ced < _eecg .Classer .UndilatedTemplates .Size ();_ced ++{if _fg [_ced ]==0{return _ee .Error (_ca ,"\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 _fg [_ced ]> 1||_bad {_dbe =append (_dbe ,_ced );};};_eecg ._b =len (_dbe );var _dfb ,_cgf int ;for _fbc :=0;_fbc < _eecg .Classer .ComponentPageNumbers .Size ();_fbc ++{_dfb ,_fea =_eecg .Classer .ComponentPageNumbers .Get (_fbc );if _fea !=nil {return _ee .Wrapf (_fea ,_ca ,"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",_fbc );
};_cgf ,_fea =_eecg .Classer .ClassIDs .Get (_fbc );if _fea !=nil {return _ee .Wrapf (_fea ,_ca ,"\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",_dfb );
};if _fg [_cgf ]==1&&!_bad {_eecg ._gc [_dfb ]=append (_eecg ._gc [_dfb ],_cgf );};};if _fea =_eecg .Classer .ComputeLLCorners ();_fea !=nil {return _ee .Wrap (_fea ,_ca ,"");};return nil ;};var _da =[]byte {0x97,0x4A,0x42,0x32,0x0D,0x0A,0x1A,0x0A};const (GenericEM EncodingMethod =iota ;
CorrelationEM ;RankHausEM ;);func InitEncodeDocument (fullHeaders bool )*Document {return &Document {FullHeaders :fullHeaders ,_ceg :_af .BufferedMSB (),Pages :map[int ]*Page {},_gc :map[int ][]int {},_cc :map[int ]int {},_eee :map[int ][]int {}};};func (_aeg *Document )GetGlobalSegment (i int )(*_cb .Header ,error ){_dg ,_acc :=_aeg .GlobalSegments .GetSegment (i );
if _acc !=nil {return nil ,_ee .Wrap (_acc ,"\u0047\u0065t\u0047\u006c\u006fb\u0061\u006c\u0053\u0065\u0067\u006d\u0065\u006e\u0074","");};return _dg ,nil ;};func (_acfg *Page )lastSegmentNumber ()(_cbd uint32 ,_bfe error ){const _cda ="\u006c\u0061\u0073\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u004eu\u006d\u0062\u0065\u0072";
if len (_acfg .Segments )==0{return _cbd ,_ee .Errorf (_cda ,"\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",_acfg .PageNumber );
};return _acfg .Segments [len (_acfg .Segments )-1].SegmentNumber ,nil ;};func (_eef *Document )mapData ()error {const _bba ="\u006da\u0070\u0044\u0061\u0074\u0061";var (_gbc []*_cb .Header ;_ebef int64 ;_add _cb .Type ;);_fdgf ,_fef :=_eef .isFileHeaderPresent ();
if _fef !=nil {return _ee .Wrap (_fef ,_bba ,"");};if _fdgf {if _fef =_eef .parseFileHeader ();_fef !=nil {return _ee .Wrap (_fef ,_bba ,"");};_ebef +=int64 (_eef ._g );_eef .FullHeaders =true ;};var (_cbae *Page ;_gba bool ;);for _add !=51&&!_gba {_decf ,_afcf :=_cb .NewHeader (_eef ,_eef .InputStream ,_ebef ,_eef .OrganizationType );
if _afcf !=nil {return _ee .Wrap (_afcf ,_bba ,"");};_eb .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",_decf .SegmentNumber ,_decf .Type );
_add =_decf .Type ;if _add !=_cb .TEndOfFile {if _decf .PageAssociation !=0{_cbae =_eef .Pages [_decf .PageAssociation ];if _cbae ==nil {_cbae =_eeb (_eef ,_decf .PageAssociation );_eef .Pages [_decf .PageAssociation ]=_cbae ;if _eef .NumberOfPagesUnknown {_eef .NumberOfPages ++;
};};_cbae .Segments =append (_cbae .Segments ,_decf );}else {_eef .GlobalSegments .AddSegment (_decf );};};_gbc =append (_gbc ,_decf );_ebef =_eef .InputStream .StreamPosition ();if _eef .OrganizationType ==_cb .OSequential {_ebef +=int64 (_decf .SegmentDataLength );
};_gba ,_afcf =_eef .reachedEOF (_ebef );if _afcf !=nil {_eb .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",_afcf );
return _ee .Wrap (_afcf ,_bba ,"");};};_eef .determineRandomDataOffsets (_gbc ,uint64 (_ebef ));return nil ;};func (_bdae *Page )getHeight ()(int ,error ){const _bea ="\u0067e\u0074\u0048\u0065\u0069\u0067\u0068t";if _bdae .FinalHeight !=0{return _bdae .FinalHeight ,nil ;
};_aec :=_bdae .getPageInformationSegment ();if _aec ==nil {return 0,_ee .Error (_bea ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_bfac ,_adf :=_aec .GetSegmentData ();if _adf !=nil {return 0,_ee .Wrap (_adf ,_bea ,"");
};_ebge ,_accg :=_bfac .(*_cb .PageInformationSegment );if !_accg {return 0,_ee .Errorf (_bea ,"\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",_bfac );
};if _ebge .PageBMHeight ==_e .MaxInt32 {_ ,_adf =_bdae .GetBitmap ();if _adf !=nil {return 0,_ee .Wrap (_adf ,_bea ,"");};}else {_bdae .FinalHeight =_ebge .PageBMHeight ;};return _bdae .FinalHeight ,nil ;};func (_dcee *Page )countRegions ()int {var _bcaea int ;
for _ ,_adb :=range _dcee .Segments {switch _adb .Type {case 6,7,22,23,38,39,42,43:_bcaea ++;};};return _bcaea ;};func (_bfg *Page )AddGenericRegion (bm *_ceb .Bitmap ,xloc ,yloc ,template int ,tp _cb .Type ,duplicateLineRemoval bool )error {const _ebg ="P\u0061\u0067\u0065\u002eAd\u0064G\u0065\u006e\u0065\u0072\u0069c\u0052\u0065\u0067\u0069\u006f\u006e";
_gbdd :=&_cb .GenericRegion {};if _ebbg :=_gbdd .InitEncode (bm ,xloc ,yloc ,template ,duplicateLineRemoval );_ebbg !=nil {return _ee .Wrap (_ebbg ,_ebg ,"");};_eeeg :=&_cb .Header {Type :_cb .TImmediateGenericRegion ,PageAssociation :_bfg .PageNumber ,SegmentData :_gbdd };
_bfg .Segments =append (_bfg .Segments ,_eeeg );return nil ;};func DecodeDocument (input _af .StreamReader ,globals *Globals )(*Document ,error ){return _ebbd (input ,globals );};func (_fd *Document )AddClassifiedPage (bm *_ceb .Bitmap ,method _ea .Method )(_db error ){const _dc ="\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 !_fd .FullHeaders &&_fd .NumberOfPages !=0{return _ee .Error (_dc ,"\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 _fd .Classer ==nil {if _fd .Classer ,_db =_ea .Init (_ea .DefaultSettings ());_db !=nil {return _ee .Wrap (_db ,_dc ,"");};};_eae :=int (_fd .nextPageNumber ());_dbg :=&Page {Segments :[]*_cb .Header {},Bitmap :bm ,Document :_fd ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,PageNumber :_eae };
_fd .Pages [_eae ]=_dbg ;switch method {case _ea .RankHaus :_dbg .EncodingMethod =RankHausEM ;case _ea .Correlation :_dbg .EncodingMethod =CorrelationEM ;};_dbg .AddPageInformationSegment ();if _db =_fd .Classer .AddPage (bm ,_eae ,method );_db !=nil {return _ee .Wrap (_db ,_dc ,"");
};if _fd .FullHeaders {_dbg .AddEndOfPageSegment ();};return nil ;};func (_dbb *Globals )GetSegment (segmentNumber int )(*_cb .Header ,error ){const _dgb ="\u0047l\u006fb\u0061\u006c\u0073\u002e\u0047e\u0074\u0053e\u0067\u006d\u0065\u006e\u0074";if _dbb ==nil {return nil ,_ee .Error (_dgb ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");
};if len (_dbb .Segments )==0{return nil ,_ee .Error (_dgb ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};var _gbd *_cb .Header ;for _ ,_gbd =range _dbb .Segments {if _gbd .SegmentNumber ==uint32 (segmentNumber ){break ;
};};if _gbd ==nil {return nil ,_ee .Error (_dgb ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};return _gbd ,nil ;};func (_ggbb *Page )getResolutionY ()(int ,error ){const _dgd ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0059";
if _ggbb .ResolutionY !=0{return _ggbb .ResolutionY ,nil ;};_edf :=_ggbb .getPageInformationSegment ();if _edf ==nil {return 0,_ee .Error (_dgd ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_aba ,_aeba :=_edf .GetSegmentData ();
if _aeba !=nil {return 0,_ee .Wrap (_aeba ,_dgd ,"");};_fbg ,_fabf :=_aba .(*_cb .PageInformationSegment );if !_fabf {return 0,_ee .Errorf (_dgd ,"\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",_aba );
};_ggbb .ResolutionY =_fbg .ResolutionY ;return _ggbb .ResolutionY ,nil ;};type Page struct{Segments []*_cb .Header ;PageNumber int ;Bitmap *_ceb .Bitmap ;FinalHeight int ;FinalWidth int ;ResolutionX int ;ResolutionY int ;IsLossless bool ;Document *Document ;
FirstSegmentNumber int ;EncodingMethod EncodingMethod ;BlackIsOne bool ;};func (_abe *Page )createNormalPage (_cde *_cb .PageInformationSegment )error {const _ccf ="\u0063\u0072e\u0061\u0074\u0065N\u006f\u0072\u006d\u0061\u006c\u0050\u0061\u0067\u0065";
_abe .Bitmap =_ceb .New (_cde .PageBMWidth ,_cde .PageBMHeight );if _cde .DefaultPixelValue !=0{_abe .Bitmap .SetDefaultPixel ();};for _ ,_cbcd :=range _abe .Segments {switch _cbcd .Type {case 6,7,22,23,38,39,42,43:_eb .Log .Trace ("\u0047\u0065\u0074\u0074in\u0067\u0020\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0025\u0064",_cbcd .SegmentNumber );
_aaef ,_gbg :=_cbcd .GetSegmentData ();if _gbg !=nil {return _gbg ;};_aegc ,_ffag :=_aaef .(_cb .Regioner );if !_ffag {_eb .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",_aaef );
return _ee .Errorf (_ccf ,"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",_aaef );
};_bcae ,_gbg :=_aegc .GetRegionBitmap ();if _gbg !=nil {return _ee .Wrap (_gbg ,_ccf ,"");};if _abe .fitsPage (_cde ,_bcae ){_abe .Bitmap =_bcae ;}else {_beb :=_aegc .GetRegionInfo ();_ddc :=_abe .getCombinationOperator (_cde ,_beb .CombinaionOperator );
_gbg =_ceb .Blit (_bcae ,_abe .Bitmap ,int (_beb .XLocation ),int (_beb .YLocation ),_ddc );if _gbg !=nil {return _ee .Wrap (_gbg ,_ccf ,"");};};};};return nil ;};func (_eccg *Page )fitsPage (_aac *_cb .PageInformationSegment ,_ebba *_ceb .Bitmap )bool {return _eccg .countRegions ()==1&&_aac .DefaultPixelValue ==0&&_aac .PageBMWidth ==_ebba .Width &&_aac .PageBMHeight ==_ebba .Height ;
};func (_dda *Document )produceClassifiedPages ()(_ad error ){const _bc ="\u0070\u0072\u006f\u0064uc\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067e\u0073";if _dda .Classer ==nil {return nil ;};var (_fdc *Page ;_afc bool ;
_acf *_cb .Header ;);for _cef :=1;_cef <=int (_dda .NumberOfPages );_cef ++{if _fdc ,_afc =_dda .Pages [_cef ];!_afc {return _ee .Errorf (_bc ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_cef );};if _fdc .EncodingMethod ==GenericEM {continue ;
};if _acf ==nil {if _acf ,_ad =_dda .GlobalSegments .GetSymbolDictionary ();_ad !=nil {return _ee .Wrap (_ad ,_bc ,"");};};if _ad =_dda .produceClassifiedPage (_fdc ,_acf );_ad !=nil {return _ee .Wrapf (_ad ,_bc ,"\u0070\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027",_cef );
};};return nil ;};func (_fba *Page )composePageBitmap ()error {const _fca ="\u0063\u006f\u006d\u0070\u006f\u0073\u0065\u0050\u0061\u0067\u0065\u0042i\u0074\u006d\u0061\u0070";if _fba .PageNumber ==0{return nil ;};_bddd :=_fba .getPageInformationSegment ();
if _bddd ==nil {return _ee .Error (_fca ,"\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");};_gcc ,_dbeg :=_bddd .GetSegmentData ();
if _dbeg !=nil {return _dbeg ;};_ada ,_fcec :=_gcc .(*_cb .PageInformationSegment );if !_fcec {return _ee .Error (_fca ,"\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 _dbeg =_fba .createPage (_ada );_dbeg !=nil {return _ee .Wrap (_dbeg ,_fca ,"");};_fba .clearSegmentData ();return nil ;};func (_bcg *Document )parseFileHeader ()error {const _bda ="\u0070a\u0072s\u0065\u0046\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";
_ ,_gfg :=_bcg .InputStream .Seek (8,_a .SeekStart );if _gfg !=nil {return _ee .Wrap (_gfg ,_bda ,"\u0069\u0064");};_ ,_gfg =_bcg .InputStream .ReadBits (5);if _gfg !=nil {return _ee .Wrap (_gfg ,_bda ,"\u0072\u0065\u0073\u0065\u0072\u0076\u0065\u0064\u0020\u0062\u0069\u0074\u0073");
};_aaf ,_gfg :=_bcg .InputStream .ReadBit ();if _gfg !=nil {return _ee .Wrap (_gfg ,_bda ,"\u0065x\u0074e\u006e\u0064\u0065\u0064\u0020t\u0065\u006dp\u006c\u0061\u0074\u0065\u0073");};if _aaf ==1{_bcg .GBUseExtTemplate =true ;};_aaf ,_gfg =_bcg .InputStream .ReadBit ();
if _gfg !=nil {return _ee .Wrap (_gfg ,_bda ,"\u0075\u006e\u006b\u006eow\u006e\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};if _aaf !=1{_bcg .NumberOfPagesUnknown =false ;};_aaf ,_gfg =_bcg .InputStream .ReadBit ();if _gfg !=nil {return _ee .Wrap (_gfg ,_bda ,"\u006f\u0072\u0067\u0061\u006e\u0069\u007a\u0061\u0074\u0069\u006f\u006e \u0074\u0079\u0070\u0065");
};_bcg .OrganizationType =_cb .OrganizationType (_aaf );if !_bcg .NumberOfPagesUnknown {_bcg .NumberOfPages ,_gfg =_bcg .InputStream .ReadUint32 ();if _gfg !=nil {return _ee .Wrap (_gfg ,_bda ,"\u006eu\u006db\u0065\u0072\u0020\u006f\u0066\u0020\u0070\u0061\u0067\u0065\u0073");
};_bcg ._g =13;};return nil ;};func (_ab *Page )GetBitmap ()(_gfc *_ceb .Bitmap ,_acfc error ){_eb .Log .Trace (_c .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",_ab .PageNumber ));
defer func (){if _acfc !=nil {_eb .Log .Trace (_c .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",_ab .PageNumber ,_acfc ));
}else {_eb .Log .Trace (_c .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",_ab .PageNumber ));};}();if _ab .Bitmap !=nil {return _ab .Bitmap ,nil ;
};_acfc =_ab .composePageBitmap ();if _acfc !=nil {return nil ,_acfc ;};return _ab .Bitmap ,nil ;};func (_baf *Document )encodeSegment (_bga *_cb .Header ,_bfa *int )error {const _caf ="\u0065\u006e\u0063\u006f\u0064\u0065\u0053\u0065\u0067\u006d\u0065\u006e\u0074";
_bga .SegmentNumber =_baf .nextSegmentNumber ();_afbd ,_ggf :=_bga .Encode (_baf ._ceg );if _ggf !=nil {return _ee .Wrapf (_ggf ,_caf ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0027\u0025\u0064\u0027",_bga .SegmentNumber );};*_bfa +=_afbd ;
return nil ;};func (_afea *Page )GetWidth ()(int ,error ){return _afea .getWidth ()};func (_dec *Document )encodeEOFHeader (_bgd _af .BinaryWriter )(_gd int ,_bgad error ){_cge :=&_cb .Header {SegmentNumber :_dec .nextSegmentNumber (),Type :_cb .TEndOfFile };
if _gd ,_bgad =_cge .Encode (_bgd );_bgad !=nil {return 0,_ee .Wrap (_bgad ,"\u0065n\u0063o\u0064\u0065\u0045\u004f\u0046\u0048\u0065\u0061\u0064\u0065\u0072","");};return _gd ,nil ;};func (_cbbe *Document )nextSegmentNumber ()uint32 {_fgb :=_cbbe .CurrentSegmentNumber ;
_cbbe .CurrentSegmentNumber ++;return _fgb ;};func (_de *Document )AddGenericPage (bm *_ceb .Bitmap ,duplicateLineRemoval bool )(_f error ){const _bfd ="\u0044\u006f\u0063um\u0065\u006e\u0074\u002e\u0041\u0064\u0064\u0047\u0065\u006e\u0065\u0072\u0069\u0063\u0050\u0061\u0067\u0065";
if !_de .FullHeaders &&_de .NumberOfPages !=0{return _ee .Error (_bfd ,"\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");
};_bd :=&Page {Segments :[]*_cb .Header {},Bitmap :bm ,Document :_de ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,IsLossless :true ,BlackIsOne :bm .Color ==_ceb .Chocolate };_bd .PageNumber =int (_de .nextPageNumber ());_de .Pages [_bd .PageNumber ]=_bd ;
bm .InverseData ();_bd .AddPageInformationSegment ();if _f =_bd .AddGenericRegion (bm ,0,0,0,_cb .TImmediateGenericRegion ,duplicateLineRemoval );_f !=nil {return _ee .Wrap (_f ,_bfd ,"");};if _de .FullHeaders {_bd .AddEndOfPageSegment ();};return nil ;
};func _eeb (_fdgd *Document ,_gfga int )*Page {return &Page {Document :_fdgd ,PageNumber :_gfga ,Segments :[]*_cb .Header {}};};func (_ggb *Page )addTextRegionSegment (_ecf []*_cb .Header ,_gag ,_dfae map[int ]int ,_dfc []int ,_bdc *_ceb .Points ,_bdcc *_ceb .Bitmaps ,_agbd *_afa .IntSlice ,_cdb *_ceb .Boxes ,_cgb ,_cafd int ){_efc :=&_cb .TextRegion {NumberOfSymbols :uint32 (_cafd )};
_efc .InitEncode (_gag ,_dfae ,_dfc ,_bdc ,_bdcc ,_agbd ,_cdb ,_ggb .FinalWidth ,_ggb .FinalHeight ,_cgb );_beg :=&_cb .Header {RTSegments :_ecf ,SegmentData :_efc ,PageAssociation :_ggb .PageNumber ,Type :_cb .TImmediateTextRegion };_eccb :=_cb .TPageInformation ;
if _dfae !=nil {_eccb =_cb .TSymbolDictionary ;};var _cee int ;for ;_cee < len (_ggb .Segments );_cee ++{if _ggb .Segments [_cee ].Type ==_eccb {_cee ++;break ;};};_ggb .Segments =append (_ggb .Segments ,nil );copy (_ggb .Segments [_cee +1:],_ggb .Segments [_cee :]);
_ggb .Segments [_cee ]=_beg ;};func (_agf *Page )AddPageInformationSegment (){_gdg :=&_cb .PageInformationSegment {PageBMWidth :_agf .FinalWidth ,PageBMHeight :_agf .FinalHeight ,ResolutionX :_agf .ResolutionX ,ResolutionY :_agf .ResolutionY ,IsLossless :_agf .IsLossless };
if _agf .BlackIsOne {_gdg .DefaultPixelValue =uint8 (0x1);};_ggfc :=&_cb .Header {PageAssociation :_agf .PageNumber ,SegmentDataLength :uint64 (_gdg .Size ()),SegmentData :_gdg ,Type :_cb .TPageInformation };_agf .Segments =append (_agf .Segments ,_ggfc );
};func (_fce *Document )determineRandomDataOffsets (_cad []*_cb .Header ,_afd uint64 ){if _fce .OrganizationType !=_cb .ORandom {return ;};for _ ,_gae :=range _cad {_gae .SegmentDataStartOffset =_afd ;_afd +=_gae .SegmentDataLength ;};};func (_afe *Document )nextPageNumber ()uint32 {_afe .NumberOfPages ++;
return _afe .NumberOfPages };func (_ffc *Page )AddEndOfPageSegment (){_feca :=&_cb .Header {Type :_cb .TEndOfPage ,PageAssociation :_ffc .PageNumber };_ffc .Segments =append (_ffc .Segments ,_feca );};func (_gbag *Page )getResolutionX ()(int ,error ){const _bcd ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0058";
if _gbag .ResolutionX !=0{return _gbag .ResolutionX ,nil ;};_ddbge :=_gbag .getPageInformationSegment ();if _ddbge ==nil {return 0,_ee .Error (_bcd ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_ffdf ,_cbe :=_ddbge .GetSegmentData ();
if _cbe !=nil {return 0,_ee .Wrap (_cbe ,_bcd ,"");};_afaag ,_eg :=_ffdf .(*_cb .PageInformationSegment );if !_eg {return 0,_ee .Errorf (_bcd ,"\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",_ffdf );
};_gbag .ResolutionX =_afaag .ResolutionX ;return _gbag .ResolutionX ,nil ;};func (_cgcc *Globals )AddSegment (segment *_cb .Header ){_cgcc .Segments =append (_cgcc .Segments ,segment );};func (_gee *Page )GetResolutionX ()(int ,error ){return _gee .getResolutionX ()};
func _dce (_cega int )int {_aa :=0;_ba :=(_cega &(_cega -1))==0;_cega >>=1;for ;_cega !=0;_cega >>=1{_aa ++;};if _ba {return _aa ;};return _aa +1;};type Document struct{Pages map[int ]*Page ;NumberOfPagesUnknown bool ;NumberOfPages uint32 ;GBUseExtTemplate bool ;
InputStream _af .StreamReader ;GlobalSegments *Globals ;OrganizationType _cb .OrganizationType ;Classer *_ea .Classer ;XRes ,YRes int ;FullHeaders bool ;CurrentSegmentNumber uint32 ;AverageTemplates *_ceb .Bitmaps ;BaseIndexes []int ;Refinement bool ;RefineLevel int ;
_g uint8 ;_ceg *_af .BufferedWriter ;EncodeGlobals bool ;_b int ;_gc map[int ][]int ;_eee map[int ][]int ;_bf []int ;_cc map[int ]int ;};func (_dbbb *Globals )GetSegmentByIndex (index int )(*_cb .Header ,error ){const _ffd ="\u0047l\u006f\u0062\u0061\u006cs\u002e\u0047\u0065\u0074\u0053e\u0067m\u0065n\u0074\u0042\u0079\u0049\u006e\u0064\u0065x";
if _dbbb ==nil {return nil ,_ee .Error (_ffd ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_dbbb .Segments )==0{return nil ,_ee .Error (_ffd ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");
};if index > len (_dbbb .Segments )-1{return nil ,_ee .Error (_ffd ,"\u0069n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");};return _dbbb .Segments [index ],nil ;};func (_afbb *Document )GetNumberOfPages ()(uint32 ,error ){if _afbb .NumberOfPagesUnknown ||_afbb .NumberOfPages ==0{if len (_afbb .Pages )==0{if _aca :=_afbb .mapData ();
_aca !=nil {return 0,_ee .Wrap (_aca ,"\u0044o\u0063\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074N\u0075m\u0062e\u0072\u004f\u0066\u0050\u0061\u0067\u0065s","");};};return uint32 (len (_afbb .Pages )),nil ;};return _afbb .NumberOfPages ,nil ;};func (_bbc *Document )addSymbolDictionary (_ace int ,_cbc *_ceb .Bitmaps ,_afb []int ,_ec map[int ]int ,_cg bool )(*_cb .Header ,error ){const _efe ="\u0061\u0064\u0064\u0053ym\u0062\u006f\u006c\u0044\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079";
_aae :=&_cb .SymbolDictionary {};if _ga :=_aae .InitEncode (_cbc ,_afb ,_ec ,_cg );_ga !=nil {return nil ,_ga ;};_ddb :=&_cb .Header {Type :_cb .TSymbolDictionary ,PageAssociation :_ace ,SegmentData :_aae };if _ace ==0{if _bbc .GlobalSegments ==nil {_bbc .GlobalSegments =&Globals {};
};_bbc .GlobalSegments .AddSegment (_ddb );return _ddb ,nil ;};_bg ,_fe :=_bbc .Pages [_ace ];if !_fe {return nil ,_ee .Errorf (_efe ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_ace );};var (_cbca int ;
_gb *_cb .Header ;);for _cbca ,_gb =range _bg .Segments {if _gb .Type ==_cb .TPageInformation {break ;};};_cbca ++;_bg .Segments =append (_bg .Segments ,nil );copy (_bg .Segments [_cbca +1:],_bg .Segments [_cbca :]);_bg .Segments [_cbca ]=_ddb ;return _ddb ,nil ;
};func _ebbd (_fbcf _af .StreamReader ,_eff *Globals )(*Document ,error ){_caa :=&Document {Pages :make (map[int ]*Page ),InputStream :_fbcf ,OrganizationType :_cb .OSequential ,NumberOfPagesUnknown :true ,GlobalSegments :_eff ,_g :9};if _caa .GlobalSegments ==nil {_caa .GlobalSegments =&Globals {};
};if _ddbc :=_caa .mapData ();_ddbc !=nil {return nil ,_ddbc ;};return _caa ,nil ;};func (_edc *Page )getCombinationOperator (_ebd *_cb .PageInformationSegment ,_eeg _ceb .CombinationOperator )_ceb .CombinationOperator {if _ebd .CombinationOperatorOverrideAllowed (){return _eeg ;
};return _ebd .CombinationOperator ();};func (_eea *Document )Encode ()(_afaa []byte ,_feb error ){const _be ="\u0044o\u0063u\u006d\u0065\u006e\u0074\u002e\u0045\u006e\u0063\u006f\u0064\u0065";var _acb ,_bdd int ;if _eea .FullHeaders {if _acb ,_feb =_eea .encodeFileHeader (_eea ._ceg );
_feb !=nil {return nil ,_ee .Wrap (_feb ,_be ,"");};};var (_bgc bool ;_eba *_cb .Header ;_ae *Page ;);if _feb =_eea .completeClassifiedPages ();_feb !=nil {return nil ,_ee .Wrap (_feb ,_be ,"");};if _feb =_eea .produceClassifiedPages ();_feb !=nil {return nil ,_ee .Wrap (_feb ,_be ,"");
};if _eea .GlobalSegments !=nil {for _ ,_eba =range _eea .GlobalSegments .Segments {if _feb =_eea .encodeSegment (_eba ,&_acb );_feb !=nil {return nil ,_ee .Wrap (_feb ,_be ,"");};};};for _agb :=1;_agb <=int (_eea .NumberOfPages );_agb ++{if _ae ,_bgc =_eea .Pages [_agb ];
!_bgc {return nil ,_ee .Errorf (_be ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_agb );};for _ ,_eba =range _ae .Segments {if _feb =_eea .encodeSegment (_eba ,&_acb );_feb !=nil {return nil ,_ee .Wrap (_feb ,_be ,"");
};};};if _eea .FullHeaders {if _bdd ,_feb =_eea .encodeEOFHeader (_eea ._ceg );_feb !=nil {return nil ,_ee .Wrap (_feb ,_be ,"");};_acb +=_bdd ;};_afaa =_eea ._ceg .Data ();if len (_afaa )!=_acb {_eb .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",_acb ,len (_afaa ));
};return _afaa ,nil ;};func (_efd *Page )String ()string {return _c .Sprintf ("\u0050\u0061\u0067\u0065\u0020\u0023\u0025\u0064",_efd .PageNumber );};func (_cegab *Page )nextSegmentNumber ()uint32 {return _cegab .Document .nextSegmentNumber ()};func (_fgg *Page )clearSegmentData (){for _cac :=range _fgg .Segments {_fgg .Segments [_cac ].CleanSegmentData ();
};};func (_fec *Document )encodeFileHeader (_cgff _af .BinaryWriter )(_ge int ,_age error ){const _eac ="\u0065\u006ec\u006f\u0064\u0065F\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";_ge ,_age =_cgff .Write (_da );if _age !=nil {return _ge ,_ee .Wrap (_age ,_eac ,"\u0069\u0064");
};if _age =_cgff .WriteByte (0x01);_age !=nil {return _ge ,_ee .Wrap (_age ,_eac ,"\u0066\u006c\u0061g\u0073");};_ge ++;_cbb :=make ([]byte ,4);_dd .BigEndian .PutUint32 (_cbb ,_fec .NumberOfPages );_cged ,_age :=_cgff .Write (_cbb );if _age !=nil {return _cged ,_ee .Wrap (_age ,_eac ,"p\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");
};_ge +=_cged ;return _ge ,nil ;};func (_acea *Page )Encode (w _af .BinaryWriter )(_dfcf int ,_dbf error ){const _dad ="P\u0061\u0067\u0065\u002e\u0045\u006e\u0063\u006f\u0064\u0065";var _ddbb int ;for _ ,_febd :=range _acea .Segments {if _ddbb ,_dbf =_febd .Encode (w );
_dbf !=nil {return _dfcf ,_ee .Wrap (_dbf ,_dad ,"");};_dfcf +=_ddbb ;};return _dfcf ,nil ;};func (_acef *Page )GetResolutionY ()(int ,error ){return _acef .getResolutionY ()};func (_gaa *Globals )GetSymbolDictionary ()(*_cb .Header ,error ){const _ecc ="G\u006c\u006f\u0062\u0061\u006c\u0073.\u0047\u0065\u0074\u0053\u0079\u006d\u0062\u006f\u006cD\u0069\u0063\u0074i\u006fn\u0061\u0072\u0079";
if _gaa ==nil {return nil ,_ee .Error (_ecc ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_gaa .Segments )==0{return nil ,_ee .Error (_ecc ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");
};for _ ,_aed :=range _gaa .Segments {if _aed .Type ==_cb .TSymbolDictionary {return _aed ,nil ;};};return nil ,_ee .Error (_ecc ,"\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 (_dfe *Page )GetHeight ()(int ,error ){return _dfe .getHeight ()};func (_ebb *Document )completeClassifiedPages ()(_fdg error ){const _bb ="\u0063\u006f\u006dpl\u0065\u0074\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067\u0065\u0073";
if _ebb .Classer ==nil {return nil ;};_ebb ._bf =make ([]int ,_ebb .Classer .UndilatedTemplates .Size ());for _fc :=0;_fc < _ebb .Classer .ClassIDs .Size ();_fc ++{_cd ,_ac :=_ebb .Classer .ClassIDs .Get (_fc );if _ac !=nil {return _ee .Wrapf (_ac ,_bb ,"\u0063\u006c\u0061\u0073s \u0077\u0069\u0074\u0068\u0020\u0069\u0064\u003a\u0020\u0027\u0025\u0064\u0027",_fc );
};_ebb ._bf [_cd ]++;};var _cba []int ;for _afaf :=0;_afaf < _ebb .Classer .UndilatedTemplates .Size ();_afaf ++{if _ebb .NumberOfPages ==1||_ebb ._bf [_afaf ]> 1{_cba =append (_cba ,_afaf );};};var (_ef *Page ;_ag bool ;);for _df ,_fa :=range *_ebb .Classer .ComponentPageNumbers {if _ef ,_ag =_ebb .Pages [_fa ];
!_ag {return _ee .Errorf (_bb ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_df );};if _ef .EncodingMethod ==GenericEM {_eb .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",_df );
continue ;};_ebb ._eee [_fa ]=append (_ebb ._eee [_fa ],_df );_fab ,_eaf :=_ebb .Classer .ClassIDs .Get (_df );if _eaf !=nil {return _ee .Wrapf (_eaf ,_bb ,"\u006e\u006f\u0020\u0073uc\u0068\u0020\u0063\u006c\u0061\u0073\u0073\u0049\u0044\u003a\u0020\u0025\u0064",_df );
};if _ebb ._bf [_fab ]==1&&_ebb .NumberOfPages !=1{_ff :=append (_ebb ._gc [_fa ],_fab );_ebb ._gc [_fa ]=_ff ;};};if _fdg =_ebb .Classer .ComputeLLCorners ();_fdg !=nil {return _ee .Wrap (_fdg ,_bb ,"");};if _ ,_fdg =_ebb .addSymbolDictionary (0,_ebb .Classer .UndilatedTemplates ,_cba ,_ebb ._cc ,false );
_fdg !=nil {return _ee .Wrap (_fdg ,_bb ,"");};return nil ;};