unipdf/internal/ccittfax/ccittfax.go
2020-11-11 18:48:37 +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 (_gc "errors";_a "math";);func _egfe (_de ,_edg []byte ,_baf int ,_bafg bool )([]byte ,int ,error ){_ede :=_baf ;var _gac int ;for _gac ,_baf =_fgf (_de ,_baf ,_bafg );_gac !=-1;_gac ,_baf =_fgf (_de ,_baf ,_bafg ){_edg =_afc (_edg ,_bafg ,_gac );if _gac < 64{break ;};};if _gac ==-1{return _edg ,_ede ,_da ;};return _edg ,_baf ,nil ;};var (_ab =&decodingTreeNode {Val :255};_bdb =&decodingTreeNode {Val :255};_fb =&decodingTreeNode {Val :255};);func init (){_c =make (map[int ]code );_c [0]=code {Code :13<<8|3<<6,BitsWritten :10};_c [1]=code {Code :2<<(5+8),BitsWritten :3};_c [2]=code {Code :3<<(6+8),BitsWritten :2};_c [3]=code {Code :2<<(6+8),BitsWritten :2};_c [4]=code {Code :3<<(5+8),BitsWritten :3};_c [5]=code {Code :3<<(4+8),BitsWritten :4};_c [6]=code {Code :2<<(4+8),BitsWritten :4};_c [7]=code {Code :3<<(3+8),BitsWritten :5};_c [8]=code {Code :5<<(2+8),BitsWritten :6};_c [9]=code {Code :4<<(2+8),BitsWritten :6};_c [10]=code {Code :4<<(1+8),BitsWritten :7};_c [11]=code {Code :5<<(1+8),BitsWritten :7};_c [12]=code {Code :7<<(1+8),BitsWritten :7};_c [13]=code {Code :4<<8,BitsWritten :8};_c [14]=code {Code :7<<8,BitsWritten :8};_c [15]=code {Code :12<<8,BitsWritten :9};_c [16]=code {Code :5<<8|3<<6,BitsWritten :10};_c [17]=code {Code :6<<8,BitsWritten :10};_c [18]=code {Code :2<<8,BitsWritten :10};_c [19]=code {Code :12<<8|7<<5,BitsWritten :11};_c [20]=code {Code :13<<8,BitsWritten :11};_c [21]=code {Code :13<<8|4<<5,BitsWritten :11};_c [22]=code {Code :6<<8|7<<5,BitsWritten :11};_c [23]=code {Code :5<<8,BitsWritten :11};_c [24]=code {Code :2<<8|7<<5,BitsWritten :11};_c [25]=code {Code :3<<8,BitsWritten :11};_c [26]=code {Code :12<<8|10<<4,BitsWritten :12};_c [27]=code {Code :12<<8|11<<4,BitsWritten :12};_c [28]=code {Code :12<<8|12<<4,BitsWritten :12};_c [29]=code {Code :12<<8|13<<4,BitsWritten :12};_c [30]=code {Code :6<<8|8<<4,BitsWritten :12};_c [31]=code {Code :6<<8|9<<4,BitsWritten :12};_c [32]=code {Code :6<<8|10<<4,BitsWritten :12};_c [33]=code {Code :6<<8|11<<4,BitsWritten :12};_c [34]=code {Code :13<<8|2<<4,BitsWritten :12};_c [35]=code {Code :13<<8|3<<4,BitsWritten :12};_c [36]=code {Code :13<<8|4<<4,BitsWritten :12};_c [37]=code {Code :13<<8|5<<4,BitsWritten :12};_c [38]=code {Code :13<<8|6<<4,BitsWritten :12};_c [39]=code {Code :13<<8|7<<4,BitsWritten :12};_c [40]=code {Code :6<<8|12<<4,BitsWritten :12};_c [41]=code {Code :6<<8|13<<4,BitsWritten :12};_c [42]=code {Code :13<<8|10<<4,BitsWritten :12};_c [43]=code {Code :13<<8|11<<4,BitsWritten :12};_c [44]=code {Code :5<<8|4<<4,BitsWritten :12};_c [45]=code {Code :5<<8|5<<4,BitsWritten :12};_c [46]=code {Code :5<<8|6<<4,BitsWritten :12};_c [47]=code {Code :5<<8|7<<4,BitsWritten :12};_c [48]=code {Code :6<<8|4<<4,BitsWritten :12};_c [49]=code {Code :6<<8|5<<4,BitsWritten :12};_c [50]=code {Code :5<<8|2<<4,BitsWritten :12};_c [51]=code {Code :5<<8|3<<4,BitsWritten :12};_c [52]=code {Code :2<<8|4<<4,BitsWritten :12};_c [53]=code {Code :3<<8|7<<4,BitsWritten :12};_c [54]=code {Code :3<<8|8<<4,BitsWritten :12};_c [55]=code {Code :2<<8|7<<4,BitsWritten :12};_c [56]=code {Code :2<<8|8<<4,BitsWritten :12};_c [57]=code {Code :5<<8|8<<4,BitsWritten :12};_c [58]=code {Code :5<<8|9<<4,BitsWritten :12};_c [59]=code {Code :2<<8|11<<4,BitsWritten :12};_c [60]=code {Code :2<<8|12<<4,BitsWritten :12};_c [61]=code {Code :5<<8|10<<4,BitsWritten :12};_c [62]=code {Code :6<<8|6<<4,BitsWritten :12};_c [63]=code {Code :6<<8|7<<4,BitsWritten :12};_f =make (map[int ]code );_f [0]=code {Code :53<<8,BitsWritten :8};_f [1]=code {Code :7<<(2+8),BitsWritten :6};_f [2]=code {Code :7<<(4+8),BitsWritten :4};_f [3]=code {Code :8<<(4+8),BitsWritten :4};_f [4]=code {Code :11<<(4+8),BitsWritten :4};_f [5]=code {Code :12<<(4+8),BitsWritten :4};_f [6]=code {Code :14<<(4+8),BitsWritten :4};_f [7]=code {Code :15<<(4+8),BitsWritten :4};_f [8]=code {Code :19<<(3+8),BitsWritten :5};_f [9]=code {Code :20<<(3+8),BitsWritten :5};_f [10]=code {Code :7<<(3+8),BitsWritten :5};_f [11]=code {Code :8<<(3+8),BitsWritten :5};_f [12]=code {Code :8<<(2+8),BitsWritten :6};_f [13]=code {Code :3<<(2+8),BitsWritten :6};_f [14]=code {Code :52<<(2+8),BitsWritten :6};_f [15]=code {Code :53<<(2+8),BitsWritten :6};_f [16]=code {Code :42<<(2+8),BitsWritten :6};_f [17]=code {Code :43<<(2+8),BitsWritten :6};_f [18]=code {Code :39<<(1+8),BitsWritten :7};_f [19]=code {Code :12<<(1+8),BitsWritten :7};_f [20]=code {Code :8<<(1+8),BitsWritten :7};_f [21]=code {Code :23<<(1+8),BitsWritten :7};_f [22]=code {Code :3<<(1+8),BitsWritten :7};_f [23]=code {Code :4<<(1+8),BitsWritten :7};_f [24]=code {Code :40<<(1+8),BitsWritten :7};_f [25]=code {Code :43<<(1+8),BitsWritten :7};_f [26]=code {Code :19<<(1+8),BitsWritten :7};_f [27]=code {Code :36<<(1+8),BitsWritten :7};_f [28]=code {Code :24<<(1+8),BitsWritten :7};_f [29]=code {Code :2<<8,BitsWritten :8};_f [30]=code {Code :3<<8,BitsWritten :8};_f [31]=code {Code :26<<8,BitsWritten :8};_f [32]=code {Code :27<<8,BitsWritten :8};_f [33]=code {Code :18<<8,BitsWritten :8};_f [34]=code {Code :19<<8,BitsWritten :8};_f [35]=code {Code :20<<8,BitsWritten :8};_f [36]=code {Code :21<<8,BitsWritten :8};_f [37]=code {Code :22<<8,BitsWritten :8};_f [38]=code {Code :23<<8,BitsWritten :8};_f [39]=code {Code :40<<8,BitsWritten :8};_f [40]=code {Code :41<<8,BitsWritten :8};_f [41]=code {Code :42<<8,BitsWritten :8};_f [42]=code {Code :43<<8,BitsWritten :8};_f [43]=code {Code :44<<8,BitsWritten :8};_f [44]=code {Code :45<<8,BitsWritten :8};_f [45]=code {Code :4<<8,BitsWritten :8};_f [46]=code {Code :5<<8,BitsWritten :8};_f [47]=code {Code :10<<8,BitsWritten :8};_f [48]=code {Code :11<<8,BitsWritten :8};_f [49]=code {Code :82<<8,BitsWritten :8};_f [50]=code {Code :83<<8,BitsWritten :8};_f [51]=code {Code :84<<8,BitsWritten :8};_f [52]=code {Code :85<<8,BitsWritten :8};_f [53]=code {Code :36<<8,BitsWritten :8};_f [54]=code {Code :37<<8,BitsWritten :8};_f [55]=code {Code :88<<8,BitsWritten :8};_f [56]=code {Code :89<<8,BitsWritten :8};_f [57]=code {Code :90<<8,BitsWritten :8};_f [58]=code {Code :91<<8,BitsWritten :8};_f [59]=code {Code :74<<8,BitsWritten :8};_f [60]=code {Code :75<<8,BitsWritten :8};_f [61]=code {Code :50<<8,BitsWritten :8};_f [62]=code {Code :51<<8,BitsWritten :8};_f [63]=code {Code :52<<8,BitsWritten :8};_fe =make (map[int ]code );_fe [64]=code {Code :3<<8|3<<6,BitsWritten :10};_fe [128]=code {Code :12<<8|8<<4,BitsWritten :12};_fe [192]=code {Code :12<<8|9<<4,BitsWritten :12};_fe [256]=code {Code :5<<8|11<<4,BitsWritten :12};_fe [320]=code {Code :3<<8|3<<4,BitsWritten :12};_fe [384]=code {Code :3<<8|4<<4,BitsWritten :12};_fe [448]=code {Code :3<<8|5<<4,BitsWritten :12};_fe [512]=code {Code :3<<8|12<<3,BitsWritten :13};_fe [576]=code {Code :3<<8|13<<3,BitsWritten :13};_fe [640]=code {Code :2<<8|10<<3,BitsWritten :13};_fe [704]=code {Code :2<<8|11<<3,BitsWritten :13};_fe [768]=code {Code :2<<8|12<<3,BitsWritten :13};_fe [832]=code {Code :2<<8|13<<3,BitsWritten :13};_fe [896]=code {Code :3<<8|18<<3,BitsWritten :13};_fe [960]=code {Code :3<<8|19<<3,BitsWritten :13};_fe [1024]=code {Code :3<<8|20<<3,BitsWritten :13};_fe [1088]=code {Code :3<<8|21<<3,BitsWritten :13};_fe [1152]=code {Code :3<<8|22<<3,BitsWritten :13};_fe [1216]=code {Code :119<<3,BitsWritten :13};_fe [1280]=code {Code :2<<8|18<<3,BitsWritten :13};_fe [1344]=code {Code :2<<8|19<<3,BitsWritten :13};_fe [1408]=code {Code :2<<8|20<<3,BitsWritten :13};_fe [1472]=code {Code :2<<8|21<<3,BitsWritten :13};_fe [1536]=code {Code :2<<8|26<<3,BitsWritten :13};_fe [1600]=code {Code :2<<8|27<<3,BitsWritten :13};_fe [1664]=code {Code :3<<8|4<<3,BitsWritten :13};_fe [1728]=code {Code :3<<8|5<<3,BitsWritten :13};_b =make (map[int ]code );_b [64]=code {Code :27<<(3+8),BitsWritten :5};_b [128]=code {Code :18<<(3+8),BitsWritten :5};_b [192]=code {Code :23<<(2+8),BitsWritten :6};_b [256]=code {Code :55<<(1+8),BitsWritten :7};_b [320]=code {Code :54<<8,BitsWritten :8};_b [384]=code {Code :55<<8,BitsWritten :8};_b [448]=code {Code :100<<8,BitsWritten :8};_b [512]=code {Code :101<<8,BitsWritten :8};_b [576]=code {Code :104<<8,BitsWritten :8};_b [640]=code {Code :103<<8,BitsWritten :8};_b [704]=code {Code :102<<8,BitsWritten :9};_b [768]=code {Code :102<<8|1<<7,BitsWritten :9};_b [832]=code {Code :105<<8,BitsWritten :9};_b [896]=code {Code :105<<8|1<<7,BitsWritten :9};_b [960]=code {Code :106<<8,BitsWritten :9};_b [1024]=code {Code :106<<8|1<<7,BitsWritten :9};_b [1088]=code {Code :107<<8,BitsWritten :9};_b [1152]=code {Code :107<<8|1<<7,BitsWritten :9};_b [1216]=code {Code :108<<8,BitsWritten :9};_b [1280]=code {Code :108<<8|1<<7,BitsWritten :9};_b [1344]=code {Code :109<<8,BitsWritten :9};_b [1408]=code {Code :109<<8|1<<7,BitsWritten :9};_b [1472]=code {Code :76<<8,BitsWritten :9};_b [1536]=code {Code :76<<8|1<<7,BitsWritten :9};_b [1600]=code {Code :77<<8,BitsWritten :9};_b [1664]=code {Code :24<<(2+8),BitsWritten :6};_b [1728]=code {Code :77<<8|1<<7,BitsWritten :9};_d =make (map[int ]code );_d [1792]=code {Code :1<<8,BitsWritten :11};_d [1856]=code {Code :1<<8|4<<5,BitsWritten :11};_d [1920]=code {Code :1<<8|5<<5,BitsWritten :11};_d [1984]=code {Code :1<<8|2<<4,BitsWritten :12};_d [2048]=code {Code :1<<8|3<<4,BitsWritten :12};_d [2112]=code {Code :1<<8|4<<4,BitsWritten :12};_d [2176]=code {Code :1<<8|5<<4,BitsWritten :12};_d [2240]=code {Code :1<<8|6<<4,BitsWritten :12};_d [2304]=code {Code :1<<8|7<<4,BitsWritten :12};_d [2368]=code {Code :1<<8|12<<4,BitsWritten :12};_d [2432]=code {Code :1<<8|13<<4,BitsWritten :12};_d [2496]=code {Code :1<<8|14<<4,BitsWritten :12};_d [2560]=code {Code :1<<8|15<<4,BitsWritten :12};_aa =make (map[int ]byte );_aa [0]=0xFF;_aa [1]=0xFE;_aa [2]=0xFC;_aa [3]=0xF8;_aa [4]=0xF0;_aa [5]=0xE0;_aa [6]=0xC0;_aa [7]=0x80;_aa [8]=0x00;};func _ccac (_cgdc int )([]byte ,int ){var _geg []byte ;for _dgcd :=0;_dgcd < 6;_dgcd ++{_geg ,_cgdc =_faaa (_geg ,_cgdc ,_fa );};return _geg ,_cgdc %8;};func _fgf (_dad []byte ,_ee int ,_bag bool )(int ,int ){var (_bgca uint16 ;_egd int ;_ddf int ;);_ddf =_ee ;_bgca ,_egd ,_ =_gae (_dad ,_ee );_bdd ,_eed :=_eba (_bgca ,_egd ,_bag );if _bdd ==-1{return -1,_ddf ;};return _bdd ,_ddf +_eed .BitsWritten ;};func init (){for _fg ,_dfc :=range _f {_dca (_ab ,_dfc ,0,_fg );};for _gca ,_ggf :=range _b {_dca (_ab ,_ggf ,0,_gca );};for _ggb ,_fbf :=range _c {_dca (_bdb ,_fbf ,0,_ggb );};for _aeb ,_cg :=range _fe {_dca (_bdb ,_cg ,0,_aeb );};for _ff ,_be :=range _d {_dca (_ab ,_be ,0,_ff );_dca (_bdb ,_be ,0,_ff );};_dca (_fb ,_fc ,0,0);_dca (_fb ,_ge ,0,0);_dca (_fb ,_e ,0,0);_dca (_fb ,_ca ,0,0);_dca (_fb ,_faa ,0,0);_dca (_fb ,_cf ,0,0);_dca (_fb ,_df ,0,0);_dca (_fb ,_gg ,0,0);_dca (_fb ,_bd ,0,0);};var (_eb =_gc .New ("\u0045\u004f\u0046\u0042 c\u006f\u0064\u0065\u0020\u0069\u0073\u0020\u0063\u006f\u0072\u0072\u0075\u0070\u0074e\u0064");_ae =_gc .New ("R\u0054\u0043\u0020\u0063od\u0065 \u0069\u0073\u0020\u0063\u006fr\u0072\u0075\u0070\u0074\u0065\u0064");_da =_gc .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");_ed =_gc .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");_fab =_gc .New ("i\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0045\u004f\u004c");_cad =_gc .New ("\u0069n\u0076a\u006c\u0069\u0064\u0020\u0032\u0044\u0020\u0063\u006f\u0064\u0065"););func (_dff *Encoder )Decode (encoded []byte )([][]byte ,error ){if _dff .BlackIs1 {_agg =0;_bdg =1;}else {_agg =1;_bdg =0;};if _dff .K ==0{return _dff .decodeG31D (encoded );};if _dff .K > 0{return _dff .decodeG32D (encoded );};if _dff .K < 4{return _dff .decodeG4 (encoded );};return nil ,nil ;};func (_cd *Encoder )decodeG32D (_fba []byte )([][]byte ,error ){var (_faba [][]byte ;_aaf int ;_dgf error ;);_ba :for (_aaf /8)< len (_fba ){var _egf bool ;_egf ,_aaf ,_dgf =_egg (_fba ,_aaf );if _dgf !=nil {return nil ,_dgf ;};if _egf {break ;};_egf ,_aaf =_egga (_fba ,_aaf );if !_egf {if _cd .EndOfLine {return nil ,_ed ;};};var _ea []byte ;_ea ,_aaf =_cd .decodeRow1D (_fba ,_aaf );if _cd .EncodedByteAlign &&_aaf %8!=0{_aaf +=8-_aaf %8;};if _ea !=nil {_faba =append (_faba ,_ea );};if _cd .Rows > 0&&!_cd .EndOfBlock &&len (_faba )>=_cd .Rows {break ;};for _gef :=1;_gef < _cd .K &&(_aaf /8)< len (_fba );_gef ++{_egf ,_aaf =_cgdg (_fba ,_aaf );if !_egf {_egf ,_aaf ,_dgf =_egg (_fba ,_aaf );if _dgf !=nil {return nil ,_dgf ;};if _egf {break _ba ;}else {if _cd .EndOfLine {return nil ,_ed ;};};};var (_fbg code ;_fbge bool ;);_dfb :=true ;var _fgb []byte ;_cb :=-1;for _fbg ,_aaf ,_fbge =_bge (_fba ,_aaf );_fbge ;_fbg ,_aaf ,_fbge =_bge (_fba ,_aaf ){switch _fbg {case _fc :_fgb ,_cb =_fabb (_faba ,_fgb ,_dfb ,_cb );case _ge :_fgb ,_aaf ,_cb ,_dgf =_gad (_fba ,_fgb ,_aaf ,_dfb ,_cb );if _dgf !=nil {return nil ,_dgf ;};case _e :_fgb ,_cb =_bf (_faba ,_fgb ,_dfb ,_cb ,0);_dfb =!_dfb ;case _ca :_fgb ,_cb =_bf (_faba ,_fgb ,_dfb ,_cb ,1);_dfb =!_dfb ;case _faa :_fgb ,_cb =_bf (_faba ,_fgb ,_dfb ,_cb ,2);_dfb =!_dfb ;case _cf :_fgb ,_cb =_bf (_faba ,_fgb ,_dfb ,_cb ,3);_dfb =!_dfb ;case _df :_fgb ,_cb =_bf (_faba ,_fgb ,_dfb ,_cb ,-1);_dfb =!_dfb ;case _gg :_fgb ,_cb =_bf (_faba ,_fgb ,_dfb ,_cb ,-2);_dfb =!_dfb ;case _bd :_fgb ,_cb =_bf (_faba ,_fgb ,_dfb ,_cb ,-3);_dfb =!_dfb ;};if len (_fgb )>=_cd .Columns {break ;};};if _cd .EncodedByteAlign &&_aaf %8!=0{_aaf +=8-_aaf %8;};if _fgb !=nil {_faba =append (_faba ,_fgb );};if _cd .Rows > 0&&!_cd .EndOfBlock &&len (_faba )>=_cd .Rows {break _ba ;};};};return _faba ,nil ;};func _gbbc (_ccd ,_ffca []byte ,_acfe int )int {_gcbd :=_cdb (_ffca ,_acfe );if _gcbd < len (_ffca )&&(_acfe ==-1&&_ffca [_gcbd ]==_agg ||_acfe >=0&&_acfe < len (_ccd )&&_ccd [_acfe ]==_ffca [_gcbd ]||_acfe >=len (_ccd )&&_ccd [_acfe -1]!=_ffca [_gcbd ]){_gcbd =_cdb (_ffca ,_gcbd );};return _gcbd ;};func _cbbc (_dade int )([]byte ,int ){var _afca []byte ;for _fbdd :=0;_fbdd < 2;_fbdd ++{_afca ,_dade =_faaa (_afca ,_dade ,_gce );};return _afca ,_dade %8;};func _egga (_bgcc []byte ,_cgdb int )(bool ,int ){return _cac (_bgcc ,_cgdb ,_fa )};func _faaa (_bda []byte ,_gbb int ,_dba code )([]byte ,int ){_cafg :=0;for _cafg < _dba .BitsWritten {_ggfa :=_gbb /8;_cda :=_gbb %8;if _ggfa >=len (_bda ){_bda =append (_bda ,0);};_bab :=8-_cda ;_gcd :=_dba .BitsWritten -_cafg ;if _bab > _gcd {_bab =_gcd ;};if _cafg < 8{_bda [_ggfa ]=_bda [_ggfa ]|byte (_dba .Code >>uint (8+_cda -_cafg ))&_aa [8-_bab -_cda ];}else {_bda [_ggfa ]=_bda [_ggfa ]|(byte (_dba .Code <<uint (_cafg -8))&_aa [8-_bab ])>>uint (_cda );};_gbb +=_bab ;_cafg +=_bab ;};return _bda ,_gbb ;};func _bge (_gaf []byte ,_bff int )(code ,int ,bool ){var (_bec uint16 ;_ddd int ;_gcb int ;);_gcb =_bff ;_bec ,_ddd ,_ =_gae (_gaf ,_bff );_ac ,_ccaf :=_ege (_bec ,_ddd );if !_ccaf {return code {},_gcb ,false ;};return _ac ,_gcb +_ac .BitsWritten ,true ;};func _fabb (_abb [][]byte ,_cc []byte ,_fcgg bool ,_ead int )([]byte ,int ){_abg :=_acd (_cc ,_abb [len (_abb )-1],_ead ,_fcgg );_cga :=_cdb (_abb [len (_abb )-1],_abg );if _ead ==-1{_cc =_afc (_cc ,_fcgg ,_cga -_ead -1);}else {_cc =_afc (_cc ,_fcgg ,_cga -_ead );};_ead =_cga ;return _cc ,_ead ;};func _bf (_cbb [][]byte ,_af []byte ,_fcg bool ,_ggbb ,_caf int )([]byte ,int ){_ag :=_acd (_af ,_cbb [len (_cbb )-1],_ggbb ,_fcg );_bg :=_ag +_caf ;if _ggbb ==-1{_af =_afc (_af ,_fcg ,_bg -_ggbb -1);}else {_af =_afc (_af ,_fcg ,_bg -_ggbb );};_ggbb =_bg ;return _af ,_ggbb ;};func _afc (_cbg []byte ,_ffdg bool ,_fea int )[]byte {if _fea < 0{return _cbg ;};_eag :=make ([]byte ,_fea );if _ffdg {for _ebb :=0;_ebb < len (_eag );_ebb ++{_eag [_ebb ]=_agg ;};}else {for _aac :=0;_aac < len (_eag );_aac ++{_eag [_aac ]=_bdg ;};};_cbg =append (_cbg ,_eag ...);return _cbg ;};func _cdb (_bef []byte ,_egc int )int {if _egc >=len (_bef ){return _egc ;};if _egc < -1{_egc =-1;};var _cce byte ;if _egc > -1{_cce =_bef [_egc ];}else {_cce =_agg ;};_ageg :=_egc +1;for _ageg < len (_bef ){if _bef [_ageg ]!=_cce {break ;};_ageg ++;};return _ageg ;};func (_cbc *Encoder )encodeG32D (_efb [][]byte )[]byte {var _ggbg []byte ;var _bcb int ;for _bcec :=0;_bcec < len (_efb );_bcec +=_cbc .K {if _cbc .Rows > 0&&!_cbc .EndOfBlock &&_bcec ==_cbc .Rows {break ;};_efga ,_dac :=_gaeg (_efb [_bcec ],_bcb ,_fa );_ggbg =_cbc .appendEncodedRow (_ggbg ,_efga ,_bcb );if _cbc .EncodedByteAlign {_dac =0;};_bcb =_dac ;for _fdf :=_bcec +1;_fdf < (_bcec +_cbc .K )&&_fdf < len (_efb );_fdf ++{if _cbc .Rows > 0&&!_cbc .EndOfBlock &&_fdf ==_cbc .Rows {break ;};_fae ,_cgdbf :=_faaa (nil ,_bcb ,_db );var _ebe ,_ccc ,_bed int ;_ada :=-1;for _ada < len (_efb [_fdf ]){_ebe =_cdb (_efb [_fdf ],_ada );_ccc =_gbbc (_efb [_fdf ],_efb [_fdf -1],_ada );_bed =_cdb (_efb [_fdf -1],_ccc );if _bed < _ebe {_fae ,_cgdbf =_fbdef (_fae ,_cgdbf );_ada =_bed ;}else {if _a .Abs (float64 (_ccc -_ebe ))> 3{_fae ,_cgdbf ,_ada =_bbdb (_efb [_fdf ],_fae ,_cgdbf ,_ada ,_ebe );}else {_fae ,_cgdbf =_cee (_fae ,_cgdbf ,_ebe ,_ccc );_ada =_ebe ;};};};_ggbg =_cbc .appendEncodedRow (_ggbg ,_fae ,_bcb );if _cbc .EncodedByteAlign {_cgdbf =0;};_bcb =_cgdbf %8;};};if _cbc .EndOfBlock {_dea ,_ :=_ccac (_bcb );_ggbg =_cbc .appendEncodedRow (_ggbg ,_dea ,_bcb );};return _ggbg ;};type code struct{Code uint16 ;BitsWritten int ;};func _cgdg (_acf []byte ,_eee int )(bool ,int ){return _cac (_acf ,_eee ,_db )};type decodingTreeNode struct{Val byte ;RunLen *int ;Code *code ;Left *decodingTreeNode ;Right *decodingTreeNode ;};func _edb (_ffc []byte ,_fee int )(bool ,int ){_dc :=_fee ;var (_fcb uint16 ;_cbed int ;);_fcb ,_cbed ,_fee =_gae (_ffc ,_fee );if _cbed > 4{return false ,_dc ;};_fcb >>=uint (4-_cbed );_fcb <<=4;if _fcb !=_gce .Code {return false ,_dc ;};return true ,_fee -4+_cbed ;};func _gaeg (_ggd []byte ,_dcc int ,_afcg code )([]byte ,int ){_cbcg :=true ;var _fgc []byte ;_fgc ,_dcc =_faaa (nil ,_dcc ,_afcg );_gfe :=0;var _gbe int ;for _gfe < len (_ggd ){_gbe ,_gfe =_fcdg (_ggd ,_cbcg ,_gfe );_fgc ,_dcc =_bee (_fgc ,_dcc ,_gbe ,_cbcg );_cbcg =!_cbcg ;};return _fgc ,_dcc %8;};func (_eg *Encoder )decodeG31D (_bb []byte )([][]byte ,error ){var _ebg [][]byte ;var _bba int ;for (_bba /8)< len (_bb ){var _ad bool ;_ad ,_bba =_edb (_bb ,_bba );if !_ad {if _eg .EndOfLine {return nil ,_ed ;};}else {for _gd :=0;_gd < 5;_gd ++{_ad ,_bba =_edb (_bb ,_bba );if !_ad {if _gd ==0{break ;};return nil ,_fab ;};};if _ad {break ;};};var _ec []byte ;_ec ,_bba =_eg .decodeRow1D (_bb ,_bba );if _eg .EncodedByteAlign &&_bba %8!=0{_bba +=8-_bba %8;};_ebg =append (_ebg ,_ec );if _eg .Rows > 0&&!_eg .EndOfBlock &&len (_ebg )>=_eg .Rows {break ;};};return _ebg ,nil ;};func _eba (_gcg uint16 ,_afge int ,_gadf bool )(int ,code ){var _dda *int ;var _bce *code ;if _gadf {_dda ,_bce =_dafg (_ab ,_gcg ,_afge );}else {_dda ,_bce =_dafg (_bdb ,_gcg ,_afge );};if _dda ==nil {return -1,code {};};return *_dda ,*_bce ;};func _dafg (_ecf *decodingTreeNode ,_eac uint16 ,_bgb int )(*int ,*code ){if _ecf ==nil {return nil ,nil ;};if _bgb ==16{return _ecf .RunLen ,_ecf .Code ;};_agd :=_fd (_eac ,_bgb );_bgb ++;var _fda *int ;var _dffa *code ;if _agd ==1{_fda ,_dffa =_dafg (_ecf .Right ,_eac ,_bgb );}else {_fda ,_dffa =_dafg (_ecf .Left ,_eac ,_bgb );};if _fda ==nil {_fda =_ecf .RunLen ;_dffa =_ecf .Code ;};return _fda ,_dffa ;};func _fd (_bc uint16 ,_fcd int )byte {if _fcd < 8{_bc >>=8;};_fcd %=8;_gdg :=byte (0x01<<(7-uint (_fcd )));return (byte (_bc )&_gdg )>>(7-uint (_fcd ));};func _fbdef (_gbf []byte ,_gcgf int )([]byte ,int ){return _faaa (_gbf ,_gcgf ,_fc )};func (_dbf *Encoder )Encode (pixels [][]byte )[]byte {if _dbf .BlackIs1 {_agg =0;_bdg =1;}else {_agg =1;_bdg =0;};if _dbf .K ==0{return _dbf .encodeG31D (pixels );};if _dbf .K > 0{return _dbf .encodeG32D (pixels );};if _dbf .K < 0{return _dbf .encodeG4 (pixels );};return nil ;};func _cee (_gafec []byte ,_fed ,_gaed ,_beg int )([]byte ,int ){_fgcc :=_efc (_gaed ,_beg );_gafec ,_fed =_faaa (_gafec ,_fed ,_fgcc );return _gafec ,_fed ;};func _abc (_ecfa int )([]byte ,int ){var _badd []byte ;for _acg :=0;_acg < 6;_acg ++{_badd ,_ecfa =_faaa (_badd ,_ecfa ,_gce );};return _badd ,_ecfa %8;};func (_dgg *Encoder )encodeG31D (_adf [][]byte )[]byte {var _ced []byte ;_bad :=0;for _dgc :=range _adf {if _dgg .Rows > 0&&!_dgg .EndOfBlock &&_dgc ==_dgg .Rows {break ;};_aeeg ,_deb :=_gaeg (_adf [_dgc ],_bad ,_gce );_ced =_dgg .appendEncodedRow (_ced ,_aeeg ,_bad );if _dgg .EncodedByteAlign {_deb =0;};_bad =_deb ;};if _dgg .EndOfBlock {_dbe ,_ :=_abc (_bad );_ced =_dgg .appendEncodedRow (_ced ,_dbe ,_bad );};return _ced ;};func _gad (_eca ,_dd []byte ,_cge int ,_afg bool ,_cfd int )([]byte ,int ,int ,error ){_ece :=_cge ;var _bgc error ;_dd ,_cge ,_bgc =_egfe (_eca ,_dd ,_cge ,_afg );if _bgc !=nil {return _dd ,_ece ,_cfd ,_bgc ;};_afg =!_afg ;_dd ,_cge ,_bgc =_egfe (_eca ,_dd ,_cge ,_afg );if _bgc !=nil {return _dd ,_ece ,_cfd ,_bgc ;};_cfd =len (_dd );return _dd ,_cge ,_cfd ,nil ;};func _bbdb (_bdee ,_ffdb []byte ,_bae ,_gafe ,_fbdc int )([]byte ,int ,int ){_cec :=_cdb (_bdee ,_fbdc );_gecc :=_gafe >=0&&_bdee [_gafe ]==_agg ||_gafe ==-1;_ffdb ,_bae =_faaa (_ffdb ,_bae ,_ge );var _fabe int ;if _gafe > -1{_fabe =_fbdc -_gafe ;}else {_fabe =_fbdc -_gafe -1;};_ffdb ,_bae =_bee (_ffdb ,_bae ,_fabe ,_gecc );_gecc =!_gecc ;_cefe :=_cec -_fbdc ;_ffdb ,_bae =_bee (_ffdb ,_bae ,_cefe ,_gecc );_gafe =_cec ;return _ffdb ,_bae ,_gafe ;};type Encoder struct{K int ;EndOfLine bool ;EncodedByteAlign bool ;Columns int ;Rows int ;EndOfBlock bool ;BlackIs1 bool ;DamagedRowsBeforeError int ;};var (_c map[int ]code ;_f map[int ]code ;_fe map[int ]code ;_b map[int ]code ;_d map[int ]code ;_aa map[int ]byte ;_gce =code {Code :1<<4,BitsWritten :12};_fa =code {Code :3<<3,BitsWritten :13};_db =code {Code :2<<3,BitsWritten :13};_fc =code {Code :1<<12,BitsWritten :4};_ge =code {Code :1<<13,BitsWritten :3};_e =code {Code :1<<15,BitsWritten :1};_ca =code {Code :3<<13,BitsWritten :3};_faa =code {Code :3<<10,BitsWritten :6};_cf =code {Code :3<<9,BitsWritten :7};_df =code {Code :2<<13,BitsWritten :3};_gg =code {Code :2<<10,BitsWritten :6};_bd =code {Code :2<<9,BitsWritten :7};);func _gae (_agb []byte ,_egb int )(uint16 ,int ,int ){_fbe :=_egb ;_fgg :=_egb /8;_egb %=8;if _fgg >=len (_agb ){return 0,16,_fbe ;};_bde :=byte (0xFF>>uint (_egb ));_gfa :=uint16 ((_agb [_fgg ]&_bde )<<uint (_egb ))<<8;_daf :=8-_egb ;_fgg ++;_egb =0;if _fgg >=len (_agb ){return _gfa >>(16-uint (_daf )),16-_daf ,_fbe +_daf ;};_gfa |=uint16 (_agb [_fgg ])<<(8-uint (_daf ));_daf +=8;_fgg ++;_egb =0;if _fgg >=len (_agb ){return _gfa >>(16-uint (_daf )),16-_daf ,_fbe +_daf ;};if _daf ==16{return _gfa ,0,_fbe +_daf ;};_ffd :=16-_daf ;_gfa |=uint16 (_agb [_fgg ]>>(8-uint (_ffd )));return _gfa ,0,_fbe +16;};var (_agg byte =1;_bdg byte =0;);func _acd (_ccea ,_cfg []byte ,_egee int ,_cgeb bool )int {_bafgf :=_cdb (_cfg ,_egee );if _bafgf < len (_cfg )&&(_egee ==-1&&_cfg [_bafgf ]==_agg ||_egee >=0&&_egee < len (_ccea )&&_ccea [_egee ]==_cfg [_bafgf ]||_egee >=len (_ccea )&&_cgeb &&_cfg [_bafgf ]==_agg ||_egee >=len (_ccea )&&!_cgeb &&_cfg [_bafgf ]==_bdg ){_bafgf =_cdb (_cfg ,_bafgf );};return _bafgf ;};func _cgd (_adc []byte ,_cca int )(bool ,int ,error ){_gfd :=_cca ;var _efg bool ;_efg ,_cca =_edb (_adc ,_cca );if _efg {_efg ,_cca =_edb (_adc ,_cca );if _efg {return true ,_cca ,nil ;};return false ,_gfd ,_eb ;};return false ,_gfd ,nil ;};func _dca (_cbfb *decodingTreeNode ,_bdf code ,_feeb int ,_egba int ){_ce :=_fd (_bdf .Code ,_feeb );_feeb ++;if _ce ==1{if _cbfb .Right ==nil {_cbfb .Right =&decodingTreeNode {Val :_ce };};if _feeb ==_bdf .BitsWritten {_cbfb .Right .RunLen =&_egba ;_cbfb .Right .Code =&_bdf ;}else {_dca (_cbfb .Right ,_bdf ,_feeb ,_egba );};}else {if _cbfb .Left ==nil {_cbfb .Left =&decodingTreeNode {Val :_ce };};if _feeb ==_bdf .BitsWritten {_cbfb .Left .RunLen =&_egba ;_cbfb .Left .Code =&_bdf ;}else {_dca (_cbfb .Left ,_bdf ,_feeb ,_egba );};};};func (_gf *Encoder )decodeG4 (_adb []byte )([][]byte ,error ){_aee :=make ([]byte ,_gf .Columns );for _dgfc :=range _aee {_aee [_dgfc ]=_agg ;};_fbb :=make ([][]byte ,1);_fbb [0]=_aee ;var (_ef bool ;_ade error ;_faf int ;);for (_faf /8)< len (_adb ){_ef ,_faf ,_ade =_cgd (_adb ,_faf );if _ade !=nil {return nil ,_ade ;};if _ef {break ;};var (_dga code ;_bbf bool ;);_abe :=true ;var _cbe []byte ;_gec :=-1;for _gec < _gf .Columns {_dga ,_faf ,_bbf =_bge (_adb ,_faf );if !_bbf {return nil ,_cad ;};switch _dga {case _fc :_cbe ,_gec =_fabb (_fbb ,_cbe ,_abe ,_gec );case _ge :_cbe ,_faf ,_gec ,_ade =_gad (_adb ,_cbe ,_faf ,_abe ,_gec );if _ade !=nil {return nil ,_ade ;};case _e :_cbe ,_gec =_bf (_fbb ,_cbe ,_abe ,_gec ,0);_abe =!_abe ;case _ca :_cbe ,_gec =_bf (_fbb ,_cbe ,_abe ,_gec ,1);_abe =!_abe ;case _faa :_cbe ,_gec =_bf (_fbb ,_cbe ,_abe ,_gec ,2);_abe =!_abe ;case _cf :_cbe ,_gec =_bf (_fbb ,_cbe ,_abe ,_gec ,3);_abe =!_abe ;case _df :_cbe ,_gec =_bf (_fbb ,_cbe ,_abe ,_gec ,-1);_abe =!_abe ;case _gg :_cbe ,_gec =_bf (_fbb ,_cbe ,_abe ,_gec ,-2);_abe =!_abe ;case _bd :_cbe ,_gec =_bf (_fbb ,_cbe ,_abe ,_gec ,-3);_abe =!_abe ;};if len (_cbe )>=_gf .Columns {break ;};};if _gf .EncodedByteAlign &&_faf %8!=0{_faf +=8-_faf %8;};_fbb =append (_fbb ,_cbe );if _gf .Rows > 0&&!_gf .EndOfBlock &&len (_fbb )>=(_gf .Rows +1){break ;};};_fbb =_fbb [1:];return _fbb ,nil ;};func _bee (_gfdd []byte ,_efd int ,_cef int ,_bgeg bool )([]byte ,int ){var (_age code ;_bdec bool ;);for !_bdec {_age ,_cef ,_bdec =_dbeb (_cef ,_bgeg );_gfdd ,_efd =_faaa (_gfdd ,_efd ,_age );};return _gfdd ,_efd ;};func _fce (_gfad [][]byte )[][]byte {_cdc :=make ([]byte ,len (_gfad [0]));for _fedf :=range _cdc {_cdc [_fedf ]=_agg ;};_gfad =append (_gfad ,[]byte {});for _efdb :=len (_gfad )-1;_efdb > 0;_efdb --{_gfad [_efdb ]=_gfad [_efdb -1];};_gfad [0]=_cdc ;return _gfad ;};func (_gcf *Encoder )appendEncodedRow (_baga ,_afe []byte ,_acc int )[]byte {if len (_baga )> 0&&_acc !=0&&!_gcf .EncodedByteAlign {_baga [len (_baga )-1]=_baga [len (_baga )-1]|_afe [0];_baga =append (_baga ,_afe [1:]...);}else {_baga =append (_baga ,_afe ...);};return _baga ;};func _cac (_efe []byte ,_cfa int ,_bdc code )(bool ,int ){_gdgb :=_cfa ;var (_cbf uint16 ;_caa int ;);_cbf ,_caa ,_cfa =_gae (_efe ,_cfa );if _caa > 3{return false ,_gdgb ;};_cbf >>=uint (3-_caa );_cbf <<=3;if _cbf !=_bdc .Code {return false ,_gdgb ;};return true ,_cfa -3+_caa ;};func (_gb *Encoder )encodeG4 (_dcd [][]byte )[]byte {_cgbb :=make ([][]byte ,len (_dcd ));copy (_cgbb ,_dcd );_cgbb =_fce (_cgbb );var _ffda []byte ;var _gga int ;for _afce :=1;_afce < len (_cgbb );_afce ++{if _gb .Rows > 0&&!_gb .EndOfBlock &&_afce ==(_gb .Rows +1){break ;};var _dcdf []byte ;var _cae ,_faad ,_fcc int ;_gafc :=_gga ;_edc :=-1;for _edc < len (_cgbb [_afce ]){_cae =_cdb (_cgbb [_afce ],_edc );_faad =_gbbc (_cgbb [_afce ],_cgbb [_afce -1],_edc );_fcc =_cdb (_cgbb [_afce -1],_faad );if _fcc < _cae {_dcdf ,_gafc =_faaa (_dcdf ,_gafc ,_fc );_edc =_fcc ;}else {if _a .Abs (float64 (_faad -_cae ))> 3{_dcdf ,_gafc ,_edc =_bbdb (_cgbb [_afce ],_dcdf ,_gafc ,_edc ,_cae );}else {_dcdf ,_gafc =_cee (_dcdf ,_gafc ,_cae ,_faad );_edc =_cae ;};};};_ffda =_gb .appendEncodedRow (_ffda ,_dcdf ,_gga );if _gb .EncodedByteAlign {_gafc =0;};_gga =_gafc %8;};if _gb .EndOfBlock {_fdd ,_ :=_cbbc (_gga );_ffda =_gb .appendEncodedRow (_ffda ,_fdd ,_gga );};return _ffda ;};func _ege (_dgfd uint16 ,_fec int )(code ,bool ){_ ,_bbd :=_dafg (_fb ,_dgfd ,_fec );if _bbd ==nil {return code {},false ;};return *_bbd ,true ;};func _fcdg (_efea []byte ,_fbde bool ,_bfd int )(int ,int ){_edbg :=0;for _bfd < len (_efea ){if _fbde {if _efea [_bfd ]!=_agg {break ;};}else {if _efea [_bfd ]!=_bdg {break ;};};_edbg ++;_bfd ++;};return _edbg ,_bfd ;};func _efc (_aed ,_bdag int )code {var _fdc code ;switch _bdag -_aed {case -1:_fdc =_ca ;case -2:_fdc =_faa ;case -3:_fdc =_cf ;case 0:_fdc =_e ;case 1:_fdc =_df ;case 2:_fdc =_gg ;case 3:_fdc =_bd ;};return _fdc ;};func _dbeb (_bbb int ,_dbd bool )(code ,int ,bool ){if _bbb < 64{if _dbd {return _f [_bbb ],0,true ;};return _c [_bbb ],0,true ;};_adbb :=_bbb /64;if _adbb > 40{return _d [2560],_bbb -2560,false ;};if _adbb > 27{return _d [_adbb *64],_bbb -_adbb *64,false ;};if _dbd {return _b [_adbb *64],_bbb -_adbb *64,false ;};return _fe [_adbb *64],_bbb -_adbb *64,false ;};func _egg (_ecb []byte ,_fafe int )(bool ,int ,error ){_ged :=_fafe ;var _fbag =false ;for _cgb :=0;_cgb < 6;_cgb ++{_fbag ,_fafe =_egga (_ecb ,_fafe );if !_fbag {if _cgb > 1{return false ,_ged ,_ae ;};_fafe =_ged ;break ;};};return _fbag ,_fafe ,nil ;};func (_fbd *Encoder )decodeRow1D (_edef []byte ,_cdg int )([]byte ,int ){var _gafg []byte ;_aeg :=true ;var _bga int ;_bga ,_cdg =_fgf (_edef ,_cdg ,_aeg );for _bga !=-1{_gafg =_afc (_gafg ,_aeg ,_bga );if _bga < 64{if len (_gafg )>=_fbd .Columns {break ;};_aeg =!_aeg ;};_bga ,_cdg =_fgf (_edef ,_cdg ,_aeg );};return _gafg ,_cdg ;};