Rocksolid Light

OCTADE

mail  files  register  groups  login

Message-ID:  


USENET / sci.crypt / Re: base26 Encoder/Decoder


Pages:12
base26 Encoder/Decoder

<uoekm1$3rhsc$1@i2pn2.org>

  copy mid

https://news.octade.net/USENET/article-flat.php?id=153&group=sci.crypt#153

  copy link   Newsgroups: sci.crypt
Path: i2pn2.org!.POSTED!not-for-mail
From: stefan@mailchuck.com (Stefan Claas)
Newsgroups: sci.crypt
Subject: base26 Encoder/Decoder
Date: Fri, 19 Jan 2024 21:05:20 +0100
Organization: i2pn2 (i2pn.org)
Message-ID: <uoekm1$3rhsc$1@i2pn2.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Injection-Date: Fri, 19 Jan 2024 20:05:21 -0000 (UTC)
Injection-Info: i2pn2.org;
logging-data="4048780"; mail-complaints-to="usenet@i2pn2.org";
posting-account="uWi4uQdALkj7ETOfPbhNXfz0+Ra/gM5z6/Fa40dJi9U";
X-age: age1yubikey1qdf6fmuk6qqzlzhz69yw5y6eqzhxdkvk3qdcnz77hf8qtqrwpptm5tfyp06
X-Ed25519: 43e6681c5cf3cdc2f9ccf975f8a01b18c5e84bf0ba00605faba9cc0f8757a117
X-Spam-Checker-Version: SpamAssassin 4.0.0
 by: Stefan Claas - Fri, 19 Jan 2024 20:05 UTC

Hi all,

if you like the Diana Cryptosystem and want to
use it with a foreign language, on an offline
Computer, you may find my base26 Encoder/Decoder
useful.

https://github.com/stefanclaas/base26

Regards
Stefan
--
----Ed25519 Signature----
473619917a3d41e3151526e8cec73798239329fddcfb6c6c45298dde70497d1d
d3a4ab324a690e10856c4d52024daa849e100f0a1604dbc8dd46f69f169db305

Re: base26 Encoder/Decoder

<ut46u4$22l08$1@i2pn2.org>

  copy mid

https://news.octade.net/USENET/article-flat.php?id=238&group=sci.crypt#238

  copy link   Newsgroups: sci.crypt
Path: i2pn2.org!.POSTED!not-for-mail
From: pollux@tilde.club (Stefan Claas)
Newsgroups: sci.crypt
Subject: Re: base26 Encoder/Decoder
Date: Sat, 16 Mar 2024 14:30:45 +0100
Organization: i2pn2 (i2pn.org)
Message-ID: <ut46u4$22l08$1@i2pn2.org>
References: <uoekm1$3rhsc$1@i2pn2.org>
<g74JN.751237$mUo.609280@fx08.ams4>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Injection-Date: Sat, 16 Mar 2024 13:30:45 -0000 (UTC)
Injection-Info: i2pn2.org;
logging-data="2184200"; mail-complaints-to="usenet@i2pn2.org";
posting-account="uWi4uQdALkj7ETOfPbhNXfz0+Ra/gM5z6/Fa40dJi9U";
Gemini: tilde.club/~pollux/
X-Spam-Checker-Version: SpamAssassin 4.0.0
 by: Stefan Claas - Sat, 16 Mar 2024 13:30 UTC

Cri-Cri wrote:

> On Fri, 19 Jan 2024 21:05:20 +0100, Stefan Claas wrote:
>
> > if you like the Diana Cryptosystem and want to use it with a foreign
> > language, on an offline Computer, you may find my base26
> > Encoder/Decoder useful.
>
> Found a Python version:
> https://pypi.org/project/base26/#files
>
> Example:
>
> >>> import base26
> >>> base26.encode(b'test')
> 'EWJILIG'
> >>> base26.decode('EWJILIG')
> b'test'
>

Interesting, but the output differs from mine.

$ echo -n 'test' | base26
MEXDLEME

I guess there is no defined standard (RFC) for
base26, maybe I am wrong.

Regards
Stefan
--
----Ed25519 Signature----
6c34fa71ca251de62392a9753b6f7481817f7c89dcca433cd9f6e5a9211d233a
5a08cbd84d9a99b018f2705416ebac3dde33bf38bd35ca106c8a71cee9e45e0e

Re: base26 Encoder/Decoder

<ut4ugf$23pnb$1@i2pn2.org>

  copy mid

https://news.octade.net/USENET/article-flat.php?id=239&group=sci.crypt#239

  copy link   Newsgroups: sci.crypt
Path: i2pn2.org!.POSTED!not-for-mail
From: pollux@tilde.club (Stefan Claas)
Newsgroups: sci.crypt
Subject: Re: base26 Encoder/Decoder
Date: Sat, 16 Mar 2024 21:13:03 +0100
Organization: Chiffrepunks
Message-ID: <ut4ugf$23pnb$1@i2pn2.org>
References: <uoekm1$3rhsc$1@i2pn2.org>
<g74JN.751237$mUo.609280@fx08.ams4>
<ut46u4$22l08$1@i2pn2.org>
<QHmJN.911191$UNd9.751352@fx07.ams4>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Injection-Date: Sat, 16 Mar 2024 20:13:03 -0000 (UTC)
Injection-Info: i2pn2.org;
logging-data="2221803"; mail-complaints-to="usenet@i2pn2.org";
posting-account="uWi4uQdALkj7ETOfPbhNXfz0+Ra/gM5z6/Fa40dJi9U";
X-Spam-Checker-Version: SpamAssassin 4.0.0
Gemini: tilde.club/~pollux/
 by: Stefan Claas - Sat, 16 Mar 2024 20:13 UTC

Cri-Cri wrote:

> On Sat, 16 Mar 2024 14:30:45 +0100, Stefan Claas wrote:
>
> > $ echo -n 'test' | base26 MEXDLEME
> >
> > I guess there is no defined standard (RFC) for base26, maybe I am
> > wrong.
>
> There ought to be. But, of course, maybe none of the math heads
> thinking these things through have returned with the verdict from
> their round table meeting yet? ;)
>
> Not sure what either of you guys used, but this page:
> https://www.dcode.fr/base-26-cipher
> ...claims there are two ways to start: A=0 or A=1
>
> Maybe that?
>
> He has a "machine" on his site you can compare things with. But it
> returns the result in numeric Base26, not as encoded letters:
>
> this here is a test
> 338902 126182 226 0 337135

I saw that french page and ys it uses digits as output, which I don not
want, because of using my output (from Unicode chars) for the Diana
Cryptosystem.
> Also, Python starts its arrays/lists with 0 for the first item where
> some other languages use 1. I have no idea what "Go" (was it?) uses.

Yes, it is Go Code and starts at 0.
> If I get a little free time I'll probably check the Python module
> against that page (linked above). It was fairly short.
>
>
> I've been fiddling with the HC-9 cipher that came out of that handy
> little machine the Swedish military used up until around 1995-ish.
> I've got some info about that coding from that site, it is very
> informative. So I'm currently all "ciphered out" and I want to spend
> some time with some other things for a while. :)

HC-9, must admit, never heart of it but sounds interesting. I have to
read about it.

--
Stefan

Re: base26 Encoder/Decoder

<v0dtc5$276id$1@i2pn2.org>

  copy mid

https://news.octade.net/USENET/article-flat.php?id=250&group=sci.crypt#250

  copy link   Newsgroups: sci.crypt
Path: i2pn2.org!.POSTED!not-for-mail
From: pollux@tilde.club (Stefan Claas)
Newsgroups: sci.crypt
Subject: Re: base26 Encoder/Decoder
Date: Thu, 25 Apr 2024 17:37:40 +0200
Organization: i2pn2 (i2pn.org)
Message-ID: <v0dtc5$276id$1@i2pn2.org>
References: <uoekm1$3rhsc$1@i2pn2.org>
<g74JN.751237$mUo.609280@fx08.ams4>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Injection-Date: Thu, 25 Apr 2024 15:37:41 -0000 (UTC)
Injection-Info: i2pn2.org;
logging-data="2333261"; mail-complaints-to="usenet@i2pn2.org";
posting-account="uWi4uQdALkj7ETOfPbhNXfz0+Ra/gM5z6/Fa40dJi9U";
X-Spam-Checker-Version: SpamAssassin 4.0.0
Finger: tilde.club/~pollux/
 by: Stefan Claas - Thu, 25 Apr 2024 15:37 UTC

Cri-Cri wrote:

> On Fri, 19 Jan 2024 21:05:20 +0100, Stefan Claas wrote:
>
> > if you like the Diana Cryptosystem and want to use it with a foreign
> > language, on an offline Computer, you may find my base26 Encoder/Decoder
> > useful.
>
> Found a Python version:
> https://pypi.org/project/base26/#files
>
> Example:
>
> >>> import base26
> >>> base26.encode(b'test')
> 'EWJILIG'
> >>> base26.decode('EWJILIG')
> b'test'
>

I now have a Rust Version, derived from the Python library and
it encodes 'test' with the same result, but when encoding with
Rust, the Python code can not decode properly, while decoding
from Python with Rust works. Oh, well ... :-(
(Wish I was a Programmer!)

--
Regards
Stefan

Re: base26 Encoder/Decoder

<v0dup1$276id$2@i2pn2.org>

  copy mid

https://news.octade.net/USENET/article-flat.php?id=251&group=sci.crypt#251

  copy link   Newsgroups: sci.crypt
Path: i2pn2.org!.POSTED!not-for-mail
From: pollux@tilde.club (Stefan Claas)
Newsgroups: sci.crypt
Subject: Re: base26 Encoder/Decoder
Date: Thu, 25 Apr 2024 18:01:36 +0200
Organization: i2pn2 (i2pn.org)
Message-ID: <v0dup1$276id$2@i2pn2.org>
References: <uoekm1$3rhsc$1@i2pn2.org>
<g74JN.751237$mUo.609280@fx08.ams4>
<v0dtc5$276id$1@i2pn2.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Injection-Date: Thu, 25 Apr 2024 16:01:37 -0000 (UTC)
Injection-Info: i2pn2.org;
logging-data="2333261"; mail-complaints-to="usenet@i2pn2.org";
posting-account="uWi4uQdALkj7ETOfPbhNXfz0+Ra/gM5z6/Fa40dJi9U";
X-Spam-Checker-Version: SpamAssassin 4.0.0
Finger: tilde.club/~pollux/
 by: Stefan Claas - Thu, 25 Apr 2024 16:01 UTC

Stefan Claas wrote:

> Cri-Cri wrote:
>
> > On Fri, 19 Jan 2024 21:05:20 +0100, Stefan Claas wrote:
> >
> > > if you like the Diana Cryptosystem and want to use it with a foreign
> > > language, on an offline Computer, you may find my base26 Encoder/Decoder
> > > useful.
> >
> > Found a Python version:
> > https://pypi.org/project/base26/#files
> >
> > Example:
> >
> > >>> import base26
> > >>> base26.encode(b'test')
> > 'EWJILIG'
> > >>> base26.decode('EWJILIG')
> > b'test'
> >
>
> I now have a Rust Version, derived from the Python library and
> it encodes 'test' with the same result, but when encoding with
> Rust, the Python code can not decode properly, while decoding
> from Python with Rust works. Oh, well ... :-(
> (Wish I was a Programmer!)

Ok, I figured out that my Python3 code example is bad. So the
Rust Version works the same as the library. :-)

$ python3
Python 3.9.2 (default, Feb 28 2021, 17:03:44)
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import base26
>>> base26.encode(b'The quick brown fox jumps over the lazy dog.')
'AAZCESYRPSBENRDWLUQLYETYZZJCPAHHAVEIPLIONRSBHYUEHANMAUZZQCSOGOXJEBILDQVWRGD'
>>>
$ echo -n 'AAZCESYRPSBENRDWLUQLYETYZZJCPAHHAVEIPLIONRSBHYUEHANMAUZZQCSOGOXJEBILDQVWRGD' | b26 -d
The quick brown fox jumps over the lazy dog.
$ echo -n 'Hello sci.crypt' | b26
UQZGYLNMDHTUDTGJYKJRQGDKOC

$ python3
Python 3.9.2 (default, Feb 28 2021, 17:03:44)
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import base26
>>> base26.decode('UQZGYLNMDHTUDTGJYKJRQGDKOC')
b'Hello sci.crypt'
>>>

Ok. everything is fine. :-)

--
Regards
Stefan

Re: base26 Encoder/Decoder

<v0e01k$27aev$1@i2pn2.org>

  copy mid

https://news.octade.net/USENET/article-flat.php?id=252&group=sci.crypt#252

  copy link   Newsgroups: sci.crypt
Path: i2pn2.org!.POSTED!not-for-mail
From: pollux@tilde.club (Stefan Claas)
Newsgroups: sci.crypt
Subject: Re: base26 Encoder/Decoder
Date: Thu, 25 Apr 2024 18:23:15 +0200
Organization: i2pn2 (i2pn.org)
Message-ID: <v0e01k$27aev$1@i2pn2.org>
References: <uoekm1$3rhsc$1@i2pn2.org>
<g74JN.751237$mUo.609280@fx08.ams4>
<v0dtc5$276id$1@i2pn2.org>
<v0dup1$276id$2@i2pn2.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Injection-Date: Thu, 25 Apr 2024 16:23:16 -0000 (UTC)
Injection-Info: i2pn2.org;
logging-data="2337247"; mail-complaints-to="usenet@i2pn2.org";
posting-account="uWi4uQdALkj7ETOfPbhNXfz0+Ra/gM5z6/Fa40dJi9U";
Finger: tilde.club/~pollux/
X-Spam-Checker-Version: SpamAssassin 4.0.0
 by: Stefan Claas - Thu, 25 Apr 2024 16:23 UTC

Stefan Claas wrote:

[...]

> Ok. everything is fine. :-)

Example Unicode text encoded, with -l Parameter for line-length:

