Вверх ↑
Этот топик читают: Гость
Этот топик был перемещен из раздела "Помощь по среде"
Разработчик
Ответов: 26061
Рейтинг: 2120
#16: 2018-01-23 17:49:50 ЛС | профиль | цитата
3042 писал(а):
Я и сам думал, как Stream преобразовать в картинку без файла - и ничего не придумал
Img_GDIFileProcessor может это сделать?

Да, можно, если картинка Stream является картинкой доступного формата (bmp, gif, ico, wmf, emf, tif, png). Те можно загрузить Stream PNG, на выходе получишь Битмап.

--- Добавлено в 2018-01-23 18:17:30

Вот схема, которая криптует сразу поток картинки ее родного формата, а графический процессор потом читает декриптованную картинку

Схема


Add(Img_GDIFileProcessor,1979947,364,140)
{
Method=1
@IsLib=True
link(onLoad,15816066:doLoad,[])
}
Add(MainForm,218580,126,84)
{
Width=377
Height=235
Caption="Crypt-DeCrypt image"
Position=1
}
Add(Button,9628864,126,133)
{
Left=10
Top=140
Width=40
Caption="Open"
link(onClick,6607378:doExecute,[])
}
Add(Image,15816066,427,140)
{
Left=10
Top=10
Width=160
Height=120
Point(ImageWidth)
Point(ImageHeight)
}
Add(Image,12515042,630,399)
{
Left=185
Top=10
Width=160
Height=120
}
Add(Button,1194282,126,259)
{
Left=55
Top=140
Width=95
Caption="Encrypt and Save"
link(onClick,12702545:doExecute,[])
}
Add(Edit,75778,371,203)
{
Left=10
Top=165
Width=85
Text="123456"
DataType=2
}
Add(Button,6051066,126,399)
{
Left=210
Top=140
Width=105
Caption="Open Encrypted"
link(onClick,14569606:doExecute,[])
}
Add(Edit,6164446,392,343)
{
Left=225
Top=165
Width=85
Text="123456"
DataType=2
}
Add(SDialog,12702545,196,259)
{
Filter="Зашифрованное изображение IMG (*.img.enc)|*.img.enc"
Title="Сохранение"
FileName=""
link(onExecute,12925532:doValue,[])
}
Add(ODialog,14569606,175,399)
{
Filter="Зашифрованное изображение IMG (*.img.enc)|*.img.enc"
Title="Открытие изображения"
FileName=""
link(onExecute,7024419:doOpen,[])
}
Add(FileStream,11939445,588,245)
{
Mode=1
AutoCopy=0
Point(doCopyFromStream)
link(FileName,12925532:Value,[(594,194)(356,194)(356,299)(251,299)])
}
Add(Message,174773,588,294)
{
Message="Зашифрованый файл сохранен!"
Caption="Информация"
Icon=4
}
Add(Message,1437305,532,315)
{
Caption="Ошибка шифрования/дешифрования"
Icon=1
}
Add(FileStream,7024419,231,399)
{
link(onLoad,16393140:doEvent1,[])
}
Add(Hub,16393140,287,399)
{
link(onEvent1,4936526:doConvert,[])
link(onEvent2,7024419:doClose,[(312,412)(312,440)(221,440)(221,412)])
}
Add(Message,6008702,588,406)
{
Message="Картинка загружена."
Caption="Информация"
Icon=4
}
Add(Hub,10861664,560,399)
{
link(onEvent1,12515042:doLoad,[])
link(onEvent2,6008702:doMessage,[])
}
Add(DeCrypt,13176887,385,399)
{
Mode=7
HashMode=0
Point(onError)
link(onDeCrypt,620174:doConvert,[])
link(Key,6164446:Text,[])
link(onError,7933554:doWork3,[(438,412)])
}
Add(EnCrypt,3985395,364,259)
{
Mode=7
HashMode=0
Point(onError)
link(onEnCrypt,5358436:doConvert,[])
link(Key,75778:Text,[])
link(onError,7933554:doWork1,[(438,272)])
}
Add(StreamConvertor,2036368,301,259)
{
Mode=6
Point(Data)
link(onResult,3985395:doEnCrypt,[])
link(Data,5142610:Stream,[])
}
Add(StreamConvertor,5358436,448,259)
{
Mode=7
Point(Data)
link(onResult,5934038:doEvent1,[])
}
Add(Memory,12925532,245,259)
{
link(onData,2036368:doConvert,[])
}
Add(Hub,5934038,539,259)
{
link(onEvent1,11939445:doCopyFromStream,[])
link(onEvent2,174773:doMessage,[(578,272)(578,300)])
}
Add(StreamConvertor,4936526,329,399)
{
Mode=6
Point(Data)
link(onResult,13176887:doDeCrypt,[])
}
Add(StreamConvertor,620174,455,399)
{
Mode=7
Point(Data)
link(onResult,12559200:doLoadFrom,[])
}
Add(StrList,14371271,476,308)
{
Strings=#8:NO_ERROR|23:ERROR_INVALID_PARAMETER|19:ERROR_INCORRECT_KEY|21:ERROR_ACQUIRE_CONTEXT|20:ERROR_GENERATION_KEY|24:ERROR_GENERATION_KEYPAIR|18:ERROR_GET_USER_KEY|16:ERROR_DERIVE_KEY|13:ERROR_ENCRYPT|13:ERROR_DECRYPT|17:ERROR_CREATE_HASH|15:ERROR_HASH_DATA|20:ERROR_GET_HASH_PARAM|17:ERROR_SIGNED_HASH|20:ERROR_EXPORT_KEYPAIR|22:ERROR_EXPORT_PUBLICKEY|23:ERROR_EXPORT_SESSIONKEY|24:ERROR_EXPORT_EXCHANGEKEY|20:ERROR_IMPORT_KEYPAIR|22:ERROR_IMPORT_PUBLICKEY|23:ERROR_IMPORT_SESSIONKEY|24:ERROR_IMPORT_EXCHANGEKEY|26:ERROR_WRONG_CONTAINER_NAME|22:ERROR_CREATE_CONTAINER|22:ERROR_DELETE_CONTAINER|26:ERROR_CONTAINER_NOT_EXISTS|30:ERROR_CONTAINER_ALREADY_EXISTS|19:ERROR_NO_CONTAINERS|
Point(doGetString)
Point(onGetString)
link(onGetString,1437305:doMessage,[])
}
Add(HubEx,7933554,434,350)
{
link(onEvent,14371271:doGetString,[])
}
Add(FileStream,5142610,301,140)
{
link(onLoad,1979947:doLoadFrom,[])
}
Add(ODialog,6607378,203,133)
{
Filter="All Image Files|*.bmp;*.gif;*.ico;*wmf;*.emf;*.tif;*.png;*.jpg;*.jpeg|BMP (*.bmp)|*.bmp|JPG (*.jpg, *.jpeg)|*.jpg;*.jpeg|GIF (*.gif)|*.gif|TIFF (*.tif)|*.tif|PNG (*.png)|*.png|ICO (*.ico)|*.ico|EMF (*.emf)|*.emf|WMF (*.wmf)|*.wmf|All files (*.*)|*.*"
FileName=""
link(onExecute,11007602:doEvent1,[])
}
Add(Hub,11007602,259,133)
{
link(onEvent1,5142610:doClose,[(284,139)(284,153)])
link(onEvent2,5142610:doOpen,[])
}
Add(Img_GDIFileProcessor,12559200,504,399)
{
elink(1979947)
link(onLoad,10861664:doEvent1,[])
}


Редактировалось 1 раз(а), последний 2018-01-23 18:17:30
карма: 22

0
Ответов: 5227
Рейтинг: 585
#17: 2018-01-26 21:54:01 ЛС | профиль | цитата
Непростое дело и время до х.. , старпёры ёк макарёк
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 233
Рейтинг: 12
#18: 2019-03-27 20:36:03 ЛС | профиль | цитата
Вроде тут о картинках идет речь.. подходящей темы не нашел.

