unipdf/internal/ccittfax/ccittfax.go
2020-09-28 23:18:17 +00:00

12 lines
29 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 ccittfax ;import (_d "errors";_b "math";);func _decd (_bfc uint16 ,_bbf int )(code ,bool ){_ ,_daa :=_eeb (_ab ,_bfc ,_bbf );if _daa ==nil {return code {},false ;};return *_daa ,true ;};func _agbe (_dgcf []byte ,_cfd int ,_ddfce code )([]byte ,int ){_bgcg :=true ;var _dfc []byte ;_dfc ,_cfd =_ecee (nil ,_cfd ,_ddfce );_fbc :=0;var _aec int ;for _fbc < len (_dgcf ){_aec ,_fbc =_afcb (_dgcf ,_bgcg ,_fbc );_dfc ,_cfd =_bdc (_dfc ,_cfd ,_aec ,_bgcg );_bgcg =!_bgcg ;};return _dfc ,_cfd %8;};func init (){_ba =make (map[int ]code );_ba [0]=code {Code :13<<8|3<<6,BitsWritten :10};_ba [1]=code {Code :2<<(5+8),BitsWritten :3};_ba [2]=code {Code :3<<(6+8),BitsWritten :2};_ba [3]=code {Code :2<<(6+8),BitsWritten :2};_ba [4]=code {Code :3<<(5+8),BitsWritten :3};_ba [5]=code {Code :3<<(4+8),BitsWritten :4};_ba [6]=code {Code :2<<(4+8),BitsWritten :4};_ba [7]=code {Code :3<<(3+8),BitsWritten :5};_ba [8]=code {Code :5<<(2+8),BitsWritten :6};_ba [9]=code {Code :4<<(2+8),BitsWritten :6};_ba [10]=code {Code :4<<(1+8),BitsWritten :7};_ba [11]=code {Code :5<<(1+8),BitsWritten :7};_ba [12]=code {Code :7<<(1+8),BitsWritten :7};_ba [13]=code {Code :4<<8,BitsWritten :8};_ba [14]=code {Code :7<<8,BitsWritten :8};_ba [15]=code {Code :12<<8,BitsWritten :9};_ba [16]=code {Code :5<<8|3<<6,BitsWritten :10};_ba [17]=code {Code :6<<8,BitsWritten :10};_ba [18]=code {Code :2<<8,BitsWritten :10};_ba [19]=code {Code :12<<8|7<<5,BitsWritten :11};_ba [20]=code {Code :13<<8,BitsWritten :11};_ba [21]=code {Code :13<<8|4<<5,BitsWritten :11};_ba [22]=code {Code :6<<8|7<<5,BitsWritten :11};_ba [23]=code {Code :5<<8,BitsWritten :11};_ba [24]=code {Code :2<<8|7<<5,BitsWritten :11};_ba [25]=code {Code :3<<8,BitsWritten :11};_ba [26]=code {Code :12<<8|10<<4,BitsWritten :12};_ba [27]=code {Code :12<<8|11<<4,BitsWritten :12};_ba [28]=code {Code :12<<8|12<<4,BitsWritten :12};_ba [29]=code {Code :12<<8|13<<4,BitsWritten :12};_ba [30]=code {Code :6<<8|8<<4,BitsWritten :12};_ba [31]=code {Code :6<<8|9<<4,BitsWritten :12};_ba [32]=code {Code :6<<8|10<<4,BitsWritten :12};_ba [33]=code {Code :6<<8|11<<4,BitsWritten :12};_ba [34]=code {Code :13<<8|2<<4,BitsWritten :12};_ba [35]=code {Code :13<<8|3<<4,BitsWritten :12};_ba [36]=code {Code :13<<8|4<<4,BitsWritten :12};_ba [37]=code {Code :13<<8|5<<4,BitsWritten :12};_ba [38]=code {Code :13<<8|6<<4,BitsWritten :12};_ba [39]=code {Code :13<<8|7<<4,BitsWritten :12};_ba [40]=code {Code :6<<8|12<<4,BitsWritten :12};_ba [41]=code {Code :6<<8|13<<4,BitsWritten :12};_ba [42]=code {Code :13<<8|10<<4,BitsWritten :12};_ba [43]=code {Code :13<<8|11<<4,BitsWritten :12};_ba [44]=code {Code :5<<8|4<<4,BitsWritten :12};_ba [45]=code {Code :5<<8|5<<4,BitsWritten :12};_ba [46]=code {Code :5<<8|6<<4,BitsWritten :12};_ba [47]=code {Code :5<<8|7<<4,BitsWritten :12};_ba [48]=code {Code :6<<8|4<<4,BitsWritten :12};_ba [49]=code {Code :6<<8|5<<4,BitsWritten :12};_ba [50]=code {Code :5<<8|2<<4,BitsWritten :12};_ba [51]=code {Code :5<<8|3<<4,BitsWritten :12};_ba [52]=code {Code :2<<8|4<<4,BitsWritten :12};_ba [53]=code {Code :3<<8|7<<4,BitsWritten :12};_ba [54]=code {Code :3<<8|8<<4,BitsWritten :12};_ba [55]=code {Code :2<<8|7<<4,BitsWritten :12};_ba [56]=code {Code :2<<8|8<<4,BitsWritten :12};_ba [57]=code {Code :5<<8|8<<4,BitsWritten :12};_ba [58]=code {Code :5<<8|9<<4,BitsWritten :12};_ba [59]=code {Code :2<<8|11<<4,BitsWritten :12};_ba [60]=code {Code :2<<8|12<<4,BitsWritten :12};_ba [61]=code {Code :5<<8|10<<4,BitsWritten :12};_ba [62]=code {Code :6<<8|6<<4,BitsWritten :12};_ba [63]=code {Code :6<<8|7<<4,BitsWritten :12};_c =make (map[int ]code );_c [0]=code {Code :53<<8,BitsWritten :8};_c [1]=code {Code :7<<(2+8),BitsWritten :6};_c [2]=code {Code :7<<(4+8),BitsWritten :4};_c [3]=code {Code :8<<(4+8),BitsWritten :4};_c [4]=code {Code :11<<(4+8),BitsWritten :4};_c [5]=code {Code :12<<(4+8),BitsWritten :4};_c [6]=code {Code :14<<(4+8),BitsWritten :4};_c [7]=code {Code :15<<(4+8),BitsWritten :4};_c [8]=code {Code :19<<(3+8),BitsWritten :5};_c [9]=code {Code :20<<(3+8),BitsWritten :5};_c [10]=code {Code :7<<(3+8),BitsWritten :5};_c [11]=code {Code :8<<(3+8),BitsWritten :5};_c [12]=code {Code :8<<(2+8),BitsWritten :6};_c [13]=code {Code :3<<(2+8),BitsWritten :6};_c [14]=code {Code :52<<(2+8),BitsWritten :6};_c [15]=code {Code :53<<(2+8),BitsWritten :6};_c [16]=code {Code :42<<(2+8),BitsWritten :6};_c [17]=code {Code :43<<(2+8),BitsWritten :6};_c [18]=code {Code :39<<(1+8),BitsWritten :7};_c [19]=code {Code :12<<(1+8),BitsWritten :7};_c [20]=code {Code :8<<(1+8),BitsWritten :7};_c [21]=code {Code :23<<(1+8),BitsWritten :7};_c [22]=code {Code :3<<(1+8),BitsWritten :7};_c [23]=code {Code :4<<(1+8),BitsWritten :7};_c [24]=code {Code :40<<(1+8),BitsWritten :7};_c [25]=code {Code :43<<(1+8),BitsWritten :7};_c [26]=code {Code :19<<(1+8),BitsWritten :7};_c [27]=code {Code :36<<(1+8),BitsWritten :7};_c [28]=code {Code :24<<(1+8),BitsWritten :7};_c [29]=code {Code :2<<8,BitsWritten :8};_c [30]=code {Code :3<<8,BitsWritten :8};_c [31]=code {Code :26<<8,BitsWritten :8};_c [32]=code {Code :27<<8,BitsWritten :8};_c [33]=code {Code :18<<8,BitsWritten :8};_c [34]=code {Code :19<<8,BitsWritten :8};_c [35]=code {Code :20<<8,BitsWritten :8};_c [36]=code {Code :21<<8,BitsWritten :8};_c [37]=code {Code :22<<8,BitsWritten :8};_c [38]=code {Code :23<<8,BitsWritten :8};_c [39]=code {Code :40<<8,BitsWritten :8};_c [40]=code {Code :41<<8,BitsWritten :8};_c [41]=code {Code :42<<8,BitsWritten :8};_c [42]=code {Code :43<<8,BitsWritten :8};_c [43]=code {Code :44<<8,BitsWritten :8};_c [44]=code {Code :45<<8,BitsWritten :8};_c [45]=code {Code :4<<8,BitsWritten :8};_c [46]=code {Code :5<<8,BitsWritten :8};_c [47]=code {Code :10<<8,BitsWritten :8};_c [48]=code {Code :11<<8,BitsWritten :8};_c [49]=code {Code :82<<8,BitsWritten :8};_c [50]=code {Code :83<<8,BitsWritten :8};_c [51]=code {Code :84<<8,BitsWritten :8};_c [52]=code {Code :85<<8,BitsWritten :8};_c [53]=code {Code :36<<8,BitsWritten :8};_c [54]=code {Code :37<<8,BitsWritten :8};_c [55]=code {Code :88<<8,BitsWritten :8};_c [56]=code {Code :89<<8,BitsWritten :8};_c [57]=code {Code :90<<8,BitsWritten :8};_c [58]=code {Code :91<<8,BitsWritten :8};_c [59]=code {Code :74<<8,BitsWritten :8};_c [60]=code {Code :75<<8,BitsWritten :8};_c [61]=code {Code :50<<8,BitsWritten :8};_c [62]=code {Code :51<<8,BitsWritten :8};_c [63]=code {Code :52<<8,BitsWritten :8};_f =make (map[int ]code );_f [64]=code {Code :3<<8|3<<6,BitsWritten :10};_f [128]=code {Code :12<<8|8<<4,BitsWritten :12};_f [192]=code {Code :12<<8|9<<4,BitsWritten :12};_f [256]=code {Code :5<<8|11<<4,BitsWritten :12};_f [320]=code {Code :3<<8|3<<4,BitsWritten :12};_f [384]=code {Code :3<<8|4<<4,BitsWritten :12};_f [448]=code {Code :3<<8|5<<4,BitsWritten :12};_f [512]=code {Code :3<<8|12<<3,BitsWritten :13};_f [576]=code {Code :3<<8|13<<3,BitsWritten :13};_f [640]=code {Code :2<<8|10<<3,BitsWritten :13};_f [704]=code {Code :2<<8|11<<3,BitsWritten :13};_f [768]=code {Code :2<<8|12<<3,BitsWritten :13};_f [832]=code {Code :2<<8|13<<3,BitsWritten :13};_f [896]=code {Code :3<<8|18<<3,BitsWritten :13};_f [960]=code {Code :3<<8|19<<3,BitsWritten :13};_f [1024]=code {Code :3<<8|20<<3,BitsWritten :13};_f [1088]=code {Code :3<<8|21<<3,BitsWritten :13};_f [1152]=code {Code :3<<8|22<<3,BitsWritten :13};_f [1216]=code {Code :119<<3,BitsWritten :13};_f [1280]=code {Code :2<<8|18<<3,BitsWritten :13};_f [1344]=code {Code :2<<8|19<<3,BitsWritten :13};_f [1408]=code {Code :2<<8|20<<3,BitsWritten :13};_f [1472]=code {Code :2<<8|21<<3,BitsWritten :13};_f [1536]=code {Code :2<<8|26<<3,BitsWritten :13};_f [1600]=code {Code :2<<8|27<<3,BitsWritten :13};_f [1664]=code {Code :3<<8|4<<3,BitsWritten :13};_f [1728]=code {Code :3<<8|5<<3,BitsWritten :13};_ff =make (map[int ]code );_ff [64]=code {Code :27<<(3+8),BitsWritten :5};_ff [128]=code {Code :18<<(3+8),BitsWritten :5};_ff [192]=code {Code :23<<(2+8),BitsWritten :6};_ff [256]=code {Code :55<<(1+8),BitsWritten :7};_ff [320]=code {Code :54<<8,BitsWritten :8};_ff [384]=code {Code :55<<8,BitsWritten :8};_ff [448]=code {Code :100<<8,BitsWritten :8};_ff [512]=code {Code :101<<8,BitsWritten :8};_ff [576]=code {Code :104<<8,BitsWritten :8};_ff [640]=code {Code :103<<8,BitsWritten :8};_ff [704]=code {Code :102<<8,BitsWritten :9};_ff [768]=code {Code :102<<8|1<<7,BitsWritten :9};_ff [832]=code {Code :105<<8,BitsWritten :9};_ff [896]=code {Code :105<<8|1<<7,BitsWritten :9};_ff [960]=code {Code :106<<8,BitsWritten :9};_ff [1024]=code {Code :106<<8|1<<7,BitsWritten :9};_ff [1088]=code {Code :107<<8,BitsWritten :9};_ff [1152]=code {Code :107<<8|1<<7,BitsWritten :9};_ff [1216]=code {Code :108<<8,BitsWritten :9};_ff [1280]=code {Code :108<<8|1<<7,BitsWritten :9};_ff [1344]=code {Code :109<<8,BitsWritten :9};_ff [1408]=code {Code :109<<8|1<<7,BitsWritten :9};_ff [1472]=code {Code :76<<8,BitsWritten :9};_ff [1536]=code {Code :76<<8|1<<7,BitsWritten :9};_ff [1600]=code {Code :77<<8,BitsWritten :9};_ff [1664]=code {Code :24<<(2+8),BitsWritten :6};_ff [1728]=code {Code :77<<8|1<<7,BitsWritten :9};_ec =make (map[int ]code );_ec [1792]=code {Code :1<<8,BitsWritten :11};_ec [1856]=code {Code :1<<8|4<<5,BitsWritten :11};_ec [1920]=code {Code :1<<8|5<<5,BitsWritten :11};_ec [1984]=code {Code :1<<8|2<<4,BitsWritten :12};_ec [2048]=code {Code :1<<8|3<<4,BitsWritten :12};_ec [2112]=code {Code :1<<8|4<<4,BitsWritten :12};_ec [2176]=code {Code :1<<8|5<<4,BitsWritten :12};_ec [2240]=code {Code :1<<8|6<<4,BitsWritten :12};_ec [2304]=code {Code :1<<8|7<<4,BitsWritten :12};_ec [2368]=code {Code :1<<8|12<<4,BitsWritten :12};_ec [2432]=code {Code :1<<8|13<<4,BitsWritten :12};_ec [2496]=code {Code :1<<8|14<<4,BitsWritten :12};_ec [2560]=code {Code :1<<8|15<<4,BitsWritten :12};_fa =make (map[int ]byte );_fa [0]=0xFF;_fa [1]=0xFE;_fa [2]=0xFC;_fa [3]=0xF8;_fa [4]=0xF0;_fa [5]=0xE0;_fa [6]=0xC0;_fa [7]=0x80;_fa [8]=0x00;};type code struct{Code uint16 ;BitsWritten int ;};func _cdd (_aaaf []byte ,_ebd int )(bool ,int ){return _egad (_aaaf ,_ebd ,_df )};func init (){for _ebe ,_ebec :=range _c {_ddeg (_ecf ,_ebec ,0,_ebe );};for _dfe ,_gdc :=range _ff {_ddeg (_ecf ,_gdc ,0,_dfe );};for _af ,_eee :=range _ba {_ddeg (_ef ,_eee ,0,_af );};for _gcf ,_deb :=range _f {_ddeg (_ef ,_deb ,0,_gcf );};for _cbf ,_faa :=range _ec {_ddeg (_ecf ,_faa ,0,_cbf );_ddeg (_ef ,_faa ,0,_cbf );};_ddeg (_ab ,_a ,0,0);_ddeg (_ab ,_cb ,0,0);_ddeg (_ab ,_ce ,0,0);_ddeg (_ab ,_fd ,0,0);_ddeg (_ab ,_dg ,0,0);_ddeg (_ab ,_g ,0,0);_ddeg (_ab ,_dfd ,0,0);_ddeg (_ab ,_ea ,0,0);_ddeg (_ab ,_gd ,0,0);};func _aae (_db []byte ,_cgce int )(bool ,int ,error ){_fe :=_cgce ;var _ada bool ;_ada ,_cgce =_badf (_db ,_cgce );if _ada {_ada ,_cgce =_badf (_db ,_cgce );if _ada {return true ,_cgce ,nil ;}else {return false ,_fe ,_gc ;};};return false ,_fe ,nil ;};func _ecee (_caf []byte ,_bdb int ,_cdf code )([]byte ,int ){_bfca :=0;for _bfca < _cdf .BitsWritten {_dfcd :=_bdb /8;_fcb :=_bdb %8;if _dfcd >=len (_caf ){_caf =append (_caf ,0);};_dgca :=8-_fcb ;_bacfe :=_cdf .BitsWritten -_bfca ;if _dgca > _bacfe {_dgca =_bacfe ;};if _bfca < 8{_caf [_dfcd ]=_caf [_dfcd ]|byte (_cdf .Code >>uint (8+_fcb -_bfca ))&_fa [8-_dgca -_fcb ];}else {_caf [_dfcd ]=_caf [_dfcd ]|(byte (_cdf .Code <<uint (_bfca -8))&_fa [8-_dgca ])>>uint (_fcb );};_bdb +=_dgca ;_bfca +=_dgca ;};return _caf ,_bdb ;};func (_ge *Encoder )decodeG4 (_bbe []byte )([][]byte ,error ){_ac :=make ([]byte ,_ge .Columns );for _cf :=range _ac {_ac [_cf ]=_afa ;};_dc :=make ([][]byte ,1);_dc [0]=_ac ;var (_ecff bool ;_bfg error ;_aa int ;);for (_aa /8)< len (_bbe ){_ecff ,_aa ,_bfg =_aae (_bbe ,_aa );if _bfg !=nil {return nil ,_bfg ;};if _ecff {break ;};var (_efa code ;_dec bool ;);_cbd :=true ;var _gf []byte ;_ad :=-1;for _ad < _ge .Columns {_efa ,_aa ,_dec =_fcd (_bbe ,_aa );if !_dec {return nil ,_ee ;};switch _efa {case _a :_gf ,_ad =_fgd (_dc ,_gf ,_cbd ,_ad );case _cb :_gf ,_aa ,_ad ,_bfg =_cgc (_bbe ,_gf ,_aa ,_cbd ,_ad );if _bfg !=nil {return nil ,_bfg ;};case _ce :_gf ,_ad =_ed (_dc ,_gf ,_cbd ,_ad ,0);_cbd =!_cbd ;case _fd :_gf ,_ad =_ed (_dc ,_gf ,_cbd ,_ad ,1);_cbd =!_cbd ;case _dg :_gf ,_ad =_ed (_dc ,_gf ,_cbd ,_ad ,2);_cbd =!_cbd ;case _g :_gf ,_ad =_ed (_dc ,_gf ,_cbd ,_ad ,3);_cbd =!_cbd ;case _dfd :_gf ,_ad =_ed (_dc ,_gf ,_cbd ,_ad ,-1);_cbd =!_cbd ;case _ea :_gf ,_ad =_ed (_dc ,_gf ,_cbd ,_ad ,-2);_cbd =!_cbd ;case _gd :_gf ,_ad =_ed (_dc ,_gf ,_cbd ,_ad ,-3);_cbd =!_cbd ;};if len (_gf )>=_ge .Columns {break ;};};if _ge .EncodedByteAlign &&_aa %8!=0{_aa +=8-_aa %8;};_dc =append (_dc ,_gf );if _ge .Rows > 0&&!_ge .EndOfBlock &&len (_dc )>=(_ge .Rows +1){break ;};};_dc =_dc [1:];return _dc ,nil ;};func (_ddf *Encoder )decodeG32D (_egb []byte )([][]byte ,error ){var (_ffa [][]byte ;_ggd int ;_ggdb error ;);_efg :for (_ggd /8)< len (_egb ){var _eea bool ;_eea ,_ggd ,_ggdb =_ga (_egb ,_ggd );if _ggdb !=nil {return nil ,_ggdb ;};if _eea {break ;};_eea ,_ggd =_cdd (_egb ,_ggd );if !_eea {if _ddf .EndOfLine {return nil ,_dgc ;};};var _abb []byte ;_abb ,_ggd =_ddf .decodeRow1D (_egb ,_ggd );if _ddf .EncodedByteAlign &&_ggd %8!=0{_ggd +=8-_ggd %8;};if _abb !=nil {_ffa =append (_ffa ,_abb );};if _ddf .Rows > 0&&!_ddf .EndOfBlock &&len (_ffa )>=_ddf .Rows {break ;};for _cd :=1;_cd < _ddf .K &&(_ggd /8)< len (_egb );_cd ++{_eea ,_ggd =_fgc (_egb ,_ggd );if !_eea {_eea ,_ggd ,_ggdb =_ga (_egb ,_ggd );if _ggdb !=nil {return nil ,_ggdb ;};if _eea {break _efg ;}else {if _ddf .EndOfLine {return nil ,_dgc ;};};};var (_afe code ;_afc bool ;);_deg :=true ;var _bbc []byte ;_dgb :=-1;for _afe ,_ggd ,_afc =_fcd (_egb ,_ggd );_afc ;_afe ,_ggd ,_afc =_fcd (_egb ,_ggd ){switch _afe {case _a :_bbc ,_dgb =_fgd (_ffa ,_bbc ,_deg ,_dgb );case _cb :_bbc ,_ggd ,_dgb ,_ggdb =_cgc (_egb ,_bbc ,_ggd ,_deg ,_dgb );if _ggdb !=nil {return nil ,_ggdb ;};case _ce :_bbc ,_dgb =_ed (_ffa ,_bbc ,_deg ,_dgb ,0);_deg =!_deg ;case _fd :_bbc ,_dgb =_ed (_ffa ,_bbc ,_deg ,_dgb ,1);_deg =!_deg ;case _dg :_bbc ,_dgb =_ed (_ffa ,_bbc ,_deg ,_dgb ,2);_deg =!_deg ;case _g :_bbc ,_dgb =_ed (_ffa ,_bbc ,_deg ,_dgb ,3);_deg =!_deg ;case _dfd :_bbc ,_dgb =_ed (_ffa ,_bbc ,_deg ,_dgb ,-1);_deg =!_deg ;case _ea :_bbc ,_dgb =_ed (_ffa ,_bbc ,_deg ,_dgb ,-2);_deg =!_deg ;case _gd :_bbc ,_dgb =_ed (_ffa ,_bbc ,_deg ,_dgb ,-3);_deg =!_deg ;};if len (_bbc )>=_ddf .Columns {break ;};};if _ddf .EncodedByteAlign &&_ggd %8!=0{_ggd +=8-_ggd %8;};if _bbc !=nil {_ffa =append (_ffa ,_bbc );};if _ddf .Rows > 0&&!_ddf .EndOfBlock &&len (_ffa )>=_ddf .Rows {break _efg ;};};};return _ffa ,nil ;};func _dcf (_eag ,_bgba []byte ,_edd int )int {_ffg :=_gcgc (_bgba ,_edd );if _ffg < len (_bgba )&&(_edd ==-1&&_bgba [_ffg ]==_afa ||_edd >=0&&_edd < len (_eag )&&_eag [_edd ]==_bgba [_ffg ]||_edd >=len (_eag )&&_eag [_edd -1]!=_bgba [_ffg ]){_ffg =_gcgc (_bgba ,_ffg );};return _ffg ;};func _ecd (_fbe []byte ,_dcb int )(uint16 ,int ,int ){_bff :=_dcb ;_agg :=_dcb /8;_dcb %=8;if _agg >=len (_fbe ){return 0,16,_bff ;};_cgg :=byte (0xFF>>uint (_dcb ));_dda :=uint16 ((_fbe [_agg ]&_cgg )<<uint (_dcb ))<<8;_fac :=8-_dcb ;_agg ++;_dcb =0;if _agg >=len (_fbe ){return _dda >>(16-uint (_fac )),16-_fac ,_bff +_fac ;};_dda |=uint16 (_fbe [_agg ])<<(8-uint (_fac ));_fac +=8;_agg ++;_dcb =0;if _agg >=len (_fbe ){return _dda >>(16-uint (_fac )),16-_fac ,_bff +_fac ;};if _fac ==16{return _dda ,0,_bff +_fac ;};_gfc :=16-_fac ;_dda |=uint16 (_fbe [_agg ]>>(8-uint (_gfc )));return _dda ,0,_bff +16;};func _gce (_dfcg [][]byte )[][]byte {_gagb :=make ([]byte ,len (_dfcg [0]));for _gab :=range _gagb {_gagb [_gab ]=_afa ;};_dfcg =append (_dfcg ,[]byte {});for _aaeg :=len (_dfcg )-1;_aaeg > 0;_aaeg --{_dfcg [_aaeg ]=_dfcg [_aaeg -1];};_dfcg [0]=_gagb ;return _dfcg ;};func _fcd (_bg []byte ,_dgbb int )(code ,int ,bool ){var (_eeaf uint16 ;_fb int ;_cbdg int ;);_cbdg =_dgbb ;_eeaf ,_fb ,_dgbb =_ecd (_bg ,_dgbb );_bfe ,_gde :=_decd (_eeaf ,_fb );if !_gde {return code {},_cbdg ,false ;};return _bfe ,_cbdg +_bfe .BitsWritten ,true ;};func _dbb (_ca uint16 ,_cbb int )byte {if _cbb < 8{_ca >>=8;};_cbb %=8;_dcg :=byte (0x01<<(7-uint (_cbb )));return (byte (_ca )&_dcg )>>(7-uint (_cbb ));};type decodingTreeNode struct{Val byte ;RunLen *int ;Code *code ;Left *decodingTreeNode ;Right *decodingTreeNode ;};func _ecg (_fef []byte ,_dbf int ,_gee bool )(int ,int ){var (_egbb uint16 ;_dgf int ;_efe int ;);_efe =_dbf ;_egbb ,_dgf ,_dbf =_ecd (_fef ,_dbf );_egbg ,_fge :=_faf (_egbb ,_dgf ,_gee );if _egbg ==-1{return -1,_efe ;};return _egbg ,_efe +_fge .BitsWritten ;};func _aaf (_dae int )([]byte ,int ){var _beb []byte ;for _aad :=0;_aad < 6;_aad ++{_beb ,_dae =_ecee (_beb ,_dae ,_df );};return _beb ,_dae %8;};func _ddegg (_ced int )([]byte ,int ){var _cfg []byte ;for _bec :=0;_bec < 2;_bec ++{_cfg ,_ced =_ecee (_cfg ,_ced ,_bf );};return _cfg ,_ced %8;};func _fgd (_ag [][]byte ,_ffea []byte ,_efc bool ,_aaa int )([]byte ,int ){_def :=_gbg (_ffea ,_ag [len (_ag )-1],_aaa ,_efc );_fce :=_gcgc (_ag [len (_ag )-1],_def );if _aaa ==-1{_ffea =_bee (_ffea ,_efc ,_fce -_aaa -1);}else {_ffea =_bee (_ffea ,_efc ,_fce -_aaa );};_aaa =_fce ;return _ffea ,_aaa ;};func _ffc (_ade ,_dedf []byte ,_egac int ,_ggc bool )([]byte ,int ,error ){_badd :=_egac ;var _ebg int ;for _ebg ,_egac =_ecg (_ade ,_egac ,_ggc );_ebg !=-1;_ebg ,_egac =_ecg (_ade ,_egac ,_ggc ){_dedf =_bee (_dedf ,_ggc ,_ebg );if _ebg < 64{break ;};};if _ebg ==-1{return _dedf ,_badd ,_ffe ;};return _dedf ,_egac ,nil ;};func (_ggdg *Encoder )encodeG31D (_dcge [][]byte )[]byte {var _eeg []byte ;_fcf :=0;for _cc :=range _dcge {if _ggdg .Rows > 0&&!_ggdg .EndOfBlock &&_cc ==_ggdg .Rows {break ;};_cdad ,_ffcd :=_agbe (_dcge [_cc ],_fcf ,_bf );_eeg =_ggdg .appendEncodedRow (_eeg ,_cdad ,_fcf );if _ggdg .EncodedByteAlign {_ffcd =0;};_fcf =_ffcd ;};if _ggdg .EndOfBlock {_geg ,_ :=_dgce (_fcf );_eeg =_ggdg .appendEncodedRow (_eeg ,_geg ,_fcf );};return _eeg ;};func (_fg *Encoder )Decode (encoded []byte )([][]byte ,error ){if _fg .BlackIs1 {_afa =0;_dbe =1;}else {_afa =1;_dbe =0;};if _fg .K ==0{return _fg .decodeG31D (encoded );};if _fg .K > 0{return _fg .decodeG32D (encoded );};if _fg .K < 4{return _fg .decodeG4 (encoded );};return nil ,nil ;};func _fgc (_gcba []byte ,_efb int )(bool ,int ){return _egad (_gcba ,_efb ,_eb )};func _afcb (_bde []byte ,_dgbf bool ,_abf int )(int ,int ){_acd :=0;for _abf < len (_bde ){if _dgbf {if _bde [_abf ]!=_afa {break ;};}else {if _bde [_abf ]!=_dbe {break ;};};_acd ++;_abf ++;};return _acd ,_abf ;};func (_cggf *Encoder )Encode (pixels [][]byte )[]byte {if _cggf .BlackIs1 {_afa =0;_dbe =1;}else {_afa =1;_dbe =0;};if _cggf .K ==0{return _cggf .encodeG31D (pixels );};if _cggf .K > 0{return _cggf .encodeG32D (pixels );};if _cggf .K < 0{return _cggf .encodeG4 (pixels );};return nil ;};var (_gc =_d .New ("\u0045\u004f\u0046\u0042 c\u006f\u0064\u0065\u0020\u0069\u0073\u0020\u0063\u006f\u0072\u0072\u0075\u0070\u0074e\u0064");_de =_d .New ("R\u0054\u0043\u0020\u0063od\u0065 \u0069\u0073\u0020\u0063\u006fr\u0072\u0075\u0070\u0074\u0065\u0064");_ffe =_d .New ("\u0077\u0072o\u006e\u0067\u0020\u0063\u006f\u0064\u0065\u0020\u0069\u006e\u0020\u0068\u006f\u0072\u0069\u007a\u006f\u006e\u0074\u0061\u006c\u0020mo\u0064\u0065");_dgc =_d .New ("\u006e\u006f\u0020\u0045\u004f\u004c\u0020\u0066\u006f\u0075\u006e\u0064\u0020\u0077\u0068\u0069\u006c\u0065 \u0074\u0068\u0065\u0020\u0045\u006e\u0064O\u0066\u004c\u0069\u006e\u0065\u0020\u0070\u0061\u0072\u0061\u006de\u0074\u0065\u0072\u0020\u0069\u0073\u0020\u0074\u0072\u0075\u0065");_cg =_d .New ("i\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0045\u004f\u004c");_ee =_d .New ("\u0069n\u0076a\u006c\u0069\u0064\u0020\u0032\u0044\u0020\u0063\u006f\u0064\u0065"););func _dedb (_cac int ,_aea bool )(code ,int ,bool ){if _cac < 64{if _aea {return _c [_cac ],0,true ;}else {return _ba [_cac ],0,true ;};}else {_dcggg :=_cac /64;if _dcggg > 40{return _ec [2560],_cac -2560,false ;};if _dcggg > 27{return _ec [_dcggg *64],_cac -_dcggg *64,false ;};if _aea {return _ff [_dcggg *64],_cac -_dcggg *64,false ;}else {return _f [_dcggg *64],_cac -_dcggg *64,false ;};};};func _ga (_da []byte ,_cdg int )(bool ,int ,error ){_dgd :=_cdg ;var _cfbd =false ;for _cec :=0;_cec < 6;_cec ++{_cfbd ,_cdg =_cdd (_da ,_cdg );if !_cfbd {if _cec > 1{return false ,_dgd ,_de ;}else {_cdg =_dgd ;break ;};};};return _cfbd ,_cdg ,nil ;};var (_afa byte =1;_dbe byte =0;);func _cgc (_egg ,_babc []byte ,_dde int ,_abd bool ,_cee int )([]byte ,int ,int ,error ){_fca :=_dde ;var _ega error ;_babc ,_dde ,_ega =_ffc (_egg ,_babc ,_dde ,_abd );if _ega !=nil {return _babc ,_fca ,_cee ,_ega ;};_abd =!_abd ;_babc ,_dde ,_ega =_ffc (_egg ,_babc ,_dde ,_abd );if _ega !=nil {return _babc ,_fca ,_cee ,_ega ;};_cee =len (_babc );return _babc ,_dde ,_cee ,nil ;};var (_ecf =&decodingTreeNode {Val :255};_ef =&decodingTreeNode {Val :255};_ab =&decodingTreeNode {Val :255};);func (_adf *Encoder )appendEncodedRow (_cfa ,_aafa []byte ,_fcg int )[]byte {if len (_cfa )> 0&&_fcg !=0&&!_adf .EncodedByteAlign {_cfa [len (_cfa )-1]=_cfa [len (_cfa )-1]|_aafa [0];_cfa =append (_cfa ,_aafa [1:]...);}else {_cfa =append (_cfa ,_aafa ...);};return _cfa ;};func _aceg (_gfe []byte ,_cggb ,_agf ,_cca int )([]byte ,int ){_ggcd :=_fdab (_agf ,_cca );_gfe ,_cggb =_ecee (_gfe ,_cggb ,_ggcd );return _gfe ,_cggb ;};func _bdc (_ace []byte ,_bffg int ,_ggae int ,_cdbb bool )([]byte ,int ){var (_gdd code ;_agbd bool ;);for !_agbd {_gdd ,_ggae ,_agbd =_dedb (_ggae ,_cdbb );_ace ,_bffg =_ecee (_ace ,_bffg ,_gdd );};return _ace ,_bffg ;};func (_gcg *Encoder )encodeG4 (_gag [][]byte )[]byte {_bfa :=make ([][]byte ,len (_gag ));copy (_bfa ,_gag );_bfa =_gce (_bfa );var _dfa []byte ;var _bacfc int ;for _fcdf :=1;_fcdf < len (_bfa );_fcdf ++{if _gcg .Rows > 0&&!_gcg .EndOfBlock &&_fcdf ==(_gcg .Rows +1){break ;};var _gfd []byte ;var _gb ,_abc ,_abbd int ;_gac :=_bacfc ;_cdb :=-1;for _cdb < len (_bfa [_fcdf ]){_gb =_gcgc (_bfa [_fcdf ],_cdb );_abc =_dcf (_bfa [_fcdf ],_bfa [_fcdf -1],_cdb );_abbd =_gcgc (_bfa [_fcdf -1],_abc );if _abbd < _gb {_gfd ,_gac =_ecee (_gfd ,_gac ,_a );_cdb =_abbd ;}else {if _b .Abs (float64 (_abc -_gb ))> 3{_gfd ,_gac ,_cdb =_eae (_bfa [_fcdf ],_gfd ,_gac ,_cdb ,_gb );}else {_gfd ,_gac =_aceg (_gfd ,_gac ,_gb ,_abc );_cdb =_gb ;};};};_dfa =_gcg .appendEncodedRow (_dfa ,_gfd ,_bacfc );if _gcg .EncodedByteAlign {_gac =0;};_bacfc =_gac %8;};if _gcg .EndOfBlock {_bef ,_ :=_ddegg (_bacfc );_dfa =_gcg .appendEncodedRow (_dfa ,_bef ,_bacfc );};return _dfa ;};func _geb (_ddba []byte ,_aadf int )([]byte ,int ){return _ecee (_ddba ,_aadf ,_a )};func _badf (_ggb []byte ,_fefc int )(bool ,int ){_acg :=_fefc ;var (_ceg uint16 ;_dbd int ;);_ceg ,_dbd ,_fefc =_ecd (_ggb ,_fefc );if _dbd > 4{return false ,_acg ;};_ceg >>=uint (4-_dbd );_ceg <<=4;if _ceg !=_bf .Code {return false ,_acg ;}else {return true ,_fefc -4+_dbd ;};};func _eae (_beg ,_fbec []byte ,_gfce ,_ddc ,_dge int )([]byte ,int ,int ){_feb :=_gcgc (_beg ,_dge );_dedbg :=_ddc >=0&&_beg [_ddc ]==_afa ||_ddc ==-1;_fbec ,_gfce =_ecee (_fbec ,_gfce ,_cb );var _gdgb int ;if _ddc > -1{_gdgb =_dge -_ddc ;}else {_gdgb =_dge -_ddc -1;};_fbec ,_gfce =_bdc (_fbec ,_gfce ,_gdgb ,_dedbg );_dedbg =!_dedbg ;_cad :=_feb -_dge ;_fbec ,_gfce =_bdc (_fbec ,_gfce ,_cad ,_dedbg );_ddc =_feb ;return _fbec ,_gfce ,_ddc ;};func _ed (_cda [][]byte ,_cfb []byte ,_bed bool ,_ae ,_abe int )([]byte ,int ){_acc :=_gbg (_cfb ,_cda [len (_cda )-1],_ae ,_bed );_dfg :=_acc +_abe ;if _ae ==-1{_cfb =_bee (_cfb ,_bed ,_dfg -_ae -1);}else {_cfb =_bee (_cfb ,_bed ,_dfg -_ae );};_ae =_dfg ;return _cfb ,_ae ;};func _dgce (_bgc int )([]byte ,int ){var _fee []byte ;for _gea :=0;_gea < 6;_gea ++{_fee ,_bgc =_ecee (_fee ,_bgc ,_bf );};return _fee ,_bgc %8;};func _gbg (_ecc ,_gdb []byte ,_aef int ,_bfcc bool )int {_gdgf :=_gcgc (_gdb ,_aef );if _gdgf < len (_gdb )&&(_aef ==-1&&_gdb [_gdgf ]==_afa ||_aef >=0&&_aef < len (_ecc )&&_ecc [_aef ]==_gdb [_gdgf ]||_aef >=len (_ecc )&&_bfcc &&_gdb [_gdgf ]==_afa ||_aef >=len (_ecc )&&!_bfcc &&_gdb [_gdgf ]==_dbe ){_gdgf =_gcgc (_gdb ,_gdgf );};return _gdgf ;};func _fdab (_dbfc ,_ede int )code {var _gcc code ;switch _ede -_dbfc {case -1:_gcc =_fd ;case -2:_gcc =_dg ;case -3:_gcc =_g ;case 0:_gcc =_ce ;case 1:_gcc =_dfd ;case 2:_gcc =_ea ;case 3:_gcc =_gd ;};return _gcc ;};func _eeb (_acf *decodingTreeNode ,_gfb uint16 ,_adae int )(*int ,*code ){if _acf ==nil {return nil ,nil ;};if _adae ==16{return _acf .RunLen ,_acf .Code ;};_fgf :=_dbb (_gfb ,_adae );_adae ++;var _agb *int ;var _efef *code ;if _fgf ==1{_agb ,_efef =_eeb (_acf .Right ,_gfb ,_adae );}else {_agb ,_efef =_eeb (_acf .Left ,_gfb ,_adae );};if _agb ==nil {_agb =_acf .RunLen ;_efef =_acf .Code ;};return _agb ,_efef ;};func _gcgc (_bc []byte ,_debb int )int {if _debb >=len (_bc ){return _debb ;};if _debb < -1{_debb =-1;};var _cfad byte ;if _debb > -1{_cfad =_bc [_debb ];}else {_cfad =_afa ;};_cce :=_debb +1;for _cce < len (_bc ){if _bc [_cce ]!=_cfad {break ;};_cce ++;};return _cce ;};func _faf (_gcb uint16 ,_age int ,_ece bool )(int ,code ){var _ffeb *int ;var _bag *code ;if _ece {_ffeb ,_bag =_eeb (_ecf ,_gcb ,_age );}else {_ffeb ,_bag =_eeb (_ef ,_gcb ,_age );};if _ffeb ==nil {return -1,code {};};return *_ffeb ,*_bag ;};func _bee (_fdb []byte ,_ged bool ,_gga int )[]byte {if _gga < 0{return _fdb ;};_fgb :=make ([]byte ,_gga );if _ged {for _dee :=0;_dee < len (_fgb );_dee ++{_fgb [_dee ]=_afa ;};}else {for _bbce :=0;_bbce < len (_fgb );_bbce ++{_fgb [_bbce ]=_dbe ;};};_fdb =append (_fdb ,_fgb ...);return _fdb ;};func (_dac *Encoder )encodeG32D (_cbff [][]byte )[]byte {var _fag []byte ;var _bac int ;for _bfd :=0;_bfd < len (_cbff );_bfd +=_dac .K {if _dac .Rows > 0&&!_dac .EndOfBlock &&_bfd ==_dac .Rows {break ;};_egae ,_cfc :=_agbe (_cbff [_bfd ],_bac ,_df );_fag =_dac .appendEncodedRow (_fag ,_egae ,_bac );if _dac .EncodedByteAlign {_cfc =0;};_bac =_cfc ;for _egc :=_bfd +1;_egc < (_bfd +_dac .K )&&_egc < len (_cbff );_egc ++{if _dac .Rows > 0&&!_dac .EndOfBlock &&_egc ==_dac .Rows {break ;};_bacf ,_ddfc :=_ecee (nil ,_bac ,_eb );var _cbe ,_bd ,_ffag int ;_acb :=-1;for _acb < len (_cbff [_egc ]){_cbe =_gcgc (_cbff [_egc ],_acb );_bd =_dcf (_cbff [_egc ],_cbff [_egc -1],_acb );_ffag =_gcgc (_cbff [_egc -1],_bd );if _ffag < _cbe {_bacf ,_ddfc =_geb (_bacf ,_ddfc );_acb =_ffag ;}else {if _b .Abs (float64 (_bd -_cbe ))> 3{_bacf ,_ddfc ,_acb =_eae (_cbff [_egc ],_bacf ,_ddfc ,_acb ,_cbe );}else {_bacf ,_ddfc =_aceg (_bacf ,_ddfc ,_cbe ,_bd );_acb =_cbe ;};};};_fag =_dac .appendEncodedRow (_fag ,_bacf ,_bac );if _dac .EncodedByteAlign {_ddfc =0;};_bac =_ddfc %8;};};if _dac .EndOfBlock {_bba ,_ :=_aaf (_bac );_fag =_dac .appendEncodedRow (_fag ,_bba ,_bac );};return _fag ;};var (_ba map[int ]code ;_c map[int ]code ;_f map[int ]code ;_ff map[int ]code ;_ec map[int ]code ;_fa map[int ]byte ;_bf =code {Code :1<<4,BitsWritten :12};_df =code {Code :3<<3,BitsWritten :13};_eb =code {Code :2<<3,BitsWritten :13};_a =code {Code :1<<12,BitsWritten :4};_cb =code {Code :1<<13,BitsWritten :3};_ce =code {Code :1<<15,BitsWritten :1};_fd =code {Code :3<<13,BitsWritten :3};_dg =code {Code :3<<10,BitsWritten :6};_g =code {Code :3<<9,BitsWritten :7};_dfd =code {Code :2<<13,BitsWritten :3};_ea =code {Code :2<<10,BitsWritten :6};_gd =code {Code :2<<9,BitsWritten :7};);type Encoder struct{K int ;EndOfLine bool ;EncodedByteAlign bool ;Columns int ;Rows int ;EndOfBlock bool ;BlackIs1 bool ;DamagedRowsBeforeError int ;};func _egad (_feg []byte ,_dfgg int ,_dcgg code )(bool ,int ){_cegg :=_dfgg ;var (_deeg uint16 ;_ggce int ;);_deeg ,_ggce ,_dfgg =_ecd (_feg ,_dfgg );if _ggce > 3{return false ,_cegg ;};_deeg >>=uint (3-_ggce );_deeg <<=3;if _deeg !=_dcgg .Code {return false ,_cegg ;}else {return true ,_dfgg -3+_ggce ;};};func (_bgb *Encoder )decodeRow1D (_ggf []byte ,_cggg int )([]byte ,int ){var _cga []byte ;_ddb :=true ;var _fda int ;_fda ,_cggg =_ecg (_ggf ,_cggg ,_ddb );for _fda !=-1{_cga =_bee (_cga ,_ddb ,_fda );if _fda < 64{if len (_cga )>=_bgb .Columns {break ;};_ddb =!_ddb ;};_fda ,_cggg =_ecg (_ggf ,_cggg ,_ddb );};return _cga ,_cggg ;};func _ddeg (_gdg *decodingTreeNode ,_eggg code ,_ggfb int ,_agc int ){_cfbg :=_dbb (_eggg .Code ,_ggfb );_ggfb ++;if _cfbg ==1{if _gdg .Right ==nil {_gdg .Right =&decodingTreeNode {Val :_cfbg };};if _ggfb ==_eggg .BitsWritten {_gdg .Right .RunLen =&_agc ;_gdg .Right .Code =&_eggg ;}else {_ddeg (_gdg .Right ,_eggg ,_ggfb ,_agc );};}else {if _gdg .Left ==nil {_gdg .Left =&decodingTreeNode {Val :_cfbg };};if _ggfb ==_eggg .BitsWritten {_gdg .Left .RunLen =&_agc ;_gdg .Left .Code =&_eggg ;}else {_ddeg (_gdg .Left ,_eggg ,_ggfb ,_agc );};};};func (_bb *Encoder )decodeG31D (_be []byte )([][]byte ,error ){var _fc [][]byte ;var _eg int ;for (_eg /8)< len (_be ){var _bab bool ;_bab ,_eg =_badf (_be ,_eg );if !_bab {if _bb .EndOfLine {return nil ,_dgc ;};}else {for _dd :=0;_dd < 5;_dd ++{_bab ,_eg =_badf (_be ,_eg );if !_bab {if _dd ==0{break ;};return nil ,_cg ;};};if _bab {break ;};};var _ded []byte ;_ded ,_eg =_bb .decodeRow1D (_be ,_eg );if _bb .EncodedByteAlign &&_eg %8!=0{_eg +=8-_eg %8;};_fc =append (_fc ,_ded );if _bb .Rows > 0&&!_bb .EndOfBlock &&len (_fc )>=_bb .Rows {break ;};};return _fc ,nil ;};