SASHXTRHYGJXHJBMKMWLUPZPTINOBPKNFSPZNFBWWXLWUNFRSGZHPACWHNFRFTGR
PRSLUVEMZDVQNMVIQPSEVCTOULWNLUQQPWABOAWITQCANZDPJFCOHIYYWGXIHYAJ
YUTARJTNKTIUHXZKPOYVLAGCYADOPLMURTBEIXITHYGFGLZKHYKXAOUPPBNVOUKZ
QVPRQZQJBUJIGCECDRBCPAFBKRUNNXEKDWVAMIYFBCTWJXKERSEVXJISBCXXQBTA
BCDZAHZQKWKGZDKDWRZAFBCSONEJWUNJJBOHHYOWAVRJMQBADSJYSPUVUSSSWYNN
MNXQDZIEMPOPJHQEMPPGKUOHSRCJTUVPFQVVBQLUHYIDHDAKCOVSDCLFJZDSYYRQ
DPMPIWYDOWSGCPCYOAWNWEBGAIQXCRJTLEKGWILWYQYYSMFDJMOWMTBYPYNWLNZO
VETGXKERDLPZIDWIUYFXBWSMMYPYZDMSKABBGMPZVIRUVBZXOBPLJWHMVWRBCULR
GNCRPNMLBNXLLIXYYETJQHADJGHJAONAIJFBKEEVPWHHZDPJRDHGFTEREBTZMLHA
DRMFUSBKQHHPDEGWMBGNYVJLWJOUPKMYNEWEKTGVOBBLQMDXSTEPGUYRYERUZPAU
XZLNUKDKTGZWPUFWECIBFHKAZMXXFPTKFEVXDVUMKOMAUPCQOGMWLWPDDDIPLUOG
ZMLSBKKHLGXVPQUGJRJDHIQRQTHTWOPENTMYSGDCNSCZNTEEXQMFRBZRFVMPZOOD
HENMSIQCCBYJBJVHVOZQKHQJLIEDQQYAYPMGDYWTRKDYNEAVOFQZZEQECSMGHHVJ
HEXYHTNLVLYCESEIOGJZEYAGOVLJZPLNVQQHBHREDBODCXXUTQVOQVEOTLMZIXWK
VWHAAWQPPZVZWGPPFUQBVRFSTZVNXBQPBWVVSHEPULKWAKVSRAGMNCXUUXRBFWRH
GLBDOWMVUHKDSVCNPYIDTMBKVYTUXGZKOGEVNWOWPPGLMEHLFHYFIHAYPZHBSNFZ
KHSXTUIGTUNZFNSIMEDHIQSIVIWGVLAYNQGWGJXYKOQINBIXTYPTWATXJXBFEFFM
IWXFCAVEZQOAUSMFQUARNQLQDLQWUDJRNZLOMXNYGROPTDKBPCMVSHVLDLZRWOEP
FIOVEAIECANRPCGANTBXHZJTUUYQMVDOAYHXOZQDWGJWOQBWMWOQLRXVOFKTGDZJ
NWVJQNXYCRGZUXCBXONDUDGEXTYLDKHBHQUOYCARKUKGGXTMLPOGWAYODMSDGQML
YIYKBBODTFLGPSXANRCNMGAJJOKJQHXXANVBQDQNJRLTDXXPMBSFWHSAOBBZUIWX
IIKMDWULCVWIHMKIOEKXEPIBBTMXJDWSUQQKCCZWGXMQYLSHLOEJSWBWZHICJBFK
HDJXCSPCPMQFSMWPREFRKTARQTWDZCQUOTRMBLVLMAAIMJOPVQOIFWUDIFJZJWVQ
UNVAQVXHOTPODCDVXONKORIGKXPNOVONSTMOIJIKLLFJSPYSTVCHSZIZJPFWMIPN
XBESYPQVQESMWQWLOKOVJGGVEQGDAKYYCHFCXUJULVDCFHGNKIPEHBSTTIZDAPCV
JPNVCJZENDAKGMJPYVMAVCTSYNQBIRABXFTWXOCNWXRSATOBYZVLHQSOQHAVKORI
FMNOXHVAFXAKODVZTEEQNUDDGHDYJKSYTCBGTVLFLFMGETHTHFVCPILSLCPYTVJM
EVOQRSSQKJRTEPIAAWAABLKDKRJACYNPDIWEBIQDTPZQZBXVNBTLEDWEPOVNMMPS
SSYEJHBWRZNRNEMCPHEWHNQYMUAZINWIPIYMJBLLECXZGOZEYFWDMNLLCCNKHTEE
FRPAINYFNSXQZRECOJVYEKTNQSXMNCLZQZRXHUJIIDCFSYBXPBVYREIITSZDIDKU
WDJJDTWHALFQSEYFBKHQUVWFJQCWXPPISTDQWJTCVQCSEJFLOAZQOMZFRMPDXYTD
LGULHWMQKCGZAUNJCQNXGYEWBQRWDVUFDKTJDGZMWOHICRDQDRKFZQBXXYZGHEIW
FJWOSIKWQENAIRLYGBLMRYVLPEYUKQIWWFYZZWWBVRFMHQUYRVAEBBDWFEEULEJL
FXXVQYEKRSABDWGMQZJTVEDNTDROUUMYRIJMTGBPLUDJHZUBFGWNCQAITEUFMMFR
LZNXFWZSZAYCIYHDEOYBYYLAVPILBYMFNVIINXMNYJHXOTCEXSVKPJGVYFYAHTZK
LVOKIURIJLBDPHLQXAJHLLUEZQUMJODQZPAGWXILCDXLFNXQNTQPTODTKDETHTZQ
NKXGYLAULOSKYPVKHWUQMTHXSXIWABAIXCLXCBCCLJSCHRDUVNQWRSHBOUOWHTSY
VTWHXXGSKHMPRBIVZMPQNPACAIPKQSDOEALMOBPKNJBYAHHETMOESTYVHLKGGXQA
HYNLVKFMIDPLADZRWHPBCGENSMCCNXNEKBFOHFGBDOUWKIZJDSFNFLVXIHMFKHGZ
NJCLZGHUJVQXFTNPELOYXGCLOHZBXKFYQWOAVSAXPCDCAEBUHVMVIJGDYTFRPHFT
DSHZEMMKNEZWICNIZIVCRLVVQNARGTTVFFTZKLAGOOTGQXIMHQVBVZQVBNMUTVPJ
KZUHMTPMSZGXZWMCFPUMGPOKWFFWLYIWISZVWLKTNVGCTRYDLORRWFBGUPDOOEWC
TQDLFBJUPTXBXXUMDEDLVHPIWCZUCFTLSJNMZFKYNWUFYATLNFXLLIPJYYJWIXDP
DUJJZSYFDYRWIJBAGYOHFQHZTOSOGEVQVQGNKSTPGJFMBXKMVGTXEDXTYUVKYGEG
IEODZKZNLFRZUIDPVKUBJHCAJIOTGKWEYCLVWHHAIXUXFNCBITNOUHOYRQTDXGEK
YLOSNXCONYOHFFVQELKPVZKJQDJDHYGSPMNZUTVKUCRDMHPYIQPWQAHRNOQPMLHO
YXETIBEMXRCYZFWJTANYFWPBEHSWPEMXWMITLAVVCGIXHNTNJBWWGTVBNSUGUBHH
YSBTUQCNLQCGKNBBDJDGZKIZVQMIFHJECSPIHMRZLDHFGBZTKFIAJRGJZXSSYFUI
SQXWBIYDGQBBOBJEIIESDGVEKSPCYHESPOZAOVGJBZLOEJQBNKDNAJLZRQCBZVXI
CCWNBGRILOWQORJZSBZXPKMJFCGKIZOGIDSKSNXLZZLWGTQZUTYAYZFOZTINYDCR
VMJCTAPGQGADVXENIUIDRDHBKXLTVXFHIRTUKPHCVRCVLYLVKFKHEFTWOKQBQWHT
PORLUUPSRSKJVOPIENWXQLOLTTPCOYQDRSKUOYQTQGPLHMQCQWOMKSIGEIFCOKQV
ZJJSZKKVYGISSOENHEAAGZUFSOMPSBJRNVMQXUKPNGBYEKSCWNKHFOTQWMNCNIQP
GIRLGCXHCCXXKBNGZGEAJBHPEJYIOMGAASAWVSONXEWBTFJUVFKOZAFNLRYHBYYU
LOIJHNCTUZCETVQZVIBQVVXYHVKOCTBWJZZNHZWWCAHGORWIADAPOCGBFTQJOBJH
JXYTGZZRFGPRMDYPPVPNEVGJNLAJWWRXVLYIRQPFWTEDJNDCBEXTNTYRKROOYFHG
DTLXWZGPJBQNRULVHTTRIGYYTVZQFGZCKKYVKHOEKDNNLXZWPCDOFIQJBEUIMNFK
YZDSRCFSGOPOGDPXEHSTTZMAIIAOYWQUERGBPFTWGVDJOWJDLVRLEZKJNHJAKFQH
YLYGOKTIGGJIZVTAREWBOTAJZCTGHEDTLYXEBOYMVEQWVBIBUIHQPVBEELNCRWZS
FFTGHYYFBVQAZQUUGGZUKYMVWSZGVFKSNNBRSUKVRXCZTFNJHDQZHMLEOUYEBASX
CRNGLQFZLFGOLXQQIMNEMBOQVZPUCSSTMHTLSJGZESVVDQVPSGLTQIMVYDAAAUJU
IYDLPRTORMVKOPTXYZOFLUIDHVHYPZMKORMTOEMKPEIRZDDPCBBWKVWCEVSBNQNY
ZRTDJBHHCWYZLZJKALSWJIKCBZNGGEWEDZFYFOOJIDOLHERCCBYQSDHRGHUJMPDU
WXTWTUJTBLYCWUJGEQKDDOWUGDSIJBMNDEBRJZIIMDAUCXAWAUZPWNOLCJOEDUGD
XMLOOWHNFLPLWUCUYKITCDKCQBNIPKQEJTMKFQHNLTMVTBUWQMQHILSZWUNSMJZM
MFYRADAIUHNUIYZHYIDPMUERFZHPHTLTSQXHGNQFQGNGTEDLMDOKSVYCJPZGOECL
XFNEYFFJCLVVGMLQWCFTDVUTSTXWLAJQGVWSWQKTZAPZYFQVZTCNBACGIQWQHZUR
AJVQXTSQMJXUOGIZHOSBRLLOQGECLOFXRAQBEXIXZACICCRUICJGGGHSKWMVCICC
SIAALYFUWSFJLPBXNUUMJKLQVAHUZVJRAXTHWCKWUUAAZXUTLREKYSBUSKZEWWLW
XBQZADWQMQXCIXPGURNEIQOILRTRXKXIAEPYHNBBPLNVCAMUEYDOGSGQRYSQWKHE
EGIAPNIOPCBCMHSLTGGDZHOQMJDAQEQTZZRSBQUAEHTTSOHLZYABCTEVSGDCBIME
GIJZDFCOAHANMHRICCSLJCWRCYMEARRNCNWDZDTMUFSDPXLZPLFTYLSYNSEWAVYL
BULUJAFGONNXCVWTBYKUYSNAQFUQKQMDKQMGUOCIDPDEMUHILAXKYNHJAGBWGTGN
AHYTYXGQCVCXNVJWHVMYRPXCTSAAELVDNODZCSJDIXDGGYYVZXIFMSWRAWPXKFQL
TDHJVFFTQLPMNHJUQHUDKWDTIPMHWPCEWPMTIYPTWUMBFNPWLCAZVJPFCOYJTWVJ
GIMZHZCGKIRRFRBUDTLOVSKWNYIQCJQOXZAMCSZXRAXXPFCIQFZXVFQBIQQTDSWG
CWHOAMLGSSEIAZYAAVRMVENAEUXKYOTDQWFHWDTTYCBIFICYMGCUUDJFQCHXLBDC
NBSNRLEALQCPLYYEEDZCLPMXUMQUCIVMCEQLLSCKTZQWYLWLGLASOXNGJAQRJNDN
XLFRQLFPIPTPWPVVNWOIDKREUVYQKVKPRGDZFIELPXWFVVFYKPSYJVBDQVPWLJNU
RYEEAOYMSWKGMZTSGWTCNYVLHYYRIIGRQQMRCMSHQEDMBXDFAMQIYPYNWJQPDJIV
QWAPBAWWEKDESGRYYVWPWQNBSSXYRXQXZOFNJZOZHJRZTYBOSGKWIOLPLQHUHUHN
CZPELYYKFGPDARGEEOKCLSYDPGYYMHHMWCDVDJOVVUCHGFEMQZQGEQSCQFUUZYTM
TXCEPOKPGOYZCHIPZLLZXVOOYPNZIBSVZSBKGVTKZYHSVVEANTLFEWFCBMHOXHPU
QTUGOPLVLZUXKADBSGHLGBBSKDBOCMJQEGIYEPXUJTOBSFGQDKGUPACFTWTKZCJO
QEATJACWPPORKWAYVLJUZYZBDGFXJWFSBOSYKCJGALDHJCRBGSVWRNEPFMWWBJPB
OTSTXYPWDUEXJILYYCGQJGWGTZNQKZCPHJRCAHRCGWKOABOFHKDZKIISXUOSQDER
ZPRJJBFIBNBWXVVMMKATBPTBREZEEFUITGVYRAEWFNZZZMIWEMKBMFOKACUPGVLX
UCDAEAATYHRZYJRNQQCZNTPUITSDNBVSBTHBYJLAJTEELEVMYOOZDOYLLYFAYLRN
CONLYFNCKYFUITTMFCTCIXBWJGDBBBSQRRLSEHDYGSKDHJATXAKUWTNMXXUZEETA
RFLUIJUNXLGGRUNVDAOBHFUUUZLBLSAWMSRDFHTEYARPDRJBWROICWIVSSVYEWMV
FSMDFNIEIDLYPIODNVERIMLGBGMZDLEHIXIOASDSWYTSHOKDVIMXUGVXIKUUTBHT
RFLIYTYCJABEQOXHSANZUPNRQMXZMTFJHRUNGJXSCVTFYEYOLKAUUQGLBGXATNNJ
WEBNWOYFMILGZGZJYHKBTGNIRPYWPTJGTREZNBFIJZOAKZXEAALEQKDWIWGTQSRV
XWNPCQWMCLYFFFRRFDQWPZRKFJPYNKHOPTNJQUQONTJYEKYIOARHMXHQYIBDBOLE
AQBSLIYEECMSUSPZUIVXGCBKTCTQZYRCXBEAKASPMQIJDRJGEAEWTJPAJRCUOFJS
GHIIXWWMFZAQBWRQLDCCDUOQAGQETOSTEYCUFLWNOKZYRZOPMLJKJRQSNVHPOMNW
MEVEVSBDBPHYEHUSYXBLDPAKAJZCBLIXACHXALEJVGNMXITYXGELKZPIBNCAHPIH
CWVWPIFVWDNQWXXZPILOYNFMIGLEFOHVXIKLPHMKJYQDQNTABAAILIPVNAFVODQJ
CWOGJMSUKISNOVFURAYRWPYONKWYBMYYWRUEWNNHASMXWQBWGCACIXSBYGUKIRDC
RHCNRTHHQMSZREAIFNWQRQBXRHBYYVUVPVFPRJOJFVURJJFJIQCEKVRIVOKUHJMK
DIYPXPXIYQYEDOLAEBMSSMMUUBYVSUUQYXOMWMXOJHTSURLMRXDYZUQOTYHMBEAU
MFGSNWVPRDCTIHFCOZDYRSJYVBAGIPCSBOEAYSUIIALILUHGSPSVJFMSKZVOIQCZ
DTQCDEHZHFETEODYWGMGYXNFNLBQFBJOVLMXQDWWGTUYURQKTRVMHXNMAJWSDZFC
AAAOSIKWBOHRVGUUDNCCVBEIXJMOLWSYYNDGLIGYPMIULVTFFRYJESGLUBKJGNBI
BYCOBSBIEWYWZDXGPJLCWNKOCPTJHCIYWNMVVBCXFUNVIWMZIQYLSYMYBKRHIRYN
FPJIVAJRLKLJYEGIWJXDKWKFUSOLTXTVKECVDJZFSDFRGULRKZCWCYFGFUREHEOJ
HJKECPYAHEBFIVSVRHNPOVNARVIOPRHNBEUOUXQNZNPJPUXHTHRQRVJLLDHVRFKK
UVWPWDIQFVTXACHMSNAWBIBINRVUTHDIHXWDNAMAFFCTLTJSYICZTHDGYOXCEMVA
EQXOXMNMJRROSZBJXQKDFPWRGNKWSIDCOOSJEONEPNYCDEGDAXDNZMYOIVLRDPIF
BCLVHPMBIHLPGSQJIMMDFVFVEAHJUMTLOUPUUYMNULVLGMVCOBODSUNLUVAKERUO
LFQSOJZXSDAFGYWCEFJRUCYHKIJAMFKAPAFTUSLZBMQWCDLWBLYPRUGVHEVMIWWE
CHOTRRUDSJCBRCUIQQURZRDFXXKLTXSEEEEKBQNJQWUIVXQMGBTBZZGZIBVZWQIN
BDVQSFMVLQIVGAJGMVWABWGNRYAGPDSXLBUMYZWWNGNLXZTELBEUMSXUDSDJYSCZ
AKCOBZYYZJVBTEGDCKLBNGSBAZRRCHCBCNHBMWPZFMQAQWLJSPEQBBDMJRDLSSCT
XCQUDLLZRSCDWSXNDWPYDFIKOGYUXEVPNIPNRSCWGFUHPQAIZOVHVRMNYMNLHIWG
CFNZIOYJFQZALVAONBRTZHHEYAYXZBPWVWVDRTGQOJOJGXMSYBRGMBJLLDPKNLSF
DEMBGUQBJFISZOGJTTNDSHNAFWEGZNPTQQWOKHBIWVRSLURLLPADCDTDHWAOQHCF
TSKXLXIADJFVEWIYQQLJXCRVXNFZBIBELGEOFHUGYASASCEMFJLDPGNSYIWDMPOG
DIJJUYQVRBNFBAUCHXMVYWXLNAYBPNTGSDQEQYAYSWRFAELPGMSIXJVOMPMGFURK
NZWOWXJIWIYFUUJMGLVYLJJMCIVFOZNOUPPZXDVYOMPXAMGXGFSBXIAZKKLARFVI
BZFZDFZUXCQOQHKGIJBVRMJASQDALHMWBMGEGTUKCSNRGPMOQNZMNERWPKUMAZXO
PWSRZHIWXKOZQZHIZMLPUBRADZDIMRKONPWICQKOTWXWLNCPZACJBYXCWZOSUWRD
BUMTFVFIPBPUXQDKCERUVVXKWHXKZEYPPCCFFIXVBZHSHYMMNINVMAHSZXWUSQIZ
FVUTICVVLIOOSIBUSMRZTREHGGGXVCJEZASDVZNVWJTQLIXOCBCRTDMXDFHTXAHJ
KLZQICDFGTRUJYDFLFGPIMZLMFBYVCAZQKGNIXFBTHSFMXNFPHGKTZNNSQCMPJZR
NKHIYQIRFDPGXNVAADSKBHQIXHMIMPQIJEILWTUJMFIQDGEHPNJALVZJISWMORFU
FOMEWPWYSWCQYAYMNGEPWWXPHNCMRCPRXRBTCYIQDQAVFXNUQFSXKXGJXQOEALAJ
DJKIKUFBLDFBLRANTJVIKLNQJVVXVBSPVKXXWZZSJNRKHUMFIDJFJHUAIITJEQKI
KGGNEXWUEFPMBIFYTQSJRWQOFGDRSDXVXVOPTQWSJDLNCKXSUKNANXTHRCTIHSRF
TZDPNVRCNTFVMXXXQDOERMQEACKEDIFLAXBFAGRAMVPSWALYAHBWOSRDDKDYDGJR
IRYMOLSTYINEWXZEDFCHQCZPVQMTHCZNSJHHPRAITQFIKSKZVHOTMSFBMGXYVJQV
OOBDFKUYAYQEIJTVOZREIXVVKOMPJGJGWRMMHUHTNJXPFLLRMISISJNESYEFNMVR
SHAEEZVOFKJQABFDQQUWHARIXKAHCMSALHLVUDYTTMANZXFVPGSHPZTBRZCGTCUA
XOXFTJKTPOHXJFQKKPFXSDJAOEYBITEZFIUIBZVVGYLMWRUZJCISQGUQPILPIOEM
VGTOQNWPGJGQAPZFOBCTXQPKXQMFXEMGMODRVRUSVLHKFYKFJHBBUKMENSCIMEKD
ZCSJPLRBPBUCNESZFKJOMKZRWVVDBWXJHUAQGCINEGNJMCWZRXXPUUSTNQRLAMYJ
XJZPDEBBRITOXXVTMFEDHIGZYHGCEIAIRJEKARZUKTEEITFTNDBLMQPCGWSQSMRU
GPAOYBJATRFCWAYSCBYJRZQZXHNHDCPUPMDCVRYAKHCCJBKFWGHLKICMOVGZRVVG
LZLOBZNBCAHCCPFUULKKRBYHHPSOXOJJGUSOWXRWLSKOFFGUCPUUSEOOMKEMSNKD
YDLZMKTRNJKIAFZCCXEVMEBFCBNZLQVCHALFRQQRSWJEEVKGHASNBFICDKEFCMMW
VPLKNVRDMHGCCTITXJPPQLUFBHZHZRLTUWSNSCKFSUOVUCXOJCFRKUKPNPJBEYME
SJALCNAKMTVHAKSEPNXEJCICZAAVXYQUJFZFQMXZVGMMUZOCEGBDDQVACVXHSXUS
GGBEYRBHRHTDWKFGNDPSQIXOFDYFYFAPBRDIZZYHICSUVBOTCMFSGXAZLAUAHMHG
JPCAPSCEIPTBTERRQXJWYGENGKJUXIIGBKITRRTLNTCOIDRHYIDVASJGAFJDLOSR
IKHBISFEZAJGRCSUTRTZRSVFRKXRMIERNAIRRFXOQBMCGVCJKDSTOBJHKPZAILSF
LXZBAYQLFJMXNCNDNFTPUIXPUZDRSKWYJMVQOUSPKBWILWCMCGMOEHSHOMYVCTPV
LYLWJCBSDYJBKOFERAQGZGGKGTPASYLDUNNXXSKHIAAKWJWRHTBKPEKQTIPIZVTS
ZNNYZFMLFVLRSDOPIUEGZCYMJJLSQQSEERLJSUGEUMANDQTFXSCGOLBTAVVVDGNC
MQWVYSRBICEFRZBPKVKHGDPECJYOGIWWBZXAGXZMNYOBOMRFQWHPAYGWUKNPMPXF
GHJFXZZFAFBPETXODUCGXUBWGMJDXVQWAUWHKSSMWPWQYPUZPGPYKHKDWLDJBWXL
UDHXDGEFIKLCRHLJTOYUTWPLDAIAMGBHIAAFPKEONGQJFUPJBYOTXMYNANPUOUHW
KBOJIPIUSESZJTWWHVJAQSMYTPWQNTVLTMWEIKGDTSUPIPGSQMUYCQKJFFHKZTBV
AUZJWRMXXSVYLJLZEBDEJOJAVMADVABXWZVUHVRLBBXWWHTEUFLWLEXRDOYLICMG
CNGWAMIJVVMWELISLJXPSPJOYWPPBNXLWZDQHBGQTAGEFCTGVKIAXSIXBSCWITAT
BQOPWKOQSGAJPBZGJEKPFOTGYBSGYSCPRMGVBJYWGXAFAVDOEWHUOBOSQVNHFAFV
CSECESHTAPLTYHMDVPACNTNIHCXDDRKEVMFKRWZCLRGOBUJBMHYRIIVAMHAJVWXG
DIIIQTZEGKAHXFRZZWHXCFRFUSDMDJULWNBGGYWLOPFREGPKTOGDDEJUEPFDDTVO
XUYHJJZASLLSHFSTCDHQLJDYVKSZZHZMSVTAUEUNGCRKHBXIKBUOKSDKOTNEXCHG
TIRYVTMUPHUNRBWKHYTUFBRSUWIQUQKFEPFPKLTORJGNYSFEYUIMSZFJGMAFPIEG
FUPYARTVCMWUUBSGETWZHWVNXMLLEJEEDDINREDKKYTNVIHZPPUDLEILQRKJEVTT
PDSJEWPWNMYOYXOLZPCUNGCMGAOQBCEZKEAFCVCFMCFCBZQEKBUUBZCDQKNDZPFJ
PRSHGWSUPNYYQIBKVSNUEOHLSZNKERVQFELWGYBNCJDBOZHLBIVKECTXLMEIBGOP
ZNHLVZLRHYHUCINVLSCCXDIPBUBSTYIVUBNRMCLZMXEAQRVCZONMRFRISWBPIIBW
YINHMTRARDMFDTMFADOXLFYNGQDLRNQJTAAMPXOXSWFBRGNXOTBSBBQAZHVMWKJT
SBKEJHVAIPEOIIJSEZNGPQXUOQHPBYVUIHTNOJGRRXNRTKZSWYEULVONBSPCVHBI
RWJRBNFFXRLSDWFWNAMFOKKLMEJIWDFALNAJQZHDCUIRGSGIKSMZANNPKDQSXEQQ
SEVQNHTREJRKGZUIMVQGJKVFQHQFAINWHNOWLGMIJLXAXVCVGGBVWRMNELJANVDP
TCYLRLWWDFLVJNZCOHQPVZKZGAQINYOQWRYUKCDZUYASKIPXJMOLRRUSNYCGAZXO
BLCIGKIFZNPZGOHMXJOLJZBMPEMLHQJGVVWDNZRCLZNPFYLDNDOYUHSCVZYJZXDI
YURSCWLHQQWHPBZIIKIUQMKOOPAAGKIPONHSNOEYRRCLXTAGEQELMZBDEZUTYFVR
MROMWHRKISRMOUVSVUVDKKVWRFGVHWJXHLWUYRLOGVZFZGPDVFLIUPKZUSEFPZVF
YQXNTSPCMTLOXFZIWDTRGPIIXGNNCDHEMBNYLUBIVXGCXHMUWIXHAVFOTJQUWRVX
SACPKPOOGMNPBTEWZHFCUTONCJNNATVGONHSAQHAZDMPWWDTWFLGDUGUZIOCLJYS
VXYJNXOUIDSQHRWQZUMOWSSRUEDCKKZTSCLUGBPRRDDFOXEYPPPFVHSAKJRNASJY
VXSHMETNBQCOUUXEFPMABAKZKTKPYPFNYTUJPPRPHOSXOMUZSUJHMDALEPQPIEKO
BORHSJHTDMWAIVZREWALWTROPRIDRGUHKRWCKWVSRCXJGZQVFAMMOMEZZQWAZJZU
PQXLVALTXWNQNFCPTAHZNJXVUJSLDQFNHDOXUTCNVCLNVQFKOUKZBQMTUCSPOHTS
WBSIFJPCCYNDFPQJJGEZXGHQUXVFDGTXNYVKOAYMVRWQNARXTKEOMWDBAEXDJVUA
EVADMYWRSQFTUVXOPAGPBFUYAGPINGQTQNELPVUNVPGMAFTUQSERIDNXBMQNSWHU
ZOBTIHBFHBPAIMEJTBJNBWSZFBQYZIKUKPHLHRHNKYLKNBUIYZQOOLZNNALEIVOE
FPIQBEIJKIIPBWUIICTVJJQGECNJESJIMRTAZKPEGVYSPSUTCBCLWXUQPJSMHNFZ
ZABLVTFILTUESKXIRSQGPEJTCXIKWOLMOMMQEFPAFXSCNEDTKAHHFYUCEYZXKZCM
IBTLMLYUMBLKGBIEGDCRKJHLVJMCVLEVIHDGIEUCRBKSYSTOQDHHASSRYKUFDUXT
OZMLQEGQRDNBZMIYXPHVZTIJOJLDCDQDCADGYSLPWXOFURCDZOTZXNDBZLUSXSAG
GFYCMWHUBAFMVJPUMNZCJPNYQLRMWTHOVIOLUTFHTODBGXRBMQIDLJFRYMOVOGFW
UQMDDCZDDPNDHLRYZYNOHBHOCKWAQWCZGSFWFDTFZQDIYWEWIUMTBZADWNHHHJSW
DXJYNOXLKHPQROPKNZNJEIMRKFAPOIRIWFUKGBYKQVWRXTJLEOYKACYFQQLXOQRV
IGCUZQBWJLTVOISLHNLPVNJWBAFKNLSORUKGZBCZYYWYNGCMRMWPDQHRQZXCQHVN
UCBBWJPBAGSLTADRXLYHELSHGOWNMFSBXJFIBHCHFHDBIBIKFNWCWPHQMYYVVPQR
EMGLLFQKHBBBSYZAOFAPPFMVYYZUBLCEVIYGKGPEHJYRGHWWXAQUDUPWPSEZTPKQ
MVORMMAJIATPFKNNJWXHKJGDQJLVHMTKQAFGNGYUJGNAVIFKKTFOKMIHQJBTSDXP
FUTLGBRBDEAWLUGURDAGTPOKEYSUXMZNBWFPEYGHCRUYYHOBYHAFHSHTTRQEXVOY
DAKZRCVUYORCATTNISUPEVEJWPFXKLDRPXYUWIDIDRYPYXZFQAIRPOBUWXCOEYWT
CXNNCCZACEVJZUUXMRNBVIJRMVFIAMJPMXURZRMKGKVBLPLTUQNWSFVMYGBXWJAY
UZFJOLXNQIBTGXYBUYFDVGZJUJIBYOGEXAROUODANPTGZIEEKMSHEKIYTCUUIEHB
BOUXFIBBYCTWEQBTNOZCQUXKLZCVQZNHGBWTSYRNFHXZCGGXVVURNCJUBQHOXGIZ
WPLUPGPHJPSAKARPHEPVPTLERXHIRONLMOPYASXTUZEPRXFDTOWSTHWKCNKKHFRL
OVIELNSJUOYCPLNFQMZWMFBOGGQJUNZSDJYEWMNOTKRAMDVCBGTQFPZNZHFLMJHF
NOUWHPXZHLVAFJEBNCYSAGWJTPMDELCGTNLQKAGZGOCXJBHBWFHCVHCVORDBSXKV
EPMPWZQXJRGUZEBIDBZPEJPLQRKNOSMMMXYZUNWGGFXMAGJNRXTYHRKSZCEJWNWY
YQQLLWLBJNJAWGCJOCCWTHYPPCALFBEZRXZYXEHYSJUHSXWTMVLLGNSRYOBMWTHY
ESYUQSXESMRHESBHQKTKEWTINMSURCNUGFVXKNTDUZZXFCTNEXKFFJQRRWXWLDAM
IKOYNDZRWINOROWNSKZEIZHBKDFLAJZJNAVOFGHRQPCFNUDKRRYSCQOPQIGKKNZN
SMZEETRVCLZXKONSCFBMBXNKGSIUTXUAKAJLLRQVQOZMACEEBYFNNGAOVHRIABHB
KDOKQMFWLUHILSAOMGQUWRLBMCKHSATGZVUJXKODXVSNOWGHWPBNANDYFUIVXNBB
LSUIMRARLCWOWWFQBXUZALHAZCTGUCKRMETIWGFLSXPWRTDNTCMVTXMHMTMEJOMP
RKBVHNUDDMBRJURMRFVOSUONKONJSOAWXNIUPJGOYROZSORFPKGOBGVZMCWUYZQG
WWYJTSAMMTISAWKUCWVPNMHAEPTEULHYGIAZLIMBYSMTOKXLKORVKSMSQWNHANKA
OGHJWRMEZBWPKXSQDZWQWRVIQEDMJSPIVKKLHTZCEZDNOZHUKEQXFNREKDBROKOR
ZFOKHFCWTDRXKEXAXFYJAZCKAQZLPNSADRRHAHKRMSYZBUDZRNZCLQXBERLMEIVA
FZHRTPXVWBKCBDMSDABUMGYKSVVKXPQXQWKBSPLDPIVRIBKFQWGYEENLEZMFVVUN
XVNYKMPKKUUQYLYSWQIAPOXQTNUWWVAAEUZCWWUSKTDCZYWYMSKMJDESNSGOLCGA
TWDFGQKSXMXIWJSOXJLGLUNDWGWFEZKGPJKZWUNELXMGSJRETQZKJHKESVBNNNHI
BPJIFJURRUSOFOJEHEGYMFBDRMKTOUCZJRTSBXEBQSUZPMPTGDNDQENBIWHSKNGQ
CTQXBGWWZQPKTHRCUOGENGJAAKCGFXFWFESPUPHHYXGBZGZLMQIYUHKNBULERRQG
LSPTQJMYAEYXGYTGQUJKTYWLKSORWAVAQRHTZWFLNJRXKZFEMRDJUADSCFZODLOT
THOJLODNXFKCOZEYCNAQAVTOSYCXPOZAJIFEPHSDUKXLEXWJFCYMZSTXMEKLAFCE
TCYJJWEVZTDQQMEUXIDQIIEVKDBQRKZLXOTTLVORCQZWLZOVIOYABYJRNAXSIHQN
DTCDWMRBWNPUKLTJZTFIXCSLWKBHSDFYGHNEWCAVWQDSBIEAWUIXJNKUQHNQJWRE
JRRBMXGCXYLYWEUQFYVABZOQZBPOUMWEPHPQBZJDFPNFNYPOMOZPFMHANFBSHNLC
WMDMUJPNZZWFIPYIPKYCVHAJGGAOHSRMAVIJTHYESAMAADTMRPWADIJGYEQFXOVO
BONPDOKNBZJYDPAXSOVMZANHVKQEBHMCNIRHATPFBAFXTPRTSHWUCAOWDHNOKQYJ
CDMYGXWOKJPARQPJNRYFHZBMZANAYBPGICQHHSNQUBIJGGVPJTPYIZUIIUCNFGBP
EMVGFUBEJRZWKZRVMMOAYJPVJJTODZZFSJHZRMFIIIYTGHEPBXDMZUHKZABJNKEO
ZXPZIHMIMNAOXJKAEGZWFHJWPLSDMOMSOYOZVDUZDICSKEIEWHOYIPLOPWWQAOSQ
VIUVFBXHYKMLNOWUDUGWYOEHYGKUOOTQDYNTFRSSKZXIIECCHUGUZRFOHYXTYJCO
GNVLCXVFKAKPXVXGPKJPXVZZVAGKYJEITZFQMOUBAEYPDOFTGBWEZGDQOTOSNXFK
GQVHBQCWSCDVDWBHUCKWNCXYOTSGJUBEUQKDZGLJOYCGFEXRNKENHTESCWCLRHHY
JFBTGRAHHYRGXULIHQUDQUDGYIVXYUBYBLYYCAUSNGHPYWZCXVDYSKGYLEAKVJWO
FKBNXCBVJXALMQXHNKGWXKJQIRDOMQUYAOOJIXMWJOYSETWCAOAYHSHOKFKFNBTB
ESOYREQNIIJXLBCYKQNZTXHSHDPVYJFQXOVZWKPGFHEVWQJFVYVHMPVLWDIQITWO
PKLEXXLMVCHXSRPANFHDFCEZYENSKRRVUOQSGZCOVBHTTPTZWOBTTGQYPTNYMGRE
ODHEDLKLTFVNYISAMCNLVYBJZRBHKIHBSRPWGWISYECUSRGCWZIIMJRAFSTPRHME
NBJVSXYRIRKZEBJQETQWBXATJSPKLCCCFYJOJICIGJSSCYOBXUKSILSSZNFLARSW
ODADXFXQBPZUGLDWKVADCZUWJRENTXNKCGKYRKNUDDNYIEMQPFWQWMGEWSBMYZSY
QDPLVUGYQTVHQXEXEFIVHQMGOLHDLKLLDEDTUUOJDBXTKTKKSZUODWSKFIXDXRZW
SAZQSFQSKRAZFHXPDBRLCTJYSYAFYUGTSXAOBRXPGIDXOTEUQEURASDTQDYENIBN
POGJDPFMTDXENADIJSTCIGESUUDDLJXHYNWFOWRDBDXWKYFEDSTDEUWLWTFMXAIJ
VXMJAHPFOALDHZBGRBKJUFYBADMMKVBXTKULEADUKNGEKXUEYKMZUDIYMEDCIZAC
BXTYJTMKPQTFNBFQBBFNOCMJXMBRREZHMSAIEKFILUASOFENMKTGKWFJVILDTEXT
OPSCLCDHUDKMQDTEMDXVHBWOQMWADDGQWOUKNDHRZQMRTGCMPTZCHLLYPUEXLFMN
OATPRVVTOURUQWZFLEENYUDBYNDKFHBSXCQUNDJIYVOJIXWWKBJCYXWYAIQLYMOU
DKVFTIIVJOPYJMGFBDXLNKTUKXLSKDPPYARHEGVPCUQKZNWQPHPSSRXAQHXDCLOI
AWDEDUDCIDHALDDRISIJGGYIXWMNWAEHECJBIVIFMLOQLJASKJMCVAWSZIDTLBNI
CQRGCJBOOMPCZHCOTTNFCKSGBFWYGHCNLXAAWJJKXNBLEXVVDIJDOCRJBUYXGKDT
EFMEFCHDYMIFPLRJPJGJAYHWGSETTBZUFSMMEMSIIJJHVCCRDRLDQQWVLKTBBLPD
EFZQXDQZHEPWOEQSOFUDISCKGNUTDBOFXXPEVIZRHSHDGLFAVGUAPBBUEAWRRDEB
UXUHETKJAOQPXYUUQCOKRTKPBMMPTZPNKOODJXJESKETAPLTBQYPAQMDBSMPJZPP
XYCCETUVWFBYTYIZQQEWDXJIMKNVDVPBUYNKZYDCPTGZXUOZIGWSKZZPTXTPUCTR
UEOYUDARGWBMZNACXJDMKWYLRYRZAOUZTYPJXOWSDURJLMBOJLKSHZUZUQAXBBVW
ORCCESJALCAMNMDYBNKDCOBFTUPHVCTZZINUGHVQCAPPKETKZMQPDMDHWVLNQEHX
ISKUBJECZROVQGKJCFNUMKMXQMGKWIIYZIONYBJGYFXCVIUDCAROHXRTUTVBYTKW
ZMQDIEYQXLHENLWIDZLKQUDWNZJHTYTLQPSVTCLCDEDXSFLAMSAMDELEWENGSKTG
CDLAXQUMRSLUUWCSFTDVNMIIPYZJBWUMQBNAAPAXXFSWGSCDZURQUKMUDTCAUGZU
DLSTTJIWUMMXPZUXCJBRYUSVYATZWZZBPCTCTDOBFIDIOHKHXWADGUJKRRANYDDY
OMFIFZFHFAZHLBWYDTTCWYCTWUCWWYJVTPLRADVYAMBJJVDBLNIYHWCMLYBGPVTL
IWGIBTZQXGWPGPBOLURABHUMPVQPKVJEUZJJJIFIONZKKOTFCMYACSPXNXPSGHDN
NAHMJRZIERMVALRQOWUDQJWXZJDAAHCFRPBFPPIPOUJQMLCKQIHOWXBUWQIDHTGH
CTKZKIHYOCUJSSIHPUFATRBWRQDDTGZJNUMHPTGBZJLUPZRBRMNFFUOXQSEDWLYH
LIFHCBBABAUPFULDNMNVPDKKMRHAMFYWGDFFOEDRVZWOSAFVQOANWXRLACWZNFPV
LVJRQGCNWOYUCFZCTSJQOQDWQOTXTFYYKHQLTZAYLQYRESFRKYYRPCNELXNVZYBI
FGSYUZWFYAQMXMYEIEZFLXLRECHBETJTFWDHHLKDPZQSRLSMEWEGSKCCNHIAEOVY
GCEIBSSEEIFBBQQXWMRULFNMACUMKDRUETNHMJKVXDBELEVLTACCIULFKBFBUIRU
ZBVNEXRTMGLNNEOPDRQAYQPKURBTFRQXEGJQNOEMZYGWAWBNQRMPZRKRIJZXYCSE
KHLPDUHIPRNIXKGEMFTKMUOCZTNMALITOHDTVGAJYGWMWWVHYNHVZUWPGGOBWDPP
EVEUXULSQNVQSYMWXBOFICTDWWIZBXBEHDFUOVXHBWYJTZLUXZCVBJHHDIBTOYSO
MCURPJCAPLOSIQWYUGAMHIMPHFPHSQFPHBCKAVREFGSJGXJGWDBZKZQGFYQPDXZF
OKNQOXEETSNKKAKNMIMYLBPDDMAUHLVCDVVEWJVZUDBDYDBIOWNDYXSYBVRYIASC
QGDPALFWEFKNXTQHIDINULVMTUQHJSJCWBLCSGUJRTJMFXJXACWKIFXPOWHJCJLD
UXYVQLKMDRWJTIMESRYGWAZNUNJILVHGPYLDTXADLKGGQGCYMEKUELLHZDOXBOCP
DXJICJKREXPNHSBZQWKEUIKCNPKVRLNWFNWUZHIHQSDGFQYGRGTKVHEOIYSEJXET
PGHOAMWVQMGCKIYKCJARIMJXCMNQSRNUKNOLRFEIQZNNKSJAYJXSIXBEPKYKYQON
ZWTCCUWMONXFUBUIGBJGCRTILINXXHMSWTMLKSFGCOKXTMJQXFXCJCXMVWGFEMGS
GMWTHDHJNOLWPHAYABEBWGXISSZECEHKCHSSYRHKVOLJPSZRQFOGXVJETGGNZBND
ASNABDUULQLNOTSSARNJLOLTMZJKQEGELNWFEBCJDRBJUCZKGCJEMQHYQDSZCGFP
GIHRZXMOUSJLDHXYNKLWQYHPEEZCFHIDVBFKCFIKSPKREKETQGGXSGRQHEYGRWUK
NPLARZLWOXLSWPSGCDULSKFHAWTWNLASGSLFSQKYDWPFSVNQRXFXLSONNPPSSVDI
QMGVATNZTJZOLCCHAFCCUYJRKZCYQWKLPJBYNAPJCPRLZNNGVVMSBEEDYZGVJBDZ
ELIDXXZEFQSADMDBHJCWHCNHXPQOVHTAQMGXEEKPVWBXJAQOXLEFOIEMAGHINMKH
PJTFINIBKUYUTQYLYROKTLUWAMYDRSSXVFMKAVIQGJKYUSVSIXUVSOGEOCMBUPYE
IVOPJKWGLOONZUZBSGIERHNSFERWTLCLEBGFXVCNEPJWEBVWTZFNENRUAXBHEQFQ
KSKMJOOGVJCLBHNGEZUJJJAWBCJKKSVMUHHMIWXRDDTVJTYCVQNEZGBPQWFUNUAE
ENOECPPEQCFJUSFPUJXJROQEXXMJLVEUUUYXQCKCDHLNGWCCLUANIEIWHACHZZTW
BCTNASFLWQCCKPBJGZIEWWWKSTMXOTPKIFWSMYDJJFGTKZNEDPRVTMOLOVFNJXES
BXGUBMYAQMOMQBARIOUQDKBUBJGWXHHUFPOSUMFVDRNGRKPEXBVIBMYVANAAIXDH
YYXMFRGPEKCDNDEPCIABJEXQLSQXSOEFQZANJZRRAGLNDFWSMJYNEZGAPUQYSISU
EGHCFSKRDHOQJVJIGCDOWDBUIXLQIPNABUTKHEOOMSCOVZWJCKZYBQRJJMSFRWVQ
FDMXKGBLJXNTSEPXCXTTLMAJLGXLTPXJYTSAADITYYBSJGROBOWYRGJTVKATLNWT
YGRYOLHSCIVNCWPXEYSOEBSPMFHJCUQYCKNIPEADNOEZBXHMWWSVTLGCVCPXEZCD
GDGDLQRLRIXKFOPZHMIDLZOOYQSBKOQUPHCOEAOCAIHTXTXKBLIKCZHHABJZQFNH
SSQWIYUZFNQTVEOFKYSLUPOPEJXFCGCFYIFXZGIOPHYSAPVQOVOYXZMPBQGAHFVS
CJDPDLJEDBKCWZUQJARRBBYEWMTKTOCGCRUUTDTHBSTDLEKQCJHFFWZZOCNXWRZN
BFBSBBGNQHOJFTWLYXWUECTONUEXBARNVNKMVBCFYAKPBORCJRPRODDKHFFNYREK
NLVPOJNKOEWWWNIZPRIGDQTHVPOEDTVXRUUTIMYYXCNCUZKQUYGSYKGECAKHZNBI
MZYPYTUQBUFSERCRVPHCJVBNUKSFCAJHHHLJKUACUMXCRTLGYYZKLWTUHBNQBSIY
VCYUZZMLFKVAODIOMLVDBQCJFCHNBRODLADAIDLROBUEXGHYDFEXUKOZADGXQQSO
DJAAYQLPVZLLULTPLBQWASDGHHZMRUAGTWBKYEFVYXFCKKRVUSEKYSEKVAHTNPLY
SIYIVTHEVENISSMHPIVFBWXKYQEDTRZJXKRBEXLXVXFTBCBLEHZUTPIJHVTTAFKK
FJYIBHMTYWIEQBTVDKRQZYPYLYSQFTZZAPXOESVEKQPOGNRVGYPCWPQSVZGXJVEJ
WUEBDHJGAZBWMJTCKQYORKOCHONVVVSJRHJLXFCUTXQLXCYSLVQQIRCHJUUYGZES
HMEVZGRGLVQOKCJZHVMLCVSBBCTSKCDRMVHSNUDOBUYQCMYSGHIKBYWDPPNRCHIS
KIRLNMUDVYCGEVCQBJNNVEHAVMNUZNQDZFSNNXXSZKFMGUAPYEQQCYWFRKHNRTUV
ZQDAFENEYOTOOHDWLQVQTIBJOLCBZWZVKOZDLUZFTVXHJWWEIFOXIRFTWJMOUEXG
GBUYEBJQTPTXCSWEOXVFJOXABJHOHKETQJMSQXPGYCSPRDWXOGXHFKRLLRQVQJOT
EXCUQMRKSYSGDHETEXYIOSKVOWUJABJASFYGHPIWWECYXQVGUMNGQMORVXLHVMPU
OAJNCUCWAAFVFYAUUATKHWTIOHTROLAEKYDHXQNUINQHXWQTKGUZOHGGNFAXZMXL
JKSXAHHXJKRRDUVIOJSOFZXLIKDMLTKKTPKWTETLLEVHULNWQZELWOYPJYCEQUSL
KXMSUSLOVBOITOPBCZRNGLBVOTCOOCOKKFNUMDJVJYRVYOMRGUQQVRKIKBZFLCSR
ININYTMJRTNVJCXVHQFCBDXHUXZOLDVAFCBFARGCVHAFIYXHEHSCZPHFOCCZEQGW
WNLZBVYUDXSFFCNLCZYEBMQEZKWJTGICXQUOVRVOQQERHTMVMDQKJJPGOYNEISYI
OXRFSEYOLJQQJAKBMAMIBSJGIIYQDAWIXOCZUODJRIYLAEGAYBWCTQVUXLRVBWHA
NDBTGWQTZRMRKZMRINKGRDMGJIOIRQHOHBVQFSAWJBDFARVHHXHHBUTIKFXFJVBO
ZIORQFAWPQCDMTKMZWRBKNUFDDCYSDDNULSBCHTVNXWRTBKSAUPARWSVRYCVUTYP
IWDMFPSIJTEPNFBSXHEWXEEWEKZDQDAOBVJVOTGTTLJVISEFTYFGHTECFOAKNOTX
GSGCJMMVCVZRFLHKZCBDGTNJXQWMORMOJOHWMLQXNVDFWIFQJIEZBSSSYKWAELUP
HIRWHMUTKSLOGHYUWSOYZLFXUUSSAEPPWZESBUCTKRRZEIEQGLNNEZQALTMFYNSE
WAGZGAMCTWDLVBPQCLQXQFHUEVDFWVHCILADGPXLBQUWODGPJRGPQEJUOLIZQPPX
AKFDDYWYLYMNFWGVQODDKDLWTDIPVYLDRKJFKYVLGVSXCRADIWHBWJHUNESBBVWE
LBWPXTADHTSOJNAXOIKXKJPRLBDJRYRQFLYVALXZFRDGNFJDQMLRMJCWRELHIGIS
UHJDXUUHADWOPTOKRDPDZWPSLTEBLQUYXRUSVAAPENKUUYVYRTMPXKAHMQAHFEMC
BWNGNVERMRTCHIUOBWCRPKTXVZDSCXEQOYWCIFAJNQIIPDFNADZQXJIFNXISRKVT
LDCZBJZCALBOFSRRMLSWIGASLPICZZPTBGCYHKHLZVQUWZBPXIWCLFZFGOFNGKBS
TRWUZDXZOGJHWJDZDNTSVYOPTPJTTSEYAEWQCHWURYIVJAKGYRZYXBBSFXTFBJYX
LOKSYXXKKCETEOFATXFKYCWNWQLLTDQFYOHYTHMMRLOKVJZVABCGHBEPZYODWQXE
MJDTGLYOQNHWGPZAHCMTTURNUBNCRMPYCQZORXJLWLVRSLAGOSOOOBVMSEULHSOW
MSRRKXACEGAYVLRZRSMEMZNIHGOVEEMYNRQQLGUBDBHPXMGJYKVJWMUTZEOZHXXU
JMHKOMNYDMCPNBYJVGVLAEJGZYXVFFVSZSZFVPKHOTUXKSYEHKAAXYKQNFGROWQA
UFOYPPAOXLVTTGSFQZRKEEBGZWXKCDZBSMPIACHYCODDMTGDMDHYLTRJJLEAXFOI
YXONUYUOGDFZELMRHKVOEBXCDTJEKVEAJRVNREUQLUAWYDODRHZOODIUYWPTKART
ILGDVVINRGLQPMHPPVDSEMBEAWGOTBXGAAOZRHDHAEVQZKIPIZAJLKUCHIVJITQQ
BBGPWOESQKHZUNMVXEOYRHLRRXJBQDPSUHFJXMGCZLKRROEITVKSOKQQFQWEUAIT
UVJXFSYZCCKALWIGKZUWXZUSNNAOVOKLHILGXQFENACXXXOMYSCBHRIBCXVWAJXD
PLUROBGTIOLZSFVJNGFFADRBDENDHQXBLVZJUOZEWPRSKGXHJIPOYIEVRVXHOLOZ
WNLURMVUPOWFAKGLJIVOLEERXNYSKSNZLIJWJSHNPBRMJJXFILURXJGKAUQBVOPE
DGNRTPMXAVHNICJLZGHKWXXRQJJPAYTNQLSAPKFUCHASEBTULFNBGHQUTZBYAPAT
OJLKARZFVPZBOMCAFHMZYLUQQXVAKNOABGCIVGYVPMWTXSLRTYLCCAKVFFGXZKQI
BOTPUILPWQATKQVUYEXFWXEZNHCPAMNUTXPTUVMPDABDLBQZYKYTGJZZVZTWTVGZ
CBQBRMTTMKMSKDRYBXKYOQJTBNWRXTFLMQYJTQJHEKCRWHRJGCQWHETHZPBWJIMH
HZCFYLXMJBLFAMFHFLEHYGJMTDHFRWUSFSLHNJGFIFVTDGWAQJIPAKIFBSEPPGUF
DIQCLGXMTFKCEETXWRVVNUFZMDKZSOBUSIREJMEQFKQGLXSAUYQTWHRSBEKORQZS
XIIIBXIXIHJXUYVGVLTXBPMKQFJDZTUFCVJGFSRVEFDAQZMOCLLLOTYAAWLHSJBO
CUHHDNCWRIYRTDSMWQKAYPRKKTVGXWTLXHMQZYRGJTIXXHYWCWRWQBCDOWMJCBFK
JWDWZDSGTUJOFVCVICDVUZWSJATRIUKISXEFTCGGSANECCBDCDCJFPHNGHQFGVAJ
OFCDSGVMOWLMXVHWRWGEZGZITMGWKQZBMYXCUPXTAVHINOHRIKWAGNLPOJBSCAAD
HISSISMPPMEXAISGROIEYYKTXNJVNWPYWJYYRIHMSDGVQSAOUFBQZVOIVULLRRCI
NTEAFHDBWLHWLVKABTXWRODFKEJQNBWIJIRNHBLWBXFEDJGMVBIZFFKNTXOCSZGB
JXSVFSIRSBCJGJJZQQAPCFZHRLVEWXOGFYJWEHOQSPWQZBBLKHXMFABAWDUBECLD
TWUQCJIYKZXRHQWKIBRCQCLNRXWGUNTTBOWQJLQTVYIDGIVIPCEZMPIHSOWYBTZU
ZHZWAAQTCQDTMGOLOKGSJGBBEKAFQZHTKEIHUWSKRBEIBQGPSYWSGZPTECPUUNBB
NDMAHLKTLBQXMRWHIBNUBIPPVFGMFKBQZUTXISOKYJHZNUNUYATDBJLJKFFNJVKP
KJRYZZYZERECYNUTVRNICSBDOZBMDWAJNOJJUBPUTKTSWGHBYYDTQMFGMCEBUOPE
JUGGIAXBTVPSMDPYFCHPNTTDLDQPTTBUITFXKZDSVVHSPBDWOTCDEPEFLCEJSWSB
BPPPZOXAYHQDCHGJBNLOMRAMRGCWSVMESWWIIBMROXNARKYZNKLQRHONOQVOOCTQ
LGVPOPWVISNNQAHYINHITTHGDEEGJHIQVCONTMASFHVOTZZRCUHLFCZONOQWGDIU
KZOLRGSPDBERBCUQEWKTGTVNIGTWYFXSRKSKDFASDQWKHQLOJTVMMYZFQPXPQXDK
TKIYTHTSLDCGNFTFQTNFAXCPXLUNVZEVCAWFUCKHHZHZYLMAFAZODENZIJLPMJBZ
QCWJSKBPVNLQCCHCAXMWJSLJKQQLKIXRXAQNERJJCWCWPVKQQUATVOPDMODPAORX
UDVQZKQCXGNJCYZQRQSVOOZWKZPDAFEGYBTHTQLPCUYYAGBUOUFEXOTFSJTJCVUT
WUAVXTOPZJPBHSAPGMXBNFWUQSZKRCBMDRDLTTOQCABIZFVXDFLWQNAVDRQCGNTE
DNRUNKLRNLMUTFRYDQKCJCNBZMKMOYRHPSLTXAUPQUFRATGECLJGVVELHOPEFLKD
AJJNLEAGSXAGMWXIPLPVKRKITHEAWALNHLTZNBYGBZIYRCFMYXKMMXTGJRJWDFZF
KWKXVNQMYVXTPYNJOOUWZAECATQSZWFERQVGHDJWXKLBUWPOUGCPMACBJDELAVLJ
EUXSCKDNPPKLTGVBHNIMFJZMXXLSMLAJACOLNLPKDDSQAGKVIUWVLQILHTNFZEBB
CCCKGGQEHAOTHFIIUZFUFVIVPCLZZRSCSUVQVMGCYZVAXIPLMUZMZUIMTYQEVIMQ
UCERVAVTPXWAHHUQRNGFJEIHNMPDFBGXNUPDWOFUMRRAJPANVBWLJEXSGWTJMZJK
UFZIPOIHEZFUTAPMYPBVBVLMJKMVNGMHDDIWUASQVUTBZCBIBLSOZNKHVRMOYNJR
VRTHJPHOKFXZZGAIHYCWTXUWAFFNSWMNFFHSZOKEFGQRPCIWADHLOWWZKJNMUPWQ
ZYQSJCDICFBFBPSYDBILZBUGXPGQPIWIFTYADUMWYRRBLPTKBLDLMJZPHOLLBTPE
WYULTYOJCOAPFXISLUTPVGBPUEFHZHIVCTATFDLRWCMMGLSUQCVFBULFBJQHSGQB
ERNRQDQIFEWYFKCTRIVPGGCZJJAHGVXLRPCTYHHCURFQBMDUHJCEKQYZEIVEFTVM
NFARVBEDBNEGDDWUUDVJTEJKJOETSXWUCFWIGCOJMCQFBPLECHKPKQJMCHHMDEOQ
JRDTXZWBUQTSMSKBFLMLVBAHRYBDLPLQJAORNUQFIHFAWAOPEHTYCFDWTCXBZEQN
EEDKCFAMSVPLUISBPWBNQDUMZUMXBZRCNTCLUTOGMEKMTQNAMFOSFEXMXCBDWNWY
YFMBNUFRKFBEIVKPAOTGCVLWBYNCVMZJZRBQTZMTUYNULJJUBKODAVUWWOGDIDQI
ZEHGRLCAIQQTBSNHVAREEHYFYHQCAROEUXFNUHCZIYKOCANYXRZMQUDJWYHLEBDL
ENVARSWDVHBMGEQALEDVJZEAQUYNNLFTOKLWDKCANOQWFGGONPPGFFIYTPBKIXHE
IIVZTEHSDMRUSZZYVIZUXCTWSZCYMMAZKUCNKICFKYITXBEBDRATVAVNPUSNDTQW
KCMGYZUAFQWDMOZPPLDGMAFYUGNMGPWXSRUSJGDPCKIATDLFAGGATRXDMOVYLANX
SJFFKZTGDNLYSJSYCQVCLQTJQRZYXSDMIEXVALXFTFUNHVPJFKAOMLUDEDNUECEH
WDILZLEIGTHFQQCZWFRSPNDDYZQSDJUHJEMHZIIQRAQSASAQIAJLMDJTVXFNXIBM
YLSIOICSQTWWUICPEGPDTSNDHKULXBVRXDOEJWBWPGHPEKYTYERZEAJFPTUOJQDP
TLJDVIOOCUHWCSXJDUONXQMRKRQKTAASOEWTRECWSKAVQYSUDHEKNBXLQEITGZPX
KTLJRURTQIBEOBFQLLXWCHLPRMOQROQKNDURKGQYELVRDOZAZOMHXBRDIIKPVINJ
VPLRRLTNJSPDGTVSMMRLEMXGLIQMLGKHEHVVUVLOXJLVVJJZJRVOUBFTXSWWOBVT
OTCOCBUNCOCEZFVLYHFIRGJZOGMSROFRFAVORYMLNFFUDEZWKNCFHAHHLPQWOPIA
RTYUXAEEHTPBVMVTZNBXYFEYCKMAKQSELSCKOSHUTTNAWVDZYWCRQYIWZLJCEUUN
DMIQCMKPEAJPNDPBLVLINHQZGVGLXQQAFGHEVXBNLUJBORKMNGJRATAVSYREXCMN
EKASTKLIHYIIFTZFIVYKXAMUHIMFRCJPFRLBUKNZAYRATMSNNYWXVTQOFGLWAFSD
DXTXWMNUVAYBUEMUVKRUINCBTWSFVZIQHQYPZWSSCIEZORRLLNCUXTDAQIIHPCPT
JKYDFDHKXWRRDJSXFMPFHPQPRCGVKJFFROUTKKZQAHXEVDZHOAFOLLKEHPWNETUU
WVCWTKCXPEFTGEQLKGPPFLHAFYRWUYQKKLAHWGIPGJFLWSWNMHBBUIHGFTZLJTRD
HRZOJGDCNUGTUVZWALRODJHAECFHMGMIQCOHFSEFVXYHWJQRXQFPZYQDRPZXGGOS
ZHBRQMTOFDKXLIEZJNHTSYCWSFXEDOUQJDBEBWSDXSLTHAKXOBAHJMLSHXRIOTRY
HQFTWAXQUMDRTYJBFVPFYBANHWXKCGXOSHGWLWMYUWCCRZACELMQLWASZWPSZEPO
QYDGLBOHYNRQFPPVIICPCEHDGFHQMTDNFPRFKMNUHTFWOIZSGQNZVDFUPCPNNOSB
LMBRXLUYCWZIIPNPZMFAPPYQSSERDOEMICNNOIUEFJHRMGTNSJAFNWLAHGLEZKAQ
AACGSULLIAKTTKNBMKRWCFBBWEZIQEZINHHMKXRLRLPBDMWOXGEVKJJVQLRFJGZN
PHQFKAZELIEKUIEHEOELIYTXHDJJATEYJMTUHWMKGZMVAGRYDIVAKZDNDRTZPDNI
GZUAZUJNFROUYZEYXEKZADJEDOSFKHTRQBTLRJERFTOEVNACSRLAWTJSPMFGBSVJ
TQEFVXZDXQVLFHAJGVHDDPKKUKHNBFJAZGITNMBBIFXVZQAMNTAPITPRORBTNSNK
BFVRNYDRSRPHGPOKUOKWGUMDRYJMEDHBMACWSJOBMLAWVHMSQDTXTVBDMYSJQSFE
APXNIZKOUZPBDRKMVVOFRCFMDCKYAZLKEHXTOZJTCXSGLYRQJVDBUOLFPGZQZRNC
QLBNFBQXVJRBVQJUZQLUEMSTFKXOMSHAEPINIXAJEEPCKBRGZOTOMYQWFJMOMKFD
FYMJKMUQYVATZNXKWRJRZYRXWFKXUBKKDRCXVVADXHDLLFHJOAUKDTSFIEMUGCLF
GGESWGIANIPOYRRXKJXJHZMDUDWNWTGYTOKDOEUQWCMNTZIULPWTLYCKMGTRVXMK
EFIXLTHOPGANCIALVYMSRNPSHTLIEGGJHLPPLZUAEIGFJWOUSDCGSPYBHVDUTZYS
FSPEPKLDHYWVHYVRHUFNPPERUYWVSDLADZDAJFISYLVRHFJSISRBQGACYHALGSXD
MEONBBPCTHNKXCYQZEQIZEEIMFKSTXTJNEOZQPNFMGGHKRGDVXJZCBJFRNRIEDZM
AETSYAMXNOWBGWRHEWMQHTNITANDNYEGJFBGKJZIRTZFZGMNSFYGKWCNOFASBBVQ
FKOREYNHMXDDPKGJSUQZWZWIVMBCBWFMIZNJDBBYWILKFDOWZLNULBEKFFZVJSGB
UXJLGYQQQUCKWSBWHHSGLYPINRTLQQJUBLTJABBHJEHXGPTXIDDCTCQALNRHNMIE
BEDINMYNTRVTOLYPRDBFXSCLVHSWRYQPLAYNKHXDIMQPKVIGJTVBEJOIACFXZRAF
NOUZCEANLUSIFZIRDMZUNLUUVRAACYYBCQREGWLDKQCYQOFKLWCXZKKHZWOKUVSN
EDJUCGGAOPGULQBNKIUPDLXAZXWDQWEKNYICRUAWIKHSQUGRGSEIBRKVNQXAWMLW
OKPZBXUALZZXRVPJXMTOPEIIQWMULNXNBQUCMMGWTIIBWBHGLLERNBZRFMULQTAZ
UBYCGVMZDNQMPCPPIGKYTKYACTRQDWCXNJGNALEGSFIIISWPCODTBDAHQIFNSBNL
VLCGDRPFYWXXQSLEKUCYMITUSYOHSMUDFXVGDUSFOLZXNJSUYCYNAMADKLAZXJHP
COMKZCBLGELXTPOKIWNGTKKLGICJPAAEZBNSZVLEFMCTTYKNBTMBGZYKCDLBUPDR
WPDNKCCCFLOOVIWNPLXFXUYQZHSVFIFMIPTCJURFSMEFHZLHMZGVOANHBRQRUMLU
FNDNJBRJSIQRLPUPYHSFKRBTZCUSWLQSHHFKSZPHKVZIQYDIBTBFJBJVHGSSYILL
IIPBDKAIMZEWUDRQWUVVJJILIUELWOOGZWRZSVPJLJHUMAUSSQQZWVLRJDRGIZOE
AQHBJJFUQCVSIAQSJEFUWHWFBBHEQTMSMGARUAJHEJDCQNVASKVZGFIZALUUSXPE
GUYXJVQKEGOUTKLJORQWETDWJZXJKRJSMUJSBCVZBMDLLFFBTYDRCNUTONHVQPSW
VFYYYICSFYXNEZFCGCNZBYTAJZTTZPVIGIAMTNJAZIETCBRIAHDTPXYLMOGXBZZQ
AMVRBQKFJAROZTIOTSIYNKOUNLTYAIDNRJRUGPTIZQBRFDXRKDGXZUWGIISHSEDG
TMESGONDJURYSIMJUORAYWDCUIMHFJJKWUFWNWJGVXGALLZFKXYKGMRLUFTHFFCV
CVPIAUONNSLJQGXUPQJGDEYBIHGAADBLRRRATYLHXGSWLXNTIHYJKYHGCQWSQHYZ
UJPPZSJCESFDEKFRMNGMPIRZMSXDWHELSHNOASYDBFHAXIOGPOTCVDGVMGXXUMNU
HFSKOZELLBJPVGFFQFSUZXISYAIVIAEPUGNWPSQLWGWVLFHOYKSBDNXUMFRJKIHK
MLQKACXDPXXJBLJZNBTGDWDUATGMGTWYBWYANLQPANIEASUDZVQNUKNBWWJPTAKO
IGOWLQUODLBLSSWCZADCBDHIOHFFTTGMCDMXVEYVJIISQFFBQZGOBPWAGHIGGKDK
NEPWCNVSQOLLMVMORECDUPYHGHGCSLWPEFRXBUXMHRKYQCKCWDLZOZQEDYSXTSIU
JUCJOJMLIHBLLIKOAHOUNHAKZWJYMLQMQMWTLAQLIPBXPVUKEZKVUVLZFYTDPWVK
ATAVTNRMPEZXUJFDQTNDDFGHGZYXZXNPCVDQXITWCGVOKZQDXJSPFWSUMFZSRJTG
YFGLVQQPVFKCFSBXJNTGJMUFGQXOYQEDRJDAIPLBXWUWSSGGGCRWIBXVHMWKMXJK
CZUVILILARJODUDNMMPIYXLLUYNZYMIHMMONXTGIPUTJXBZROPWMJYMVUVHNMYYA
OOLOEZVEZTKTEKWERALHEUMYIQSXPPIVGLZJILWRTADUBLKGWLBGMTLRVSFEEEWF
VQBUNJUVZHYLUORNKZJSQHDWOVEASVOFKKLSXOEKRZLKLWXHMKNXZVHVYSWKVYJM
UTLTRKIFTTLHZFWHBAHZMKYCPDEFIOOTNPJKCJLGRTOTSYTNSBPBASIBBBTIRIZI
ILNDXQYEMMHEOVZTSJLOZZBSKIRIKQVJFIXPHWKHQCISEPYULIECNSNWDJDHSODY
AYBRXWIQUYDRSFNNITWNXVKKAAMXHMIWWCKCZOCBQKLCKWSYZPJIEOELTEEUAVIW
GQMVZJXPWCQGZCHXPXCZFHJRASWIMOVOYRQQXJIRTXQCIWNDHEAJWNJFMNHARNLS
WURHEDWDYBBAWPEWURHNOMWRBBDOWVKTCAXEBGSVVYOAXGKYEELFQNDXKCUUZHTR
KXQDUIBGXNHOKOFSXPUAOOTIEVXDUKIWBDGHELCJEEOLDOTOGEZBDYTQZYSIBZEK
MPTYBTOQTSTOYUAISBHEMLMRNVUIXYLMEPCMQZFHEUZUMWEQWRNVZEUWMLEMLULT
XBEHJEZNAQBRXYJLOKAIUWJOQDYUCYYIHWSZMPJXSPHIGKRIMADWAHTZFLBGQAKQ
IWKWRCDMQYPBKXUPDXGHZBVFRQXZEQIHJJUJYTVMHRCBHBKHPTOTDISASCYDOVYQ
SWVQEORYNEJEUUVWBJQSICFMHLNGBNKIKMDNQDIORTPYJHHMPANBIKXTMOFGBKQU
MMDYDQOFDBJKMJDMCMRADKADFJWOHOOPQSNTHGNQVXCCZQPKGNYCDXSMUFFJWJTB
SFRAFCSRHWNRWEMZQWWODUNZQBCEOPYQPEZWWOOPNYRDISZZQZBECKFYHXSMRWNB
XMHXMIBWLYWPDPHJIMKSSLGRUYZUOTKYAKNGSJTLXBRZKSPIDCFRCTBAJRVFDDEF
DBHXUJNAMLKBCRHKYOZMWFKEWHKGLFGESEKEIVLEHMWBFHGQADJNJGZYKXFZZQEW
TQHKIVZMRMOKCPWWESQEAHDLTAZTERXSXWOQHSULDTKPKYBNTNVKSJKXSZODCWHQ
LYTBQHCIXHESGZRQQVIANENOAQGWXBSMWDIUJPXFNAIPURBXRKMYNEZSLQYRXHYC
UXRKIOFRKGRXMBHTJBYZDONKOFBMUZKTSFWISCBTRNTWCFEVCIPDAMNFJEBUXGFG
FNFPMEJIGRKHZBMDJQFOACRKLOCTCFAQCEOIDUZYQQXKHCMJMHTDEAFBSVZXYBLO
XJPENXBYCYPCKUAMKPXLQFVZKSYWGDGCSJPCSENLUGRZILSKMOHBZZTPLNXRJRQT
ONGULNQIFVHNWSYRWPUHFSTZWGQMJGBHYHMFUEQSWWBJUVDQBFGZDZWPZMXQNGHW
IEVXCUMZHRICVFZPMZPKZZJHOFXVPWEOWJAQTJBZSIKRLVVJXGHZINNPAZGORMXU
BZNTZXIZAKACAJPGZUWZRSQKCSRCVPXOEHDKFUNDXKNSURKDIYFACCQWIIULUTEJ
QNPXNWZTNNMIQHIMYHEDEWOXIJYBLLQEQCGGOPYVKVBZVQKTLYEBTABINUTOUNSI
PBBZLTXAEVXYTRYLMJAHZCRHWVYOHWTATIXMQWXSDYZJVISUGCKKLOWYKTDXVXFJ
WBBSWWHUFLSLLQCRHYLTTOAMSZVPFYFUXLNVJEBGKUZIKHTBBCNFXWDEIFGRXMVX
DDQYZTYONNXSYEXRBJNOQZFDBDUNDZFQLMCNGJOYJZHJXSXSPCONHOLJHRWDIZMI
SSPDWQGVCDSLYKDBHZPAAXTKWFBFFUICPESDJTSUFOZSIMDRCPNAXVMVYCPGNPKQ
CODLEYMXNXZELZPHXXZVZREMXKBJHNOGOPKWTWKSADNWJVFVFCCRMVUBUWYDADXG
OUPDWFLEHIOAGBDYTNMIJOSSWFTQDBVUHSJAWWHGKBQJYZMBVVOWTKEVIYCDXGLD
KYVYCAJWDDGIREPCKVMIKJVZPQMWGJJPXNIWKDTWYSEIAABODZYGUPMWKOXTIUGL
SEHADBYHOGVYTSHWSBNNFWYWIRXFYTRLQUAXNXKOKOJCUBLHVDEJCZWNQZCCOBUE
LUTKFNPPCMWPRUJLVJIJRRCUPNTGSIWYGQBTLSXVTMBZCTPXEREEOZQRTTYEROAA
GBBHUZGTIDUVUXQKKVLGNDIEADAAJYAJUQWIXKMOFEIVKSRBUERTAJXANRNZDWUN
AIGCCBCKSSOXNCIERVBOKENPYWGZIGQDSPUWMKJKHYNVOFGSRZBJSPUDOTQYZZCL
ZUFSXMPWJHHOEWAQHTPMQHAQHBURSKEUOLIPFZPXLZDVIMMGAEGOZZBSINEULCAG
FCYNDZNWFAYFIYYYQAVOMVCIYVBMKUKSJGLCPXJHXWUTRIHEEGAWVOIFAYGIGHGS
RZPCPLPHZIPZHJYBGHKZSEZYNEUHLVXAIQDMVRHZUAGGDYEVAZYNIMUDESLMANGQ
PIYWKLWAFZGQFUGDHWEDSJPWVRDHDTFSFXBSEEGGREBIEOYHQVGHXDMTIHZBCVBR
YRCOATORLCWIFYFGTSBWSMXRFNFURMKTHWCGGWQWBOTRLPHLUBPGPMCBUEJAXKPC
WPLBHFEGKZEFFQMOTPTSHBNHSGCMNFJSEKETQVFWBYBVHEXRAUPOBFYNQRQQJXVN
LXTRLASYGJEJPGOONTHQXZHLYSHXKJPRCUDMYSLHGBQKHJZXNQZHKYAWSTHTSFSU
HJMAVOEGITBWYBBCWIHJMCVPAQHZRVTFLFMYLOVPYQKPNEKFOSTRNWJDRPNNLCHY
UPNVMXKLXFXTJRGTGGYCGJSTIRTPVDPDWYPGUSZNWAOLNLXVCKNLKZOUIPCNYMLM
ORAQRERQWYHUBFZRSCNMGUKAJQWOAVKNTTNNQUFTHOQJZRBFLGOEBLOMGSTLMCTE
IRRCVKBDGBTQAHDCUTIWNJNEUMAKDXAZGLNPKIYEFDFESPMVIXJAJGHYIUQGRRZG
USIOSZVFWHICBREBRCIUJDZFATODGRAUKGKKEPVLOPLAXBCRPQCSYMOVWNBHOTGJ
IIUBSDFSQQIZCTJXKADJSSVVZRBVKFQATGAXBPSBOPWACOMUOWFJTUCHJSGFEPXN
NXSYKWWRXHTISTHFITZFNEZKQHAQTBOYNXHSYSANENADZMVHRSKQTONNNZEYQDCE
OXUCTDGQPQABDYSRGDQOELOBGRJYVNNAYQQEZRTEMKYWEPXMGLZDGGFLQPKNJYYH
JKHZLMUPDCTMTOQNWZFEGSUHOLZSPAVKOELPUVMAOSDHFGZOWANIYBKRBUWWARVB
XPOXRCYASXPMELAJQLTJGBZXTBTBYNRCKVSUIXZWNEPDIXSXWFRXOAXALOZXOUPE
EIWCBKYHNDSQQILUDEFJCIXIVZSNYMTCRMPBJKCLDALLRQXEYHJOFCZZMXTKXWGX
ZGNCXYFIHQKMSDZTUSRZPQKSNMAKRHZSTPTBOADYODQJPVJBAWSJYTQJITACBOTJ
GIZXMWXPGVEDXXUDUAUGRGLDQMYBBXSABGRWKTZEBWVVFTLPGOPYOASKFKSMULRM
HDEMZGOPSEABNUTJWYANSNYNTPYDEOVQZEOXNUNXKNYKOASATJMNIXYFVJBAHDVK
IRROTBMKXCLTOXLNEPXVLXVXQWOZAICMGGMMHNREJVDDVZHHOWPDBNDJKDJQVSBT
BRWSPJQMUXQFQJEIQEDSCAIURYLWPIOJAURUGGYHWPQFZTTQNBYERLQISHGVZCFW
KMWEUMKRKWMLDIOXQCPCOWJBBSUVCLMFEJSIQJTGQCBBJACJSJKOZGEUQNTNQKHN
RFCWLONWHNAHIREQSOCBONUIGCGTVDMSNSTCNIKBMQOGFKQTITVDIRROSWUZBMLL
CPNGUFPKPJEZKPYRHCHRTCBOOFAWQJCFWNEIUOCEEILXYBLEELYSRBXNVGJFRGUQ
BFOLIUBTKHXZSUSCSZOFZEPVWNGNAIDFGPVTLSIFDVMXEXSYPCMTUKIOXENLYHMV
ZPQYYKZHSSAHZGCTTVGSRMZWCAFDIGDIFASGIJTKIYPJEKCULJMJOEDXWBFIVZQQ
IJOQBKJLEYPNLJRMBQCSQMFVXLOZZECGWWLISORCQLRDRIVACHMZNMJEXNUSRTGU
HGZBZRANVHSYVUJWIVBIGWKIVWCZLKLPVUKIYSNESTFFBOWBKVHIEDEBVEKTFQLR
HTZQXQOCTBBUAFJWOWQZUVBGEBIIBIJSAZSRAKTCYFMXNMGJGFWFPBOWQSWLMXHR
WQMIDAQCMFTOIBXPUIHQPWIEAEZWCAYQFLLGKKHYAVDAYYQMQBIKRZQFKGLYONTC
HAFBPQINRNYULDNRIWCOEZPJQVHMBQFHRHMQSYXWAMOVRUAKBIGVNHXXXJNUZGFH
TDTVZQLSEGKTHTYLHSWBYLVXVHPSKLIKJVFLGYDSXUNMWORBAMGWPSXPAUATBMJX
YISJBKSLPXKLUANBDWIBFBZIHVIGEWUWEZXSYPWKVHQHJSHQLBXAKRDKKKOTEQGQ
NITOKTVWMSBCQJENBCCLLYNSGYOOOJESUEVFNEXNDFZRCNYZQLZOBKIVPBHYJHGO
YXPFCAJPUTRLLRUTPBQNWHSODWOCONXPKAFPSUFDTHHJHZRHYPANNMUVQSAMTZFJ
RPKTSJCKGTBKLWDGHMYGNAPTMTKBMQLFIUKUICIUWEPEEDXRWSSCBJKDLWYTGNHL
XBEXEWCWVAPVUKHLFDKUULWMFGKOVVSUJFFDIDUQRNCBMIHWTSSUCLCZFNHCVWYF
SAILSLQURQFLOJSCAQYJNRVWZLMFXTVQNUVTIKQXTYRRAJZHUQSICFIIJMWVTYOO
ZAQGWVFGKSHHNSFZLJDFSGUTUAVDSSYFNKMSLGUUTZBONCUSQPFMXOVYOSUAZNBZ
XJIDBJHGTDFRABGFMDIADMVTIFMWPDEAGIUSKMMHUDQBMEFBRWSUVZRVQWYJUXGL
UJKMXIRFIAIEXANVBTJXTSSTTVCXHVQHTXBNOBTIFTVLRFSQLGZYLBIKPLNOTHPF
MUXNVIPWFXLXNVTSAFUQCSXCMRRXJJZMZEOLZJTAUAOBRTONUSHETSFZVAAJWUQB
QMWMIVNGMDGJWTTDRYSWURGHGQEFDPAQBVCGGSOBUMUMLNQRLXUTHJKYXAHWJADA
KCIHMLLNLUVQNJNNNPAKZBNYHLHMMDYVTQXIETYNLVECQXEUWHKHJVYGVUFXDCDX
VUBOHVXQGJPMCXDGZGHONOZFMSAOMPDGNQGPYUAIGIIDIVOAHHCWYOINMCOHMCVN
KXCISTUZKMZEXHZTPXFFGRYWYIQJNIIQROUHRZGJBXAAAEPFFGDDWZIFQADNTZBX
IMTMOZQPDATRCCCSIAFNKISGUPHKYDIRNBDEEAFWCUSWILKJBTXNMSWDQWMHRSDT
WFIKLULGBCYKPNTVPVLFBUGFQSRSJTMDNORQMSVBQXZLBTXKQFOBMYZQOOMFZVSS
QRGNCWWLAYVEFPIOZQPZFIBMICMOXEIBPPGOPRUDLZZSEYHULRKRHBRVTUNVNYVS
VQBOSPAGXXODFYTGHSJIPLOMHFMHIKRQAMJUATDVJQNOVGJTWKDFYSDPUUIXWSVL
RKCPHNNPHTLSJRPAASQJCQGHVMBJJFPIXSMXTFGBVZNOLNGBUHDVIELSRXESMRUA
OLUYQPPLRNCJTISKGITXLWNZXGNDFASGZLTUOSZPEJJNTBBHLADTZVGRACPDCPIJ
WLELJJKXKGVNCHNOITNCVIVXKXOAYIOGQVVVHIRCQALXEMEMIVIYTNVPGXZCEUAE
QYIOYHPCEBZXNFQVFSHTESAIXJCGSFWXRUAGQTNSHCPKSDLVEWCVDSLJLUTSUNMS
PVQOMFVCOEOYFKZPJXIWAFDNXABPBRLINFNHDATFCBLSLNHCEHJJBKQSTMHXSEYH
MBCTKGAOHBPSDYZVDFSSRAMBIPZNLUDFLJIVAEXXBHHTCFNJRMCAPTFIXJTKGDOS
AUTKXMITUEACVBOQHYJDIPKIDQSFOXWYIELNVAZARKIVPOICNIUNHGTZLABOCMYK
OZHEIYPPQKXCPUGPPGEHQYKKUVSVCJNXAXZSLCYIADINLMLTZKZNETKQEFLFHJBP
ESLPZZGOYZAZNCRRAWGCLVRVNGLCIDZWJZJMFCCYFODCXWMJTXZBPZZBEQMHFFCC
WHKPSUWNOPJZTXJOWEITQYIQMJRGNXVRUDTHZREVBHYRRBUDYOSTCDICETATZHWE
BJFWFFVCBPESTKYCCJPVXZODLRHBSZESJYUNXULPLVECEUVCBYMCRAZFHFITHYWJ
OFGYKUBUUORPYHHGLLNIGFYABGYHBXDDYATTAKFJOESYWUZQIGPGJKZUKLJXNSEF
MZVYXRWVTVVZPPMICSZZBZBJXVNZZTGZXEENYVKECQVFHDMDSABELWSVHUVYLGLZ
INHUSSGTDAEPLEVGAADPNYDMICJGLYWWVTSJZNSITWESYYPGYXGROXVJJAKZVHIU
VFTUWNEYPMPGPNHVLREANZMZRTWCDMYIQTFQSSBOWPNBFOSBRJQNXZKZHTXSYCRJ
ZONKXHLCFBHMTCHXLCTULIDWQJMXKTOQGMXZFFSLVQAFMTATQQWDYDGTAUJEVSXR
FNFSVWSKAARTZQQZDUBJNCDRJXYRUWFSJKNMTBFGBZGJUQRFPYEDNFCRNVWVWDBC
GSGXIJEHULDACVDOWELSBVKGQXEUNNWPWAADSVTBANGMPCWESCKYYZQCZMWIZISI
VKCLQWZNJTOBXTCGNYLJNLVPJOTMRYZYWDVKFFLGHTYZLVPMTPVOXVQUJQPYCUNV
XLUYVWNQPYPBNNNGYLZPATPSWPYYBXMQRZAJBDHVBHRUWYQBHVWIROVZMAVTLBMM
DNNKNGRRKNVOISKQRUTFYHMLSIVGBTGEOGHWLPACYLFCOXAWHMFMZOQUWQNYQGSC
WLYAZYDIXGMTSBSUOUJRFTORLZPPWWDICKAWRFXFIDQJSTLUKFEVWYGAXLWTZKFQ
HHMNIFTMOYUYXWATMZABEWVXZQEPBGHDOOQXMOUOQPIQUOGIHDGKZLJEHZDOLTTP
CZFTYCYOUMONOPENMKASCXCSXWMDNHXCVQLKTHUKGJJGFQVZKBJGYQHWRENOYSHG
ENAUDIHJKURGDRSWTOXBLRLRPKGILMRAOFOVJOCQWCQOUCYAAHDUIAKXBHNQRKHY
VEEBBUZRZZBFBXWMOOFQHNASZKULQEKLFSOEXXMIGWEEMEBCEEBXGIRJTISACLKH
VWSWOLPLRSXTBLQZFDMWXCEDRHSMMXOUVYVRNPHLVVXKIHQEKUGDXJCZGOJYRRXH
TABWSOQXGPCSTKUYAEMWCZTOQDAGFZCSIREZJYYADHRDWDHZNYIQUKIQELYDQGJC
NSLJLENDTYGJHWPDXHHWSFPNITICJRNJLXQBPFEIETCAPUSLCKCOCHFQEIFQSPRW
HGTDLSELORDTVVRLTARITYZTHHIJRXVIINZRTGTFODGAIQEUHFACYHJOISMRGGQS
KNQWKJCYFYRAWQLEYYXMVSWGKUNVBADULDMCSGNEASCGYDSFAYZLCZODQOXUMLVH
GTIXXCTNIYQWPFNXJEQUVKSDPEMIBCMZQGJWNXOWUZAUYAICWCJOMOLLDKGXKFUW
AKGEONAHVTCHZPIDNBLCJUHEGBLZRCDBIMVIABQJRJQBRETOIBYNKSAYNRLWWUAB
AMWNXWBABCHIVLWCAGLEJVVLIDNOLUCQROWLJQSQZHOSRRVEDOBDNCTLXGZGWOWM
WBTKTLUUQLUCJCHWFZAPAWDNZWYYIYPBBCWJMAKWTPFNAUKQMFFNXFIVRFUHIVFS
CSXWEVKNKXRGBSCBEXRJKPXUOTHDBBGWBKMFSITRTFQDMZFNLFPZGKSFTWUPEJUM
XFFPUGRFPEOLPFLLYTEHFJXWKFJGTPUCPHWVJQWTIWEEPFCWMDOUVOPLNGULTCXF
NCBHRPZEPKYKKSHXTYIDZBUGASNTYXVJHOOGBLZSUHGRQUWPJTRPRVYZDQDAKFJY
FWLQSQRLTOOIPGKEURUFREDAVRBQZCHLMSFNBRLOACPADQODCLNZEXGPPIOAKRLS
XSUJVRDCLUCFNFBBAFIAKDUCNFBACLPGYAFINORMWDGVXTRWNRLLSDWNSZQDALCD
NKQJQTHSDQHBRKIRQSTPUTWIPRUVRPEJUUEEHKARGRLQSAGMTABFXDGFPFYCOSFJ
KEHWERTALAAVSZIAFHZHGWUJWEIKKPKCKDAZSIOGIDTQFJAMAALFPIQRYWDAAKOT
XAOQERLMRYNZBLMSVRHANSXNPNNNWDTAHSZXOHCTUGJFNAVFLAQTTZWDLAIWIRUM
OTRRRBSSRSAPANYIKHZNOGPOZLJRICQXGTMCWVNGZKWPRQHMHBOXYARNLWQBWZGB
EWEDYEUYSLWZHBQXUMFFOKALGORALEVIQPKCWIJSTSVIOZKBRGMWPLYJIHHBOXOT
AMRGWIUSLPMIJECDKQXOCTDZWCHQNLOUNWSMZKUTJPBYEPZMZYVUVQICUUCLCTOC
LBGIGIHIPQQAKQFKHDZKNFNBIBNEJGOXBTBMBUVSBESJKNTXCZCOXUVHXAUZTKQL
RIGAXUHRCUOWGSJSFXCDQUFMTGOUUCLSGAIIVUBTILKYVYVEKEOXZPSDRDDYFRGG
SGIMHHJQUCIMJXZUNLJPNNLAAWIQEDYSNKPBRBDNCLFNFVGOUBSQWCDEVFBCNQPF
VEJWWHYGFGWTZFQQMXDTOIJOLSSMUUPBUZAJIOHBCNGYJOATJCZTIZQYXTANSZEN
YQCCWCDPKHIVSUHAZRXIWQZUYPRRBQRBJUAKBCNTEBKGPGOUFUJLCMMMVRWNLCXG
LUPQHKCJPWKPQWYXHFTRBZZDOTXWTOBFOHWPJZCIQWCKHYRQAOYHJLDQNWJFZBXM
KNPINGQKVYHWOMSQVRMVEKJIJTGRKKNKFPMNNLRWELRLPAFMGHNCYWSPYRWIGFGZ
HPHFVCYFEAEBYYEPAZBBMFATNNEPXJPFJMDSBFHMLGYDGRONKWWXYNNHVHWSVPWP
PPHLKWZQGADGGXCZAXDTSPJVZOVCECDVHBWDLHLKNSAQYQTRMUGICFFWNAREBMMU
ZOKZQNUTFAFEDTZINHCQLJOAGLPGCSHELWEAUKMQYUWHKJZNVNAXNRWVMPMYQXWF
ERBEWQJHJXBOJLSRZPIRFOPJMPEGOQTBQZIMFKLHINQENGXIDKVUPMYCDZWEXDSC
JTJAEEZRGNEPPFTRTBUEEQEFTMSHLNYBVEDSOULYMBNCJYGOUIHHAQHVEUPSYHJC
HAQPFLTGBOPCFLQEPPCMEXSMDNNQBQTZPRKGPCGYQUYWMPFTHUKUKYUTWJVRGYOS
VTVUYIIWOZTDBOLQZLUOJZUFUILRSIRUCVHWXAVJROZMXZZZUWTQAEPQSHFPJBIV
BFFFGLSVZNMGYNCLOHYTTBOAIMYVEMDBA


