Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
3 Cñr_ÜEã@s„�dZ�d�d�d �d �d �d �d �d�d�d�d�d�d�d�d�ddØœZ�dZ�dZ�d�dlmZG�d�d„�deƒZ�dS(ÚECC200datamatrixéäé0ééoé>ééDé�é†éðé\éþééé¹é¦éßéøétéÿéné=é¯éŠéÍé éÂé¨é'éõé<éaéxé)é™éžé[é*éŽéÕé²édéòéœéÀéüé_é é�éwé-ééºéSéÃé¼éKéBéñémé�é^éáéZéôéééGéé é‘éýéOéléRéé®é¬é4é¾éXé°éé›éÅéûéé|éµé¸é`é2éÁéÓéçé+égé%é—éªé5é"éùéyéé�éˆé]ééÚé‚éúé¢éféTé³éÜéPé¶éåéé!éeé‰ésé,é;éébéQépéMééé&éé÷éiézé…éé§éÖé9éé6éÊéEé–é±éâé„é éuéîéíéWé¿éjéé“évéƒé»éÐééæé×éëéŸé$éÈé’éêéËéèéÉéÏé¤é éCéké�é.é©éÒé½éÄé?éÝé@éré¡éé3é é(é£ééàéVé/é éÌé­éYé•é8éšéIé´éãéìé‹éïé1)rWrÇrÄrËrér5érrr«r'rrÐrrééóéŒé7éÛéÞéNé}é‡écéÔéÇéLéÙéhé«é¥é~éJérÙé€éÆé˜éÑéqéÎé#é·éØéUéöéAéHé{éé:é”éFrÚé)ÚBarcodec@sÄeZdZdZdZdd„Zdd„Zdd„Zd d „Zd d „Z d d„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Zd/S)0ÚECC200DataMatrixaThis code only supports a Type 12 (44x44) C40 encoded data matrix. This is the size and encoding that Royal Mail wants on all mail from October 1st 2015. see https://bitbucket.org/rptlab/reportlab/issues/69/implementations-of-code-128-auto-and-data rycOs^tj|f|ž|Žd|_d|_d|_d|_d|_d|_|j|jd|_|j|jd|_ dS)Nr~rEr rÐ) rÚ__init__Ú row_modulesÚ col_modulesÚ row_regionsÚ col_regionsÚcw_dataÚcw_eccÚrow_usable_modulesÚcol_usable_modules)ÚselfÚargsÚkwargs©rúL/tmp/tmp4i9tl1d3/lib64/python/reportlab/graphics/barcode/ecc200datamatrix.pyraszECC200DataMatrix.__init__cCs6d|_x*|jD]}t|ƒdkrd|_PqW|j|_dS)Nr‘rr)ZvalidÚvalueÚordÚ validated)r ÚcrrrÚvalidatens   zECC200DataMatrix.validatecCs~t|ƒ}g}|dks4|dkr$|dks4|dkr||dkr||dkrL|j|dƒn.|dkrl|dkrl|j|dƒn|j|dƒnþ|d kr¢|d kr¢|jd ƒ|j|ƒnØ|d kr²|d ksÂ|d krü|dkrü|jdƒ|d krì|d krì|j|d ƒn|j|dƒn~|dk�r*|dk�r*|jdƒ|j|dƒnP|dk�rj|dk�rj|jdƒ|jdƒ||jt|dƒƒ7}ntd||fƒ‚|S)Nr™rr�rúrAr¦r~rÃrr…rzr¿r&r0r‘r”r[rmrErïrrîzCannot encode %s (%s))rÚappendÚ_encode_c40_charÚchrÚ Exception)r ÚcharÚoÚencodedrrrrws2(       z!ECC200DataMatrix._encode_c40_charc Cs2g}x|D]}||j|ƒ7}q Wxt|ƒdr:|jdƒq"Wg}|jdƒxhtdt|ƒdƒD]T}|||d…}|dd|dd|dd}|j|dƒ|j|dƒq\W|jd ƒt|ƒ|jkrÔtd ƒ‚t|ƒ|jk�r.|jd ƒx>t|ƒ|jk�r,d t|ƒdd d}|jd |d ƒqðW|S)NrÛrr§i@r‘rÅrEér z4Too much data to fit into a data matrix of this sizer>rÏrH)rÚlenrÚranger r) r rrrZ codewordsÚiÚchunkÚtotalÚrrrrÚ _encode_c40™s*  $  zECC200DataMatrix._encode_c40cCs||AS)Nr)r Úint1Úint2rrrÚ_gfsum¹szECC200DataMatrix._gfsumcCs0|dks|dkrdStt|t|dSdS)Nrr)ÚALOGVALÚLOGVAL)r r&r'rrrÚ _gfproduct¼szECC200DataMatrix._gfproductcCsŽt|}dg|}xn|D]f}|j||dƒ}xPt|dddƒD]<}|j|||ƒ||<|dkr>|j||d||ƒ||<q>WqW|jƒ|S)z¶ This method is basically verbatim from "huBarcode" which is BSD licensed https://github.com/hudora/huBarcode/blob/master/hubarcode/datamatrix/reedsolomon.py rr‘éÿÿÿÿr,r,)ÚFACTORSr(r r+Úreverse)r ÚdataZnum_code_wordsZ cw_factorsZ code_wordsZ data_wordÚtmpÚjrrrÚ_get_reed_solomon_codeÂs  $z'ECC200DataMatrix._get_reed_solomon_codecCs@|jdƒ}g}x$tddƒD]}|j||?d@ƒqW|jƒ|S)Nrr�r‘)Úpopr rr.)r r/rÚbitsr!rrrÚ_get_next_bitsÔs  zECC200DataMatrix._get_next_bitscCsb|dkr(||j7}|d|jdd7}|dkrP||j7}|d|jdd7}||j||<dS)Nrryr�)r r Ú_matrix)r ÚrowÚcolÚbitrrrÚ _place_bitÜs  zECC200DataMatrix._place_bitcCsÎ|j|ƒ}|j|jdd|dƒ|j|jdd|dƒ|j|jdd|dƒ|jd|jd|dƒ|jd|jd|dƒ|jd|jd|dƒ|jd|jd|dƒ|jd|jd|dƒdS) Nr‘rrErÛryrWrÂrÇ)r5r:r r )r r/r4rrrÚ_place_bit_corner_1çs z$ECC200DataMatrix._place_bit_corner_1cCsÎ|j|ƒ}|j|jdd|dƒ|j|jdd|dƒ|j|jdd|dƒ|jd|jd|dƒ|jd|jd|dƒ|jd|jd|dƒ|jd|jd|dƒ|jd|jd|dƒdS) NrÛrrEr‘ryrWrÂrÇ)r5r:r r )r r/r4rrrÚ_place_bit_corner_2òs z$ECC200DataMatrix._place_bit_corner_2cCsÎ|j|ƒ}|j|jdd|dƒ|j|jdd|dƒ|j|jdd|dƒ|jd|jd|dƒ|jd|jd|dƒ|jd|jd|dƒ|jd|jd|dƒ|jd|jd|dƒdS) NrÛrrEr‘ryrWrÂrÇ)r5r:r r )r r/r4rrrÚ_place_bit_corner_3ýs z$ECC200DataMatrix._place_bit_corner_3cCsÔ|j|ƒ}|j|jdd|dƒ|j|jd|jd|dƒ|jd|jd|dƒ|jd|jd|dƒ|jd|jd|dƒ|jd|jd|dƒ|jd|jd|dƒ|jd|jd|dƒdS) Nr‘rrÛrEryrWrÂrÇ)r5r:r r )r r/r4rrrÚ_place_bit_corner_4s z$ECC200DataMatrix._place_bit_corner_4cCsÊ|j|ƒ}|j|d|d|dƒ|j|d|d|dƒ|j|d|d|dƒ|j|d|d|dƒ|j|d||dƒ|j||d|dƒ|j||d|dƒ|j|||dƒdS) NrErr‘rÛryrWrÂrÇ)r5r:)r r/r7r8r4rrrÚ_place_bit_standards z$ECC200DataMatrix._place_bit_standardcCsø|j}|j}|j||ƒ|_d}d}�xŽ||krB|dkrB|j|ƒn~||dkrj|dkrj|drj|j|ƒnV||dkr–|dkr–|ddkr–|j|ƒn*||dkrÀ|dkrÀ|ddkrÀ|j|ƒxX||krò|dkrò|j||dkrò|j|||ƒ|d8}|d7}|dk�s||krÂPqÂW|d7}|d7}xb|dk�rb||k�rb|j||dk�rb|j|||ƒ|d7}|d8}||k�s†|dk�r,P�q,W|d7}|d7}||kr&||kr&Pq&Wx<|jD]2}x*t d|ƒD]}||dk�rÌd||<�qÌW�q¼W|jS)z² This method is heavily influenced by "huBarcode" which is BSD licensed https://github.com/hudora/huBarcode/blob/master/hubarcode/datamatrix/placement.py ryrrEr�Nr‘rÛ) r r Ú_create_empty_matrixr6r;r<r=r>r?r )r r/ÚrowsÚcolsr7r8r!rrrÚ_create_matrixsN      "( zECC200DataMatrix._create_matrixc Cs¾g}d}d}t|j|jƒ}t|j|jƒ}xŒ||jkr¸xp||jkr¨||}||}||||…} x.tdt| ƒƒD]} | | |||…| | <qtW|j| ƒ|d7}q:Wd}|d7}q.W|S)Nrr‘)Úintr rr rr rr) r ÚmatrixÚregionsÚ col_offsetÚ row_offsetrArBZr_offsetZc_offsetÚregionr!rrrÚ_create_data_regionsYs"     z%ECC200DataMatrix._create_data_regionscCs,g}x"td|ƒD]}|jdg|ƒqW|S)Nr)r r)r r7r8rEr!rrrr@osz%ECC200DataMatrix._create_empty_matrixc Csg}�x|D]ü}|jt|j|jƒt|j|jƒƒ}x>t|ƒD]2\}}x(t|ƒD]\}}|||d|d<qPWq>Wxˆt|ƒD]|\}} |dkr¶xjt| ƒD]\}} |dd| |<q˜Wq~|dt|ƒkræx2t| ƒD]\}} d| |<qÐWq~d| d<|d| d<q~W|j|ƒq W|S)Nr‘rrEr,) r@rDrrrrÚ enumeraterr) r rFÚwrappedrIrEr!rAr1r/r7r8rrrÚ_wrap_data_regions_with_findersus& z0ECC200DataMatrix._wrap_data_regions_with_finderscCs€g}xvtdt|ƒ|jƒD]`}||||j…}d}xD|t|dƒkrvg}x|D]}|||7}qNW|j|ƒ|d7}q4WqW|S)Nrr‘)r rrr)r rFZmergedr!r"r1Z merged_rowr7rrrÚ_merge_data_regions‘s  z$ECC200DataMatrix._merge_data_regionscCsht|dƒr|jS|j|jƒ}||j||jƒ7}|j|ƒ}|j|ƒ}|j|ƒ}|j |ƒ|_|jj ƒ|jS)Nr) Úhasattrrr%rr2r rCrJrMrNr.)r rrEZ data_regionsrLrrrÚencode s       zECC200DataMatrix.encodecGs |j|j|_|j|j|_dS)N)rÚbarWidthZ_heightrÚ_width)r rrrrÚ computeSize°szECC200DataMatrix.computeSizecCsbx\t|jƒD]N\}}xDt|ƒD]8\}}|r|j|j||j|j||j|j|jƒqWq WdS)N)rKrZrectÚxrQÚy)r rUr7rTr/rrrÚdraw´szECC200DataMatrix.drawN)Ú__name__Ú __module__Ú __qualname__Ú__doc__rQrrrr%r(r+r2r5r:r;r<r=r>r?rCrJr@rMrNrPrSrVrrrrrZs0  "       ;rN)r)rrrrr)rrr r r r r ) rrrrrrrrrr) rrrrrrrrr r!r") r#r$r%r&rr'r(r)r!r*r+r,)r-r!r.r/r0r1r2r3rr4r5r6r7r)r7r8r+rr9r:r;rr<r)r=r>r?r r@rrAr9)rr8rBr1rCrDrrEr9rFr$rGrHrIrJrKrLrMr6rN)rOrPrQrr=rrRrSrTrUrVrrTrSrWrNr rXrrYrZr[r\r])r^r_r`r!rDr[rarMrbrcrdrer:rfrgrhrirrr)rjrkr"rcrCrrlr)$rrmr,rnrorprqrYrrr"rsrtrurVrvrwrxr5rEryrrzr{r|r0r3r}r~rrZrr€r@r�r‚rƒ)*r„r]r|r…r†r‡rˆr$r‰rŠr‹rErrŒr,r�rr0r+r1rŽrŠr�rr�rhrSr‘rHr�r’r{rr“r”r\r•r–r—rWr1rW)0rr˜rNrr[r™ršrˆr›rŒr›r_rr9rœr�ržrŸr r¡r¢rrbrArdrr£rQr"r+r;rr6r rKr~rRr�r¤r¡rFrr”r)r rHr@r†)8rr1rr›rrirur¥r+r¦rrdr§r.r¨r©r•rªr«rr‡r¬r˜r’rr­rnr®ršr¯r¦r°r r›rˆr•r±ršrr²r³r´r|rrmrµr‰rrTr`r¯r¶rCrer·r¸)>r,rlr¹r\r rºrr¢r“r9r±r»r·rJr¼rbrrƒr r§rr½rUrPrprŸrr¾rr¿rÀrDrÁr~r¡rÂrLrnrÃr½r�rÄrÅror9rirÆr…rRrdryr¶r°rÇr?rrÈrXrÉrÊrËrÌ)DrurrÍrÎrVrÏrªrÐrÎrzr¡rBrÑr«rÒrmr)rkrrÓr®rUr%r–rr‹rlr)rrFrÔrÕr;rÖr$rr“rŽrtr€rur°r[rºr_rkrr×rYr<rrOrNr€rØr°r^r»r¿r’rJr$r˜r½r[rarKr6éÿÿÿ(r[rr‘r rEr@r<rerÛr‡r—rŒr,r`r’rºryr8rrÀrÔrŸr rrÜrÝr~rrÞr¢r^r®rWrßr¼r[rÅràr}rarrár¶rârãr�r¦rqrBr6rjrÓr4rärrØrÐr´r3r$rårær©r&rÂrçrurèrUrËr!rZr#r«rrHrrrér]rxrÉrIrêrJrërìrGrkrfr1rírîr™rÆrsrrÍr¤rÌr(r‚rYrPr¸rQr+rªr€r_r\r²r�r¡rÙrµr"rïrÑrr)rŽr¬r½rÕrr rRrÇrÁr„rXr¾rrrnr0rðrArrñr�rrrtr'ròrbr˜rÈrOr r×ršrCrÖrˆrŠrLrrór§rôr�r%rvr»rNr¯r=rrrrmr‰r­r;r|r.rõr/rÄrör:r÷r…r7rzrÒr³r rørdrùrúrMrr9r“rr2r·r¹rKrûrwr¨ržrVrÊr*rÎrcr{r?rFrürýrƒr°rSrÃr›r¥r£rþr”rÿr5rr rrirhrÏr>r†rTrrgrr�rprrDr±r-r¿r rœrorrÚrlr‹r–r•(r‘rEryr�r r™r¿rïr4rArÓr”rr�rÀrrxr_rÔr©rVrßrTrLr’rJr÷r2rr¸r rZrlr6rÎr*rÒr­r1r5r«rûr r´rýrOrér¥rjrÞrrurÏrÇrÙrrÐrƒrÈrœr‰r8rêrürùr]rr}r§r@r×rÜr¯r¤r&rwrúror#rKr³r{r“rr0rPr‚rqrŠrºr|r½rìr/r)rãrõrrÝrerŸrårŒrrár-rSr'rsrrârprèrªr†r‡rçrñr¦rþrr°rHr¨r£r`rÉrNršr®rgrr¡rËrˆr~rQrRr„rÑr€r\r+r¬r»r�rMrór—rCrr^rÖrr¢rÕrrærÆr¶r�r>rÊr?r9rørdrhr,r±ržr7rr!rr¹rmr ròr·rÃrrrÌrYrDr(rØr�r¼rërarôr–rIr%rirfrrkrr‹rBrUrŽrärðrÁrràrGrrîr r"r rrörµr rzr;r˜rbrírÿrWrÄrÚrÅrvrFr=rnr$r…rrXrr¾rcrÛrÂrrrr[r.rÍr3r›r<r²rtr:r•r‘)Ú__all__r-r*r)Z!reportlab.graphics.barcode.commonrrrrrrÚsœ