Есть 2 картинки PNG, одна нормально конвертируется в BMP с альфа каналом, а вторая никак не хочет. Может кто знает в чем подвох?


Add(MainForm,2953706,399,140)
{
Width=419
Height=311
Position=1
TransparentManager="05"
}
Add(PNG,13315564,546,196)
{
@Hint=#5:Серый|
PNG=[ZIP150C000078DA01150CEAF389504E470D0A1A0A0000000D4948445200000030000000530804000000736B4CF800000BDC4944415458C3AD997B705CD57DC73FF7B5F7EE6A9F7A4B96ACB52CCBB271889F894D4C6D683164301008106AFA0AB499B435997626C94CD3FE01D34C3BA533499B4CA7E9A4C3501E6D834DCA60CAC309D80D7E608C6D6C1C6C5936C258485E492BED4AABDD7BEFEEBDA77FAC64EFDD5DC9EB0CE7F7C7EE9EDF39BFEFF93DCEEFFCCE594950D1540C6234D04887589AE8BBDC9D6E9CACB7FCA6521C2B301CC3F667629391447B7FF80C9F30429224194C2AC449653D121A619A69253EFDC5817517564EFA73083464E42B835C5C1C0AE8D4D192E83DD97D483ACD30974992A5B0108084418C761667379FDC76FC0613050595F95A1106DAB36B0FF7BEC6075C22C13485523D4A0164FC34D2C1CAF377BF75C7B8EA4743504BCBE2B2F2F22DBBC26F729121D2E4AB0148F86924CE9AFD7F7C70151848D4DA240A6489F095DDF11738C710E9AB869A0390F0D144977BD34B7FF65E3C50F3DA4B41B2683CF0D2F2E718E0125338C57EE5F1E2A746944ED6EEDE79A03B804401A78C4C32989898E4701015FC0232193EEC6BA7F16372E4E6745067AD1FA08965AF3CFA7F3D410AE58140068B867CC7883AE10A592AC412ED239A4EB0420B8D699EB9FFCFC7DAA731C9635F05F0D1C0A263F7BEB6569D8D8BAB8A9BCCD0776ECDDEEE034BCF50C04546FDA8EFC2CD27B69DED0D60546CA151F985FB1F3BA74C93A1805BF481423DF1F1EDFFF857A35AC8637B893401EBF77EB4F1596500097010482848386ECF3BBFFFFCCE4C5DA4CC5B0E6976FCEACE7FE02CC398451F1834D1BBEB4F0FB6053D567549D230F297DF59FD133981C0A280331BFA791469B2F39D1BCFBFBF7E24E2F3784CE0F071C7C68F038364B110CAE30A61DAFBEFFDD7ED7E5C0A57C8214974F2896F2EFE5F2CECB9982859A80B910B6BCF1CBC2D11D04AE6159048C885BAF5A74891C5915189D0F1F2963485D92829D234051EF961CB7EF2585563566052683EF0C80F5CA63C3373080EDF98F83C618CE2EE0D0EAE3BD427C8950CB248B0F5D52FED224F6E812D91C5DEF4E2ADAF8C62792024FAB537B6122688221320F8D64D838A8C554229FCF97B77318A89BBC0EE12988C7D65579D95F2CCB681FDABCC3E0C3419C3EEFD559F20EF1932CACD8797BE835B9A55AAB63CCE9223371F1EF5CCB6F071A271E00602E832FAC0F263ADBAC74053E87C693FD39835E4088BCCE67D46991FF24CB3EF069AF1CBD41FEA4B51F0E04FD131BEF518F96BAE1FC026BFE578E768DA23C1C4E5E02A5AF1CB34BEBBDCC5F4B0B32C3AA78E61550467F543C194C7179DCB9519C9A5BFE97C1C5D267ABEDD2E63A6F99D538C57A4A4F99AC3F86D27A72A00869523CBD1D563F1C1A028E6A52BE365BA86C9D6B4FEE2845CD7B0420EC5A3D804831DF8D4FEF67159F30098840AE149DC9A010A38E154C89EF61965B8675A89AA979B66CA126F86F6746C0277C11DE0DD0D6E7422921E6992CB181F3425DBD564B898244B958B642253889A0F3517119A0E67DCA67CD91937141D6B522782E09459C312AE837B1DA7A62BDBC2A12CAA05936A3A2A1764CA0E3F589A0E4C21D50C20907D532B52E57264201552055478B3DEC246BEAE13DFF117A812152391AA625C0515A9E6BA45424275AB4A3AD550B5FB83A81B435C07802076AABE1A2B1390AB593AE7B30CE4EB00902D3DA755635DAAAFAA41CEB0EA506BF682846A05734635962664B94AC6190F4EC6506A06905153D1F1605513F9E548BAB23BE54FC7D03CA965A1A6A2A663C9BA6AACE1981C495563245A31D06A04D0F08FB6CCC372E5E6E16A8C43719AD06B72B3844EE3A1F8BCF6DB78BECEAEEC3EB08C160235E9A011A0F9EDDE79016E1CEC98A8EC3EBEF852171102350004880C771DEB9A278B089964EB852A6ED6FE6303616218D7106F1023F4CC8609DF3C59D095197EE87035D6EB1B584E1BB105CDA411A38DE5AF6D98B7AA1192884C7CF1C74F5B6D7E4F82CF9366CB87F7FF3327F8848979AA0B8D185DACFEF9B7F6AD8AA0556C1B4186B62115B7FEF4B6B70F3C182D636639BA72F1EF7E610619991456D9F926A313A5939EA30F1D59D54D5DD580336992554CF4F89ED7B78F06F48A83EAC5AD61AB6F3701124C90C3BE723FF0E1A79E16BAFBBFFAE2AD2E499255553441521E775143E9A1DEF3BD3AAE8714729CEAF1B777E550091020488830511A68A68325AC39F8F07F6EB1989BE720CA2458843392008DC0E8979FFC77BBCE284BAD122626AB276F39BAE2034618C5C24141A789B6B39FDBB7E144BDC1DC1C17A7221E72C44724011201C2AF3EFE5FDF8855384AC221834EA7B9ECD3CEB160C697B7B599BA4BCD038B3E312CEA50997BBF40345B634639C092E1E23D592548FCC99F9E58DF58F52076666B6F3F3A163974744F2E9418637B7FC47D79855E06D09590674BA71C1F3DFC770D892405F215E4A21020860F171F310228B825FC515A27EFFBB9399D2D9B67A365E5AB35F2A2B7767E57CD25703C37AE5272119E7B5CB12F893EF317DF0FBC93AA186F5337A95E097C0BB9EFA5EFF24F4F0EB53422D75CB34C10CB7DE7DBF15FD2932F58F8CA2A7B532A7D04CA915FB5FB875FDB74E4532616D0E3EA3D749A217ACF7EFFC1CF3D838DE9882A3A3BAA676759E8A1C37FBD63F5379EFFE6C548FDECF697AAD65A0552040A0FEEDAF164E40C32395C877C59C56FD138A6965F2650D4E17B9ED8B4E7975F7BF5EED1AE1C2E7E7C48B345868B208B8946D8DAFEC6579F5AB21F0B179B009223955F896C84A556599A83AFF9C88EE3F73DFDDEBAC35B26567CD4968C3A862DE591D191ECF858D7C5D677EF7AA3E3189368E4718AA58B5B0190A56B5CADAABF85846BBCBFF9F4E617F08F747CB2381FB2EAEDA062F993EAD4B2FEC6216CCC59BF15378282EA4A7619409E585A9DB7A015401E17B36DA2ED04D26C8F8C8B56BC74784B2F8CD17AEF4390838A6F46BD46DD5CFE78E40256B5CA08231DF49AC8C6873FA5F25934191FC154C8BB1A93967470FCB30150502FB48E1A780066884CC6463F1B000DED6C7C54933D264AD39DF45FFE6C00748C4FDB53C44A347081A661B22A0A2A063EBC7BBA808DE97DC35DC0403A91C18E69222507770185C68BD82A3E428488112A49F03669D2A4C9D4F45AA1E2CB2C39DA6178223747BDBDF143F22ABE7CDBE47A254EFDEC89272130DD71FFE9E009EC9A0074FCE77B4F36FA3D2ECED1975C3E88AD22C65AEF7A627851C063A131BEF7D2F77E8D8F991A42D44FD37BCB26692B0BD2AE7E2989A5A20685625E26EAD95F335CEE2042BA86CBAC4E98C57BD62A1E65254CEE3BCA087919119EE99C01B5843460224C13FA352F211275444FDD78A453F5DC91B3449C2567C952907149F48C517650481C6D1FEEC177CD025E274ADBD3B72624CD73144DF15B2757BD8F8B2393275F9F00DBB3029D81E0C5A584F02F78095109111BD8F4D46A3CCFE51670D33146C823640AD8AB4F686ED603A02078651D5D44F12D689E1696FFCBB6B454E779FDCDB268EAEBAF53C004990285DB4FAE4CE029FA1CE0D9F5C9B5B4129BE73F169900AD74FCE28E1FAD2D3E04CF9100EED8DFF26B4C9C627ECF31B4EEDDF2A70C854BBEBFBD871E3A89A157D9BD2116D195BCE54FEE13F83C3373C0CE3D8CCEBE590A844F341CFC1602A1780881D8F3B27858DC24E2222A0CA10A59C842113E11126D628DD89EF9FB3B46CA672902B163AF58264242120810084984C4E77FFB08A29274F13F7BC563E24EB141F489C5A25DB48B4ED123D68A5BC51F8DFDDBFA54B539FEECBB0F8998F0157F16FF62913123BEFFDE56AD2AFDD9D254F7BA409D8F200D34D1423B1DF4B81B9FBAFBC13BCF55BD7CFFCD4F773C476EEE51B758FCCA84687CE0C7BBBF5C3D5C2262C7E0D68BDD63CDD39A733934527FB8E367DD03FEEA63371DDBFF75DF20B92B996F562F9F887C7ADB928FABA93C479A6871DA0B86BBD0988691E3778B88D0AF76CD7D91845F84DF7C94C242D3AF45D2CC1B7F20C2225074AF1700218B9088EE7E4CCBFDA6E2EBC65FFD43D120FC422EED2E1DA1888088BCF96870E23711DF77EEC83DA24E04BCE2BD004508E3EC96DB7F719DE29D479EB557888030CAC597032024610843B43EFFEDF8E91A85E76FDBFBF603A241E8A5AE9D1FA0A88721F46CD7DE47773CD7343CBF68452C1AD8F9930FEF721B852EF4CAB5174912F32562199B867CD7EB7DFBD6A4E26653B2EE684C2805296A7F21E9CB84879BCFDF7E7AF339869842AB783A2E69FF0FC02021F5EC8625BA0000000049454E44AE426082F3EC14B0]
TransparentColor=536870911
Point(onAlphaBitmap)
Point(doLoadFromStream)
Point(doAlphaBitmap)
link(onAlphaBitmap,12528568:doLoad,[])
}
Add(AlphaImage,12528568,609,203)
{
Left=215
Top=50
Width=175
Height=205
Ctl3D=0
ViewStyle=4
}
Add(Hub,9968163,511,210)
{
link(onEvent1,13315564:doLoadFromStream,[])
link(onEvent2,13315564:doAlphaBitmap,[])
}
Add(Button,6289627,455,210)
{
Left=215
Top=15
Caption="2"
link(onClick,9968163:doEvent1,[])
}
Add(PNG,4977579,546,126)
{
@Hint=#5:Серый|
PNG=[ZIPC83E010078DABC5955531C5AB71C8207199CE0122410DCDD5D83BB07777777084E707727B8BB0777778700830E3230F77C7FE23EACEAE7DDD56B7777ADE81F4AD2689F093F0300003459190955000006F0BF4142F80FF45D2A2CFE036427191D57000005FB7F0303C8CAF902007C56B61617FFF1C3CAD1CDD1D5CAD1895C565C9CDCC9C5D1C2DACE1C00F0DAC855B354573BC71304EF3C88C94705A5CA3BAAE22291AB8AC506E124D1D0532063C8455114AEE3AA0C604A4AC2118D1744C1C6C707FDC25561408DF9BC86784451141F5A1C15F3F76DDFB7D876A51B7C32FDD1B22A745A739FDB348BD88F849A26C3AEC219845A29468AB9173A363CBA7FC42412FC99CA098081D4F493C2F5FD2B0CE0394040E03B653F622F00C66B110509D0AF98DDCF421C09055E8865EAC30485C1F4BB25F1C82305E100447CE2C5CA0022523041B919346A80023880F1A499E921E00723C09836F064111094FB9CE90B03D04BA5C08529480290639B474900ACF80135B39A3192006D16008E85FC302F608D11C022AB652103F8D306E89FC140690420A1025854A2C2E90070BE00E3F1AF5FBD006199001CA93B2D81DBEF7518A7F4FF3195D928D041C52B19AC87C4E88CA8A5C544FA6D4616FF3B0E97C927932C11A641EF4C02B6600EE0DEFD1400509084FBDF6BEFDFBD66D0EB6666B8E25BD18D182FFA10A094A6A6871FC7B3D54E2200C0BE5BC0FC0703731361103F4290FD4711F5359C95214A813B38D6A21128D2022838DFD0BA77FA1F379285891DEBEBC747476B72C3627A267FB5FC3F2C078DFAB5DEED5E020420E0C7BDDE03AA6036836069B8E7BDC1A9078552E2D964E430D3AD930469481B0A1442B248392C6BDAA14D8F73A882E51C2F91F5EB9EAD94325A2C996E847A01FAF36097E10D56689713F0C74608C63789B1C2C00CF6499E1643DBADFF000C00DC75390E2C7D43820DB20ADD9FF584DE08BF4B175003822C64939D010043092A26F5BF4DC263480080444130FD1F51A287812F0CFD08C403F05B03281063AE3031AAE141310CB1CF3F83885D8CE96A42C4BE454CFF21A137665E1221E1E857B18A487142671AD46847177402BE9A20E50D7CEB0E4686131D47C236A1D88882318DD1FE1A8F849F19FE4C31200387154B453E1185A342299FC429C3AA1AA34EAE21437227E8F28937525FAA33897F1CC0160289E896664D0D6E54115C426D11EFA8E0260C932A4299FBE9C69A958057903DE7D24C28F88BABF074AEDA0AB89120243EC6D27FF605917DD88E85697448AC81870139C56CB281B206B57A94F08F660D6C57F4A3D96C83271C56B0643F32179CA718B909A9A88CB682B6D29A4C0539311507E6063237326C98CA202D654A857C334D27E6CBF0175336D6486D1986AF2B5809D8CC18BE51E2C3DC5458D1E26CB41D899F641B4AD417B016A4161C54BF9E33546673C8107E4D99D8F869DB88C89BCA40FE7D3CFC28F768E888FD88E888E24EEF73AEA98873C9B3DAC137D5BF367204C718C71CC708E6196CA21AC559AADB1585EA989C09BA62B585ADAAF52A9115D81CEE59BCD3A178B2F2A5B545BF1709ADF0ADC0D6F5676E9D98DBBF4995D2E7B41626CFA5CFD2CF601F3C51D1227043C7A22CBF11647F41FC6249E0F9A53E43A18C603196604C9D859BF532E3341398E9A8A14DDF4AEF879BF4F7F36FB9DF34BF89E899D52BABCAAA76AA5034EE3526D5132A0DD5FCEBA434D8D50E2B9197D2AA35AA727F5CAA11A95956F2574456595638AA0B9704E8BC4723E80C290C298B97A81434181D768F92A3981134793150D8A25547B807730ED3344CAFFB79D07765BC9374C50A565516F28AB3CBB16B35A9DEA75A08231E66383FE7B829219F7E2B4FBF0F88D9C1B9A13BA0232AE350E86035D7B7AD4A4B4FD3AE96A956A996BEECE1AABB2ACF2DEB91ECD2790B46171D93A3D5A795B64C9881CF3D555B57DB2EFF5C8EA728C8F758C754655B4A54D825E1D9E7507E9D91D76B1894A7E058BEE3DD73FA4AECCFFCAEFE6EFF5AFE288DAA8DD0844A85B0893AF3456084D3D9518084796CF35645DC604844BCD4E4B749FA7E5852C7BC40F1B2549C14F097F5A8FE21D5A1FDA8FD68310D020D058DBCE285E27596AA6247195D19BF02BFC2D8F4D474D1F44A2667B620EB2ADB69F669F66AF66E9BB1AE972E436B456BBBB96CE3916E99CE756BB743B82EAF4EA9B686AE4193546D6E2DF54A576D5739667987528A5275DE8AE5D09FDBD689D6CA36823FC76B089B75ADF6ADFE2696A6F8966D237543D7293D29FE9DFE71EF82886891EBE8D524BA2401AECD2E387C9A7C3B593339D7C2FE230F69E7CC96DAB318B36BEC87ADD89374C3D6B96AD98BD296F8961DAEA1F751B1D1F221934CE9424CD944A3DBE33D47726E8FCE06FB3E0B8FB9D94DD98357159BF5D75CD7D6D7915BF9531CF974793AECAE7343E3E27B2AC7F3C228F9BF596C776B0294C595832D5B4EBF329B312769D5AEFE692BF5AC029BDCE00B3D09B9E41F0A1D0A70EFB0EDE8184D71F7B78DB74D2A0F39E61985EF8A077E85FE84FA40E701E541D43096B0D1C1A2C17A9FDE9E7DFC28FAE285F936CD9F1AD7AF447F157488E28A2684D4861C0FD452588DFF4BACA5009F66CC24CD58A387FF08385B9943343931891D0A40A50D8F0CD78A108E778AD2269C674DE7F49CDF1277DD9578954893D8C9B66455E6AD6794E3A417AA62B211D8E0EEE4E8141E65B2D0995AD6CED596B59327E665A2AFE372B0EBDD855CDD471EE41EA01CFAE267308F1B387917CE0C3E8497E355326131F0A589284429F1A4824431E82BF07E51DF617B52C77FF61E2419B4A4649EE79A8F5A13D7A72755BA93A157F449FE97D4CDE94D35C25ECA70DC11465B99D8AD80A6B09DCD978797E5416ECF26C8D7C31A9A9C94E82C5645A198D26A79617962E13159631EDEF831E210DBC64CFA1B71C2B629B1065E87F173AB58D999BAEEB7557AC4464B732D8BBEE9E8BFBC69D579DFA7AFA69AFE6E2672E7DCE443AFB006B1F6935B4B23E4B51849B44F7A6A6C781B059CBD373F1FE2C27F8FD044A811688F69A5B75F56AEBED24AAF0BE8A1F151B40D361CF81B32D002637B89A2F1F938DCFF726BF5CA40599B5967B7C5E43522974808373AA60E67133F1D3770EDDB96D73151A4E3DFBECCADD4E6CAEAE18E9FB3160B16E7273B8C797AE86955E927E9E80E68EB1BCD68BB9ACD578F4F929BCCE9D3DF36BB425BC53B8AFB04DABBCDCB2766A6F985D54BD41FD45FD5B9AE17B65B4C569F1DE6AF897CBB9F38FE2D6FEA7583DF85267A3735603414972D96CDDF64DF9AC0C275D155E7CF696FF606B54AF6CE5763B00BB0EF885FD15B573B9696491604D5551356BE5F4AA38F91F57EE4DE7832A271A169C4E58C1E7C7592F03E3A0723EF8249D1F8363C7EF9D6EC232E927990589230DB8865DD654965AB65BDE999EA752A4F09CDAF5CECF840A437C980391C023ADE72F7EA13D61BE7218B299677B3BF727FE7FA0730BD6C196F16B5FA9E9ACDECDA001D6F3A31DCF61724A1B1A7FCDDFC33FA77ED6E778D9BC7D85AED5A59F57C46F6176E17021F298BCA635D395D59751DFAB61DD73E3D2DBE16E073A23CEE99ED871EEF5B3CE8CA721EAFE076CFBD8F237804FCB88BB71DE042FB3E33D9B5EE497B5DDBADDC6DF4207225BA2EBE1DB92CACF7B1B576B31568D3EF59703FBF250D46080F9DFD487A4C008AC32764264C46A0455CE6F108F1F21E08BBBC9F43CAC5677FCED2E4E17F147D4CD6E1E331073C2F5FAECECC67CC17A6DFA5A7F4D9FB95BE5FF45F12D46F8E0E8E92F64E78B1B31A3E68BE5D0D786E7992DC14EF02958FFCC803BF41AD5E1A1ED5E6CADF52085252A070B019F7103376C6CDFFF226B9998CAA2200E0430D00048502002FD0FFF01C00706701002E8C0100BE0C0000DF31D968440A00C37E2F2B21AAEEB5F1EFDDFB8FBDBDCB0AE207DBAE496D0B586828B7F74DF17159EBBEA250A4D45B62F4132A0D153F4BEBC09AC3A604C71E0C37D7FCFCBE3012A26857D790447B1789499134911D5F169E45E32607071E394616063D72A5FAFDB3A227DFD08E6D2DD89FFD2DA165C6D3F177D506E1E7CA2A37B603892DDF993CF0DFD369BFBB090567CFBAAB8DBA2BEEB2F3476927FB550F34C0AAC7FF3F3C991BDFAE4208247B1F12BCE1204C7B24FD50A267DFFE55D8407CA197265031F46BF72DE773671FDAEDCFA0C04B9A9C16668836FA97394DAF29A3334191CC02730A74102812056B6FB4B4F843D2D8E306844F3A50DC2A3096BD7FA32FE203DF2BBB7A0A27B5A7BC157443B4DFD50A4A6A1B94BF0969DB0EE20760838CEAEA1DFD19B942968D1668991B05DEF07360692F67F19BFAE0BA2FBFEC700904F4FCE94D7B4B805A8B68EF3E25C00612B7777C5CD30625008ED36F1F7B2D7BA0BB1FDDBBD007B27070AFB3FFC26C1DF3473EEC0EFAD33B6811B1028A7D73CE9DF55ED677D3370370B237D2754D440506296BC85CC2EFFAC3E85FF63B86D889425C0D9EB51E21C48663E8C084405FFB55CCFE96F72C380D1884F0CD4B3A7EF867E93651B29AB106116C9EDC74663FB004000683ED8768005D22F9A4BD3583550AC64E2CE8538EFF17A11798A3F5CFE597D32820248895BFD79BFED933F53AFCA46F57AB2DA0BD95D9E5F38DE698857BA32FF2F36A3F5A7788E49A50D087380F7085454404F7892CB48E69EF56D89A1DF49015E387EAF51DF416B41B0EFD371B04258074F4C1B874F48FB0C74017899EA7E0CF08E3D2975F8C003B3D6582F98E085B7E785CBE56C0FDA1D5DD3B4E80FE26F374F300B71FE1497D30E4FA71C9E1BBD69DE81EB3184F10773B060F1463ABD1881240BC72F85CDBCFFA67E485A4DF95A50F79C71328FC8A1844EE8112E80084CE2C82B81D18F2025F80A02D27ECE7803D4F3E81D74FCAEC307D2F97FB2FCA03F98148D0EACBFA474240DD55BAC309685D185519BA99B80BE7124831FA0F911C823A1E08F34801691FC87E364F0D85F3827F36DB8352AC05C23D7E190C44DC7D990D2230C57DA6590B64D687A07D894FDC7D0B4579798EC74F3AC75D937CFE074796D50792E481AD574ABC4CFEA49F5E5D07B3B711908917A40CC1777A551EF8137C9F2FE94D16704A047ACE2F946098EAC35A3039466532E91511BA25982F060E2D0A9F97ED22033F248FE6BFAEED84970708CB48557CC1ED3D3102380CD07E7C22FE18E0140FFC4FFE4FB1FF20C499DFC5228B79E0F751079C69F6504D425DFB27184AFF321FC8DE236D230DDD84439472F2A50715C36E469EBF0BA804410E08E06D678442D441BFD7B1DF7415A08F4A79AFB18E491FEBAE0FB4C28C0A5202C191C0240F18CF80EF2C87A4F88D6C1F2A7B9189ADD21BC9996B10494A403674423DAEFE8A10D0BBA5B0C7CAF8310B55F29A0440EC2BC8A44F1C839FBAB46D7CBF821840F97B7E4010DD5EB1D15CDCB1DC0CC6E7304F91F67010FDE0EA3E04004A2FF8C373807D920FEDACEB3F262276E01B446917062E7AA39AF918F2ED500F5D69E5E6774ABFAD0BDED6866E795B2EE5C142FC5ADEE904AA9CF8C53A51FCBE0BBCBB8306807BDCDA1790BE289BE7EDB9DDE03BEE7AE6785BC07395C7DB6AAE16E0C01774F3EA195CEEFC414C0C257E6E1B021928F39CBC3961397D82BC2C9B1FBB926AC0AD85A060E4C33B3098F02700065E94E6B8F7950351E321B170189FBBF14FDB006491DC8E2C0170C7D941BBA948C28FCDA381108E8FB248D3C87F58CAA5BD3CF25EAFE8CAC2D892B3462E6FF31791B0AF7BD8CDCF244EAF3432B303F3E0BD9BDE8448E0100A196444F9AA0FDEB013E8DEDBABF09F14AA97FCE084CD2B77FD3F1FE908FCC7EDE62ADCC76E64577E18BFA770021C3FCCC77F6283CBB9D77E74F5F20B98C40C280E55437CD7DD625B300C0761D541919E7D90FAC876FEDBB8577C8AF53CF80F412B285B0ED49CC3FFABFD337BC12CA58B37D5CBE1AC9C4B0ADDFBAFA537650ACFF8EE9E312AC5B1B058029F7B0FA2A33163B067E2107CEFDB0935E17EF69EA223C2C72CC3EFE8D90400A94139601500D2B87AC720C20AFC0E62CA817E05F9069169E7F44DF7233C08DA7ACF68AB736A611D2B7FFA2AD66F7DC94D10F4EB1E6FEFBDC0515BF91D3FF18EE2674E627BF03EF17D42F087E11C546E6EF65353601D5F45E8536DFF4D44EC276128FD5D9A9148DBCDD88B9B3AF4BB5EADC3C0B52182F5899DD13D2FB10A58B952A062583A416167BD2480F6C2714C19EB19F8F56576EF1048FEA1777B2D8E41F6095394549A47A8E6E65457D90B0D60543B10D81586DF0B2B7B0373FD09CA0BB2EF662AF43D1E4BBA457578A7813CA3C7AE802D31FFBED66EC35F535215EC0F2FAFEF8680CA83EACDAC4991FAA5139F1765FE6BE9B4FA011973015F767B8081E709600FB074D6689F3568FE64EFF38F9BBDD33EF84CF85728C9D6078A171811632712CBD104EC18F9B4243491ABE3E2DD3B8D9F5092474245AA5F9C3DAEC23C33CAC444BA2E3FF63CB1089A7A03812CE7EFA1981BBE7B16A15E445E939F3C9E3F39E043B19ED5C885BDE360FEC774D68B2DA2271457BFD7F31D2F0D8168FF06962CF803B58C31954C545F53EAA672594768A668B02BF89E7F15670FF6B2B80FE5D910E440B1534616AC271CEB8BDF43EC28EE873B11E9EA883FFAE059B0233AD947105D7E02490DE5680B843B261DFC2E034DFF736524CD252DE305EFB5D625EC5E537B196AA95EAA8A4258968B9A43B76DB8D4C4F230BE58F8C86CDC1680B70EA1A6FAC0DB0A44B4FB20A4218B78E000A187291FD65FA6D082D0561F07FEDB2F7AF78F6AE2F72E8A804D1F39A3F72B667288790EFEDE59368530F01637315D47DD531A0916843AE31F66191488E285FBAC82177D7D6300100DC0891686F3FBF480975A4FD6FD4A948828452CF4F3F6A7C79BEC919BD46013BAA3DAA91E6CF7C8DE0DDF2DF3E0BCF0F0C3579937C23054978642FF0B8447F8793E7D84EDB171A11F9B2339724B56E2198C118455A7FB45231FFD4F5FCE77235C238803B06AA5BD7A834A0A946BE3A1F47F101D063E36D3BF485CB1EA6A1A07A022D723C297FA6316381927D4D04DBB6338A301FAB8CAB4E25A8D9E8B7068C22C9D02F841880379E1F7F225FE084A013083BB0043B1E75A2FBFD5BF3BC2430B179D78D32F548398838ABFF4FA5D796E103F8841427B6F41F9701F64E32743730E9F6E460FA32FE622448228276CB2D6A9787A2D41E2FDD305DD1ABFC22E5DFB8563D7128A570AAFB2FB85E2C3A4B9B747E39E336DE7785505F4466E3774DD2BCDCA69E85C4C6BF3D437CC412014D941B5F0BBABF1FD31A7170EB6EE980B69A79DCFC44EBB5F85A19ACF9BC28850C80D207380E41641636F6561647C2CEF99079AEB18DC9657970F9E5A48CA5875FB066B140A62EDFFEFBF210404C4D9FD9AAB164208FADCFCF8AA16869D13E82AD892AF07796921933CE943964614C8F9B4DBE3B6B2ACB245434B2CBE060B8419C9C4B88E76120F6F60EC834A6D41CF9249C751219E4187F79E1488C157F6E35CB289D207DEC67E6B91AD7D0FB7D6357D6EC8968DFAC8D0FEB084F6AFE390ECA4FBA013CAC66D443A60A8136D312D255F990292C134F5F24FC65FAC59B1CD9A6253521B54D59B6AA343417D6E14E7F39977A6D4BD433660BC28E4FD21DB8D3B8BAD3E3228623FF4CE71A80F72E073273D07FC7AF8B2E00142C46370833D40FF78E843C86F0F020A06E1EFA272FB84BD7D3F650504024EFB24333E904BB03BD9A803FE678F61B98EE12EB3F3045562D7BF0B13F6D007726FE241C28E28C19EC8AF265F3E48D30CC506DF82DA6A69D768F7FF73805F52F8D29DB384EB14DD5FF64A5C859661749E8F324185F3DE299BCFB42017982E322C814A10ECE0CBE2F5A272B45D35B2EFD0C14E090D819DFC12CA535BAC7E9EC4BAA258066AC05238FD85A37B2678DC2B793C9D7618F8A87B1ADAEA408346F7E3B5978B2BCD02D76F506C895C14719255553C26A58514C5BF821F9324A514A82FE709D63F5C6D7FB98F82BA27BEB5433CF6F80BA0E0FD1904AE5D308F459610FC9BE5DE0BF2C7952064534BEB5F95ED337B7D7F823FE1C71059D04D6FF8AD199232233AFD2ECCBB60771CB9D1A0D427ADB9229979F3AAC1FF05ABDFEE3ACF6F81C73096F9957E8D919EFE3774BBE0DC72A77572BEEEC0E27F59A2E16461A0B6C4F2DDD071B2A1639A41690CA15FAB280F766FBF1C0D951468F38F2127FEF1D52E2E3778CDA7694E6DA82C4218861F547E6ECC40614A01E2BD38B3B4E7AE841197BB6B76442EA2DF3C9A5BEA31E89406696EF708CE9EC313C55AFE64597FF01FEF43EF4D5D9009942CD7791684DBE5BD40453E9AD47E540AF807C42D53ADE8A5614A34544AD72D515455522445257373B2DDEA49561BBBAAF1F14A74F534ABB3F17F79DE8A3DF71FBB40C5AE67F483EB94D89AA25EFE21302EAFF57BE58EB01F1CDD0FA1A026DC9D86F072A23004BDE094A813D73D5BA700A204783474CF9D1E378180094A00E2A509788071483A9EA2ED7FE176B64BCA8E17B40903E18DDC35072DE27E5CCAAF597859A3E40B4642E74BB643EEFCDBD1653EA0E41F803664664FDFC027A9FA0EE1BBD83FF75CBD34BFF067E22C738A2D533D8C78364376FA8D307EFA5095D71DD115CFDAC98EC15E0D21424A516ECB2D333D88668188E77F0B026A54CFBB491BC1CE22CC6451868672FC3B73861871230CC41E58870D2B7AE56C718A19E0A2F22E8C5699F9B49E66262E824613B8DC5A379B620F52C9A3E1302FBA7899BFE5798F38A4D358EF70C2EBE281CA011FA14C40A1D8C0ABEC06CBDDA0EA414728702FFB837C2610EEDE71F09D5FD42124E0EB70202CE4B4E08323A6A67382E0A35618A01699FF64CB77CBFAE7349DEBECCBDEC34A3A8B02383CEA918C5F4CB825F4A711EEEA25270022B7EED7CB32C4D00851C11C2C7052DB2F437134CBD47946E9170D852E9EB0CF09A10A467D27DE292026B5E3CCDF9E2F26125C0BBFE6789E133C26BCF90CF707C5C4B33095DDAA3C6AF78ECD714B597A579044F03F9720FDDC209D1FA0BB01897A576F4795EE54F4FF5253D0C259EF4BD79A74C299C84DA8CB420264A23D0D2E46C51FC39A513B3BE850DAD669FE834C1AC954EDB9F2A58475CFC0BA4C85516A7E816CD08A2E8C153C21FBF502CCA14862D89ACA379EB7F3CA3A71DF71F7A07642DBD691453F7CBDFDE78D0A740FD78BF776B62BF9E4187CBA8BACEC8FD8FB6606FA1718953EDB388C7CCFC60227DA3E76692059FFCEB0950082F0DF6E5FCB13ECC008F7842638AE22A0F42104D962688B1A9B43CD8BEB959731709F12D0A798913B1EDB691DD3B1055896BB7AC6F981C3E9D993E589DE801EFF50AF7BB48DD25CB77CBA05D229D3F2534A71108E0F1550A92BAC09C544B749B783F9177FD3D0CAE675D4171A35614F66D1DA2E6AC66B7DF9DFBDD5426514A9414FD3125689BFB8B49C098A1CABE80B9143B11DA310AD2441FE68EDD47174F04572730C4C4495010C73B8CEF59A5DFFF2C4CF5C141FE74C47EEC8ADC70B5B33D9B27DBB1275610DBA4D28651D9B4FB627184CEE65FC0478D8C77941147BFC4990622B888E1D34C00DFA36B01B761300D87940DAD885ED40499F3D7C87FDC946850B3ABD8D35CB08C08B1686714181707D504F40E19F8F30FDBC508A99CAA15AD200A7FF1C94EA4DACD83C5F015A54E1B0F4CF52FAEF7BA9DE8AE4C39DE9CF805ADD3CAEF13113BECDA6C086C57D07E3FBC64426F647A5B176FE22B0E53973FE62CE48C7BB357A3D895846E3125E65A917F38905A2B5AFB100FA00DCEF50B3E2D19C1C1758D2A3BF2A6C0EFFF62016566F13432C675C5AC91DAD65F3CDF8CE98AD0EA9FEE3B528ADA223B1317624DBFB68B501859CD3037AF9EC064AB915D237524D87472E84EAEEA3364D074A67068D274B8AB5D51B1CD64B42D4F11917030A869CB2D7E2DD952DE95C0607B7A2B42337671F77E62EDDA75DE959AEC0DB9BF05BE1D06BDCF6B7A16710698900D01A6553180E02D027CC110C81B0D9D0EEF1FBC131E54B71A375BDAF265EC38CC7330BC91E55E977BD531BC292F1051F246E303B96DC7202FC7033FC838D77575284ABC631E880F49070F6F8266CD4FD3AD737C610E1CFAAC2AACE9EFB30015ED2EACB832C9ED7E77436E054DF8D8EF182E383A4128EBF38314B19E25B8E1CD7D82B5D2D1B5692D676A0A5B10BC957978D61709177F21609AA208C126123EEFAE7F9519975EB16F6100D4C5EB96784A5DCC28348D6933DDDCE2F7F4B757EBAE0FE4A0D7DCA5A324DA494353BEFFEAA61B799AA161750D44CF39BD0269FE495758A1A5C5579638E15928097CC235AA2B3D38A11337B5FAAD76EF56E700F5950CB093C92241574556B9D8572F07700494C49026EC014F846FF7520C7FD97D0E7FDDFE12FB3EC53DCFBA661CDD26EEAEB6EF1DC9E2F0C8DEB945D680B82718B8C4D40615A4DDF8517F797F762323DDB58A3FE4F93389CAFEE65BA908B145A43D87EE691BBD3DCE76A0E2D382A94EBE749281831E73AD7F1C5732010E1C9C86C062CDD4686D701D6228B1672A72AEF7BC7F3DC3963220CF5E0C6F0867DF13373AF996A7BC2DAE860B9695957726B4A5215389295512BE704748099E0CB2E0668D00CA965BE9468E36032C0634BA86F456FE78D137728281C6ADEE22597E084CC2F6D656794E82509D832BC71841F9913C9F47033520F139BD9F1CA64F9D23EA544523C9B10852FE2AD57BDAC653E9187663BCAFD896C1D318D2C48B32D9CB76832161D8AB6A8B76F9EFFC250728AA2EFB7D285A8D7A5112F035436EEAD27DEFF909D6B1B649F252FE76FE7191A4B27071B93893DD553BE6C3F83DC3018B90D3608D281348F98F1848CB47BF6489EC146DA44A5BD89BBF4BF80FBF5EF8B2CAB46C4DFD4D30CE0FA88F672093ECC5E469A56EAFF2B925CF55049B8DD664CFD5561FC31C2719887531A64324687F4284ED0AC18E4AB4C3BF2FD77293FBE3390F0A56442DB70BDCA86E5CC32E983C94F6959B4ABEB48131E6DE4BDCA480FF9B7E21AAAF949444BDDD8C8BC2315F1EF79DFF2CE5AE0AA939BF924E657103019154D17095B3CA676CAA8D49CE36EC55449C56A093F4786E1145A2C9F307A883FBC047345ABC437465244C7362FE8972C53311ED179642B5CA99B1F36F461DA076ED8104E513A98B157667E5123ED44E11BEECAFC89178BADBF24FEC37640EEF6084F6231B362CBF569BF701344C7E5B378481E81E237C5D9FB6B4BC0F8D0FE1F44EF16C20A5951A67825486CDB37009A3053743F49A55FB9BA180A9383C7262291776790DA9C76E2E761EB1B14F0FD8B38643E79383D213F1B4131BDA4DF07E322F39BA88EABBDC8F71D19004E22F0AF7F44BA610E2FA5BB361A71C79731EA6C161AB768DFD7D9BDE68C3D20D9FCF5BB9E541F3FCC5FF7A8DE37A5BD3F84833F82C21D237CB6BA3E2A2EC9B106C1A8E3D64E5DC28BD7F932FE1CB2DFE39E9D56DA05D3BD74E7B04B5ABEE618CE63E8B288FDE53B3270CB356B383961ADA888E280D3C05434AB555912F4A0A4F8593E8A31AF2286839CB9971BA1C3515149153BAD961CA11B5538B2D4D9032F1B46887450088F408B6DF3BD21BA846A433EA3ADE9772FD0D95796E7BA993F665AB51A6D7C425C21CCDB661E778222AB3C68517DFB5B9CF1091CA1D2DF0DD5F933A06E8A938DCB5649847C132FE6159CA0CF375472E40E3FDCD6F202E6FEEE0BB888D344A1AB12BF7FD67491D9E3ACA691DC3EDC9664FF389B6D276BC2AE081BDE3F4DFE0AFB8E48BAD702EC678618B46F0DF5ACF63A4580780105FFF5D5E5478759CBE748F03E7BAFFEB79B2DC602C07544AA3BDFCCA5D9D34AB578E0030068171CD6E67EBD39DCCDED94BE7F45F9EE882B171770EB64FB016C72ABAF3CE506CB6C2125285CAEDB3DE6C9FE6128548BC633C54036CD4D0FE59A3FB39609917F88E08825454C30ACADA70E1A265493A84236155595CF327382AD8167754762373D60CDCA4AE418BD9086E94B24270D7DB20E66AF54515B76C294E786D355E4931577495C63385F8AB6390D1692D8ECBC2C0B6F8DB569CB75D36DC99093AC21238EA3124EE8D96F185959C0C3E52E24D8E9CFF67659EE89D6B6B2C1A164CB916BEB61D9141EBCA66DF3106F6F91F62C3D1F58D727CF8E38E39DC1A499FDD4A146909F8CE140D1101316C976A67847D3719C294B36472242CA542E50DFC041108E0B711C7C467E5E12D607F51D769E83B8C901EACF1DB1A5476E88FF0CA4B5DE00244655DE75EDB00E151C5BDC3CBBBE6190A5303FB7102DCC975B9DA37989E498079D8DA1E18F82FD3B6CBDCE2611702BB6D750B4EB2E6C7AD9C21C974011B866A0ED8262B88C82D583B2897BFB77955EBF695464E268506C1BB12DB1A96C7099E4EB5CB7C7814F5496AE92017E77856ED7DC09828A0590D089CE9489BC125E8B15281755C6DAD919217535A57B19CDE9C6EA3D5DA876FFAF38961BB713C7AE6200C174AD8CE59FC5680A55C0E656822D524A85C4D6571B5383AC7B4C1BD8F79F54D62B70F9D470AE681ACEE25A758CA516746D89E271A1EA316F6ED72607190FA879C7C1B63D7B4752925F9FFDC709E6BB08661CBFD793C8CFA1CCBB452BE7FEAC9D8E180FA7B2098658C94E7BF14F3E37A1181AA95BE547BCAA9CAD4EED6D0488970118B4FA11CEE07CAD23F80980211CB4CF58183C32AC543889A2DDEF796A07FBC9A0C5A67B20B0EA8DBEB29E6937C30F3DB72DFF3C249F368E166F10A563E216CDB209ADF97E5C3695E526754DBFEC736D2C1EB2EB22B13CAA0E2B5AB3C53C27BC461B1CDE140779613A4DA8A2A15E1A2561B7CD12C6E09ECC677AC29645ACAA8C71E29204D50C0A7A7AD6911E38AA185929010ED161EBF929DBBF84351EA2910C3A59231B99D11D47F11C40A1094D4EC7EA15B396EB92CC1DF5DC885F9E34269B62930BAE89B93BB6FE4A79EBDE048C1CF5AC674BC9A978DF2674BFFFFC2D83449815836F9DCE92C9EA6845C9563A5044C6D9B715E171D35BAA570F58E6D55843337D547FFC77C2465C299CA2FBF44799B4D9CB3E9D92382A6272D96301C12FC4FC6716403AE49D8758E860B518A14EB6FFB1C84A09D205B6DE0DF05D57C774C2BAB6A743D330F8D93381D9C162C9B6165380DB81B148A4F2E478B97453F1546FB3E6C04DB1FBA364B12ADDB034FEEF745109C67CE889776CE90929B2A1AD92217F9CEB5DAA93AA2DA728E08AEAA16994F06DCB65BBFDB7019D9C9502EBAA4D32C5529CDE552966F3E5B0DA0F67BA01B51A434B347A18647A7A1925CAB4AF8C41A655161DEDD3140F16EB4B7C98D618FC309E4930BF1591ECBF73DD486D38A70FAAE41ED289FDFAF746AF68AB44C8D51296EB1B678DBD254EA381C61157E8A84B53E13BBF0522FC814C552B1A23531B27AE49F466BC29B6A63B7D74F2D1AC1B48C9354DBA3164A1ECCEE6988F15E886F5D32DC96C2802CD4347BFFC2045B376D1AA63FA815D3EEEE3E90242A6571C0410C84F63BEABAE8C0A4403187DC238A3809483F70A8DA1AFAC576D7695F5EA12E459059F362414E0670CBC025D7BF9F9C6B8874DEB1F15255F75A9567426E74CDB02E5980D098686C3FF293595BC63247D3160565D10B5595BEBEDA4CA57AB377318889CA7922975EFD2B4F4698EA02AAC746FC0061BD4D89F8AC20E5261C9279E915ED2581294604AC77E19CE5BC9A14BCB010FFCD63F5DC3B05F18FBC65835C58AC121E3145BFA28351CA9DD7E06D760271E89E76EC3CC68A7E2515B9DADCE4B39EE7C7AECB51BC2C577998C98AE7E86C46AE3A0D2BA53A3762E37A12BB18D912DB124F840E3A27262136CCC49D372345443FD53EBFEBA994336655CA8722DDAD3935BC667A79D87E25F9C1F975536D554B65CA5CDB69702D02BF3767A3C236B5827A7A925C073B451ECFD14E389E7E6D71FE4C9E461DB377A84A06A12AFF8BBCF7BDF63A1236A21E615271D43A5C5D047DE97BA03E820E6133BFB3175C57ACBF4F45B7ACC781BD940F60DA174D34A6C912B6A96D04172C499CB57AF78157F81CBD7B8F9886F5646EBB4B77523CEDC25FABA45B26845562B6B3593CBCDDCC8B9C9741B2754885A64076B9874D4E1ACA8A6DED501E3B8CCAE97A7FFDA470AEF77B8334E7FD9CE97B8266EBC7DCB05636A79D222A82C6BA768C986E368A8B0DEB339EAD65368F384FD72ECD7B72A46D6D5F020DC4CB358A772309DA22D3D8BBE3429DE51E0A0C7E07C965CB7284C17B2BD374D3D4925AF258CBCA0141D6AD5E09E306197B5D024916E231C95C303472D8004CC99079D2A251253B79AB97937E4B30D26778A5764CDEB6AB3E47EC567B35F499AA6B40AE67C4DB0B0240A3FCDBABF470FC475624580E68CD0F5EA534E86A4FCC7DC27800E727E14881910E83471BF891409AB3AC9C770688A8672532F20B27FAB39B54A780F7D2456C2BAF5BCAE5008D36D90D6982C975E204A9ED84C28F5733B3AB024ABDAFDC1DBEBAFB086D04058323321DEB934976226F45995DBCC5A7259373EAC0EEEAA28C39394A8646D9CE0B110DCE96ED3DC5849DD96D56D839AADADBB9CB6A91966962210E54E5DC212CBFDD52BA7D8CE7489826B5506EDBA908237BA4D9D6571CD9C5523FF842A511C5565187EA8A88ABFC80CD46EF2252B03375D45AF1E265EE0AAEDF3FAA585DA48C25299816C43ACA4602BEFD25A09DA36C5036BAB76DB415651DAC2566C92C2B0543A4D84AF3A4A467C5E86006D487807A733BECD0F09EA8C18F136E078E65BB335B5776C6E45025DC75321BAD210D2B48AA310F2B58E0173C8F01BD3C77898DAAF5CFEC09452FE1F5A41817B7FDC1B26A9A1C29247345E03235A147BCC783E01CBE3EF7D173022BC7BDD11F7867BBB70BEC253118FE0A494EC71DFBE32F0F6AC06DDAC9617F74C9BC8B345D8EC01A40717A7EE9FB824E9C784EBCF7AE2D38945F6DC6CCBCC047D069FB31974B1EA836C25AA9DD435F301A049E78FC7A5E26CFA3AB57AD7ED6F2DD5B2D5B6E92E8F26E826E3F4B206368B675F7A0E881A3C6A34B9345954B3E6322B08053CE8879A299AD52A8756AAB3DCEE259014B7548E653E6587901F109238DFF04532D868C824490192ABA48283A2BF50E6A1A88B46E7EA5DCD6BCFB344E9E1CC171376C2E8E24B728D5C88ACFAE02A067F33D4B5C24CB197613D2F93FD43A31BB2C6E02559241B857FA0919826F0B2D72CC89A3B2D761E2D8E2A9B2D1F7D518CE01C427782D64683DB0CA66A41614BA182BB15253C29D14C7386A5817336D32DAB95E9B73EF90242485B8F2253A1E8009120EFA44A42D9B65EDCFECBA56F1576786DABFB28CF3E061D07B68067979680F0AB41B6CF6F97C18E41AFEE4E86A0A7C88237FFF1B81B1107BFCD155B8277B1AA999B81AE9B812100042711C31041E8534EFF07DE6B2622F68B728FA9B23FCACC5BBEB3FFEACABB3D3FA3EBE2D34549A116975120FD8E52F8A4EC55CD486BCA9A3B5C218AD2953EBA5ED20F8E1B74A584D9D62487ADFD7F023F18CF19E2141ABE2EBA117693A0A4D0744E98D531A5201024FBFCAD20FDBEDFDE52563B23B9585601648C25C13CB5C7156DBEA7519C62EE3AF3576826F89E312DDA4C935EB1A25F8A356D904D2AB0302FEED87A2369AA1852D8F27DA0B5764429C950FC5CDCD69BE6B88EB2626C01AC123AEB6CB69E7C85442159FCA5B2B3B96CA04A1E69801FB7EAB715BB2899E4C4F28540970953968C898BFB1CFD1C2127E7A075A1B01712E7843959B3069AF5531016678756B4C2F4C14E0FEE502841F98A538E56905958203A38102F1D4A318031D227BCCF2DE200EFE0CF3338B63D06FB1A17EF6E240174FACF70AEF73FD0D2B6AE397376C71A453ED87F401902024377FCF06E037F81B824E213BDB2246F94D86C53F6A98D7AB73DEFBD023E8C0C2C96032FFC417FC7B2BA1F693106455EB4CB7A8BC101D5A30288F963C6B59E25F8574F3695E152E8AC2738D1EBDDF46C51158E55DA2EB7E22CF9DB67239B0DD137942AA1A71D513136823142F9452EC9548F3CF735DB3947AA3699A13E328483ADE6BC2AD1BC45D31A40319B6BEAD835152C20E544160EFD1B1317B6BE854C4689B1836CE580FA6F72569DA43D874F076C6584E2B41CE9BA4E283DB2938440D6E6397CF03F53BA2E297B7AB5C47F5514169C378269335C21C72CA511195DF19A3D712A8C1167046EF1425323DB580A8295519FB1B9F8AB8ACACE723069ECF8B1D1B5FB0A7F992D88CBCF37D468FA8FFE3D6A6859539574F32060EE4F588EEE450A10822776F2FD3E0873A4A8234B747A88DD74D51340E2166845FEDE062ACBCFF07A0DBE557115EA71F974E79DAEEDF91FCBBD8F90BB854633747315FF863FFC3E110EC221A38E636368CDBE99C15D84CA7C040BDF777277BEE6240C1A19111CD48F3D1386DD040D11ED1D59866C9FE76E426BE4DEFE350841DCA42C4A7C5305B4EF93251835553AC8572A18ED0F4B0887FEBD13331C51D8DC051F9026F97CE5E6776E9864D5540C5868D1F75C1935C8EA3961C189EDCC15B42711BC007DFD9306A234016160DAC3058B0E27E8BBAB35D75BE4A9F9D54E31B12EB348084B0C7E4D35C42AE7EFD48345873BE720A1ADA5906D2999801555A797E3142FA3C9809BD591B3559D257CCCE1E8FC41C46E6627368521FE0D0685D54666D9C04681B02B5555E86151BBA78A3304112514BE6DEEA77A4A9686BB51DCE43F367CF9C86F955C543C8B422A21A604A6D4E3794B33954DE3148FCEBBD62DB2B6768A93A37AB8B6EEEA17867ECDF484548EEC7C402761A4497D046661D4F44014A011FE416B4211D832BDC9BF7A9653D8CF15E7A5978AAECA36DBEF3EA1B1FB6567EAFBB590A0283C6E1AF2E5EEFFCEAFA3D17D43B3DDA8B3DC3C2FB3C1F8C1BBF02F3DE3577DBBD13B3E79B7E70A0F0471A13F8A4A8AD5FCCE3498680EAF61BD5E5459C252CC8BECA0D8A029C4A9D32BA56B470F531BC236E60987ADA83C6235814B3F561919525539AC0BCD96C520DB545678D7CBBF32F11D474B6D3F52154DB6CAF6D29352585BF932261A22F79B611C843A4AF65832128816DBBFDBA979D0A548C61A1446A077A5624C86E25C147F619052CC2677C31BBC25E776C85D70E40A3B2CB8E591B9961C5CC1E355C3E7089344B4A48BAAC22056088FC08E51590ED52CD51862D2FF3758CAD9CD21E66DC5B7DBF6638630128537B5A7C4A75087491713BC9ED0A59DA0564E94FD8DC6391967AB28961B25C6B63CCF65EEA4AA378111B5711C83237969EA5E818EA284CECA6AE5846D622F34BD80AB92953B9D2B46AA817024666EB64A7BF100C3F5F48027F28FCC1B2ACFE78BF2107B4977A13549ECFCAA397F1AE73B7022C8ADB4974EFEFDA3164C4666EE3AFB4EB47A307FD9A50BCFE7DD9DBD4708E8856001E0DA8DD2CC792116399F9FB4E6D8CCE7CB1D0B4FC72872077F99D50BB808668096A4CC7D61FD1C3D362B37E3AD2CAB803687A807E27097A9B1D8BB8102517D2FE4EFD3E52D813ADF7AAA22F742B3BDA707CE53A4E523460B78ADD2EA8A86389A541EA9444369649B3D5CF178E30A73A753C65822EDFF3D0EBB5C4EF96BA6D024B73AD82D0F45C7000F54C57B72427E2D9F5868FF4DF6940E2B4F10177EE8ED2AC4CA5FC649C03658FD9A8D242D174519C2E0DAB07947C17BA95BA8018C65DEEDAC53B32F667ABCED76D9DD5901AE237B385D0C58219AF9EC99084897BB9674EB86F484FD66FF7D5E53E125EF2C55232D6EC9887C205DE85DBD0C6495CDB140161F3DB948F964431A6AFBAD8E8F5B65400F59555F8EF650DF059FD00029DD61E89FA2996DB16EE5B47C9D865589DCC25946483E03756E0AC641AE8A27AD527631B1972433C4B8B2F284064B18BBBB838F59CC6EC49B23F4903FE070438B1ED08E0AFA
карма: 2

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#19: 2019-03-27 22:45:24 ЛС | профиль | цитата
Iliya писал(а):
Есть 2 картинки PNG, одна нормально конвертируется в BMP с альфа каналом, а вторая никак не хочет.

После проверки примера, я не увидел первую картинку (это ту, которая отключена), после проверки в других редакторах увидел, что она битая.
карма: 22

0
Ответов: 233
Рейтинг: 12
#20: 2019-03-28 21:39:22 ЛС | профиль | цитата
nesco, Заработало после конвертирования PNG в BMP и назад в PNG.
карма: 2

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#21: 2019-03-28 22:50:59 ЛС | профиль | цитата
Iliya писал(а):
Заработало после конвертирования PNG в BMP и назад в PNG

Я бы вообще не использовал компонент PNG, подглючивает он иногда. Для этого есть Img_GDIFileProcessor, вот он работает более стабильно.
карма: 22

0
21
Сообщение
...
Прикрепленные файлы
(файлы не залиты)