Click here to read the complete article
Re: base26 Encoder/Decoder

<v0gkkj$2afqc$1@i2pn2.org>

  copy mid

https://news.octade.net/USENET/article-flat.php?id=253&group=sci.crypt#253

  copy link   Newsgroups: sci.crypt
Path: i2pn2.org!.POSTED!not-for-mail
From: pollux@tilde.club (Stefan Claas)
Newsgroups: sci.crypt
Subject: Re: base26 Encoder/Decoder
Date: Fri, 26 Apr 2024 18:26:57 +0200
Organization: i2pn2 (i2pn.org)
Message-ID: <v0gkkj$2afqc$1@i2pn2.org>
References: <uoekm1$3rhsc$1@i2pn2.org>
<g74JN.751237$mUo.609280@fx08.ams4>
<v0dtc5$276id$1@i2pn2.org>
<v0dup1$276id$2@i2pn2.org>
<v0e01k$27aev$1@i2pn2.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Injection-Date: Fri, 26 Apr 2024 16:26:59 -0000 (UTC)
Injection-Info: i2pn2.org;
logging-data="2441036"; mail-complaints-to="usenet@i2pn2.org";
posting-account="uWi4uQdALkj7ETOfPbhNXfz0+Ra/gM5z6/Fa40dJi9U";
X-Spam-Checker-Version: SpamAssassin 4.0.0
Finger: tilde.club/~pollux/
 by: Stefan Claas - Fri, 26 Apr 2024 16:26 UTC

Stefan Claas wrote:

> Stefan Claas wrote:
>
> [...]
>
> > Ok. everything is fine. :-)
>
> Example Unicode text encoded, with -l Parameter for line-length:
>
> SASHXTRHYGJXHJBMKMWLUPZPTINOBPKNFSPZNFBWWXLWUNFRSGZHPACWHNFRFTGR

Another example, an encrypted SMS message, done with Adiantum (FPE)
and base26 encoded and grouped in five letter groups.

JFMLM THPBQ RDZJD KTZEJ MOGKY BPCIY LTHNL FNSBA

This allows one to create SMS messages on a little offline notebook
and type it in an old mobile phone, or use, for example, Modem-Manager-GUI
under Linux, to send encrypted SMS messages.

P.S. Looks now like a Diana Cryptosystem message. ;-)

--
Regards
Stefan

Re: base26 Encoder/Decoder

<v0h02v$2aujl$1@i2pn2.org>

  copy mid

https://news.octade.net/USENET/article-flat.php?id=254&group=sci.crypt#254

  copy link   Newsgroups: sci.crypt
Path: i2pn2.org!.POSTED!not-for-mail
From: pollux@tilde.club (Stefan Claas)
Newsgroups: sci.crypt
Subject: Re: base26 Encoder/Decoder
Date: Fri, 26 Apr 2024 21:42:23 +0200
Organization: i2pn2 (i2pn.org)
Message-ID: <v0h02v$2aujl$1@i2pn2.org>
References: <uoekm1$3rhsc$1@i2pn2.org>
<g74JN.751237$mUo.609280@fx08.ams4>
<v0dtc5$276id$1@i2pn2.org>
<v0dup1$276id$2@i2pn2.org>
<v0e01k$27aev$1@i2pn2.org>
<v0gkkj$2afqc$1@i2pn2.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Injection-Date: Fri, 26 Apr 2024 19:42:23 -0000 (UTC)
Injection-Info: i2pn2.org;
logging-data="2456181"; mail-complaints-to="usenet@i2pn2.org";
posting-account="uWi4uQdALkj7ETOfPbhNXfz0+Ra/gM5z6/Fa40dJi9U";
X-Spam-Checker-Version: SpamAssassin 4.0.0
Finger: tilde.club/~pollux/
 by: Stefan Claas - Fri, 26 Apr 2024 19:42 UTC

Stefan Claas wrote:

> Stefan Claas wrote:
>
> > Stefan Claas wrote:
> >
> > [...]
> >
> > > Ok. everything is fine. :-)
> >
> > Example Unicode text encoded, with -l Parameter for line-length:
> >
> > SASHXTRHYGJXHJBMKMWLUPZPTINOBPKNFSPZNFBWWXLWUNFRSGZHPACWHNFRFTGR
>
> Another example, an encrypted SMS message, done with Adiantum (FPE)
> and base26 encoded and grouped in five letter groups.
>
> JFMLM THPBQ RDZJD KTZEJ MOGKY BPCIY LTHNL FNSBA
>
> This allows one to create SMS messages on a little offline notebook
> and type it in an old mobile phone, or use, for example, Modem-Manager-GUI
> under Linux, to send encrypted SMS messages.
>
> P.S. Looks now like a Diana Cryptosystem message. ;-)
>

Added Windows Release.

https://github.com/stefanclaas/base26

--
Regards
Stefan

Re: base26 Encoder/Decoder

<v0j5oi$2ddq4$1@i2pn2.org>

  copy mid

https://news.octade.net/USENET/article-flat.php?id=256&group=sci.crypt#256

  copy link   Newsgroups: sci.crypt
Path: i2pn2.org!.POSTED!not-for-mail
From: pollux@tilde.club (Stefan Claas)
Newsgroups: sci.crypt
Subject: Re: base26 Encoder/Decoder
Date: Sat, 27 Apr 2024 17:31:29 +0200
Organization: i2pn2 (i2pn.org)
Message-ID: <v0j5oi$2ddq4$1@i2pn2.org>
References: <uoekm1$3rhsc$1@i2pn2.org>
<g74JN.751237$mUo.609280@fx08.ams4>
<v0dtc5$276id$1@i2pn2.org>
<v0dup1$276id$2@i2pn2.org>
<7P6XN.610386$oD2.194358@fx11.ams4>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Injection-Date: Sat, 27 Apr 2024 15:31:30 -0000 (UTC)
Injection-Info: i2pn2.org;
logging-data="2537284"; mail-complaints-to="usenet@i2pn2.org";
posting-account="uWi4uQdALkj7ETOfPbhNXfz0+Ra/gM5z6/Fa40dJi9U";
Finger: tilde.club/~pollux/
X-Spam-Checker-Version: SpamAssassin 4.0.0
 by: Stefan Claas - Sat, 27 Apr 2024 15:31 UTC

Cri-Cri wrote:
> What I fail to understand in the original Base26 Python module is, why the
> need for the things at the top:
>
> NOM = 851
> DENOM = 500
>
> Looks like magic numbers to me.

I asked that myself and the answer, from AI, is:

In this code, NOM and DENOM stand for “numerator” and “denominator”. They are used to calculate the length of the output when the input is being encoded or decoded.

These calculations ensure that the length of the output is correctly rounded. The values of NOM and DENOM are chosen to reflect the ratio between the length of the input and the length of the output in the Base26 encoding.

In this case, NOM = 851 and DENOM = 500, which means that the length of the output is about 85.1% of the length of the input when the input is being encoded, and about 58.8%
of the length of the input when the input is being decoded.

--
Regards
Stefan

Re: base26 Encoder/Decoder

<v0l0e2$2ff66$1@i2pn2.org>

  copy mid

https://news.octade.net/USENET/article-flat.php?id=257&group=sci.crypt#257

  copy link   Newsgroups: sci.crypt
Path: i2pn2.org!.POSTED!not-for-mail
From: pollux@tilde.club (Stefan Claas)
Newsgroups: sci.crypt
Subject: Re: base26 Encoder/Decoder
Date: Sun, 28 Apr 2024 10:12:49 +0200
Organization: i2pn2 (i2pn.org)
Message-ID: <v0l0e2$2ff66$1@i2pn2.org>
References: <uoekm1$3rhsc$1@i2pn2.org>
<g74JN.751237$mUo.609280@fx08.ams4>
<v0dtc5$276id$1@i2pn2.org>
<v0dup1$276id$2@i2pn2.org>
<7P6XN.610386$oD2.194358@fx11.ams4>
<v0j5oi$2ddq4$1@i2pn2.org>
<oknXN.41708$XrN3.19814@fx01.ams4>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Injection-Date: Sun, 28 Apr 2024 08:12:50 -0000 (UTC)
Injection-Info: i2pn2.org;
logging-data="2604230"; mail-complaints-to="usenet@i2pn2.org";
posting-account="uWi4uQdALkj7ETOfPbhNXfz0+Ra/gM5z6/Fa40dJi9U";
X-Spam-Checker-Version: SpamAssassin 4.0.0
Finger: tilde.club/~pollux/
 by: Stefan Claas - Sun, 28 Apr 2024 08:12 UTC

Cri-Cri wrote:

> On Sat, 27 Apr 2024 17:31:29 +0200, Stefan Claas wrote:
>
> > In this case, NOM = 851 and DENOM = 500, which means that the length of
> > the output is about 85.1% of the length of the input when the input is
> > being encoded, and about 58.8%
> > of the length of the input when the input is being decoded.
>
> Yeah, magic numbers. I don't like the concept of "about" here, since there
> is nothing "about" about it. ;)
>
> I suspect the concept of "about" is what is wrong with the implementation,
> since it isn't the same as what you got with your code. Or both are flawed
> and it should be something different altogether.
>
> Why didn't you ask your friend to write the encoder/decoder for you from
> scratch?
>
> If you used this approach with your Rust code, you should be able to use
> the same description to get it in whatever language you wanted.
>

My Rust version works 100% the same as the Python3 implementation from the PyPI
site and I needed an encoder/decoder that works with letters and not with digits,
like the French site does.

So, in the end people are free to choose which base26 approach they like to use,
because there is no standard, like an RFC, available.

If you use other base n encoders you will see, like in base64, base32, base58,
base85, base91 etc. the base n system relies always on letters (and some digits and special characters).

So I really see no problem here.

--
Regards
Stefan

Re: base26 Encoder/Decoder

<v0l10o$2ff66$2@i2pn2.org>

  copy mid

https://news.octade.net/USENET/article-flat.php?id=258&group=sci.crypt#258

  copy link   Newsgroups: sci.crypt
Path: i2pn2.org!.POSTED!not-for-mail
From: pollux@tilde.club (Stefan Claas)
Newsgroups: sci.crypt
Subject: Re: base26 Encoder/Decoder
Date: Sun, 28 Apr 2024 10:22:46 +0200
Organization: i2pn2 (i2pn.org)
Message-ID: <v0l10o$2ff66$2@i2pn2.org>
References: <uoekm1$3rhsc$1@i2pn2.org>
<g74JN.751237$mUo.609280@fx08.ams4>
<v0dtc5$276id$1@i2pn2.org>
<v0dup1$276id$2@i2pn2.org>
<7P6XN.610386$oD2.194358@fx11.ams4>
<v0j5oi$2ddq4$1@i2pn2.org>
<oknXN.41708$XrN3.19814@fx01.ams4>
<v0l0e2$2ff66$1@i2pn2.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Injection-Date: Sun, 28 Apr 2024 08:22:48 -0000 (UTC)
Injection-Info: i2pn2.org;
logging-data="2604230"; mail-complaints-to="usenet@i2pn2.org";
posting-account="uWi4uQdALkj7ETOfPbhNXfz0+Ra/gM5z6/Fa40dJi9U";
Finger: tilde.club/~pollux/
X-Spam-Checker-Version: SpamAssassin 4.0.0
 by: Stefan Claas - Sun, 28 Apr 2024 08:22 UTC

Stefan Claas wrote:

> If you use other base n encoders you will see, like in base64, base32, base58,
> base85, base91 etc. the base n system relies always on letters (and some digits and special characters).

I mean base encoders/decoders and not the base n system.

--
Regards
Stefan

Re: base26 Encoder/Decoder

<v0l9lf$10knh$1@dont-email.me>

  copy mid

https://news.octade.net/USENET/article-flat.php?id=260&group=sci.crypt#260

  copy link   Newsgroups: sci.crypt
Path: i2pn2.org!i2pn.org!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: klee@unibwm.de (Herbert Kleebauer)
Newsgroups: sci.crypt
Subject: Re: base26 Encoder/Decoder
Date: Sun, 28 Apr 2024 12:50:21 +0200
Organization: A noiseless patient Spider
Lines: 24
Message-ID: <v0l9lf$10knh$1@dont-email.me>
References: <uoekm1$3rhsc$1@i2pn2.org> <g74JN.751237$mUo.609280@fx08.ams4>
<v0dtc5$276id$1@i2pn2.org> <v0dup1$276id$2@i2pn2.org>
<7P6XN.610386$oD2.194358@fx11.ams4> <v0j5oi$2ddq4$1@i2pn2.org>
<oknXN.41708$XrN3.19814@fx01.ams4> <v0l0e2$2ff66$1@i2pn2.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Sun, 28 Apr 2024 12:50:23 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="869158275ee9a96dce983a1ad2f127e4";
logging-data="1069809"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX188x716jktVPx+27KyNdHq4gHnxbTOIulU="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:T7qGkDMD5/wRn4Yxnsy2ERx0aYM=
In-Reply-To: <v0l0e2$2ff66$1@i2pn2.org>
Content-Language: de-DE, en-US
 by: Herbert Kleebauer - Sun, 28 Apr 2024 10:50 UTC

On 28.04.2024 10:12, Stefan Claas wrote:

> So, in the end people are free to choose which base26 approach they like to use,
> because there is no standard, like an RFC, available.

But base26 doesn't make much sense. How big are the chunks of the
data input stream you encode in base26? If you encode each byte,
you need 2 digits for the byte, which is the same as base16 (hex format).
The same is true for 2 and 3 byte chunks (4 and 6 digits). Starting
with 4 byte chunks you can save one digit (7 instead of 8 for hex).
The next step is at 7 byte chunks (12 instead of 14 digits for hex).
But this is also the biggest size which you can handle with 64 bit
arithmetic. Starting with 11 byte chunks you can save 3 digits (19
instead of 22 for hex), but this already requires long number
arithmetic.

So, if you can't use base32 at least, better stay at base16 (hex format)
instead of base26. There is only a small advantage in size, but a big
disadvantage in computing time and you have to cope with padding if the
message length is not a multiple of the chunk length.

Re: base26 Encoder/Decoder

<v0lc45$2ft6v$1@i2pn2.org>

  copy mid

https://news.octade.net/USENET/article-flat.php?id=261&group=sci.crypt#261

  copy link   Newsgroups: sci.crypt
Path: i2pn2.org!.POSTED!not-for-mail
From: pollux@tilde.club (Stefan Claas)
Newsgroups: sci.crypt
Subject: Re: base26 Encoder/Decoder
Date: Sun, 28 Apr 2024 13:32:20 +0200
Organization: i2pn2 (i2pn.org)
Message-ID: <v0lc45$2ft6v$1@i2pn2.org>
References: <uoekm1$3rhsc$1@i2pn2.org>
<g74JN.751237$mUo.609280@fx08.ams4>
<v0dtc5$276id$1@i2pn2.org>
<v0dup1$276id$2@i2pn2.org>
<7P6XN.610386$oD2.194358@fx11.ams4>
<v0j5oi$2ddq4$1@i2pn2.org>
<oknXN.41708$XrN3.19814@fx01.ams4>
<v0l0e2$2ff66$1@i2pn2.org>
<v0l9lf$10knh$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Injection-Date: Sun, 28 Apr 2024 11:32:21 -0000 (UTC)
Injection-Info: i2pn2.org;
logging-data="2618591"; mail-complaints-to="usenet@i2pn2.org";
posting-account="uWi4uQdALkj7ETOfPbhNXfz0+Ra/gM5z6/Fa40dJi9U";
Finger: tilde.club/~pollux/
X-Spam-Checker-Version: SpamAssassin 4.0.0
 by: Stefan Claas - Sun, 28 Apr 2024 11:32 UTC

Herbert Kleebauer wrote:

> On 28.04.2024 10:12, Stefan Claas wrote:
>
> > So, in the end people are free to choose which base26 approach they like to use,
> > because there is no standard, like an RFC, available.
>
> But base26 doesn't make much sense. How big are the chunks of the
> data input stream you encode in base26? If you encode each byte,
> you need 2 digits for the byte, which is the same as base16 (hex format).
> The same is true for 2 and 3 byte chunks (4 and 6 digits). Starting
> with 4 byte chunks you can save one digit (7 instead of 8 for hex).
> The next step is at 7 byte chunks (12 instead of 14 digits for hex).
> But this is also the biggest size which you can handle with 64 bit
> arithmetic. Starting with 11 byte chunks you can save 3 digits (19
> instead of 22 for hex), but this already requires long number
> arithmetic.
>
> So, if you can't use base32 at least, better stay at base16 (hex format)
> instead of base26. There is only a small advantage in size, but a big
> disadvantage in computing time and you have to cope with padding if the
> message length is not a multiple of the chunk length.
>

Thanks for your reply, much appreciated!

Well, the reason why I like this base26 implementation is I can use it
for the Diana Cryptosystem or the Dein Star straddling checkerboard,
when using foreign languages or transmitting small binary blobs.

The second reason, I can use this also for typing in small encrypted messages
more easily, when using Format Preserving Encryption (FPE), in an old feature
phone, for sending text messages (SMS), when grouping the string as five letter
groups, to avoid typos.

Example:

$ echo -n 'Hello sci.crypt! :-)' | base16
48656c6c6f207363692e637279707421203a2d29

$ echo -n 'Hello sci.crypt! :-)' | base32
JBSWY3DPEBZWG2JOMNZHS4DUEEQDULJJ

$ echo -n 'Hello sci.crypt! :-)' | cbase32
91JPRV3F41SP6T9ECDS7JW3M44G3MB99

$ echo -n 'Hello sci.crypt! :-)' | base26 | ug -g
GNUKB WRRLQ QCISN UJYEH SKYLR PJHKG YPTEA

Hope this makes sense!

--
Regards
Stefan

Re: base26 Encoder/Decoder

<v0lcqi$2ft6v$2@i2pn2.org>

  copy mid

https://news.octade.net/USENET/article-flat.php?id=262&group=sci.crypt#262

  copy link   Newsgroups: sci.crypt
Path: i2pn2.org!.POSTED!not-for-mail
From: pollux@tilde.club (Stefan Claas)
Newsgroups: sci.crypt
Subject: Re: base26 Encoder/Decoder
Date: Sun, 28 Apr 2024 13:44:17 +0200
Organization: i2pn2 (i2pn.org)
Message-ID: <v0lcqi$2ft6v$2@i2pn2.org>
References: <uoekm1$3rhsc$1@i2pn2.org>
<g74JN.751237$mUo.609280@fx08.ams4>
<v0dtc5$276id$1@i2pn2.org>
<v0dup1$276id$2@i2pn2.org>
<7P6XN.610386$oD2.194358@fx11.ams4>
<v0j5oi$2ddq4$1@i2pn2.org>
<oknXN.41708$XrN3.19814@fx01.ams4>
<v0l0e2$2ff66$1@i2pn2.org>
<v0l9lf$10knh$1@dont-email.me>
<v0lc45$2ft6v$1@i2pn2.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Injection-Date: Sun, 28 Apr 2024 11:44:18 -0000 (UTC)
Injection-Info: i2pn2.org;
logging-data="2618591"; mail-complaints-to="usenet@i2pn2.org";
posting-account="uWi4uQdALkj7ETOfPbhNXfz0+Ra/gM5z6/Fa40dJi9U";
Finger: tilde.club/~pollux/
X-Spam-Checker-Version: SpamAssassin 4.0.0
 by: Stefan Claas - Sun, 28 Apr 2024 11:44 UTC

Stefan Claas wrote:

> Example:
>
> $ echo -n 'Hello sci.crypt! :-)' | base16
> 48656c6c6f207363692e637279707421203a2d29
>
> $ echo -n 'Hello sci.crypt! :-)' | base32
> JBSWY3DPEBZWG2JOMNZHS4DUEEQDULJJ
>
> $ echo -n 'Hello sci.crypt! :-)' | cbase32
> 91JPRV3F41SP6T9ECDS7JW3M44G3MB99
>
> $ echo -n 'Hello sci.crypt! :-)' | base26 | ug -g
> GNUKB WRRLQ QCISN UJYEH SKYLR PJHKG YPTEA
>
> Hope this makes sense!
>

P.S I tested this yesterday also with my Telefax machine and
freely available OCR software and had no errors, with base26.

--
Regards
Stefan

Re: base26 Encoder/Decoder

<v0lgs1$125o7$1@dont-email.me>

  copy mid

https://news.octade.net/USENET/article-flat.php?id=263&group=sci.crypt#263

  copy link   Newsgroups: sci.crypt
Path: i2pn2.org!i2pn.org!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: klee@unibwm.de (Herbert Kleebauer)
Newsgroups: sci.crypt
Subject: Re: base26 Encoder/Decoder
Date: Sun, 28 Apr 2024 14:53:19 +0200
Organization: A noiseless patient Spider
Lines: 67
Message-ID: <v0lgs1$125o7$1@dont-email.me>
References: <uoekm1$3rhsc$1@i2pn2.org> <g74JN.751237$mUo.609280@fx08.ams4>
<v0dtc5$276id$1@i2pn2.org> <v0dup1$276id$2@i2pn2.org>
<7P6XN.610386$oD2.194358@fx11.ams4> <v0j5oi$2ddq4$1@i2pn2.org>
<oknXN.41708$XrN3.19814@fx01.ams4> <v0l0e2$2ff66$1@i2pn2.org>
<v0l9lf$10knh$1@dont-email.me> <v0lc45$2ft6v$1@i2pn2.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Sun, 28 Apr 2024 14:53:21 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="869158275ee9a96dce983a1ad2f127e4";
logging-data="1120007"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX193/z+EtLtAZD9dNvDS1nqlbJSy9NccQ0w="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:9eygK48Uv8XAalliepShiVZnYbA=
Content-Language: de-DE, en-US
In-Reply-To: <v0lc45$2ft6v$1@i2pn2.org>
 by: Herbert Kleebauer - Sun, 28 Apr 2024 12:53 UTC

On 28.04.2024 13:32, Stefan Claas wrote:

> $ echo -n 'Hello sci.crypt! :-)' | base16
> 48656c6c6f207363692e637279707421203a2d29

> $ echo -n 'Hello sci.crypt! :-)' | base26 | ug -g
> GNUKB WRRLQ QCISN UJYEH SKYLR PJHKG YPTEA

I still don't understand it. In this example you have
a 20 byte String: Hello sci.crypt! :-)

The base16 (hex) conversion is trivial: you take a
single byte of the input string and replace it by
2 hex characters. No padding necessary, because the
chunk length is 1 byte and so the string length is
always a multiple of the chunk length.

But how does your base26 coding work. Take you four bytes
of the input string and then convert this 32 bit number
to base26 resulting in a 7 digit base26 number? There
are 5 of this 4 byte chunks which gives a total of 35
base26 digits. But how do you handle padding if the
input string length is not a multiple of 4?

Or do you treat the complete string as a single number
0x48656c6c6f207363692e637279707421203a2d29 and convert
this 160 bit number to a single base26 number? This would
also result in a 35 digit base26 number, but would
require long number arithmetic and consume a lot of
computing power (suppose the input string is 1 MByte or
even 1 GByte). In this case you don't have a problem
with padding but with leading zeroes.

But I still don't understand the advantage over base16.
If you only can use A-Z as transferable digits, you can
use an alternative to the standard hex encoding:

0 A or Q
1 B or R
2 C or S
3 D or T
4 E or U
5 F or V
6 G or W
7 H or X
8 I or Y
9 J or Z
10 K
11 L
12 M
13 N
14 O
15 P

Because there are two ways to encode 0-9, you
can use this to send a second data stream. If
A-J is used a 0 bit transferred and if Q-Z is used
a 1 bit is transferred on this second channel. You
can use this for example for a check sum or an
error correcting code.

Re: base26 Encoder/Decoder

<v0ljtg$2g491$1@i2pn2.org>

  copy mid

https://news.octade.net/USENET/article-flat.php?id=264&group=sci.crypt#264

  copy link   Newsgroups: sci.crypt
Path: i2pn2.org!.POSTED!not-for-mail
From: pollux@tilde.club (Stefan Claas)
Newsgroups: sci.crypt
Subject: Re: base26 Encoder/Decoder
Date: Sun, 28 Apr 2024 15:45:19 +0200
Organization: i2pn2 (i2pn.org)
Message-ID: <v0ljtg$2g491$1@i2pn2.org>
References: <uoekm1$3rhsc$1@i2pn2.org>
<g74JN.751237$mUo.609280@fx08.ams4>
<v0dtc5$276id$1@i2pn2.org>
<v0dup1$276id$2@i2pn2.org>
<7P6XN.610386$oD2.194358@fx11.ams4>
<v0j5oi$2ddq4$1@i2pn2.org>
<oknXN.41708$XrN3.19814@fx01.ams4>
<v0l0e2$2ff66$1@i2pn2.org>
<v0l9lf$10knh$1@dont-email.me>
<v0lc45$2ft6v$1@i2pn2.org>
<v0lgs1$125o7$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Injection-Date: Sun, 28 Apr 2024 13:45:20 -0000 (UTC)
Injection-Info: i2pn2.org;
logging-data="2625825"; mail-complaints-to="usenet@i2pn2.org";
posting-account="uWi4uQdALkj7ETOfPbhNXfz0+Ra/gM5z6/Fa40dJi9U";
Finger: tilde.club/~pollux/
X-Spam-Checker-Version: SpamAssassin 4.0.0
 by: Stefan Claas - Sun, 28 Apr 2024 13:45 UTC

Herbert Kleebauer wrote:

> But how does your base26 coding work. Take you four bytes
> of the input string and then convert this 32 bit number
> to base26 resulting in a 7 digit base26 number? There
> are 5 of this 4 byte chunks which gives a total of 35
> base26 digits. But how do you handle padding if the
> input string length is not a multiple of 4?
>
> Or do you treat the complete string as a single number
> 0x48656c6c6f207363692e637279707421203a2d29 and convert
> this 160 bit number to a single base26 number? This would
> also result in a 35 digit base26 number, but would
> require long number arithmetic and consume a lot of
> computing power (suppose the input string is 1 MByte or
> even 1 GByte). In this case you don't have a problem
> with padding but with leading zeroes.

Sorry (I get a red face ...) The Rust code is derived
from the Python3 library without thinking to much about
the logic behind it, so I can't answer your questions
correctly!

For me it was sufficient that the code works, as expected
for small payloads, when comparing the output with the
Python3 library. The program is not intended for encoding
large (binary) payloads and only meant as a helper program
for the Diana Cryptosystem or Dein Star etc.

I am no programmer like you guys are but always appreciate
the comments! And I was in need for a binary program solution,
instead of using Python scripts, which I do not like.

> But I still don't understand the advantage over base16.
> If you only can use A-Z as transferable digits, you can
> use an alternative to the standard hex encoding:
>
> 0 A or Q
> 1 B or R
> 2 C or S
> 3 D or T
> 4 E or U
> 5 F or V
> 6 G or W
> 7 H or X
> 8 I or Y
> 9 J or Z
> 10 K
> 11 L
> 12 M
> 13 N
> 14 O
> 15 P
>
> Because there are two ways to encode 0-9, you
> can use this to send a second data stream. If
> A-J is used a 0 bit transferred and if Q-Z is used
> a 1 bit is transferred on this second channel. You
> can use this for example for a check sum or an
> error correcting code.

Thank you for explaining!

--
Regards
Stefan

Re: base26 Encoder/Decoder

<v0lo29$2gbvu$1@i2pn2.org>

  copy mid

https://news.octade.net/USENET/article-flat.php?id=265&group=sci.crypt#265

  copy link   Newsgroups: sci.crypt
Path: i2pn2.org!.POSTED!not-for-mail
From: pollux@tilde.club (Stefan Claas)
Newsgroups: sci.crypt
Subject: Re: base26 Encoder/Decoder
Date: Sun, 28 Apr 2024 16:56:08 +0200
Organization: i2pn2 (i2pn.org)
Message-ID: <v0lo29$2gbvu$1@i2pn2.org>
References: <uoekm1$3rhsc$1@i2pn2.org>
<g74JN.751237$mUo.609280@fx08.ams4>
<v0dtc5$276id$1@i2pn2.org>
<v0dup1$276id$2@i2pn2.org>
<7P6XN.610386$oD2.194358@fx11.ams4>
<v0j5oi$2ddq4$1@i2pn2.org>
<oknXN.41708$XrN3.19814@fx01.ams4>
<v0l0e2$2ff66$1@i2pn2.org>
<v0l9lf$10knh$1@dont-email.me>
<v0lc45$2ft6v$1@i2pn2.org>
<v0lgs1$125o7$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Injection-Date: Sun, 28 Apr 2024 14:56:09 -0000 (UTC)
Injection-Info: i2pn2.org;
logging-data="2633726"; mail-complaints-to="usenet@i2pn2.org";
posting-account="uWi4uQdALkj7ETOfPbhNXfz0+Ra/gM5z6/Fa40dJi9U";
Finger: tilde.club/~pollux/
X-Spam-Checker-Version: SpamAssassin 4.0.0
 by: Stefan Claas - Sun, 28 Apr 2024 14:56 UTC

Herbert Kleebauer wrote:

> If you only can use A-Z as transferable digits, you can
> use an alternative to the standard hex encoding:
>
> 0 A or Q
> 1 B or R
> 2 C or S
> 3 D or T
> 4 E or U
> 5 F or V
> 6 G or W
> 7 H or X
> 8 I or Y
> 9 J or Z
> 10 K
> 11 L
> 12 M
> 13 N
> 14 O
> 15 P
>
> Because there are two ways to encode 0-9, you
> can use this to send a second data stream. If
> A-J is used a 0 bit transferred and if Q-Z is used
> a 1 bit is transferred on this second channel. You
> can use this for example for a check sum or an
> error correcting code.

Would this be the correct output for A-Z encoding?

$ echo -n 'sci.crypt is cool! :-)' | ./az
XDGTWJCOWDHSXJHQXECQWJHTSAGTWPGPWMCRSADKSNCZ

$ echo -n 'sci.crypt is cool! :-)' | base16
7363692e637279707420697320636f6f6c21203a2d29

--
Regards
Stefan

Re: base26 Encoder/Decoder

<v0om6r$2juq5$1@i2pn2.org>

  copy mid

https://news.octade.net/USENET/article-flat.php?id=267&group=sci.crypt#267

  copy link   Newsgroups: sci.crypt
Path: i2pn2.org!.POSTED!not-for-mail
From: pollux@tilde.club (Stefan Claas)
Newsgroups: sci.crypt
Subject: Re: base26 Encoder/Decoder
Date: Mon, 29 Apr 2024 19:42:50 +0200
Organization: i2pn2 (i2pn.org)
Message-ID: <v0om6r$2juq5$1@i2pn2.org>
References: <uoekm1$3rhsc$1@i2pn2.org>
<g74JN.751237$mUo.609280@fx08.ams4>
<v0dtc5$276id$1@i2pn2.org>
<v0dup1$276id$2@i2pn2.org>
<7P6XN.610386$oD2.194358@fx11.ams4>
<v0j5oi$2ddq4$1@i2pn2.org>
<oknXN.41708$XrN3.19814@fx01.ams4>
<v0l0e2$2ff66$1@i2pn2.org>
<v0l9lf$10knh$1@dont-email.me>
<v0lc45$2ft6v$1@i2pn2.org>
<v0lgs1$125o7$1@dont-email.me>
<v0lo29$2gbvu$1@i2pn2.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Injection-Date: Mon, 29 Apr 2024 17:42:52 -0000 (UTC)
Injection-Info: i2pn2.org;
logging-data="2751301"; mail-complaints-to="usenet@i2pn2.org";
posting-account="uWi4uQdALkj7ETOfPbhNXfz0+Ra/gM5z6/Fa40dJi9U";
Finger: tilde.club/~pollux/
X-Spam-Checker-Version: SpamAssassin 4.0.0
 by: Stefan Claas - Mon, 29 Apr 2024 17:42 UTC

Stefan Claas wrote:

> Herbert Kleebauer wrote:
>
> > If you only can use A-Z as transferable digits, you can
> > use an alternative to the standard hex encoding:
> >
> > 0 A or Q
> > 1 B or R
> > 2 C or S
> > 3 D or T
> > 4 E or U
> > 5 F or V
> > 6 G or W
> > 7 H or X
> > 8 I or Y
> > 9 J or Z
> > 10 K
> > 11 L
> > 12 M
> > 13 N
> > 14 O
> > 15 P
> >
> > Because there are two ways to encode 0-9, you
> > can use this to send a second data stream. If
> > A-J is used a 0 bit transferred and if Q-Z is used
> > a 1 bit is transferred on this second channel. You
> > can use this for example for a check sum or an
> > error correcting code.
>
> Would this be the correct output for A-Z encoding?
>
> $ echo -n 'sci.crypt is cool! :-)' | ./az
> XDGTWJCOWDHSXJHQXECQWJHTSAGTWPGPWMCRSADKSNCZ
>
> $ echo -n 'sci.crypt is cool! :-)' | base16
> 7363692e637279707420697320636f6f6c21203a2d29

I would say yes, because the table matches the hex
values and the encoder/decoder is also fast enough
to handle 1 GB of data, for example.

Well, a new tool to play with, thanks to Herbert's
suggestion. :-)

--
Regards
Stefan

Re: az - Telefax/OCR Test (was: base26 Encoder/Decoder)

<v0r02u$2mfpi$1@i2pn2.org>

  copy mid

https://news.octade.net/USENET/article-flat.php?id=271&group=sci.crypt#271

  copy link   Newsgroups: sci.crypt
Path: i2pn2.org!.POSTED!not-for-mail
From: pollux@tilde.club (Stefan Claas)
Newsgroups: sci.crypt
Subject: Re: az - Telefax/OCR Test (was: base26 Encoder/Decoder)
Date: Tue, 30 Apr 2024 16:43:42 +0200
Organization: i2pn2 (i2pn.org)
Message-ID: <v0r02u$2mfpi$1@i2pn2.org>
References: <uoekm1$3rhsc$1@i2pn2.org>
<g74JN.751237$mUo.609280@fx08.ams4>
<v0dtc5$276id$1@i2pn2.org>
<v0dup1$276id$2@i2pn2.org>
<7P6XN.610386$oD2.194358@fx11.ams4>
<v0j5oi$2ddq4$1@i2pn2.org>
<oknXN.41708$XrN3.19814@fx01.ams4>
<v0l0e2$2ff66$1@i2pn2.org>
<v0l9lf$10knh$1@dont-email.me>
<v0lc45$2ft6v$1@i2pn2.org>
<v0lgs1$125o7$1@dont-email.me>
<v0lo29$2gbvu$1@i2pn2.org>
<v0om6r$2juq5$1@i2pn2.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Injection-Date: Tue, 30 Apr 2024 14:43:42 -0000 (UTC)
Injection-Info: i2pn2.org;
logging-data="2834226"; mail-complaints-to="usenet@i2pn2.org";
posting-account="uWi4uQdALkj7ETOfPbhNXfz0+Ra/gM5z6/Fa40dJi9U";
X-Spam-Checker-Version: SpamAssassin 4.0.0
Finger: tilde.club/~pollux/
 by: Stefan Claas - Tue, 30 Apr 2024 14:43 UTC

Stefan Claas wrote:
> Well, a new tool to play with, thanks to Herbert's
> suggestion. :-)

Ok. I created 1000 random bytes with OpenSSL, converted
them with az, with a line length of 50 characters set.

Then the file was opened in LibreOffice, with the settings
of 16 pt, Liberation Mono font and saved as .pdf. With
these settings, 2000 characters fit exactly in an A4 page.

To send a Telefax to my Fax machine I used an online
service, where I have a paid account.

Once the Fax was received I scanned it with 200 dpi and
saved it as .png. For OCR translation I used Boxsoft Free
OCR, for Windows, because Tesseract gave me more errors
in the past. I only had one error in one line, which showed
at the beginning a dot and space, which I removed manually.

Again I used az to decode the file and a diff showed no
differences in the binaries.

Here is a URL with the files, in case someone likes to look
at them:

<https://1drv.ms/f/s!Agn0bI_1Rm5ehnT1oJLYw5HafvGB?e=R6i09c>

--
Regards
Stefan

Re: az - Telefax/OCR Test

<v0rgfd$2l2q1$1@dont-email.me>

  copy mid

https://news.octade.net/USENET/article-flat.php?id=272&group=sci.crypt#272

  copy link   Newsgroups: sci.crypt
Path: i2pn2.org!i2pn.org!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: klee@unibwm.de (Herbert Kleebauer)
Newsgroups: sci.crypt
Subject: Re: az - Telefax/OCR Test
Date: Tue, 30 Apr 2024 21:24:54 +0200
Organization: A noiseless patient Spider
Lines: 43
Message-ID: <v0rgfd$2l2q1$1@dont-email.me>
References: <uoekm1$3rhsc$1@i2pn2.org> <g74JN.751237$mUo.609280@fx08.ams4>
<v0dtc5$276id$1@i2pn2.org> <v0dup1$276id$2@i2pn2.org>
<7P6XN.610386$oD2.194358@fx11.ams4> <v0j5oi$2ddq4$1@i2pn2.org>
<oknXN.41708$XrN3.19814@fx01.ams4> <v0l0e2$2ff66$1@i2pn2.org>
<v0l9lf$10knh$1@dont-email.me> <v0lc45$2ft6v$1@i2pn2.org>
<v0lgs1$125o7$1@dont-email.me> <v0lo29$2gbvu$1@i2pn2.org>
<v0om6r$2juq5$1@i2pn2.org> <v0r02u$2mfpi$1@i2pn2.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Tue, 30 Apr 2024 21:23:25 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="5a2c0034ca102422213d9880f7eee2c6";
logging-data="2788161"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/nLBocr/aXeIjVjuu1uxBz9Q0nUMVyzIM="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:9jRJMUwBXWanD27StNAKY9sTqlM=
Content-Language: en-US
In-Reply-To: <v0r02u$2mfpi$1@i2pn2.org>
 by: Herbert Kleebauer - Tue, 30 Apr 2024 19:24 UTC

On 30.04.2024 16:43, Stefan Claas wrote:

> Ok. I created 1000 random bytes with OpenSSL, converted
> them with az, with a line length of 50 characters set.
>
> Then the file was opened in LibreOffice, with the settings
> of 16 pt, Liberation Mono font and saved as .pdf. With
> these settings, 2000 characters fit exactly in an A4 page.

But QR code exists since a long time. This is also
a pdf with one A4 page, but if you decode it, you get
a 10 kByte jpg, which is 10x the amount of data of your
text page.

http://onlib.de/temp/demo.pdf

And if you have more data to transfer, use a QR code
video, for example:

http://onlib.de/temp/qr.mp4

You can upload your video to youtube, so anybody can
download and decode it.

If you decode the QR code video, you will get a zip file
with some pictures. The password for the pictures is:
"The quick brown fox jump"

And if you want to encrypt or hide the video, take a
look at:

http://onlib.de/pub/pfv/

For example, the video:

http://onlib.de/pub/pfv/demo.mp4

has one unencrypted video (so you can just click the
above link and watch the unencrypted video) and two
encrypted videos and one zip file which you can only
access if you download the file and enter the correct
password.

Re: az - Telefax/OCR Test

<v0suh6$2opr6$1@i2pn2.org>

  copy mid

https://news.octade.net/USENET/article-flat.php?id=273&group=sci.crypt#273

  copy link   Newsgroups: sci.crypt
Path: i2pn2.org!.POSTED!not-for-mail
From: pollux@tilde.club (Stefan Claas)
Newsgroups: sci.crypt
Subject: Re: az - Telefax/OCR Test
Date: Wed, 1 May 2024 10:29:26 +0200
Organization: i2pn2 (i2pn.org)
Message-ID: <v0suh6$2opr6$1@i2pn2.org>
References: <uoekm1$3rhsc$1@i2pn2.org>
<g74JN.751237$mUo.609280@fx08.ams4>
<v0dtc5$276id$1@i2pn2.org>
<v0dup1$276id$2@i2pn2.org>
<7P6XN.610386$oD2.194358@fx11.ams4>
<v0j5oi$2ddq4$1@i2pn2.org>
<oknXN.41708$XrN3.19814@fx01.ams4>
<v0l0e2$2ff66$1@i2pn2.org>
<v0l9lf$10knh$1@dont-email.me>
<v0lc45$2ft6v$1@i2pn2.org>
<v0lgs1$125o7$1@dont-email.me>
<v0lo29$2gbvu$1@i2pn2.org>
<v0om6r$2juq5$1@i2pn2.org>
<v0r02u$2mfpi$1@i2pn2.org>
<v0rgfd$2l2q1$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Injection-Date: Wed, 1 May 2024 08:29:26 -0000 (UTC)
Injection-Info: i2pn2.org;
logging-data="2910054"; mail-complaints-to="usenet@i2pn2.org";
posting-account="uWi4uQdALkj7ETOfPbhNXfz0+Ra/gM5z6/Fa40dJi9U";
Finger: tilde.club/~pollux/
X-Spam-Checker-Version: SpamAssassin 4.0.0
 by: Stefan Claas - Wed, 1 May 2024 08:29 UTC

Herbert Kleebauer wrote:

> On 30.04.2024 16:43, Stefan Claas wrote:
>
> > Ok. I created 1000 random bytes with OpenSSL, converted
> > them with az, with a line length of 50 characters set.
> >
> > Then the file was opened in LibreOffice, with the settings
> > of 16 pt, Liberation Mono font and saved as .pdf. With
> > these settings, 2000 characters fit exactly in an A4 page.
>
> But QR code exists since a long time. This is also
> a pdf with one A4 page, but if you decode it, you get
> a 10 kByte jpg, which is 10x the amount of data of your
> text page.
>
> http://onlib.de/temp/demo.pdf
>
> And if you have more data to transfer, use a QR code
> video, for example:
>
> http://onlib.de/temp/qr.mp4
>
> You can upload your video to youtube, so anybody can
> download and decode it.
>
> If you decode the QR code video, you will get a zip file
> with some pictures. The password for the pictures is:
> "The quick brown fox jump"
>

I decoded the image and had one error in the certutil file
(one byte missing in one line at the end). The video was
also a certutil file, but with to many errors, so it wrote
a bad .mp4, which I could not decode.

How did you manage to precisely insert 12 QR-Codes nicely on
an A4 page?

--
Regards
Stefan

Re: az - Telefax/OCR Test

<v0t2ei$33aat$1@dont-email.me>

  copy mid

https://news.octade.net/USENET/article-flat.php?id=274&group=sci.crypt#274

  copy link   Newsgroups: sci.crypt
Path: i2pn2.org!i2pn.org!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: klee@unibwm.de (Herbert Kleebauer)
Newsgroups: sci.crypt
Subject: Re: az - Telefax/OCR Test
Date: Wed, 1 May 2024 11:40:17 +0200
Organization: A noiseless patient Spider
Lines: 165
Message-ID: <v0t2ei$33aat$1@dont-email.me>
References: <uoekm1$3rhsc$1@i2pn2.org> <g74JN.751237$mUo.609280@fx08.ams4>
<v0dtc5$276id$1@i2pn2.org> <v0dup1$276id$2@i2pn2.org>
<7P6XN.610386$oD2.194358@fx11.ams4> <v0j5oi$2ddq4$1@i2pn2.org>
<oknXN.41708$XrN3.19814@fx01.ams4> <v0l0e2$2ff66$1@i2pn2.org>
<v0l9lf$10knh$1@dont-email.me> <v0lc45$2ft6v$1@i2pn2.org>
<v0lgs1$125o7$1@dont-email.me> <v0lo29$2gbvu$1@i2pn2.org>
<v0om6r$2juq5$1@i2pn2.org> <v0r02u$2mfpi$1@i2pn2.org>
<v0rgfd$2l2q1$1@dont-email.me> <v0suh6$2opr6$1@i2pn2.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Wed, 01 May 2024 11:36:18 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="c3259e7c6c4cbfb7c78cba413b8a41b4";
logging-data="3254621"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+0XK5LZ4KDmcVSFG0m7IRSNqYjfCWO3mc="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:+N8EvwoBYBusj6EISU5n5tXug90=
In-Reply-To: <v0suh6$2opr6$1@i2pn2.org>
Content-Language: en-US
 by: Herbert Kleebauer - Wed, 1 May 2024 09:40 UTC

On 01.05.2024 10:29, Stefan Claas wrote:

> I decoded the image and had one error in the certutil file
> (one byte missing in one line at the end). The video was
> also a certutil file, but with to many errors, so it wrote
> a bad .mp4, which I could not decode.
>
> How did you manage to precisely insert 12 QR-Codes nicely on
> an A4 page?

Some time ago I wrote a batch to make a paper backup
from a 13 kByte binary file (so it will make only two
pages with 12 QR codes each). The input file is hard
coded (t.jpg in this case). qrencode.exe I downloaded
somewhere from the internet and convert.exe is the
universal picture tool from https://imagemagick.org .
split.exe just splits the input file in small chunks
to be encoded in single QR code (source at the end of
this post). To get the binary back from the paper print,
you have just to start a text editor and scan all the
QR codes with a Bluetooth QR code scanner (which works
like an external Bluetooth keyboard). Then execute the
generated batch file to generate the binary.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::: start batch :::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

::@echo off

certutil -f -decode %~f0 blank.png>nul
>tmp.txt echo @echo off
>>tmp.txt echo certutil -f -decode %%~f0 dmeo.jpg^>nul
>>tmp.txt echo goto :eof

certutil -f -encode t.jpg input.txt
copy /b tmp.txt + input.txt input.b64
del tmp.txt
del input.txt

split input.b64
del input.b64

for %%i in (*.spt) do (
d:\dos622\qrencode\qrencode.exe -o %%i.png -m 8 -s 4 --strict-version -v 20 -8 -r %%i
del %%i)

for /l %%i in (101,1,124) do if not exist %%i.spt.png copy blank.png %%i.spt.png
del blank.png

d:\dos622\befehle\convert.exe 101.spt.png 102.spt.png 103.spt.png +append 1.png
d:\dos622\befehle\convert.exe 104.spt.png 105.spt.png 106.spt.png +append 2.png
d:\dos622\befehle\convert.exe 107.spt.png 108.spt.png 109.spt.png +append 3.png
d:\dos622\befehle\convert.exe 110.spt.png 111.spt.png 112.spt.png +append 4.png

d:\dos622\befehle\convert.exe 1.png 2.png 3.png 4.png -append seite1.png

d:\dos622\befehle\convert.exe 113.spt.png 114.spt.png 115.spt.png +append 1.png
d:\dos622\befehle\convert.exe 116.spt.png 117.spt.png 118.spt.png +append 2.png
d:\dos622\befehle\convert.exe 119.spt.png 120.spt.png 121.spt.png +append 3.png
d:\dos622\befehle\convert.exe 122.spt.png 123.spt.png 124.spt.png +append 4.png

d:\dos622\befehle\convert.exe 1.png 2.png 3.png 4.png -append seite2.png

for /l %%i in (100,1,124) do del %%i.spt.png
for /l %%i in (1,1,4) do del %%i.png

pause
goto :eof

-----BEGIN CERTIFICATE-----
iVBORw0KGgoAAAANSUhEUgAAAcQAAAHEAQMAAACdkchcAAAABlBMVEUAAAD///+l
2Z/dAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAaUlEQVR42u3LIQEAAAgDsPdPSwPe
AYHa/LJHE9M0TdM0TdM0TdM0TdM0TdM0TdM0TdM0TdM0TdM0TdM0TdM0TdM0TdM0
TdM0TdM0TdM0TdM0TdM0TdM0TdM0TdM0TdM0TdM0TdM0TfNhFu6JKr3/W3VpAAAA
AElFTkSuQmCC
-----END CERTIFICATE-----

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::: end batch :::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Here the batch to decode the QR code video qr.mp4 .
ffmpeg.exe is the universal video tool from https://ffmpeg.org/
and qrtool.exe I downloaded somewhere from the Internet.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::: end batch :::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

::@echo off
d:\dos622\ffmpeg\bin\ffmpeg.exe -i qr.mp4 0%%07d.frame.png

for %%i in (*.frame.png) do (
D:\dos622\qrtool\qrtool.exe decode %%i>>output.b64
del %%i)

certutil -f -decode output.b64 output.zip
del output.b64

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
x:::::::::::::::: end batch :::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

And here the source of split.exe:

#define size1 674
#include <stdio.h>
FILE *in, *out, *fopen();
char buf[size1+5];
char name[16]={'0','0','0','0','0','0','0','1','.','s','p','t',0};

void print_string();
void ende();
void exit();

main(nargs,args) int nargs; char *args[];
{if (nargs!=2) ende(1);
int i,n,m;
in = fopen(args[1],"rb"); if (in==NULL) ende(2);

do {n=fread(buf,1,size1,in);
if (n == 0) break;
out = fopen(name,"wb"); if (out==NULL) ende(3);
m=fwrite(buf,1,n,out);
fclose(out);
i=7; name[i]++;
while (i) {if (name[i] == '9'+1) {name[i]='0'; name[--i]++;} else break;}
} while (n == size1);

ende(0);
}

void print_string(p) char *p; {while (*p) putc(*p++,stdout);}

void ende(i) int i;
{static char *(meld[]) = {
/* 0 */ "no errors" ,
/* 1 */ "usage: ins infile outfile" ,
/* 2 */ "can't open input file" ,
/* 3 */ "can't open output file" ,
/* 4 */ "you never should read this" ,
/* 5 */ "you never should read this" ,
/* 6 */ "you never should read this" ,
};

print_string("\n"); print_string(meld[i]); print_string("\n");
if (in!=NULL) fclose(in);
if (out!=NULL) fclose(out);
exit(0);
}

Re: az - Telefax/OCR Test

<v0t3a4$2ovc1$1@i2pn2.org>

  copy mid

https://news.octade.net/USENET/article-flat.php?id=275&group=sci.crypt#275

  copy link   Newsgroups: sci.crypt
Path: i2pn2.org!.POSTED!not-for-mail
From: pollux@tilde.club (Stefan Claas)
Newsgroups: sci.crypt
Subject: Re: az - Telefax/OCR Test
Date: Wed, 1 May 2024 11:51:00 +0200
Organization: i2pn2 (i2pn.org)
Message-ID: <v0t3a4$2ovc1$1@i2pn2.org>
References: <uoekm1$3rhsc$1@i2pn2.org>
<g74JN.751237$mUo.609280@fx08.ams4>
<v0dtc5$276id$1@i2pn2.org>
<v0dup1$276id$2@i2pn2.org>
<7P6XN.610386$oD2.194358@fx11.ams4>
<v0j5oi$2ddq4$1@i2pn2.org>
<oknXN.41708$XrN3.19814@fx01.ams4>
<v0l0e2$2ff66$1@i2pn2.org>
<v0l9lf$10knh$1@dont-email.me>
<v0lc45$2ft6v$1@i2pn2.org>
<v0lgs1$125o7$1@dont-email.me>
<v0lo29$2gbvu$1@i2pn2.org>
<v0om6r$2juq5$1@i2pn2.org>
<v0r02u$2mfpi$1@i2pn2.org>
<v0rgfd$2l2q1$1@dont-email.me>
<v0suh6$2opr6$1@i2pn2.org>
<v0t2ei$33aat$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Injection-Date: Wed, 1 May 2024 09:51:00 -0000 (UTC)
Injection-Info: i2pn2.org;
logging-data="2915713"; mail-complaints-to="usenet@i2pn2.org";
posting-account="uWi4uQdALkj7ETOfPbhNXfz0+Ra/gM5z6/Fa40dJi9U";
X-Spam-Checker-Version: SpamAssassin 4.0.0
Finger: tilde.club/~pollux/
 by: Stefan Claas - Wed, 1 May 2024 09:51 UTC

Herbert Kleebauer wrote:

> On 01.05.2024 10:29, Stefan Claas wrote:
>
> > I decoded the image and had one error in the certutil file
> > (one byte missing in one line at the end). The video was
> > also a certutil file, but with to many errors, so it wrote
> > a bad .mp4, which I could not decode.
> >
> > How did you manage to precisely insert 12 QR-Codes nicely on
> > an A4 page?
>
> Some time ago I wrote a batch to make a paper backup
> from a 13 kByte binary file (so it will make only two
> pages with 12 QR codes each). The input file is hard
> coded (t.jpg in this case). qrencode.exe I downloaded
> somewhere from the internet and convert.exe is the
> universal picture tool from https://imagemagick.org .
> split.exe just splits the input file in small chunks
> to be encoded in single QR code (source at the end of
> this post). To get the binary back from the paper print,
> you have just to start a text editor and scan all the
> QR codes with a Bluetooth QR code scanner (which works
> like an external Bluetooth keyboard). Then execute the
> generated batch file to generate the binary.

> [...]

Thanks a lot or your help, much appreciated!

Und einen schönen 1. Mai! :-)

--
Grüße
Regards
Stefan

Re: az - Telefax/OCR Test

<v106ta$2sj59$1@i2pn2.org>

  copy mid

https://news.octade.net/USENET/article-flat.php?id=278&group=sci.crypt#278

  copy link   Newsgroups: sci.crypt
Path: i2pn2.org!.POSTED!not-for-mail
From: pollux@tilde.club (Stefan Claas)
Newsgroups: sci.crypt
Subject: Re: az - Telefax/OCR Test
Date: Thu, 2 May 2024 16:10:49 +0200
Organization: i2pn2 (i2pn.org)
Message-ID: <v106ta$2sj59$1@i2pn2.org>
References: <uoekm1$3rhsc$1@i2pn2.org>
<g74JN.751237$mUo.609280@fx08.ams4>
<v0dtc5$276id$1@i2pn2.org>
<v0dup1$276id$2@i2pn2.org>
<7P6XN.610386$oD2.194358@fx11.ams4>
<v0j5oi$2ddq4$1@i2pn2.org>
<oknXN.41708$XrN3.19814@fx01.ams4>
<v0l0e2$2ff66$1@i2pn2.org>
<v0l9lf$10knh$1@dont-email.me>
<v0lc45$2ft6v$1@i2pn2.org>
<v0lgs1$125o7$1@dont-email.me>
<v0lo29$2gbvu$1@i2pn2.org>
<v0om6r$2juq5$1@i2pn2.org>
<v0r02u$2mfpi$1@i2pn2.org>
<v0rgfd$2l2q1$1@dont-email.me>
<v0suh6$2opr6$1@i2pn2.org>
<v0t2ei$33aat$1@dont-email.me>
<v0t3a4$2ovc1$1@i2pn2.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Injection-Date: Thu, 2 May 2024 14:10:50 -0000 (UTC)
Injection-Info: i2pn2.org;
logging-data="3034281"; mail-complaints-to="usenet@i2pn2.org";
posting-account="uWi4uQdALkj7ETOfPbhNXfz0+Ra/gM5z6/Fa40dJi9U";
Finger: tilde.club/~pollux/
X-Spam-Checker-Version: SpamAssassin 4.0.0
 by: Stefan Claas - Thu, 2 May 2024 14:10 UTC

Stefan Claas wrote:

> Herbert Kleebauer wrote:
>
> > On 01.05.2024 10:29, Stefan Claas wrote:
> >
> > > I decoded the image and had one error in the certutil file
> > > (one byte missing in one line at the end). The video was
> > > also a certutil file, but with to many errors, so it wrote
> > > a bad .mp4, which I could not decode.
> > >
> > > How did you manage to precisely insert 12 QR-Codes nicely on
> > > an A4 page?
> >
> > Some time ago I wrote a batch to make a paper backup
> > from a 13 kByte binary file (so it will make only two
> > pages with 12 QR codes each). The input file is hard
> > coded (t.jpg in this case). qrencode.exe I downloaded
> > somewhere from the internet and convert.exe is the
> > universal picture tool from https://imagemagick.org .
> > split.exe just splits the input file in small chunks
> > to be encoded in single QR code (source at the end of
> > this post). To get the binary back from the paper print,
> > you have just to start a text editor and scan all the
> > QR codes with a Bluetooth QR code scanner (which works
> > like an external Bluetooth keyboard). Then execute the
> > generated batch file to generate the binary.
>
> > [...]
>
> Thanks a lot or your help, much appreciated!

While I still cannot decode the video, I have now my own
solution.

Here is the Python3 code:

import qrcode
import os
import argparse
import shutil
from pyzbar.pyzbar import decode
from PIL import Image
import base64

parser = argparse.ArgumentParser()
parser.add_argument('-f', '--file', help='File to convert to/from QR codes')
parser.add_argument('-e', '--encode', help='Directory to save QR codes', default=None)
parser.add_argument('-d', '--decode', help='Directory to load QR codes from', default=None)
args = parser.parse_args()

def file_to_qrcodes(file_path, directory):
with open(file_path, 'rb') as f:
counter = 0
while True:
data = f.read(1024) # Read in chunks of 1024 bytes
if not data:
break
encoded_data = base64.b64encode(data)
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=4,
)
qr.add_data(encoded_data)
qr.make(fit=True)
img = qr.make_image(fill_color="black", back_color="white")
img.save(os.path.join(directory, f'qr{counter}.png'))
counter += 1

def qrcodes_to_file(directory, output_file):
files = sorted([f for f in os.listdir(directory) if f.startswith('qr') and f.endswith('.png')],
key=lambda x: int(x[2:-4]))
with open(output_file, 'wb') as f:
for file in files:
decoded_objects = decode(Image.open(os.path.join(directory, file)))
if decoded_objects:
encoded_data = decoded_objects[0].data
data = base64.b64decode(encoded_data)
f.write(data)

if args.file and (args.encode or args.decode):
if args.encode:
if not os.path.exists(args.encode):
os.makedirs(args.encode)
file_to_qrcodes(args.file, args.encode)
if args.decode:
if os.path.exists(args.decode):
qrcodes_to_file(args.decode, args.file)

and two bash scripts, for making a movie and for extracing the frames.

#!/bin/bash
#mm - make move from .png files
FOLDERNAME="$1"

cat $(find $FOLDERNAME -maxdepth 1 -name "*.png" | sort -V) | ffmpeg -framerate 25 -i - output.mp4

#!/bin/bash
#ef - extracts QR-Codes from an .mp4 file in a folder

FOLDERFILENAME="$1"
DIRNAME=$(dirname "$FOLDERFILENAME")
BASENAME=$(basename "$FOLDERFILENAME" .mp4)

ffmpeg -i "$FOLDERFILENAME" -start_number 0 "$DIRNAME/qr%d.png"

--
Regards
Stefan

Re: az - Telefax/OCR Test

<v15c1p$1oa1$1@i2pn2.org>

  copy mid

https://news.octade.net/USENET/article-flat.php?id=279&group=sci.crypt#279

  copy link   Newsgroups: sci.crypt
Path: i2pn2.org!.POSTED!not-for-mail
From: pollux@tilde.club (Stefan Claas)
Newsgroups: sci.crypt
Subject: Re: az - Telefax/OCR Test
Date: Sat, 4 May 2024 15:09:12 +0200
Organization: i2pn2 (i2pn.org)
Message-ID: <v15c1p$1oa1$1@i2pn2.org>
References: <uoekm1$3rhsc$1@i2pn2.org>
<g74JN.751237$mUo.609280@fx08.ams4>
<v0dtc5$276id$1@i2pn2.org>
<v0dup1$276id$2@i2pn2.org>
<7P6XN.610386$oD2.194358@fx11.ams4>
<v0j5oi$2ddq4$1@i2pn2.org>
<oknXN.41708$XrN3.19814@fx01.ams4>
<v0l0e2$2ff66$1@i2pn2.org>
<v0l9lf$10knh$1@dont-email.me>
<v0lc45$2ft6v$1@i2pn2.org>
<v0lgs1$125o7$1@dont-email.me>
<v0lo29$2gbvu$1@i2pn2.org>
<v0om6r$2juq5$1@i2pn2.org>
<v0r02u$2mfpi$1@i2pn2.org>
<v0rgfd$2l2q1$1@dont-email.me>
<v0suh6$2opr6$1@i2pn2.org>
<v0t2ei$33aat$1@dont-email.me>
<v0t3a4$2ovc1$1@i2pn2.org>
<v106ta$2sj59$1@i2pn2.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Injection-Date: Sat, 4 May 2024 13:09:13 -0000 (UTC)
Injection-Info: i2pn2.org;
logging-data="57665"; mail-complaints-to="usenet@i2pn2.org";
posting-account="uWi4uQdALkj7ETOfPbhNXfz0+Ra/gM5z6/Fa40dJi9U";
Finger: tilde.club/~pollux/
X-Spam-Checker-Version: SpamAssassin 4.0.0
 by: Stefan Claas - Sat, 4 May 2024 13:09 UTC

Stefan Claas wrote:

> While I still cannot decode the video, I have now my own
> solution.
>
> Here is the Python3 code:
>
> import qrcode
> import os
> import argparse
> import shutil
> from pyzbar.pyzbar import decode
> from PIL import Image
> import base64
>
> parser = argparse.ArgumentParser()
> parser.add_argument('-f', '--file', help='File to convert to/from QR codes')
> parser.add_argument('-e', '--encode', help='Directory to save QR codes', default=None)
> parser.add_argument('-d', '--decode', help='Directory to load QR codes from', default=None)
> args = parser.parse_args()
>
> def file_to_qrcodes(file_path, directory):
> with open(file_path, 'rb') as f:
> counter = 0

Set counter to 1 for my following bash script[1].

> ffmpeg -i "$FOLDERFILENAME" -start_number 0 "$DIRNAME/qr%d.png"

and remove -start_number 0

[1] <https://github.com/stefanclaas/QR-Code-Helpers/blob/main/qr2page.sh>

which allows you to print QR-Codes, nicely formatted, on paper, like
Herbert has shown in his example.

--
Regards
Stefan


USENET / sci.crypt / Re: base26 Encoder/Decoder

Pages:12

rocksolid light 0.9.152
clearnet tor