From 7dfcc480ba1e19bd3232349fc733caef94034292 Mon Sep 17 00:00:00 2001 From: stainer_t Date: Mon, 8 Sep 2025 13:48:49 +0200 Subject: Initial commit from Polytechnique Montreal --- doc/IGE332/64_bit.eps | 2222 ++++++++++ doc/IGE332/Bibliography.tex | 34 + doc/IGE332/GuideBW.sty | 211 + doc/IGE332/GuideCOL.sty | 199 + doc/IGE332/IGE332.tex | 36 + doc/IGE332/IGNrapport.sty | 574 +++ doc/IGE332/chapter1.tex | 7412 ++++++++++++++++++++++++++++++++++ doc/IGE332/cle2000_hierarchy_uml.eps | Bin 0 -> 469818 bytes doc/IGE332/install | 45 + doc/IGE332/multiphysics.eps | 5487 +++++++++++++++++++++++++ doc/IGE332/vect.eps | 4962 +++++++++++++++++++++++ 11 files changed, 21182 insertions(+) create mode 100644 doc/IGE332/64_bit.eps create mode 100644 doc/IGE332/Bibliography.tex create mode 100644 doc/IGE332/GuideBW.sty create mode 100644 doc/IGE332/GuideCOL.sty create mode 100644 doc/IGE332/IGE332.tex create mode 100644 doc/IGE332/IGNrapport.sty create mode 100644 doc/IGE332/chapter1.tex create mode 100644 doc/IGE332/cle2000_hierarchy_uml.eps create mode 100755 doc/IGE332/install create mode 100644 doc/IGE332/multiphysics.eps create mode 100644 doc/IGE332/vect.eps (limited to 'doc/IGE332') diff --git a/doc/IGE332/64_bit.eps b/doc/IGE332/64_bit.eps new file mode 100644 index 0000000..ebb7519 --- /dev/null +++ b/doc/IGE332/64_bit.eps @@ -0,0 +1,2222 @@ +%!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Photoshop Version 12.0.4x20110407 [20110407.r.1265 2011/04/07:02:00:00 cutoff; r branch] %%Title: 64_bit.eps %%CreationDate: 23/08/12 2:35 PM %%BoundingBox: 0 0 150 177 %%HiResBoundingBox: 0 0 150 177 %%SuppressDotGainCompensation %ADO_ContainsXMP: MainFirst %%EndComments %%BeginProlog %%EndProlog %%BeginSetup %%EndSetup %ImageData: 150 177 8 3 1 150 7 "beginimage" %BeginPhotoshop: 7374 % 3842494D040400000000000F1C015A00031B25471C020000025020003842494D % 0425000000000010A866478363733C6B3DB87AF64C49D7213842494D043A0000 % 00000093000000100000000100000000000B7072696E744F7574707574000000 % 0500000000436C7253656E756D00000000436C72530000000052474243000000 % 00496E7465656E756D00000000496E746500000000436C726D000000004D7042 % 6C626F6F6C010000000F7072696E745369787465656E426974626F6F6C000000 % 000B7072696E7465724E616D6554455854000000010000003842494D043B0000 % 000001B200000010000000010000000000127072696E744F75747075744F7074 % 696F6E7300000012000000004370746E626F6F6C0000000000436C6272626F6F % 6C00000000005267734D626F6F6C000000000043726E43626F6F6C0000000000 % 436E7443626F6F6C00000000004C626C73626F6F6C00000000004E677476626F % 6F6C0000000000456D6C44626F6F6C0000000000496E7472626F6F6C00000000 % 0042636B674F626A630000000100000000000052474243000000030000000052 % 642020646F7562406FE000000000000000000047726E20646F7562406FE00000 % 00000000000000426C2020646F7562406FE00000000000000000004272645455 % 6E744623526C74000000000000000000000000426C6420556E744623526C7400 % 000000000000000000000052736C74556E74462350786C405200000000000000 % 00000A766563746F7244617461626F6F6C010000000050675073656E756D0000 % 0000506750730000000050675043000000004C656674556E744623526C740000 % 00000000000000000000546F7020556E744623526C7400000000000000000000 % 000053636C20556E74462350726340590000000000003842494D03ED00000000 % 0010004800000001000200480000000100023842494D042600000000000E0000 % 00000000000000003F8000003842494D040D0000000000040000001E3842494D % 04190000000000040000001E3842494D03F30000000000090000000000000000 % 01003842494D271000000000000A000100000000000000023842494D03F50000 % 00000048002F66660001006C66660006000000000001002F6666000100A1999A % 0006000000000001003200000001005A00000006000000000001003500000001 % 002D000000060000000000013842494D03F80000000000700000FFFFFFFFFFFF % FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03E800000000FFFFFFFFFFFFFFFFFFFF % FFFFFFFFFFFFFFFFFFFFFFFF03E800000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF % FFFFFFFFFFFFFFFF03E800000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF % FFFFFFFF03E800003842494D0408000000000010000000010000024000000240 % 000000003842494D041E000000000004000000003842494D041A00000000035B % 000000060000000000000000000000B10000009600000013006100700070006C % 0065005F00360034005F006200690074005F0073006800690065006C00640000 % 0001000000000000000000000000000000000000000100000000000000000000 % 0096000000B10000000000000000000000000000000001000000000000000000 % 0000000000000000000010000000010000000000006E756C6C00000002000000 % 06626F756E64734F626A63000000010000000000005263743100000004000000 % 00546F70206C6F6E6700000000000000004C6566746C6F6E6700000000000000 % 0042746F6D6C6F6E67000000B100000000526768746C6F6E6700000096000000 % 06736C69636573566C4C73000000014F626A6300000001000000000005736C69 % 63650000001200000007736C69636549446C6F6E67000000000000000767726F % 757049446C6F6E6700000000000000066F726967696E656E756D0000000C4553 % 6C6963654F726967696E0000000D6175746F47656E6572617465640000000054 % 797065656E756D0000000A45536C6963655479706500000000496D6720000000 % 06626F756E64734F626A63000000010000000000005263743100000004000000 % 00546F70206C6F6E6700000000000000004C6566746C6F6E6700000000000000 % 0042746F6D6C6F6E67000000B100000000526768746C6F6E6700000096000000 % 0375726C54455854000000010000000000006E756C6C54455854000000010000 % 000000004D7367655445585400000001000000000006616C7454616754455854 % 0000000100000000000E63656C6C54657874497348544D4C626F6F6C01000000 % 0863656C6C546578745445585400000001000000000009686F727A416C69676E % 656E756D0000000F45536C696365486F727A416C69676E000000076465666175 % 6C740000000976657274416C69676E656E756D0000000F45536C696365566572 % 74416C69676E0000000764656661756C740000000B6267436F6C6F7254797065 % 656E756D0000001145536C6963654247436F6C6F7254797065000000004E6F6E % 6500000009746F704F75747365746C6F6E67000000000000000A6C6566744F75 % 747365746C6F6E67000000000000000C626F74746F6D4F75747365746C6F6E67 % 000000000000000B72696768744F75747365746C6F6E6700000000003842494D % 042800000000000C000000023FF00000000000003842494D0414000000000004 % 000000013842494D040C00000000131E0000000100000088000000A000000198 % 0000FF000000130200180001FFD8FFED000C41646F62655F434D0001FFEE000E % 41646F626500648000000001FFDB0084000C08080809080C09090C110B0A0B11 % 150F0C0C0F1518131315131318110C0C0C0C0C0C110C0C0C0C0C0C0C0C0C0C0C % 0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C010D0B0B0D0E0D100E0E10140E0E0E % 14140E0E0E0E14110C0C0C0C0C11110C0C0C0C0C0C110C0C0C0C0C0C0C0C0C0C % 0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0CFFC000110800A000880301220002 % 1101031101FFDD00040009FFC4013F0000010501010101010100000000000000 % 030001020405060708090A0B0100010501010101010100000000000000010002 % 030405060708090A0B1000010401030204020507060805030C33010002110304 % 211231054151611322718132061491A1B14223241552C16233347282D1430725 % 9253F0E1F163733516A2B283264493546445C2A3743617D255E265F2B384C3D3 % 75E3F3462794A485B495C4D4E4F4A5B5C5D5E5F55666768696A6B6C6D6E6F637 % 475767778797A7B7C7D7E7F71100020201020404030405060707060535010002 % 1103213112044151617122130532819114A1B14223C152D1F0332462E1728292 % 435315637334F1250616A2B283072635C2D2449354A317644555367465E2F2B3 % 84C3D375E3F34694A485B495C4D4E4F4A5B5C5D5E5F55666768696A6B6C6D6E6 % F62737475767778797A7B7C7FFDA000C03010002110311003F00F55492492529 % 314E989494B4A705711D4BEB4DF7673DF8573AAC6AC965458747C7D2B4833BF7 % 3BF9B51AFEB7F556686C6583F96C93FF0041D5A8BDE85D3707C3B31883A6A2F8 % 4F47B994A5715FF3D7A97EE63FC763FF00F4AA0D9F5B7AAD823D66D7FF0016C0 % 3FEAFD44BDE8287C3B3F87DAF77296ABCF075ECF0FDE32ADDDE3B89FFA27D9FF % 004559AFEB7754673632C1E0F60FFD166B48678AE3F0DCC3620FE0F7494AE2BF % E7AF5288D947C763FF00F4AA159F5BBAAD9316B2BFEA307FDFCD897BD0F15BFE % 8ECFE1F6BDD4A4B8DE87F59AD6E7B29CCB5D653944303DE676BCFF0034EFE436 % C77E8DFF00D85D8829F09890B0C19F04F0CB865D4583DD924993A73129249249 % 4FFFD0F5549249252CB9EFAEDD6074EE8CEAD96065F9A7D0AC92010D23F58B1B % AB5DEDAFF47BFF0032DB6A5D0AE73AFF00556D39ADC6F428BC57587137B3790E % 793A3351F9AD625C1298318E848DD7E29C61923398E28C4D98F77CE865540001 % EC11A000B784BED757FA46FF009C3FBD767FB659FF0070B0BFED9FFCCD3FED96 % FF00DC2C2FFB67FF0033517FA3F2FEF0753FD358BFCD1FB5E2FED75FFA46FF00 % 9C3FBD2FB5D7FE91BFE70FFC92ECBF6E553030F0891D8533FF0052E7297ED968 % D0E0E183CC1A20FE2E4BEE197F782BFD358BFCD4BED78BFB5D7FE91BFE70FF00 % C925F6BAFF00D237FCE1FF00925D9FED967FDC2C2FFB67FF00334BF6CB3FEE16 % 17FDB3FF0099A5FE8FCBFBC15FE9AC5FE6A5FE33C67DAEBFF48DFF00387F7A5F % 6BABFD237FCE1FDEBB3FDB2DFF00B8587FF6C8FF00C9A6FDBB4FFDC4C1F0FE64 % 73FE7A5FE8FCBFBC15FE9AC5FE6A5F6BC61CAA9C0B4D8D83CC3877F0D57A8FD5 % 6EAC3AB746A320B83AEAE69C8833FA4AF4DDFF005DAFD3BFFEB8B0875A611230 % B0BCCFA3FF00992D7FABBD4C64DD7638A69A21A2D02966C04CFA76178977FC1A % 7C395C98AE44822B56B737CFE2E660223198CA26C4AFFC6778274C9D39A2A492 % 49253FFFD1F5549249252DD979D7D63CC9EBD9BAFD073183FB2C67FE497A295E % 51F5A9CFABEB375166B3BD8E006BA3ABADDC2B1CA0B99F259936FAB265F658F6 % D55B5D6596383595B44B9CE3C35ABB0E95F546A6B05BD54FAF69D7ECCD3FA26F % 93DC3DD7BFFF000259BFE2F7A58B2BB7ADDED9739CEA30C1ECC6E9917B7F9575 % 9FA3DFFE8EBFE5AD0FAC9D53AF597FEC9FAB98EFB2F0272F306D0DA411ECA596 % 5FB69FB4BDBFA47FFA1AFF00C17E913F2CC99FB70355F34B644469C47EC778FE % CFE9F589F4712B1A09DB5B7F82E23EB4F51C7BFAC17E35CCBEAF42B1BEB707B6 % 66DDC3730B966DDF53FEB5B9CEBEDC21916BB573DD7B2CB4FF006B21DFFA3563 % DE6FC5B8E364D4FC7BD825D55AD2C701C6FDAEFA4C77FA467E8D3B0E188958C8 % 266BA22523DA9D4FB579A5F6BF3593F68330AEF46E9D99D6F3DB8589EC006EC8 % C8225B4D7C6F3FBD6D9EE6D15FE7FF00D6D4F28800C8E800D56024BB7D07A6DD % D6B24B64B30E923ED370D3B4FD9EAFF867FE7BBFC155FF005B5DFB31B1EB636B % 654D6B1A035AD8100010D0B2F2B27A57D54E88081B31E81B29A819B2DB1DEED9 % FCBBEF77BEC7FF00D7143EA8F50CBEA7D1599F98F0EBAFB6E710DFA2D02C7319 % 557FC8AD8DF4FDCA8E53298331A401E10CD1A1A75793EBB9019D6F39A340DBA0 % 0F0F657C2B5F5472C9EBB5B01FE72AB1A7E41AF1FF0052B0FEB25E47D63EA43C % 3223FE856AE7D477B9FF0059691C6CA6E799F835BFF7E56A51FD45FF00501FF9 % AC60FAFEAFA7274C9D67B3292492494FFFD2F5549249252CBC7BFC6AE0BB1FEB % 2B730021B998CD7EFD47BE9DD53B5FE4B3D15EC2B8DFF1A1D1BEDFD03EDB509B % BA6B8DA48D4FA2F1E96547F51BE9DFFF00A0EA6E567C3963D8FA7ED59905C4FD % AEC7D53C6189F563A550358C5A9E7FAD637D57FF00D37ACCEBFF00E317A2745C % C7F4FD9766655302D6D01BB2B244FA6FBAC735BEA6DFDCDEAF7D4FCF6E67D59E % 9973752CA1B4BDA3B3E9FD058DFF00A0BCB3EB7747CEE9BD6B3ACCBA9EDC7BF2 % 2DBE9CA826BB1B73DD6B7F4DF43D56EFD9656E4FC38A13CB28CCD55E9FBD2B44 % E6444102F67BCE9BFE34FA0E664B31F2A9BF03D53B5B75BB5D5027DADF51F5BB % F46D73BF3DCCF4FF007D6DFD67E87575BE956E3C06E5D4D36615D12EAED03DB1 % FF00076EDD96B3FD1AF17E9DD273BAC5E313A6D0EC9B2DF617301F4DA0E86CBE % E8D95D6C5EEE2CAF0F1B7DAF9AF1AADD65AE3CB6B6FBEC71FECA3CC638E29C4E % 326FB5AB1C8C81E20F86F4A6758EAF9B4E060D6C7E45E6002D2D6B00FE76DB9F % F995D7F9FF00F43F48BD83A76174AFAA3D09C6DB629A5BEAE6E596FBACB206EB % 76337FE77B28C767F375FB179CFF008BBEA581D3FEB05F9B9D733131EEC5B807 % DA76B773EDA6D6D7FD6DABD187D71FAAE351D5B167FAFF00EC4FE6CCCC84003C % 2003A77FEF23155137AD97CAFEB27D65EAFD7BA91CA355B4E3D5B9B878FE9B8F % A6C3CB9DED735D9177F8677FD697A47F8B9377FCD0C3F583859BAF90E041FE75 % F1ED70573FE797D58FFCB6C6FF00B7168E267E267E3B72B0EE664E3D92196B0C % B4969D8F8FEA3BE928B2E5271887B7C110745D1881226EC97C63EB9B727FE747 % 56745BE98C8264078646D609DCD1B5741FE287037754EA19E447A34B31C13AC9 % B5DEABFF00CD6637FD35D37D73FAC1D18743EADD38E7D233450FACE36FF7EF89 % D9B3F7959FF17DD19FD2BEAE502E69664659395734F20D800AAB8FCDF4B19953 % 36FF00A4F51492CE4F2F4456D01E23F79688564BBEE5E953A64EA9B2A9249249 % 4FFFD3F5549249252942CAD9631CC7B4398F05AE69D4104439AEFEB29A63C24A % 7CC28CBCBFA83D72FE9AFADF93D1B28FAF4B1BF4F67F37EA51BFD8FC9A1BFAB6 % 4D4F77E9FF004372EBF0BEB7FD5BCB60751D4A961235AEF3E8BC1FE55776D567 % EB27D5FC6EBDD38E35DECB987D4C7BC0935D8046EFE556EFA36D7F9F5FF2D793 % 6774CCAC1CA7E16755B322AE587DCD2D3F46EA5C7F9CA5DF9AFF00EC59FA4573 % 1C31F302C9E1CA07AABF4BFACD7C939E2D87140EDFD57D4B2FEB67D5CC56937F % 53C7207E6D6FF55C7FEB5487EE5C3FD6CFAEAFEB341E9BD3AB7D1D3DE7F4F6D9 % EDB6F00E95EC1FCC62FEFF00BBD7BFE87E8BF49EA73E296B7E8B601F0F2F825E % 94A9F1F298E1212D64477619F35290A143C9A86B2791252F48F8056FD2F24BD2 % F2566CB0F1353D2FE4AF44FA99F587A174EFAB78D879B9F4E3E456EB8BEAB0C3 % 80758F7B776D1F9CD5C37A5E4ADF4BE8F99D5735B8584C9B0805F61FA15338F5 % AD70FA3FC867F857FD0516784670A9CB8444F15B261C8632F48B274A7630BA2D % 1F59FEBC676430B6FE934DE322FB46ACB06D67A18EDD3FC3D8CFD27FC0D6BD48 % 0FF6AA1D0FA2E2F45C066162C96B49759618DD658EFE72EB23F3DFFF0042BFD1 % AD159B9B271C857CB01C30BEC1BD08F08D773A95827492512E524924929FFFD4 % F5549249252932749252CB33AE7D5FE9FD6B185396D21ECD69BD9A5959F1ADFF % 00CAFCFADDFA35A898A20989B0688EA8201144582F93F58FAB3D4BA3BCBAFAFD % 6C69D332A07647FC357EE7D0FF00FC0FF72D5982B0469047622217B5168235F8 % 2C3EA1F537A266973DB59C4B9DAFA941D9AF89AF5A7FF035731F3BD320FF000A % 3FC1A793933BE33FE0CBFEF9F32F4BFD898D6D6B4B9C600E4E807DEBB71FE2F1 % DEA90ECF229F16D403FF00CE2E755FF80ADAE9DF54BA26039B6B69F5EF6F16DE % 7D423FA81DFA367F658A59739880D2E5E43FEF98E3CAE5275A8F99BFFA2F0BD1 % BEA9F53EAC459B4E2621FF00B51637DCE1DFECF49873F77FA57FA547FC67D05E % 8BD23A2E0748C518D855EC6FD27B89DCE7BBFD2DB67D27BFFD58AF000292A597 % 3CF26FA47F743731618E3DB597591593A49289954924924A524924929FFFD5F5 % 54924925292492494A4C9D41C4F01252CFB0334E4F820BACB5DC1DA3C07289E9 % A5E9A70A41B6BED78D64CF8C94465B63743EE1E68BE984BD34AC228B26BDAEE3 % 43E05490BD3F0EC8809E0FDE82E649264E8294924924A524924929FFD6F55492 % 49252CAAE7F53E9FD328FB4750C9AF169E37DAF0C04FEEB777D37FF25A9753EA % 1474CE9D93D47227D1C4ADD6BC0E4860DDB5BFCA7FD15E4BD36AC0FACD92FF00 % AD5F5F33DB8D8163DD5F4EC02F757BDAC23D4F41ADFD2FD928FE6BF56FD25D93 % BFD5B6BD9FA74A7D33A3FD6EFABDD6F32CC2E9596326FA59EAD81AD7801B2192 % 2CB18D63BDCE6FD15B0B07EAC53F534D66FF00AB55E1FE8DBE9596E335BEA869 % F76CC8B63ED1EFD9BBF4DFB88BF5B7EB2637D5BE897752B807D83F478D4FFA4B % 9C3F46CFCDF67F84B7FE0589290F59FAF5F55BA1E6BB07A8E68AB29AD0F754C6 % 3EC2D0ED582CF459636B7B9BEFD8FF00F07EFF00CF5BE17CF3F59FA467E374EE % 9DD6BAABDCFEA7D79F7E4DDBE016D6DF47ECFED6FB5BEAFACFB767F83AFD0ABF % 45B17D0C92945723D3FEBCDD99F5D323EAB9C26B1B8E6C1F6AF5492456DDEDFD % 0FA4DFA53FE9575CBC72BEB5D3FA17F8D1EAFD4FA83CB28A3D7F6B46E7BDC5AC % 6D74D4DFF4963BF7FD9FE93624A7D8FB2CEEBDD6717A1749C8EAD961CFA71834 % B9B589712F736AADAD98FA5658C5C63BFC6E8C6CC657D53A1E5E061DA49AF21E % 7F485A23DEDC6B2AA5AEFA5FA4F4F21FB1755D6BACF4D6FD58C8EB02A6752E9E % 68F57D2D0B2DADD0DDAEF5039BDFDFB989296FAA7F5A313EB474B3D4716AB281 % 5DAEA6DAAC8243DAD659ED737E93365AC5B72263BF82E23A3FD71C3AFEA77ED7 % E91D10D74D592319BD3B188DC4B8D7BED6FA357B9FFA4FCEAFF48B82FA91F5C3 % 3BA3E7F52CE760E4757BF258DDDB5EE7399B5CE77E9ECD973B6FBBF71253EEA9 % 21D161B6965BB4B37B5AEDA7912376D44494A49249253FFFD7F5549249253C9F % F8D17387D46EA50489F4018F037D12B0BFC5D7D48FABD9BF56F1BAAF52C76E7E % 4E50B0345AE71654C6D8FADB4D55EED8DF757EA6FF00E737D8F5DE757E998FD5 % BA66574DC9914E5D6EADE46A448F6D8C9FCFADDEF62F36E8F95F5EBEA27ABD21 % FD22DEB7D3B7B9F8B6E3EF701275D96535E47A2CB1DEFF00B3DB5FF39BD2534E % EC167D4CFF001A3D3F1BA41733133DD4B0D25C481564BFECD6D2F713BEC6D763 % 3D7ABD5FDCA957FAD3F5ABA6751FAF47F6F5773FA3744B6CA6AC3A58D79B6CAD % DB2D75BEADB557E9DF757FA4FF00BAF55547A7F4ED5D07D58FAB7F583AFF00D6 % 86FD6EFAD18DF646D30EC2C370DAEDCCF6D134BE6DAABC777E9BF4BB2D7DFB2C % FE6D7A19C4C4249345649249F637524CB8F1F9C929F10FF18FF5CFA5FD6B774F % 774EAAFABEC62E167DA1AC6CFA9E8ECD9E95B77FA27AF431F5CFAC75DE90CEA5 % F52FA77DA8B325D8F935669656406D6CB7D4AF6E5319F4AEAFFC27F61617F8E1 % E8B9F98FE923A5E05B902B6E47ABF66A5CF89346CF53D163BC1DB772F4DAEAAA % B691531B58264868035E3B24A793E87D53FC6364755A2AEB5D1B1B13A73B77AF % 915D8D739B0D73ABDAD6E5DDF4AD0C67F36B91E95878F97FE38F305F58B1B45B % 75EC6B8070DEC60F49E4387F837BBD4AFF00E1762F5CF25E417F46FADA3EBFF5 % 5EB3D1B12D6DB8763EFA0DF539B4E436598F76332EB3654FF569B2C7D7EFFA0C % FD0FE91253DEFF008C0C0C5CFF00A9FD49B921A7D0A5D934BDD04B6CA87A95BA % B71FA0E7FF0033FF00176FA6B88FABB7DD6FF89DEAECB092CC77DD5D40F669F4 % 2FD3FEBB75A89D77AD7D7CFADF8ADE858BF57EFE9755E47DAEDBC3C35CD696D9 % B7D7BEAC665156E1BDEC6FA975BFCDB3F72CE8B3FEAC1E8DFE2E32FA1E0B5F99 % 902825DE9B0B9F6DAF7B5F63995B3DDFC9AFFE0AB49487FC4E49FAA2E3FF0076 % EDFF00A9A9607F89727F6B75A1C4B19A7F6EC5D2FF008A8C2CDC0FAACEA33B1E % DC5BBED563BD3B98EADD05B543B6581AEDAB90E978BF5B7EA17D63CFFB2F47BF % AAE2648736B752C7963DBB9CFC6B7D5A5991E9D8DFF0943FFF0052A4A7D88274 % 3A1EE7D4C7BDBB1CE682E6781224B7FB2889294924924A7FFFD0F55492492529 % 3479A749252D0914E924A59209D2494B109A1492494B42509D2494B26D614924 % 94B00427492494A49249253FFFD93842494D0421000000000055000000010100 % 00000F00410064006F00620065002000500068006F0074006F00730068006F00 % 700000001300410064006F00620065002000500068006F0074006F0073006800 % 6F0070002000430053003500000001003842494D042200000000017E4D4D002A % 00000008000C010000030000000100960000010100030000000100B100000102 % 0003000000030000009E01060003000000010002000001120003000000010001 % 0000011500030000000100030000011A000500000001000000A4011B00050000 % 0001000000AC012800030000000100020000013100020000001E000000B40132 % 000200000014000000D28769000400000001000000E800000120000800080008 % 000AFC8000002710000AFC800000271041646F62652050686F746F73686F7020 % 435335204D6163696E746F736800323031323A30383A32332031343A33353A31 % 310000000004900000070000000430323231A001000300000001FFFF0000A002 % 00040000000100000096A003000400000001000000B100000000000000060103 % 00030000000100060000011A0005000000010000016E011B0005000000010000 % 017601280003000000010002000002010004000000010000017E020200040000 % 00010000000000000000000000480000000100000048000000013842494D03FD % 0000000000080201000000000000 %EndPhotoshop %%BeginICCProfile: (Photoshop Profile) -1 Hex % 000007A86170706C022000006D6E74725247422058595A2007D900020019000B % 001A000B616373704150504C000000006170706C000000000000000000000000 % 000000000000F6D6000100000000D32D6170706C000000000000000000000000 % 0000000000000000000000000000000000000000000000000000000000000000 % 0000000B64657363000001080000006F6473636D000001780000056C63707274 % 000006E400000038777470740000071C000000147258595A0000073000000014 % 6758595A00000744000000146258595A0000075800000014725452430000076C % 0000000E636861640000077C0000002C625452430000076C0000000E67545243 % 0000076C0000000E64657363000000000000001447656E657269632052474220 % 50726F66696C6500000000000000000000001447656E65726963205247422050 % 726F66696C650000000000000000000000000000000000000000000000000000 % 0000000000000000000000000000000000000000000000006D6C756300000000 % 0000001E0000000C736B534B00000028000001786872485200000028000001A0 % 6361455300000024000001C87074425200000026000001EC756B55410000002A % 0000021266724655000000280000023C7A685457000000160000026469744954 % 000000280000027A6E624E4F00000026000002A26B6F4B5200000016000002C8 % 6373435A00000022000002DE6865494C0000001E00000300646544450000002C % 0000031E68754855000000280000034A7376534500000026000002A27A68434E % 00000016000003726A614A500000001A00000388726F524F00000024000003A2 % 656C475200000022000003C67074504F00000026000003E86E6C4E4C00000028 % 0000040E6573455300000026000003E874685448000000240000043674725452 % 000000220000045A66694649000000280000047C706C504C0000002C000004A4 % 7275525500000022000004D06172454700000026000004F2656E555300000026 % 000005186461444B0000002E0000053E005601610065006F006200650063006E % 00FD0020005200470042002000700072006F00660069006C00470065006E0065 % 00720069010D006B00690020005200470042002000700072006F00660069006C % 00500065007200660069006C0020005200470042002000670065006E00E80072 % 0069006300500065007200660069006C0020005200470042002000470065006E % 00E9007200690063006F0417043004330430043B044C043D043804390020043F % 0440043E044404300439043B002000520047004200500072006F00660069006C % 0020006700E9006E00E9007200690071007500650020005200560042901A7528 % 0020005200470042002082725F6963CF8FF000500072006F00660069006C006F % 0020005200470042002000670065006E0065007200690063006F00470065006E % 0065007200690073006B0020005200470042002D00700072006F00660069006C % C77CBC1800200052004700420020D504B85CD30CC77C004F006200650063006E % 00FD0020005200470042002000700072006F00660069006C05E405E805D505E4 % 05D905DC0020005200470042002005DB05DC05DC05D90041006C006C00670065 % 006D00650069006E006500730020005200470042002D00500072006F00660069 % 006C00C1006C00740061006C00E1006E006F0073002000520047004200200070 % 0072006F00660069006C666E901A0020005200470042002063CF8FF065874EF6 % 4E00822C0020005200470042002030D730ED30D530A130A430EB00500072006F % 00660069006C0020005200470042002000670065006E00650072006900630393 % 03B503BD03B903BA03CC002003C003C103BF03C603AF03BB0020005200470042 % 00500065007200660069006C0020005200470042002000670065006E00E90072 % 00690063006F0041006C00670065006D00650065006E0020005200470042002D % 00700072006F006600690065006C0E420E1B0E230E440E1F0E250E4C00200052 % 0047004200200E170E310E480E270E440E1B00470065006E0065006C00200052 % 00470042002000500072006F00660069006C00690059006C00650069006E0065 % 006E0020005200470042002D00700072006F006600690069006C00690055006E % 006900770065007200730061006C006E0079002000700072006F00660069006C % 0020005200470042041E04310449043804390020043F0440043E04440438043B % 044C00200052004700420645064406410020062A06390631064A064100200052 % 0047004200200627064406390627064500470065006E00650072006900630020 % 005200470042002000500072006F00660069006C006500470065006E00650072 % 0065006C0020005200470042002D006200650073006B0072006900760065006C % 007300657465787400000000436F707972696768742032303037204170706C65 % 20496E632E2C20616C6C207269676874732072657365727665642E0058595A20 % 000000000000F35200010000000116CF58595A20000000000000744D00003DEE % 000003D058595A200000000000005A750000AC730000173458595A2000000000 % 0000281A0000159F0000B83663757276000000000000000101CD000073663332 % 0000000000010C42000005DEFFFFF326000007920000FD91FFFFFBA2FFFFFDA3 % 000003DC0000C06C %%EndICCProfile %begin_xml_code /pdfmark where {pop true} {false} ifelse /currentdistillerparams where {pop currentdistillerparams /CoreDistVersion get 5000 ge } {false} ifelse and not {userdict /pdfmark /cleartomark load put} if [/NamespacePush pdfmark [/_objdef {photoshop_metadata_stream} /type /stream /OBJ pdfmark /MetadataString 15353 string def % exact length of metadata /TempString 100 string def /ConsumeMetadata { currentfile TempString readline pop pop currentfile MetadataString readstring pop pop } bind def ConsumeMetadata %begin_xml_packet: 15353 + + + + F3744640BFF37BAB23BEB8339370F72D + xmp.iid:0280117407206811B813FB27A86CE338 + F3744640BFF37BAB23BEB8339370F72D + + + + saved + xmp.iid:0180117407206811B813FB27A86CE338 + 2012-08-23T14:35:11-04:00 + Adobe Photoshop CS5 Macintosh + / + + + converted + from image/jpeg to image/epsf + + + derived + converted from image/jpeg to image/epsf + + + saved + xmp.iid:0280117407206811B813FB27A86CE338 + 2012-08-23T14:35:11-04:00 + Adobe Photoshop CS5 Macintosh + / + + + + + xmp.iid:0180117407206811B813FB27A86CE338 + F3744640BFF37BAB23BEB8339370F72D + F3744640BFF37BAB23BEB8339370F72D + + + + image/epsf + + + 3 + Generic RGB Profile + + + 2012-08-23T13:41:56-04:00 + 2012-08-23T14:35:11-04:00 + 2012-08-23T14:35:11-04:00 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + %end_xml_packet [{photoshop_metadata_stream} 2 dict begin /Type /Metadata def /Subtype /XML def currentdict end /PUT pdfmark [{photoshop_metadata_stream} MetadataString /PUT pdfmark [/_objdef {nextImage} /NI pdfmark %end_xml_code gsave % EPS gsave /hascolor /deviceinfo where {pop deviceinfo /Colors known {deviceinfo /Colors get exec 1 gt} {false} ifelse} {/statusdict where {pop statusdict /processcolors known {statusdict /processcolors get exec 1 gt} {false} ifelse} {false} ifelse} ifelse def 40 dict begin /_image systemdict /image get def /_setgray systemdict /setgray get def /_currentgray systemdict /currentgray get def /_settransfer systemdict /settransfer get def /_currenttransfer systemdict /currenttransfer get def /blank 0 _currenttransfer exec 1 _currenttransfer exec eq def /negative blank {0 _currenttransfer exec 0.5 lt} {0 _currenttransfer exec 1 _currenttransfer exec gt} ifelse def /inverted? negative def /level2 systemdict /languagelevel known {languagelevel 2 ge} {false} ifelse def /level3 systemdict /languagelevel known {languagelevel 3 ge} {false} ifelse def /foureq {4 index eq 8 1 roll 4 index eq 8 1 roll 4 index eq 8 1 roll 4 index eq 8 1 roll pop pop pop pop and and and} def hascolor {/band 0 def} {/band 5 def} ifelse /setcmykcolor where {pop 1 0 0 0 setcmykcolor _currentgray 1 exch sub 0 1 0 0 setcmykcolor _currentgray 1 exch sub 0 0 1 0 setcmykcolor _currentgray 1 exch sub 0 0 0 1 setcmykcolor _currentgray 1 exch sub 4 {4 copy} repeat 1 0 0 0 foureq {/band 1 store} if 0 1 0 0 foureq {/band 2 store} if 0 0 1 0 foureq {/band 3 store} if 0 0 0 1 foureq {/band 4 store} if 0 0 0 0 foureq {/band 6 store} if} if blank {/band 6 store} if gsave % Image Header gsave /rows 177 def /cols 150 def 150 177 scale level2 { band 0 eq { /DeviceRGB } {/DeviceGray} ifelse setcolorspace currentdict /PhotoshopDuotoneColorSpace undef currentdict /PhotoshopDuotoneAltColorSpace undef } if /picstr1 150 string def /picstr2 150 string def /picstr3 150 string def /picstr4 150 string def /_rowpadstr 150 string def /rawreaddata {hasDecodeFile 0 eq {/decodeFile currentfile /ASCII85Decode filter def /hasDecodeFile 1 def} if decodeFile exch readstring pop} def /padreaddata { _topPad 0 gt { /_topPad _topPad 1 sub def pop _rowpadstr } { _subImageRows 0 gt { /_subImageRows _subImageRows 1 sub def dup _leftPad _picsubstr rawreaddata putinterval } { pop _rowpadstr } ifelse } ifelse } def /image2 level2 {/image load def} {{begin Width Height BitsPerComponent ImageMatrix Decode length 2 eq {/DataSource load image} if Decode length 6 eq {DataSource 0 get DataSource 1 get DataSource 2 get true 3 colorimage} if Decode length 8 eq {DataSource 0 get DataSource 1 get DataSource 2 get DataSource 3 get true 4 colorimage} if end} def} ifelse /_image2 level2 {/_image load def} {{begin Width Height BitsPerComponent ImageMatrix /DataSource load _image end} def} ifelse /beginimage level2 {{ band 0 eq band 4 eq or band 5 eq or {image2} {negative {{pop 0}} {{pop 1}} ifelse _settransfer _image2} ifelse } def} {{pop .9 setgray 0 0 moveto 0 1 lineto 1 1 lineto 1 0 lineto fill 0 setgray 0 1 translate 1 cols div 1 rows div scale /ratio {cols 400 div mul} def /Helvetica findfont 15 ratio scalefont setfont 5 ratio -20 ratio moveto (ASCII85 encoded image needs PostScript Level 2) show /x 128 string def {currentfile x readline {} {pop exit} ifelse (~>) search {pop pop pop exit} {pop} ifelse } loop } def} ifelse /hasDecodeFile 0 def /readdata /rawreaddata load bind def 12 dict begin /ImageType 1 def /Width cols def /Height rows def /ImageMatrix [cols 0 0 rows neg 0 rows] def /BitsPerComponent 8 def band 0 eq {/Decode [0 1 0 1 0 1] def /MultipleDataSources true def /DataSource [ {picstr1 readdata} {picstr2 readdata} {picstr3 readdata picstr4 readdata pop} ] def} {/Decode [0 1] def /DataSource { picstr1 readdata pop picstr2 readdata pop picstr3 readdata pop picstr4 readdata } def} ifelse currentdict end %%BeginBinary: 134805 beginimage s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!q"Xmhs8Moms8W-!s8Mrns8W-! +s8W-!s8W-!s8W-!s8W-!rr2inrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8Vunrr<#u +r;?Kls8W#pr;?Hhqu6Tps8W-!s8Moms8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr)irs8W,tr;?Qos8N&urr2orrr2or +rr2rts8W&rrr2rts8W-!s8W-!s8W-!s8W-!s8W-!rr2lprVccrs8W,trr2rts8W-! +s8W-!s8W-!s8N#srr2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!qYL*hs8W-!rVc]ns8W-!rVccrs8W-!s8W-!s8W&r +s8W-!s8W-!s8W-!s8W&rrVc]nrVc]nrVccrs8W-!rVccrs8W-!rVcWiqtp?jrVccr +s8W-!rVc]ns8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W#prr2osrr2rsrVc`qrr)lsrr2orrr2orrr2rts8W)trr2rt +rr2rts8W-!s8W-!s8W-!s8W-!rr2orrr2rtrr2rsrr2orrr2rtrr2orrr2oss8N#s +rr2osrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!q"Xmhs8Moms8W-!s8Mros8W-!s8W-!s8W-!s8W-!s8W-!rVcWjrr2rs +s8W-!s8W-!s8W-!s8W-!s8W-!s8Vunrr<#uqtp0m]r;?Kjrr)clr;?Tps8W-!qYU3hr;HNir;?Kjr;?Kjqtp'mdrVuotqtpEnrVQEdrr2ilq"Xmhs8W-!s8W-! +r;?Kjrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W)rs8W)srr2ilrr2orr;6EirVlfqrr2rts8N&us8W)srr2orrVZQj +rVc]nrr;lmr;HZqs8W-!s8N&trVccrqtp9hrVcThr;Q`rr;6Bgr;?Nls8W-!s8W-! +rr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W,sq=sa`s8W)trVH3ZpA4[ar;?KjrVc]mrVcWjr;6BgrVcZkqu$Kos8W-! +s8W-!s8W#pqtp9gr;?KjqYL*dr;?Kjq>'ses8W-!r;?Qns8W-!rVc]nrVccrs8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)s +r;?Nkr;HTkqYL*er;6BhrVlfqrr2rts8N&us8W)srVc]nr;6BhrVc]nrVlcorVlis +rVc]nrVlfqrVc]nr;?Kjr;?Hhr;HTmrVcZlrVc`ps8W)trr2osrr2rts8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!qt^3js8W-! +r;6Noo_&7ar;?Nmrr2loqYL'bqYU3gqYL$aqu$?jrVlisrr)cnqYU3hs8W-!rr2os +s8W)tr;6?dq"adbrVZB`q"Xmhqu$Hns8W-!r;?Kjrr<#us8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2ilqYL6lp\=dg +rVZTkrVlfqrr)`kqYL'cr;?Tprr<#us8W#qrr2rss8Vrmr;HTnrr2inrr<#us8W-! +s8N#ts8Drqs8W-!qYC*hrr2lprr2rts8W-!rr2rts8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVQBcq=jX\s8W-!s8W-!r;?Nm +s8W-!rVcZlqYU3gq>'g]q>0p_p\=R[q=sa_qYU3hrr<#urVc`qs8W-!qtg3dqYU0e +q=sa\r;?KiqYU9ls8W-!s8W&rrVccrs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)srVlcmqu$HmqYU3grr)cmrVlfqrr)`k +qYL'cr;?Nlr;HTnrVl`nrr2oqrVlZjr;HWorr2lprr<#us8W)srVZTlrVc]mr;?Nl +r;6Ejrr2orrr2orrr2osrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!qt^3js8W-!qt^9loCW(_rVc`qs8Mupr;?NlrVlis +qtg-aqYL'dr;Q`rrVZQjrr2rss8MuprVc`qs8W)sr;?Efq>1!frr)N`q"asirVlis +s8W-!r;?Kjrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!rr;roqu$Kmp@nUer;6Hkrr<#trr)forVc]os8W-!rr2rt +s8Dinrr2oqrr2ors8Mupqtg3err<#us8W-!s8W-!s8N&ts8W-!r;6Nos8MuqrVccr +s8W-!rr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!rVQBdqY9jarr<#us8W-!rVc`qs8W-!s8W-!rVlisqYBp]q"XXYpA"IZ +q"OO[rr2rsrr)clr;?Qos8W,uqtp9fqu$BiqYBm\r;HWnr;HZqs8W-!s8W&rrVccr +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W)srVlcnr;HWmqYL*erVc]nrr<#trr)forVc]os8W&rr;?NlrVZQkrr2lor;HWo +s8N#rr;6Eirr<#us8N#srVc]nrVlfpqu$EkrVZZos8N#srr2orrr2osrr2rts8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)s +p%S(Ns8W-!r;?Bequ$Bir;?Hiqu$Hmr;?Kms8W&qr;?Nmrr;rqs8W-!pA"O^rVlir +s8W,us8W-!qu$Hms8Vulp%%YNs8Dutp@nI`rr<#us8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)us8Vll +r;6Noqu$?hrr2ors8W-!s8W)trr2`ir;6BgrVlfnp\4O_r;-Ems8W-!s8W,urVZQj +r;HZqs8;]fqu-QprVuikr;?Tps8W,trr)lss8W-!rr2rts8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!qtp?iq>L*bo(MePqYg9f +q>1'grVc`qrr<#urVcWks8W-!s8W-!rquNbqYg?goC_kPq>1!brVZZns8W-!s8W-! +s8VuoqtTdXqXsa_q"amgs8W-!s8W&rrVccrs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2fmqtp3er;?QnqYU0frVc]n +rr2ors8W&rrVl]lrVZTkrVlfoq>'perVQHhrVc`ps8N&trr)forVlfqs8Dilqu$Bg +q#10erVcZlrr<#trr2rts8W-!rr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s82cjp%J(@pAP$kr;?Qns8Mrprr2fjqYC$d +rVlfrs8W#prr2ilo]Y/lo)8Ugp@n@Xr;?HeqYU6ks8W-!r;6Bhs8W)rnb)SIme?\[ +p@\=^rr<#us8W-!rr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W,ss82fqs7Y^Hp&+jis8W,urr<#us8DrqrVliss8Mrn +qtp?jr;-'Hf\PogqtpBmrr<#ur;$0bqu-Hjqtg?mr;-6crr<#us7bdKq>L?ns8W,u +rr2rts8W)trVliss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!qtL$`q>C*Tj6H+/qYgHorVZWns8W)rrVZTlrr;rps8W-!s8W)r +o]=`]m.^DSoCV\Jq"XUUp\=[cs8W,us8W-!s8W)up\X^Sk3r*Cq"Oaes8W-!s8W&r +r;?Qos8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W,rrqcNiqs`tDp\k*js8W,urVlisrqu`mr;HWprr2lpr;?Qnr;-'Ig>D>o +r;?Egqu$EkqtU!`r;QZnrVZZor;6Bhrr2clqt97GqYg?hrr<#trr2rts8W)trr2rt +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +rVl`orr<#_jmr-Fs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,pj4Mc3h)gS#Ed9fAZ&ap%\=Uo^_G4g<."*R>cH2?YO4lZh4:r +s8W,trVc]os8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W#sqsMITATDBrI"IBS_TLKhkjA!8o^hVCmcW?Q[]Q$U +H#[\XRHZs@PF`OGCp@nI`s8;os +rr;rqs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!q#:0]d>rU3JV0/OTs2JZg#MAdoChhJoCMJ9h:0HXXdb?*KS5;? +M2[=EK85VYVR!q\gZ7_io_8+QoC;84h9a$FV41]IinrMDd*C.ke^_jdbg,,'iSDo]s8W,tqtKm^qu6Wqs8W)ts8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&p +r;-6N>@2#I?sZrB>ut37?=.)NC2S!,B4G=U>?P'3>[:W>?$P<:>[:W>=]ed2 +?!UfHBPVEuB4Y[c>?Fp,?!UfC?!UiB?``krqYC0irr;rprVlfqs8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,qo%Rbd +Ali8B[C`D?!U`B?!:B8?!LT==]\U&='K$=@:X(g +Ch[NnAn5:U?!U]?>$53>A7JuFnbMqSrVc`qr;HWps8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)srVQHXI=[3%KS"Q' +JU;fpJV&N0NKKEcMM?e9Isl]nJ:W6$JqJ`-J:`B(J:W6"I!^6kJqAZ2N/s$YMMR"? +J:;opIXZcqKS5,5J].9[qtgZt-7$>*3ac<*N7">?G'4;cHh#=B/6q;cHh$>?b32 +?!UW;=]ng-;cQju[1E76pA +rVuotr;HWps8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8N#pq#'fZIXHRaihrVdF6Rncd1+idEg+`e'cRh]Z/4/cN!qEqtBdWq>L?ns8W)t +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +rr2osqZ!Zi7mosG<)61]92SGY9hnM^;,Bt^:/4MX9hnM[:/4Y`;,C+d:JO_`:ejYX +:JFMU9MJ/S:esk]9heDZ9M8)U;,L+a:fKn\;F-r?p\Y!js8W-!rr2ors8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8VWY +Y"qb\7S6KM9he2T9h\5T:/=_`9hnAU9MA/U;,9q^9he>U:/+J];cH^o:Jk"d:esk` +9MS>Y9h\5S9MA,Q92&&S91hfS6;UWNV="!Qr;Q`rrVliss8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2lqq#/3NEc,l> +H$".ME-?>EF*)PJG'.hHF)uDDFEMhOF`hkNG'/"PF`hkOG'%hLGBItIEcZ5AF`qqN +F`hhLF`__JG'8%OFa7\BG@n#Jq>C3hrVZWnrr2ors8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#sr;-_o'F3`lH0AaN)BCa2l?D`l5p:`lH0A`l5m8bfe/NaN;H?`Q#p>aNMiRb0&#S +bK.]CbfRuHaM,a1OR)rHp@@qLq#(0ls8W&rs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2rsrp4Af4A/197n6!;8Oc0>7n,s; +84cEH91qfG7Rf^37Rp$@84c9@84Q3@7n?':779X:84H*?8Ol6=7n?6E7R]g<8P)HA +8kMuP9giF;o)&=]s8W)trVlfprr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8N#ss8VcICIpid6UO4.7Ros:77Ka86psR;8kV`I +7n,s;6UXC6779O46UXF;91hiN8OuBB92%uM84c`l?BObKJ)Pbfn;Tbfn;Tbfn;TbKJ)PbKJ)P +bKJ)PbKJ)PbKJ)Ob0.uObKJ)Ob0%lLc-=MXc-=MXcHXJXe&KYT^ZYOpp@J:`s8W-! +s8W)ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!rr2or +s8W-!qYUk5!D%i4?l2"5!D.o4Ztqk4Ztqk4Ztqk5!D.o5!D.o5!D.o5!D.o5X7S! +5a4$,Mc4$,Ja3]]5[3&ilW3B&`S +3'&rT6:8-Qrr<#uqt^3js8Vrls8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W)trr2orrr2orrVlcpr;HZmlYBm9BjP4V@Uiq[AS,I`A7T4]@q0"Y@q0"Z +A7T4]A7T4]A7T4]A7T4]A7T4]@q0"YA7T4]A7T4]@q0"Y@q0"Y@q0%Y?=[PW@:3VP +a8Yr1q#($cs8W&srr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W)trr2rts8W&trVl`mq>'?cf#knFaN;TI_o'C1_83t(_83t(`5KU4`5KU4a2c6@ +a2c6@a2c6@a2c6@a2c6@a2c6@`l?$;`Pog8_SX1,_SX1,`P]^6_T]p:c+MR+p$qtY +nF$2Rs8Vojs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W)trVuots8W)rG9\mk3&E3>0JG490etI<0ekC;0ekF=1,:U?1,:R=0ekC;0ekC; +0ekC;0ekC;0ekC;0ek@90J>(40/#"50JG170JG:;1bpaG0f(g<>gEBHq>1-ks8Vuo +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&rqtp?ls8W&t +rr<#uq!3Sd3%QpA0etL>0ekLB0ekC;0ekC;1G^gC1G^gC1G^gC1G^gC1G^gC1G^gC +1G^gC1G^gC1,:U>0ekC;0ekC;0ekC;1bppE0fq-I3@J1Xp&+jiqt^3hs8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2ors8W)trVulsrr2ik +Ro*]u@9m,D?=$oC?!^c@>[1N=>[1TA?=$rE?=$rE?=$rE?=$rE?=$rE?=$rE?=$rE +?=$oC?!LW>>[1N=>[1N=>[1WA?s[)M?!h/BJDL+tqtp6crr;rqrVccrs8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2rts8W&tr;QTkp$Slrcd0;< +aiVWF^q[Y"^:q=q^:q=q^V@Ou^V@Ou_SX1,_SX1,_SX1,_SX1,_83t)_SO()_o'C0 +_o'C0^qdb$^qdb$]tD=r]tqJ"]#_#FnalSSn*^)Qs8Vojs8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trVulss8Vrc2_6L21,:I7/hSb. +/M8Y./hSb//hS_-/M/P+/M/M)/1`>'/1`>'/1`>'/1`;%.kE5%.k<2'/M/P+/M/S- +/hSb//hSY(1FXh-/MAG-26ZuWpA+ags8Vuos8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W&rqtp?ls8W&trVuoto\`+s0ek=71,:O;/hJb3/hSb/ +/hSb//hSb//hSb//hSb//hSb//hSb//hSb//M/P,/hJY,0/"t30/"t30/"t30/"t3 +/1WP,/2/\1-8[W`nc&RgqYC*gs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!rr2ors8W)trVuirrr2]\>?Y<<>?bB=>[1H8=^"s2=]nm1=]nm1 +=]nm1=]nm1=]nm1=]nm1=]nm1=]nj/=BSd/=BJa1>$>*5>$>*5>$>*5>$>!.?WC03 +=^+d3=i:%2q"sp`rr;rqrVccrs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W)ts8W-!s8W&sq>9m[s4b9-b0.Q8a2Ys3_Sa!t^V@Ou^VIY#_83t(_84%, +_83t(_83t(_83t(_83t(_83t(_83t(^qdb$^qdb$^qdb$^V@Ou^qdn'_8!k)c,.E^ +s8W-!o^`%^rr;uss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)t +s8W-!s8W)sqtp3dqu-)G+X/6\.kE(r-n$Jm.k<%t.4H\q.Olr!.k<,#.Olr!.k<,# +.k<,#.k<,#.k<,#.k<,#.k<)!.Olnt.Olnt.Olkr.4H_r/h&;"/1iJ!,Xh7tq=Xdf +s8W)ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!qtp6d +rVuots8W)qk(kcE-R^>j/1W2"-n-Vq.k<,#.kE5&/M/P+/M/P+/M/P+/M/P+/M/P+ +/M/P+/1`>'/1`>'.k<,#.k<,#/1`>'.k<,#/1`G(/1N5(.N^!=j7iTRrqQBfrr<#u +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!rr2orr;?Eg +qYTr];H-_"='/R+<`W7&<`W7%<`W7&='&L+=BJ[-=BJ[-=BJ[-=BJ[-=BJ[-=BJ[- +=BJ[-=BJX+='&I)='&I)='&F'<`W:'>?4j,=^#*/<-S$2qt^0ds8W)ts8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!s8W&sqY^*_r/eV0 +aiD-2`5B='^qdLj]tM+m]tM+m]=Y\e]=Ybi]=Y\e]=Y\e]=Y\e]=Y\e]=Y\e]=Y\e +]Y(ni]tM+m]tM+m]tM+m]tV"j]Y(ni^r+74g&M*PoCDq]rr;uss8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!s8W)sqtp6fr;PbE+5p\4^fqYU'm`rr2lqrVccr +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W#prr<#us8Vlip\t*j +_Rm4g_S3b"]=Yhm^:q7n^:q=q^:q=q^V@Ou^V@Ou]Y(ni]Y(ni]Y(ni]Y(ni]tD"i +]=bei]Y(ni]Y(ni^:q=q^:q=q^:qFs^V.Fs\@'/iMuW\Op\+XeqYUC-drr2rtr;?Tps8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVcThrVuots8DZX74TT**>ok>+!2XL +*Zc=C+X&!P+X&!P+X&!P+X&!P+!2RH+!2RH+!2RH+!2RH++ +,9n9O+sJ0P)&XJ:*??7F+*#on9)B0Y;*uu[G.S&e$pAb0ms8Vrls8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2osrVc`pqY0[]qhn6H;,L.c:/4PY9he>V +9heAX:/4PZ:/=PY:JX_[9he>W9heD[:ese[9he>V9he>V9he>V9heAX:/4PZ9heDY +:JXb^:/4PZ9h\5T:/FYX=\Mh*q#:!arVc`prr2rts8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8Vunr;Zfsrr2K\qZ$ADMNEpaR@9J.Q^=&*QBmo*Q'R`% +Q'IZ%Q^3r(R$a2)R@0G.QBmi%R$a8.R$a8.R$a8.R$a8.QC!r*R$X/*QBmi&QBmi& +Q'R`%QBdc&PEh'/1`>'/hSb//hSb//1iG+/hJY+.k<,#.k<,#.P!#".k3&#.kMnk +-SEO5nGE7cs8Voks8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)t +rr2orrr2lrqYU6dlX*1R84lQM9h\;W:/4PZ:/4JW9he;T9hnGX9hnJ[9h\>Y:/">T +9M8,U:/4PZ:/4PZ:/4PZ:/4JW9hnGX9h\8U9he>V9he;U9he>U9hnDY8l&&Lg\^[B +rr)lsrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Vunr;Zfs +s8MQXq>^KPr;Zfss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rqc3]q>^Kprr2ip +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W,urVc`qrVZZf +nZ/=QR[KS4S"#q;R[T_8S"#qS"#n;S=Q+=SXc4@SXl7>S"#n:S"#k8 +R[T\6R[T\6S"#q):0l14QIrqufrs8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!qtp?ls8W-!s8Voiq!maTQ'@T# +R$j;-Q^XM;S=Gq4R@0M4R@'D2R@'A/R$jA2Q^O;1R@9S5R$a8.R$a8.R[T\6R[T\6 +R[T_8S=H(^\[f8]\[o;]]",A_]"5G_\[f8]\[f5[\@B&Y\@B&Y\[f;_ +\[f8]\[f8]\[f8]]"5G_\[f8_\@o8RlLX`Krr)lsrVliss8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2rts8)`npAb0mq>'dYp\OpirVH0YqYL!_ +qYU3fqYL'bq"t!dq"O^cp%\F\q>'maqYL'bqYL'bqYL'bqYL'bqtp6dqYL*drVc]n +rVc`prr2lor;HWoqtg6ir;ZKfq>^Kps8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W)ts8W-!rr2rps8VfkqXsmgs8W)sqYC-js8W)ts8W&ss8Muq +rVcWms8Molr;QQks8W)ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&rrVc]nrr2or +rVZTlrr2rts8DTdqu?]U=f%/F'fA#?GgXt!(g"G!/gYCT>gt^Z6;g=b04 +g"G'3g"G'3g"G'3g"G'3f\"g,f%/F'g"G'3f\"p4g"G*5gYCT>f%&F1gZHlVqu$Hn +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!rr2rt +s8Volg=bB@i8KhVI#Dh;-oBg">-=io/eOhVR,GhVR,G +hVR,GhVR,GhVR)EgtUTKhVI#Dh;-oBg=b9=iS`SKh;-oCh;-oCh;-oCh;-oCh;-lA +gY1B8g=k97g=k65gYCN:gY:N>h;-f2IXm!#JV&K+JqAT+JqAT+JqAT+JqAT+K7ef/K7\], +JUrB&J:N6)J:W<*L4t;4It*$$JUrQop\=dgs8Dlns8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W#sqYgBQQ&^WSL4tG=MMd4FL5(J=M2@%E +Ll.(ILk^tLMi3UUMhm%@LPLY@Ll$qDLkpkCLkpkCLkpkCLkpnEM2@(FLkpnEM26tD +MN!@JMN!RTMi!.AL51eLQIl03q>Lc\[oDd +^V7Ir\[fGh_SWhHs7lEgs8Vuns8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!rr2ipqu-NTPE(T\N/W^RMi3OQN/W^SN/WXOMN!LQMMRCTNK''_ +Nf/^NMi3LPN/`dTN/W^SN/W[QMi3LOMi3OQN/W^RMi3OQN/NUPNK9!VNK93`O,]!Q +MiMi*=GL5(J=M2@(GMMmIRMMR%EMM[(ALl71KM2-kBLkgeB +LkpkCLkpkCLkpkCLkphBM2I1JMMd=MMi*@KN/idPLl%"IM2-tJL5:_CKuj;fq#10j +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&rs8W-!rVH9] +s6Q5UY-tgP]tCb[[CErb^:q(c]"5Md^:q4i\@T;`\$ii[]tCtf\[oA_]"5Ja]"5Ja +\@B&Y\@B&Y\%&u[]"5Ja]Y(nh]">Yj]=PPa]=bhh^;7P!^:^Ass7Z6ds8Vuns8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rsr;6KOL5UtJ +MiL51J9M2-kAM2-_;L4tD> +M2$bBM1g_FKnkM=LkphALPLY?LPLY?LPLV>L5(M>Kn>#4LP:A9MM?b>K8##4Ko(M> +LP:G9N.Zh=H`R,Aqu6Torr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W)trr2rts8W,qpSMnVI!^$[F*)MIG^=U\IX#mRFE_qOFEVnQFE2DEG'%hK +G'A4UG'%kIG'8%PGB\7TG'8(RG^+FVF*)PFH$+4NG&qhOG'.qRG^+:OF`DPHF`MPC +FEV\am.gPZs8W,us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)t +s8W-!rr)iqs82YmG(5*pJqAW.K7SW)Ito5 +D/O90DJsQ7Ci=91E,KW:G&q\DEc5o:E,]uLI:dD7DfKl=DJj?0DJjB2DJjB2Df9N2 +Df'N7CN4E;F`qM6G\qM>CijZ7D/438F)Yu9EH6/Hh>.$Ks8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!rr2osrquYTFF/C]H$FX^H?j[X +H[0j_I!U3fI=ZrtH$FRVG'A.SH\-uhH$4FYJ:2`iH$O[\H$O[\G^+LZH?jg]IXZKh +I!p(ZaI0FY-,%7Z*CI7YHP.5XK8M,\@/uVWNWY<]"=N' +ZDXh'VQQbiYH>7C['?[8[^WNCn,NCcs8W&rs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W)trr2osrr2osrquVUH%:?kI!^6hI=-?fIscQjIslcnIY*3& +I=-EeG^4OYI>*JsI!U0hJq&/qI!g8s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W)ts8W-!rr2osr;,u4F*DqVH?spbH?sd\GB\@ZH$+OZG'\CPDK^o,Zc(;Lkj,g) +I<^']GBeI]H?sm`H?sm`H$O^^H[:$_GC4[^GBItLMij0mS-hmed%ajfGbm[BZd6 +YHP7;ZEg[;Yct@9Xf\_0\[AcMX/rJ.ZaI9Uaj\_abfRc:\$)m:YHFn.Za$[-huEWO +s8W&rs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2osrr2os +r;,u6G^OmdI=6NlI=6HjH[:'eI!C*bGC+XWEdEb;[Dp\Rl0Q'1J:)flH$XmeI=6Nl +I=6NlI!g?jI=6TlH@C3gH?jd_Ng,m(Tq%X@R[&JNGC"X`H@C3dI!=';r;6Kms8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rts8W)men8Q0 +A7fLhBkV0nAnk^bCLh-sB5M?mClc3do)/L^pA4^``b9+$DJNs%Bk_9qBk_9qBP;*o +Bk_9qAnYpfE+Ecc>BEH-#>F)uGFEH,u=F)u>A +F)$#9F`hVMo)&Ies8N&us1E#bEH#o;F*2VFDf!/bq"k!hrr2rts8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Vunqu?]rs8W)toTlSaVPpW"WMlr'[CN?? +XJN//WN;n[P,QF`pAP$ip\44Ho:VqXYcXt.X/iG-Xf\P#VP^Z)YH+OtWNW\0[@sY" +R?d@?s8W-!qu-Q>S>`BeXK8P-YH+\&b5_G?s8W)ts8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W)us8W)trqbGjF*VhLF`qnLF`qnQDfg8FG'e=W +F_u8e_W:Fhs7uEdrVOr^F`_nPG'J1RF`hkNG'8%PG'8"OG'7tNGA_hHH$XR]nG3(_ +rr)cnrOZlgFEDVHG'J7RF)o"lq"t'irr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!rr2rts8W&o`FNFf@:Nn]An>LaAR]+]A7K=]@:45ZiqW9E +qYU-cr;Q]ob@G=!BP:sgAnGXeAnGXeAS#IcAnGXe@qoOd>\n1fB\N%Kr;-?eq=aHh +>\dnaA7B%XAn#1[W;H>fs8W&srr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W)trVjuVCi+'/E,]`5DJsH0D0'W5EG0*%J$\J@s8W,tqtpBm +s8UP_E,BK1DJjB2DJjB2E,]f:DJj?1E,]]:D/X$-EbT1Aq"ashs8Duts1`&aDK0Q1 +Df0T5C2'jMq"k!hrVlfrs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8Vunqu?]rs8W&tj--IBUSY#lVPU8o['?a:V51>nUS"dHs8W-!rqufrrVQ3Wpme.U +WiDtpW2Qf!WiDnlUSG#rXJhnhVQm;.TrP&]OnJMFs8W,urVHQ@Q`6g_WMc_oXJhtm +])Va/s8W&srr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)u +s8W)trVarXE,fi;F)uAAEH?5AEHZABG&;,6J[XkBrVlcnqtp?krVb8aFE)ACEcQ5B +EcQ5BF)uDDF)uACF)u>GEH>iEcH5ADJu]Vq"t'i +rVlfrs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rts8Vol +[9[-E?!UiI@q/nS?rpWB?t3VQHb/P@q"FL_s8W)us8Doq_d$b_?t3VQ?smAM?smAM +?smAM?smAM@Td&@@UibR`;BT7rVccrrVQDr=CY]H@:*AK@UESNQi$XVs8W&trr2rt +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!s8W-!qZ"0C6irVk&PChdX!CMIU!Bk_1-krVulrs8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&rs8W-!s8W#sgRG.@Y-+_%V59r^ +VOafmX/VGBS^I<6nE]K:s8W-!s8)E^nWfc@VQ$MlVl-PpW2QJdWiDhhV5UDoVOaEK +U7e!Abl.SAs8Vfdq>^KKTWY2lWMcbrVPC>nY5eP%s8W&trr2rts8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!s8W-!qYn0ADJO--Df0H1DJjH-DK9Z6 +C1i.4nc&FZq#:9jqu-Nlr;FoRE,KK1Df0H1D/F0.DJj<.DJjZt?:?XI&B=^#!-?[:T?>[1N=>[1N=>[1N=>[1N==^P9?@U<'9r;-Hnrr2rr +rVQ5h>$bE;?!CN<>?G<8KD56>s8W)urr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W)ts8W-!s8W-!qZ!NqB5)'mB4PRbB4bgkBOPU`Au4qks8Durqu-Hg +qYU0drVt)LB4kadAnP^fAS#IcB4kdeB4kggAS#IiASZ'k>-@o%s8W)ts8W-!qm0R> +AS#LcAnPdgBNg;jq>1-krr;uss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W&rs8W-!s8W#sac3-tXfJ4kTqS*MT:i0XWLoL!s8W,uoC22ArVuotrqQ0] +n<'33U8+KZUSF]`UnjWTVP]uXTqnQ_SYMXJU77;(s8;oss8Vfbq>^KFU8ao_V5'oc +T:E'XRfEEfs8W)urr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)t +s8W-!s8W-!qYdHuCMdp(C1q?sC2%EuCLh9nBrLIqrVZTjq>L9hr;HQir;OrNCMRTt +C27R!Bk_^8ART%XA7T4ZAQ=$Tq"t*krr<#us8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&rs8W-!s8W#s`0I6rV5:#b +U8O?EQC4DGQ^lV+r;ZTdq"OU[qtg*dp\FggoTkr6US=HVU8"HZUnjWTS>)RLVPL,] +S=uFERYeEOqYL6lr;ZH_qYgH?RA64:TV\K]S!^FSPQ1O[s8W#qs8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!s8W-!qYcgdBkD!jAS#@bA7T4` +@VfLrdJj"AqtpBlrr2oqqZ$Bcr;+ZKB45C`AS,OdAnGXeAnGOeA7oLbBk1di@:a(Z +S,N9_rr2cmrr2oorNfdAB4GOdB4kgdCL)8bp\b'krr<#us8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8VceL.bHB<(Ttf;cH^t;H$O_HJnVo +rV-^Blqu6Ni[n0M"<)cgq;Gp=f;GpCj;bp@f;H-Ii;,1.d9S3!3r;QQf +rr)irrV?5d9N5%j;,U7g;,:7jD"I>trr;uss8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W)ts8W-!s8W-!q>ZFQ@UN\J?X?o??XdJS@SMC7s8;cerV??f +s8M]ir;QZps8Bi6?=@,F?X@#D?=$oC?=%)I@pE8F?=.)G@9$6\rVccqq=jgarr;ur +s/o4)@p`JH?XI2I?W;(?q>:0krr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W&rs8W-!s8Vrq]9/k^Um\!QStD:8Q'S2,])Vg1rqQB_o^r"Uo(r4\ +qZ$Tql\LdqSt;RGSXlCFT:_R@SXH(=Tqe6MR?jJ0MR3?_rVZZms8MZaq#:<:PFe/+ +R\-7GQ^+SEN;rhUs8W#ps8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W)ts8W-!s8W-!q#-:UARf=V@q/kR@V'%[AQ"6ErVQNdrV??frr2Wir;QWorqs]8 +@:WeT@q&kT@:V9M%lL92/&R:.\2]EpW_ur:g*fq>UEorVH>e8Pi5X9hnDU9h\>YA*EXa +rVulrs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!s8W-! +q#>e>?<^c;>$4s3<`iI'9p+W=qYC*gpA=des8;orrV?'`s7O04=]na-=]em4>$>*5 +>?bB:>$5!4=^,'0='U"@s8Duos8Mfls8W)us/o$t?<^K5>$,$6=B0)'qY^q>R[ok9S!ST1p&FIJr;Z`qs8W,us8W-!s8W-!n!KH2S"H.;S=H7FTV.gBQ'.c2 +R[f\2U7Ia?RfE$Ks8W#ppA=geq>('.RA6CES=Q7AQ'A,?NV`JKs8Vrls8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!s8W-!p\fbF@:!DG?X?uE +>?tN;:m:)Ap\4Xcq#(*is8;lpqtTaZqt%X2?!UT=>[(N@?=$rE?=$rB?!LW@>[C`> +>[_sLrVHNirVlTjs8W&rrN9++@:!2E?C3krr2rts8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8VZbECNPi8kV]J8khiO929Wj +p@7nWp\4^ds7lBfn_:I:J9>7.?p[L\9M@uN84Zd85)ZI91qlI84ZU*G]:+P(Ci+&b<`iL-^p]($ds8W,u +qu$Kns/o!o=]SO&=&`7&;Gq&gqu$Hns8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W&rs8W&rs8Vcl[#^ZAQ^F,.Q^X/-Q^Y)Ws7GjTo(N+`s8Dip +q<#l'SW\;GSViZ#T:_I>R$aD6S=Gt2OHQ$)Q^X,'S"Gq7s8V?TrVuiprVZKfqY:*. +R%Kh6R[T_5OH?*-M"CK@s8Vuns8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W)ts8W-!s8W-!p&059>Zb38='Aa3U'E]:4V) +C27`b>$P?==^>37>$>*5>$>'5='f$7=^+s3Zk66 +>?G$2=BT8!qY^?ms8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8V`fCICQT8P)6>6paF=5A0-TqZ$Top\4I[p$g1h>=^q?3']bt5=S(, +6:!n+6psF26psL66pO716:O407n$2&qt:!cqtp0ZrV-?is7c2^7S#s87n?*;6:=44 +>N#5Prr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W&spA]#';bg7i:K:=j<)l>%li6taqt^'ds8W&jd[+B;7n#a:9282\;G9h[:fL:h +:f'tb:f(%b:0js8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8VfhCI(3J7RKR255&:J4MY;,C"_;a+9qrUp3j +lMUGWs74<[69@Y29i"\b7nul[9heDY;bKk\9he>V9he8Z8krAU=A):ZaRoN.qu?]n +q9/d:oCr7[q5HhW:esb\:JXba9hAXQq>C3js8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W&rs8Vunrr;`l[>p?-Q^!c"PEVJkQgFbBmd]K9mIpDI +f:$`,P*q]+R[B/%NKK?gR@'A'P*2)qQ'IMqPamYiOFa-kPE>/2q==:Wo^M\$rVuNf +s8W,7OHkriPa@Z#NKB[!N;W;As8Vums8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W)tp\f50;GL4iu4?oan,K*qu?QfpWNO7o_AF]po-tc +;c6Il;c?Om;c$ocp\Xshs8N&us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8VrkD*C*F6:!du3BoM^Pl(7Ps8N&soC:jd5;thl3'BAe3BB8c +5X%@s4?Ghm5!D4s5X7V$5s%Ou6V'L03hcoO,oNi +Pa%;mP`_K%SthR,D86,NoD/:Np]%t4s8;6TqZ$T4KoqL\PaR]!NKKcrO8n_Ds8Vun +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W)tqu(_2 +:/+P\:esea91>HOq>'sbrqZBbl@_f":es_\;,U+`:f1(c:Jjh[;GU(a:JXb^:JXk^ +=%lLn:f0cbrVc3\rUKX\S<*XCq#:-dqPHbY;,0h`:Jjh`;bCE^p&+dfs8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8VujD)s^=4[1\c +3'Jlsh"^[Ep&FphpX3#%1I+8c3'K/W2`3NW4ubVb4$#A^3]]Ac4?Pbi3'B5`3C#JV +NUZN5oDedfpW,^NqY^?io(MgK3'KMd3^>\g2`j>b;s3]Ls8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W&srV^Y"84Z3?5YFUA3b[[S +qZ$$[p&"dD>=(DD9gVBG7nH6@85;fH7n-!<7Rfm<77BX677BX:6q9O657nZ(Y(s8Vchn+lYR +s6OuLH'4\[PF7AiNf9!_O,9'`PELl`Mi3[YOH>H]Mj'0ePadPR_#OH7q#BsWrRknY +s8VWWo)Ja+JW>eNOHtoiM2e!bNW8MDs8Vuns8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W)ts8W)tr;1\-91qoP6r6QT5&'0Wq>^!^p\b!D>X^kQ +;FaAW8P;]J92SJV9M8&P8kM`L91qoN91qiO8PDZN76d:;qYg'cp\4U27t:C4rVH*\ +r1ubS:J",R92A,R;++^Wp&=sis8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!rr2rts8W)trr;ifIkWZ84ZbS]2)I+jr;HZmrquNb_cAKM4#A]P4ZG>\ +3&r`N1,LdI3]T&U1cI0H2*!WZ4ZYJ[4#8[7qYgHos8V`bfhs2SrUTa]o_S?U1,hBX +2E3f\2E^K0KSb\FMN=!cOHZ#iK)Y?> +s8W#qs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rts8W)t +qt>b,84cHG7n6'=6+$OcqtL*hqY\`O5Xe@87SHTM7nZBE6q0^>7S66C7Rp!B7S$'B +7nQ?B7n?L'cqkQMI9h@lJ91hZF8j?_So)8OcrVlis +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rts8W)ts8MrkLG(;7 +4>JiL1FZ8fq#(0dr9=+>@NdE\.5WM!+=8Wl/i,=A/hen82DI0I1bCL:/i5UI3B/rW +0.:<#qYpNks7lKR?7mghqY:'[r;-;\0/baG0fM'L1c7'@=mu+bs8Vuns8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rts8W-!s8.R06UO7&6TdUl +@.O!cs7?0Ts6F_Z3B8o\4>e`J3'')b5=)* +r:0^[r9n;Y30aF?s763gs.)/85s@P&5s@Lu5<3?Mp\jsds8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVccrrV?0X`Hm,kO+iLFO+iSns7uBR +qXOU_K2dYhNL50=H%1L%Jqob_JqSu?N/*1?NJ`mZKSPSDM27.OKmoKjs8W,ioBu8; +V0-b"mHaZCs8W,2JV]&5KoV7SNfT<\M#[5Ks8W&rs8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!rr2rts8W,urV;I86q'^57mKL)@Ia*frq$'Srp+MV +5=%>!4uY5V4[2+t7Roj95t4:.8OQ*87mfR28OGp784c',Dtj2,rUg$^qs8,]4.,p@ +rpp'drh)GD7RKO77moa66p>5Up\t*hrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!rr2rts8W)ts8;flOtSF>1GUa@0e8ahoDe^fs7Q)C-8mYTBPrE` +NJMd_75ckP2)mBI3&E?G/1rS)1bgO9.5!;,.9P-oqu$Emq"a'',rI_p4?Gej5!V4o5WV4q2`s&_4ubQ5iqrWJqY^$KM2R1AMi-sDqY^6hmuB4m4HTR'rS,VL`$/2Ak20ek=2F85A,s8W#os8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rts8W-!q>ZpB4Zkee +1-Rfijo5/Dr:o^[dQg!S_sIBtqtp3aq=NsdJP%RP4?>A]4ZPYd3^Pqi3]oVe4Yf[J +s8;Tgq>:3hR5m/g0Tc;-p[e7Wrg>E#3&ira3]T>d4#VNeoDSXcs8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVccrrVc?ad<^:sP*(!BJ;a.$ +s7?-Zj7MDHMqI_&s8W-!s8W-!s66\;IY3Q8LPpe7MMHe@Knt\JOG]<]I,4bro_\4O +q>I[5K8Op#p$VVMrr<#0IYii8JVT,>M2@">U&XZ\s8W,us8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rts8W-!q#6sK5:-dR6*Mu +2O=:6q"4FZrgYf04Ztts5<_D#5WaGnoDS[err2rts8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr)lm]c\mV.5Wt9.sC[[p\=[[s8@_7nFleW +o)/C]o_\IVq"adQNBAF?2CU44/2&D*.Om2--RpN&_#"$+s8;i[oqNl^/hA6*q>:3l +oD&'I+ttPu.kNG31GC@)Hi*L9s8W)ss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!rr2rts8W)ss7sDU4ZYSj68^QKs8)Zgr:^-eM3@K,s8VlorVZouZqt^9ls8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +rr2rts8W)ss7sP_5X%>$83Jn^r:p-`r:^-fMNdZ-rr)Ngr;60ar:g-frpZ7D/j)K^ +5=7V#3^Pqk6pa"#3C1^_r:^'`r9aEe3&j,c1mn.9rr2KaqOTN15X.Cr6:OC14>DQh +o)8Rds8N&us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)t +s8Vup_[HVT$jR^p*M*!'nb;_Po(DD;q>Bj\qXjFWq>0g\p@%\Lo$Cqh0.\\$,V^er +/h&A%+"&8*nbr:\qY0RT]J(`d.4QX)rqcHfp\X`Q+YG2j-m0BA$O@(AN;EALs8W)s +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rts8W-!qu+JG +',qo,-7C1;s8Vfep%e.Ln*g2Sp](9ipAOg`qYg?bqu$BDC*>Gn3\iER3]/lQ4?5,V +0W4gJqY0UNnGU?j1H@M2@(?J;o&)R[&GQH%BtlrV>gG +qtT^YdUe,jLPU<,p@.P@n+cpnFbtm,Is6$SA6iM=[f>pmqt^9ls8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rts8W-!qu+VQ(*=Y;/2/NNr;Q?_ +p%e1OnF6>SpAOsap&+[`q>C*\q>:!@E%*n45;tJf4ZG\g5Kd84sM@-0HqBo +qXj[]q>'c=#RU\9!!3-'"9eo3\,#t$s8W)ss8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!rr2rts8W&tq>B1s%2TZf'bqV4rqHL>k=CbcI +>?tH??X6c-ec5=:qZ$Tqs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!rr2rtrr2lrqYfJ'&f_`%(`4:ArqH6_q"sFUs82H^rV?$[q>'jYmecnNoCr"X +k'8LH5X@Fi5:-is8N&us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W)ts8W&onM::M!XAf2-27?3oD84Wr:]UVrUfdTo_J4Qo(V\KpA"R^o_81I;'?o, +0./+o-7Kub*-1]Kn,N4\qY]PA',VMn$4m;grq?!]p\"H5!.5X4G2)@!F +.lSf!qto^VmI0cHmR%j9-5mjK'oDt`o(i%PrdbUo&f))r&eYrp(E)9-p\XpgrVuot +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVc]nrVcZms(bkN +Bl70J=TA9hn+QVUp[R_Lp?h;;p%nFUnb2eYr;>sJlM(>YW-WB.K78?&L5C5*CTd^; +m/HhXp%nZ,Dg-D@AnY8^rU]XWp\Fi^;-R14?tEVL@:9OWo(;\S +mRJEK.NTZX(QA@doD84Sre(q#'H%],'bqT))^"/8q#(*irVuots8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr;ulr*BF0"UYP<:B1@hq"4.R +rUp!TkOeTFqu?]lq>C0gp[J"To_%kN]bL_W#m:V@%1)9IqssRUoDACTq=on9+VdQ6rp][XrpTgW58#mph_f)51=s7,pbpLjO9!t#/=!s&CIqt'CVq"4E4!!ii4#6Y&6"q1Z; +oCDq]s8W&ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rt +s8W,upAOlI'c%T"(CbN^o^2GIqX4%Nq>U?ls82Kap\"=\nbi1Ro_S:Ss7Q8&&fMDu +'GD5p%P6E5oD&+GpAb)6%3-'$(EXG/'SZSYo)&7Tre(q')\s,"'H@r-%9iZ"rr2or +rVuots8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVc]ns8Mcm +s/og>@:!)*S,`^*eqtBjco'Q#/s-uYe?=6u@>Zt?X +o)JLas7,RQq0k51A8>FT;GB`jrq#d^rVZ\k9jCt.@piGJA7no/rq--ds8W&ts8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rtrr2rsp\t&M)]BV2 +)%_)jp[IqMqfY0(*4D9'4CY,rr2orrVuots8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr<#tosPG6#6kG9QN-m_ +o^;_Pq=XRTd=t[f0e"G-:M[r3p%n.Jr:'(Hpra*N#7CbD#7DNiqtK^YmdKu9Hj0cX +$NLV<$4R;hr:f^RoBuF-!s]2A$47(A":,=((p.QURLcL(W2o'uJ?lM1D2(Cq2s(E3r#+NaZZo(hbDs7D*\(DS&)*Y0#% +&qp;Znb2bLrIb^n'bqN$*#05(&Wlnarr)iqrr2rts8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!rVccrs8W&rrr<#spqg?:\,Z'pqXjaZo^Mn\s2^ab +F),E4PHX`\rVPpIqsWkFrmsbKE-,Vu<_Zp%n@MrqH3[rVG?6@7`I60L/fb +d-^`/nF?>AlhCA,)AO/3)]]\2,g-&ZoD7qFrUGa])AjS0+r)%9(5Mn`nFcMFr.kt$ +)]K_8*Z,b5(6eUhrr2orrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W)ts8W,pq!B=7!t#89UAaidp&+:No_[og&dJdR%299[#m^i#S./hp\+:Yna?:.#7V(I$4I"< +":,FMoD&@crr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +rr2rts8W,srUfp[.iK6H(([;:mJ$>Qnb2SNo5l#b&.T0b&e>K_&m`obrUKXMqY'me +6l$OQ'cRZ(Yl+%jme6/Dq5,&A)\j20(E!o(&;L)UpAXdWs+M.&((qE$().N!'Z0P; +rr)fps8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVccrs8W&r +s8DumqtY5;;-7I>_uK0"qu?*Un+Q=$7S-KT:KC7b9h[Wmd/E\)qssXWqYk\MEcGPr +<*%iTiUHL;p&"Zg9NGk;:K(tE?sQX=rq>mXnEp7R94MaM?!gfB@Ui@"nFQ\[s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rtrr2rrrq?0[ +0c_)Q)AT4InG;kWnFcDLn8]Tb()7Q((_m_u'OK)aqsjLOqt9g^7iWKf)''D7[/97g +n+Z>FpS/]B*Z,_6)]oq<'T)\[p&4OQreVC1*#KV8(`+&.)9)7Brr2ors8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W&soD(f["ptJ8 +Wr;YdoC2&>oCkTW$jm.C#6Fl+!!3B,)pdsDq'RPmdKmu"q1qK#R^eH"V*!Gn+m"`r;Q`rs8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rts8W,uq>0da9b\Ea(`9[ZmI0c? +n,2kR9G&0[()Ro*)&jP;*YB[Jo_&(Knb;>KH4Cr-*"3pdoCVVGp$)2JNtr-=%h96c +$ka*[!ep@BnalAEqKrbc%La!i(*FD51$nB)rr2oss8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!rVccrs8W&rs8VrmkOX.)A8#=ObQ%)&qtTLPo(n,D +ARetOAS,Of@V'@bBDL]Rp$VDKmf0(]Bk_g,:Ufrfo_.k[Zg:KUCf8kDcW;GKE` +s8;K]n*p@H4\ejM8P`l7@qAd@jmW6Lq>:3ls8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!rr2rtrr2rsqYTm^:`(,n)B#p\nFH;EmJ?JM:_k)l)&jP5 +)B9\;+;H?WnalSEo(_MLI1m_=+VQ#qoCVVGo]YuGOr=rP'bhH"&f;H"$&\NQnal;A +qLB.o'b_?&)'^%B1[XW*rr2lqs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W)tr;Zfsr:cE\$jm:F[/U""oC_\CqMGpo#S.7K#m:;3"98W0 +$;gEel2L8Kp@ja^$4-qGC$GWho^h\Op="1R<`rd;?!q,L@q];Zq=X@Ro^hsa?smDV +>o3eP"Tqm!n,*.brVlfrs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!rr2rts8W#rrr2osS.m"a*?2cmoC;PLp[nBA*#050)]BY5*$$1<*>B/fqt97R +nFlVSRMm1b(`@Jerq,jSp&4a:GtD.DA7]:aB4YOb@CZ%&oCr(Uri^!I@VKL((`=,% +@/'-err2rtrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVccr +s8W&rr;ZfsnF=b*C1q-]ec5@8qu--Uq2JH\@;'(WB4u!oB3]4`V>pPep@\"QrTK\qS=cURS"?UWUoBpKs7l9_p%8:0Q_L=XSm5l?@p4ZfjmiBN +qYU*uGhsq"*bLnb;eTSKAsr*?TLq +rq,jSo_eO9HqdsWC27KuD/3m)BYF35oCr"QrNg9TBlIi:)]Tb2@e]#71P9!X8`>%M[[nlM'`?p\VE0"UPJ?XnqY_p@e%G +o_@hLrqQNns8Dusrr)3SrV5pMm-FKCnFl\UkV!,F&IY9.o)A[hqu$Hns8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rts8W,tr:g6ig`%(L+;_Ze +o(;eNqXFGM%NHT3*#TP1(`+,5(EF5)h>Ha:m.C)N]GVY/*?2Zjl0\*6md9`En,*%V +rr2oos8N&un+HMKna5c3qYL$fs8VdX()J,3X8hbirr2rtrr<#us8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVccrs8W-!s8MrjlJ_bPD/X<#b5_80n*0E0 +s*&4%An,CaDK'/p?"%SnAmGB9l1=<8oCq6A<+9HMci'a^r;H4Q)]U.DWrDPerr2iorr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W)ts8W&tp$20:!t,D8V>9`RmHa64i$&R;%g!(F#7LqI +#QkDA%M>T9m-j]=n+P!>#RCepA*\i(E+V<*ZZ%:*?QFE*YoJ& +W;lDWp$_DEdN0GL*u)QanFl;Ep$_GDr;6!Om-sH4naQ#>s75RJp@e1TnFH;Dp%/#; +(*45EiV3$Fr;Q`rrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +rVccrs8W-!s8Mcji7n9rB5qfr`;fJulKI[/q,DEXCgUgiDKBQ+@pX7qAm*FZlg+96 +lgjgO=(,cJeGoFAl14cGj6,jtoC;5L!UqGJ+Q+r@Q`nF,o9oCq;m*ZugK+XT%\Wp@.PEeKGtT ++Vqico_IqLp[R_DqYB[MmIBZ8naPuO8/21n+HGLc4LKm&.\mH#6Y/7$3^_;'FpH'o'5l?o'sg1"UbbF](Pjq +mdp)Jq!.29o()DEoCMSGp@n.Jo(_V=nau\No^qtOnLXkN"'PZls8Vuorr2rts8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2oqr;?Nmr14KF +*u^UDo'Gr>o'k0Q+s.jH)]p=J*[)^J+;l:7PPP+Inac8DcQ4)O*Y?0]o_7eFo_\FK +lgjW;oCVYGoCVVFoCD8=o^hVAoBuAIn*0C%)'9T'r9O@[s8W-!rr2rts8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVc]ns8W-!s8Mror;HM`;eKNDa8bu% +lgO<:nPt!`B4bR_BPD7"BOc!qFD8JhlJh0tk3)bL=^tuFeGJk2mdp)Jq!.,5nF5u= +naZ/?n*o;opAF=En+6DKmdBK2s(H.d=,6J0p%/4`rVccrs8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2orr;?KkqjeHJ*u^[Fo'GlLi>i%3&.]'P +"U557"q(_F'*Z2Co'Q&=o)$'3%LK,mHaB;n*fc8nF5r:p%@_Ap%7G; +p$qGBn`ToEoe6gZ!iu:fs8Vuorr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W)trr2ooqu?Zqn_,W7*[Ge(nF#r?lh9No)'g7D+Q6bo]5T/kO.a'oChYAnF5r:nF5uEF*$bTE"ZRmI'3:s'^#!B4bagAnu="A8-"'F("53 +lK.?rk4/@X@UN\PciK,mHa<7mHs?0mdBN2mdAlfq=s.CoC2/?lf%F(s(c[l +m-jN8lh0r=l1+?.p[7c<,p!i1qWn+X +rr2orrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8Moqq>Tm]@LN_O6LOC9md9K2l;.Kh#7LtK&J>Wj%LNCG#p[jbm-XE=o(e[_#RLqJ +VtKfQr:BLSo'c,6nF5o8nF5r:m-jK8nF,Z3nauYPo'6#DjXCNB2W4B,s8Dims8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2rsqu?Qn +o)Mo_8(Po'u-I'HnMB+W_aG)^-FN+s\9bh=U4(m.'WDTcG3t,94;pqX44M +nFlA=n*'3-mHs?0mdBK3o(288nb;G:nF,u7m-*q"*#_?1o_/7\s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8MoqqZ$*aSRZqc +H2m3uq=s4drA7sBXq=jLPm.JeBI!p0H[/BstrUf^WoC2>: +n*f]4n*f`6nau5:o^gu%rr2N[p$hhXs(GqPF8tq-rqu]ms8Vuns8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2rsqu?Nmnbm2@-6H(Uo(DYH +nF,aF(*anI,U+NY+XSHZ+s\MD"Zies8Dims8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W)trr2rtrVl`or;*Q<+WN?)md9Z5nEg1A*$lsT+s@jF +*uH1K,9n(JqZ#UImd]H>Jf,[V*>uTkmcEg!lgO3-nEo`5mHs?1n*]`8o((u3qX3G0 +m-!p3lL4C1)BF8(htd6Js8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W&squ-EfkAPTd?MERBp[@;*s0?$OF)Z8ED/sW/AS>pt +?*!Jjm/?VKiVKlnI=Z?D\GZ$en*BE4n*or*[`?[,paWX,on3W,9n+Mp&3qC +nakoBKcMBc+<.igmcNp$m-sE1na>r9mdBQ5nF,o:naYl5p?Li0n*9H9n+H9:*?]e, +i;3HNrVliss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!rr<#urqQHam7@Hk"Jl(]o'5T(r9.\s#n%.G#7LqN$4dIP<9*iFnF,f9na&XP +#7(D?V!RUFp%J.Qp%7nNp@\(Mo_%nLo'kr4mcO!+l1=E;n+Z\Sj"UiaeEQ`+rVQQm +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2os +s8W,qs7YqV)^H<-r8m\@o'?/6E#^&K-6OQ_-79u^+WatQp$D,6lL+37:*Co1+==Vp +qu-Bgr;-9cq>C-dq>'maqtg3co(;G8p%7PAnb2hZq=j\S*&6:9p&"ads8W)ts8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr;rqrV-6] +pLnGg=Ocrtna5o9s6bh;>&AS-Ed)JDChd$@H1UUkqtfXIoCn)PCM[HglMpnas8W-! +s8W-!s8W-!s8W-!s8W-!lf7[1jmVR+rr<#us*[j]mdp5Qs8Vigs8Vuns8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2oss8W)orq5bV*[_l3 +r8mV=nETo6E#TrI-Qs`a-7C)b+<=eOp?hAr;p<4H^$4RRO5Yt3P9i"V`H7Pk +mdK`$ti]LLF&^s8)Wms8Vigs8Vuns8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W)trr2osrql]oq=jWS,:+ULo^Lr/mdB6:k'f*-+=&*S+W_XN3eQJl +kj.a.lgOPq-m'fd/K[nt=BAI&=BJg5<`rU/=BJ^/=]np4>H7Mim-X?6oWD+j=("uW +)0YfHq>L!rr@Iq=EnEq="97!!ri7!YuZlq"XX_ +qtg9ks8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!rV69iqY:'S5q*p'dIQSmn+H/3qYo6AC.UWU6r7l^df'46lgjB$p[J$!+=JZf +0-qe_*ZHFK+WqpQ+UEos8W)t +rr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Vui +q>L'\s7Bo=D0,@ChW=P3nDj'2iN\)I<`iUANiLk0puM2Lp[72#s/U?kCi"65GB7bA +GB%YCEcc;BF)uABEH,u=GB?]]r9WG.mca\_i$jmFY%1sEl'akQb%1a!\%M'*^ +%hB0^%1`kuqsWqGp?qp6$PX6_(^FC:lLt5Vqtg9ks8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,srr;ums8;EcW>mf;@JBBVn`9'' +lM1DQrV#UInF6/JqX3D3m-<[%meFXF*A&cj.k`+l-R:Am.kE(u.k2tt.k<)!.P!#$ +,*;ijlL+$!r/DpO.3^DfD#3Jls8W-!s8W)trr2rts8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8;fnr:^*bo`*3CK56/;kM,k#mHNTts8W-! +s8W-!s8W,ag#Vr&nGV2*h-Y8TDJX<=G^4UZJTlKiH$apcH@'saH$O[]JV.44roiJ0 +lf\;:CO:MSHXN?Cjmi0Br;66`s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W,srr;umrql9cV&VB7B)2&]n`9*)k4AKBq=En=mdToG +q<[&*mHj$.lh&%B+tkAm.PE+r/1E;$/1i;$/1W2#/1`;%.kE2&,*2`ilL=9*rJW!R +/0utmD>'/1`>'/1`>'/1`D,-AqZjlKI?oq3!$S0.n\)dJED5s8N&u +s8W,urVccrs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8Monr;$-aoC2HRH?s/[s6B"9l0J32jS%s'p%7nGjQ,UmoCL_pinXS6HtmeQJphKO +IscThF)uDDF)uDDEH,uL9jqYC0k +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urVlfn +qY^$Wnj>,d,,P;&na5`0p?(B,nE]N0mHNium-=-2k3hm0q;t@!,:kJt.k*&".Oco" +/1`>'/1`;%.k<,#.k<,$-B.`jlg!a&q2cjP0.n\+d/!52rVZWns8W)trr2rts8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8MurrquZls7,T[ +!##hk]`6s]naGi3m,[C"oBbc4nET/tl07]tnE\k6"W.jb&J5We&J5N_&eYfi&eYfi +&eYfi&eYfi%gWSpq^JoDLH_TBtaQ4p@@kMq#(*hqYL6ls8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urVlfoqu-N]p:;4t,;m16iU?*sm-sN.kj@d" +k4%p,l0.Kun)Eg$jCoVj0/"k-/LrG+/LrD)/M/P+/M/M)/1`>'/1`D$+HH0WOs:kk"0#o'>c6mI9H0mcX9+ +nF>r7mH77J%graP%h]Ng%M'!T$k*OQ$k*OQ$k*OQ$k*OQ&Jl1:p#k`/kNVJk&Jl<# +/CbE&l07g0 +@N.$R0InV(/1WA11bUL80/#"50JG170JG170JG+1-B7fcmHj0+pm*Eb0IfBDnaZVV +s8W&qrVccrs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8Monr;-o5s8SU)MhcIr +H\$p*FEi"QJ:N0#IXZ`pIXZ`pIXZ`pIXc7RkLo1dh;A+=FaJ:GD"d2]r;-SrVlcorr2ors8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#srr2os +r;ZWe`YT!m%3qG8rpT.7l0[s(kjRcujlYpoo'5uKW%ASs$kE^Z&/5cl%M&pS$k*OQ +$k*OQ$k*OQ$k*OQ&/l4=p?Uu+k3DPm#o+3hP4.T4s8Mrnr;Zfss8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2orrr;]fnEeXY +/hn\0V"=HLnEf<"lK$shlK@EsmH*Zoo(fFI,V:W'0Jk:4/1iM31,(@70/#"50JG17 +0JG170JG(3,`qiil0%@"qirBZ/LRInm/I%`s8W&qrVccrs8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Mror;?Kks8Vofqf%FPBj[t7 +q<-o"mI'&lm.9]4gYCuQo'5rI]N\]jLl6G'I"R0/FEhqPJ:N0#IXZ`pIXZ`pIXZ`p +I=c:UkhYF`gu/1?D0^27df8J*rVQQks8W-!o^r1`s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr2orrr;fko^L?a/hn\0U\"BLmHNj! +lfI6plK@j +l0%6qq33*W/h!RklM^b]rr)forr2ors8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W)trr2orrr2rtqu?]is*>7d&I&_?[Gp93lLO?0mH@p5LUX/8"YF +s8VurrVufnrVccrs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W)trr2rts8VcXrJFp.OG.P>oDejjp%.;,m,m9cjlZ%.s8V)GF_ZPV +H@($bG'J%MFa%tPH?sm`H?sm`H?sm`H?sm`I=>\;q=jIUnEp7YI=b[Vs7,s^rr;rs +s8W-!o^r1`s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-! +s8W-!rr2orrr2foqXFN9/1i\-,[\IWo(VG.6/MAe30JG170JG170JG170JG.6,EqflmI]o8oSY:V-t;i;rr2iqqu6Qmrr2lp +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2rt +s8W-!s8W-!k3b2>&e?'!,>=EEkkt8Nqtg-^nF5\YI7bIj&0;Mu#ndX\'GCuh%hB0` +&eYfi&eYfi&eYfi&eYfi$4IJddG3!hdb3],&0Dq'l1=lRs7uQhs8W-!r;?Tps8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!s8W-!s8W-!rr2or +qu#RM="lKe1*\GVW8$J/p@S1UqY0LKkIlOM2^g(21c@'L0f1aE2)dEO1cI6J1c.$G +1c.$G1c.$G1c.*M0T+]Ie^E+-mYiYW4OWrqqZ$Qks8W#qrVccrs8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Vlij8Oa\ +OcFlu@=5NBoDS4JqYBgQk2tmNQ?QeKBRPG`G(4abH?jUUH$OX]I!gh<*A?f%p)&I#De0s7Z-^s8;oss8W-!o^r1`s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!s8W-!s8W-!rr2orr;GaM;_L!`2't%] +Ut4c*p@S4Wq=a:GkeMjQ1aa\/1Gg[A/i#4<0f(R?0JbI>1,:U?1,:U?1,:U?1,:R? +/Vi$=e'Q\%m#!>U36q-fqYpKjrr2lqrr2lps8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2rts8W-!q=jR]s8TVX"<%ja&IT6m/4sPt +K8Fnf;a_T=&depU'FtQa&ec)s'bh,e%h]`s'bqGu'bqGu'bqGu'bqGu&/>ct-6O0G +)AXD7((ZH&o_/=br;69ds8W-!qYL6ls8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rtrVuQ_]f@N.4$,GV-o+P8K8l7iQ\fs$ +2_Ha21,qEU2*mT3^#V`4#8T< +ScABSrVHQorr;rqrr2rtrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!rVc]ns8W-!s8W-!s8W-!s8VZbnatIHDi07&IWg!hMk[Mjg#(,gV3ZdaIs5pX +I=-U%KS+o-H?k:#K7ei0IXZ`pIt)rtIt)rtIt)rtIu'&KHZb7,IU0`^H!W)2`ETG.lBt6J;]hfP_F-f2_Qg3/Mf@B0fV'K +2`*BK2)I0J2Dm?L2)R6K2)R6K2)R6K2)R0K0K;9W3BT>Y4#AZ>S,W'Orqucpr;Q]p +rr2lprr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)t +rr2rts8W-!p\F[^s75i>&e>Qi%M^'+)%IAu(DdVq%1sBo(`=#&(D7Aj'+u)t()IPl +&JQ0#()@Z$()@Z$()@Z$()@Z$'bMB')&X8+',23.&lmrUqZ$Tqq>C-ds8W-!qYUD[2`E`X4?,D`3&ETS +3&ilW3&ilW3&ilW3&iuX3&39G3ArcO1-@.)na?;Sr;HTos8W&rrr2rtrr2rts8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVc]ns8W-!s8W-!s8W-!s8Vic +pu_UtI=Hs.H[pg&G\1>kD/Eir?XnS>Knb#)J:EE.Kn=o.H[L^*KnY85It)rtJ:N0# +J:N0#J:N0#KS5YSDJk>eG'&+fFKkf9p%n[fr;Z`ns8W-!qYU,1,UpI3&s&Y3AWTN2E!HP3&EQQ3&ENO2E!HO2E!HO2E!HO +2E!NN3]/ZJ3&NKH1-I4+md9lMrVl`orr)iqrr2lprr2rts8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Vrls8D3NAeYgk'GDE( +&ekii',;B$',;,k%hocn'GM5q'bqGu'GM5q'GM5q&.fEf'GhQ%'bqGu(D[f(%LX-i +(_d\q(`+2$2V8!/s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)tqYU9ilgf*G3]oSh4Zkhj4?GVc +5!(bd5a4$,Mc3]];_3]]De4?GSa3B9,]3]]8\3&s2c4uYJZ4#B)_ +68D?pq=4Lbs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Vrhq=j1SSS38"L4t&'OHP*DJ:N?/N/iL? +It<-!K7ef/JqAT+J:N3%JUrB'J:N0#JUrB'JUrB'J:DurJq&B"IX6[!NfB-IM#Zi& +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W)tqYL3hlLT*I2)mTU3]T2^2E*QR4#o5[3B&iU2Dd?O +2`EZS2`EZS2E!HO2E!KQ2`EWR2`EZS2`EZR2E*TQ3]/iP3&*KU5;,djq=O^es8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!rVl]ms8)KUcUA?Z'GMH%$PF-k(DRc''c%Do&Jc9%'bqH!()@Z$ +()@Z$()@Z$&eYin()[u-(Ddl((`=52&IfQo()n53((_3"X69E\qu$Hns8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W#qqu6WkqPc4$5Vf4?Pbi4?P_g +4?Phm5!;"i4$,Pe4?PYd4$5hn4ZPG`69dOh3^L^Rme6PUrr<#us8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8VulqXjR]s-\%_L5()$M3*CFKRe`2NfSdCJV/W-KS5#4K7ef/JqAW-K7ef/JqAT+ +K7ef/K7ef/JV&E'Kn4f(I"@38N/!.GrVtj@qu$Hns8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&squ-Ni +q![!B1H@HU3ArWQ4$>Ya3]T2]3B/uZ3]K)Y3&rrX3&ioY3&ilW3&ioY3B9&Z3B9)[ +3B9&Z3BB5\3B&fV5Vj5sRY!5`4#o>a +4$#Gb4$,Ja3]];_3]];_3]]>a4$,Mc4$,Mb4$,Mc4$,Ja5nbMtW +rr<#ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8N#brVZNfiprul'He)0(`!u-*$$";)&XG7)]BD'(Ddl) +(`*u)(Ddl((Ddl()&X;0(Ddi&',2/r(Ddi%)B0>&*>p+G'bbrao(;eVqu-Qps8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W&qrpKa_qYfd\]KS5B3^u\25s@V&6U=%*5!;.t6U="(5sdn(5s[e& +5s[e&5s[b$5X7Y&6UO1,6UO1,6:!k&6pj=(770C-QiHOEr;QTls8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W)_oCDbXmJld1I?TYXN/EIJK7o>HKS5>DLPV(RMi3LPMM[1HM2@(GM2@(G +O,o3WLPLY?LlILXOH>H\Mi6RLl77TP*1ZXO,o?_NK&pWN/W^SN/W^SPEV)eMMd:KO->`hO,o3UP*1NPLl.4G +E2N3rq>^?err<#us8W)ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trqufrqYp<^nY86+7m0+%5X.Fr5!M7r +5JpMo^hnY +rqucqs8W-!rr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8;oss8)cjrV,RLN#iZN*ul"0'GVK()]KP.(E+85 +(Ddl((Ddl((Ddl((Ddl(*??+;()@W"(Ddi$'G_Gu*ZGh:%20`tA+B3bpA4dfs8W)t +s8W,us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W&ns8W,ps8)]fmf/qA6:XF06pa:15sdq+7Rfm:6psI477B[8 +7Rfj:7Rfj:7Rf[06UaL87n6'=6pa4.7n$*?5"S"/9gO+"o_/(Xs8W-!rr2rts8N&u +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8Vigqt9RIs8;EegP:lULkUeKOHG9QLl7:VPEUl]OH>QcNfK-[NfK-[ +NfK-[Q'IMmN/W^SOd)#jNK9$UQ]ZfVIu'MRYlF:dp\Xjbs8W)ts8W,us8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W)qrr2rnrqQHdmJNV=4[MCs5!;(o4[)(p5X7V$5X7Ou58k_iK8kDNC7n6'>84Z9B84Z9B84Z9B84Z6@84ZN2h^qmq=O[cr;Q`rrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ur;Zfsn+H;;pSi%Y +SX5=pOHYNZPEL`XNK&jSO,oBaOH>QcOH>QcOH>QcOH>QcP*1ukP*1l_M2-e;Jr$+[ +Q&\t+m,e')]TV5)]9G0 +)&X>2)&X;1)B'M4)B'M4)B'M4*??(<)&X>5*$HLL+W9he>V9h\2R9MA/U:/">T91qoN +:/"DR9MnSa7oMR;puhMOrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!q"Xmhs8W-!s8VQN +rUTO%Fb,[>R#d5gN/!^cQ^E_pOHG]hP*;&lP*1ujOHGZfN/`p_Q'IPtOH>TcP)kcm +Pa-uaC:+$-r;Q`ro^qqUs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&rrr2ors8W&srUp3XmCl.V +84ZEA5t":2770R85=It/7Rfj;7Rfj:7R]^677BX77R]a777Ka984H*86V'aA5>4,( +qWReRrr;usrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!r;?Tps8W)trr;orrqQ0CRPl$#*@)L? +()@r5*?#Y2*??.?*#oq<*??.?*#oq<)]K_9*#ot@+s/!P*>]Y;)AsM7Npc*"r;HZq +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVc]ns8W,sqZ$NiqX;F67RU!O:/4MS9MJ5V +:/aqa:JOY[:/4S\:JOY[:/4PZ:/4PZ9hS2Q:JOST;-$@^:.hM`jR2sEs8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!q"Xmhs8W-!s8VETqu6Thl(3`iPF@YtL4bqaQ^g!Oc,3Rf)P./rr<#uo^qqUs8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W&rrr2ors8W,tq>L9fq6qKp?84Q0?7n6*@ +84Q0?7n6$<7Ros=7n-$<8Ou9:852N>7RO'Jk3r6Hs8W)trr<#us8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!qtpBms8W)tr;?Kmp](3hou']W$QC3,+WVUG*$6@F*Zc=B*??1B*#oq=*??+? +)]Ke<*??.?*#ok7*uu7:(F)8Jna,lIs8W-!rr2rts8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W&rs8W-!rr2Ndo^_n3E)B#$=Ai'n:Jakee9b"o_\L_s8W-!rr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Vfds8W-! +qtp?lnG2hOpWnM=H^1=qS=#h;R@'5"Pa%DsPa%GuQ'IPtPa%ArQ'ISuPa%DrPa%E! +T:hgIQBcs=jP9,"s8Vuns8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2ors8W)trVlHe +p\"@0BhCBW:J"5N8P2NI9h7oM8P)KF8kMZH84cBE84cHI8P)KF8OuHG8k;`O8k;?? +=L[qhoDJObs8W-!rr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!qtpBms8W)tq>:0hqu?]mm,Q?# +)]Ke;+X%sN*#g%F*ZZ7A*?6%>*Zc@E+!2RH*#p"?*??1C)]g%=(`F8(*)FH@jR2sG +rr<#urr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&rs8W)us8)Kgq!mqLm#"b?rP`q;qQ^$>*.;H$h)>?b<7='/L(<`iL,=BS[+ +='/R,>$G3:ZY$/=BSg0='/R+='8^0=^"s4>[:W?>Zt68:3lrqZToq!daH4sqHn*$HFE+$P<:>[L`>>$P<9 +>?kB:>[1Q>>?G-3>#.tgl/U\"r;?Tkr;Zfss8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +qtpEns8VfdpAP$ks8W&rs8W,rlf7]UG^>LATr+QRS!f\6St2IHTUq[FSt)@CTqRsF +R@'S=VkT`:FLCGkf(B"As82`oqtp0`rVcWjs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2or +rr2forVlcps8W)prql9On#]V_9i4hk;b^+b:Jk"e;H6Uk:f:1f;,U7g;GpCi:ejn_ +:e46Nk2YG!rVZZjr;ZfsrVc`qs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2rts8W#n +qtpBmrr2fns8D*F_d4Q.)]KhJ-R9l\+sA-V,U+EX,U+HZ,9\3S,psr_*uu8(\_c!0 +s8W,uqY^Bkrr2fmr;Zfss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2ors8W,us8Dutrr;us +q=jaZjnI_k>?tTC?"IMR?=-uC?!q#F?!grE?=7,G>?kQF@:*;E;hiomiplj@rr;ut +s8;oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!qtpEns8VfdqYgHos8W#qs8W)oo^M8J +rNVTVTV.sWU7\!JT:V[LUS4loqu>aDnF?PYs8W,sqYKs] +rVcWjs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2orrr2orrqucprr;usqYC$_k4IDZ:f1+g +;-R.&;cH[n;cZms;cQgr<*!!t;,UCq<`N'q8Uo1ThspR?rr;rrs8;lqrVc`qs8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr)]jrVQ?\nF"591b(($)]BeA +,9@dH+XA0P+!i9^+<_dH,q1&h3*3<>jQZ^EpA+[drVc`qrVc`qs8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr<#tq"41Md>:q*@U$53S`ou[KqYU!^rVlcorr;rqrr<#us8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!r:f^Im.Au&GCu-KUnaQUU7ImNTVJ3VUo0u[ +R@9hIZ*KpYIY,Apj5U+=pA+[drVc`qrVc`qs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W,urVlfop[dqGc@o(i=Ar*p;cQpu;HHn%r;H?brVlcorr;rqrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!rr2]cp\Omhp?18`XBHnp,9\*M+"8BS,U4BT+XABb+s\H[,9\I$NmQk@ +o)J^br;HWorVccrrVlfrs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!r;$0es8Vo^lKuoP>$klP?=.,VAmo:_?t3YR>[h2SAn5@U?Z3@>qrRSOo^D_V +rr2lps8W&srr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&o +p@e7Uo'Q#Jn$@tBXK%kaSuAKYUS=EZVP^)_S"6L\YH"=jeGJprnb`7Yr;HWorVccr +rVlfrs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!qtTs`rr2ZX +kNL!9:fLV#;H$P$=]AO+<**+$;d!.'>$4s+!_\B5)!lAnP[hA5cTW\F/hNlMghYrVuotrr2rts8W)trr<#us8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!q>1*hr;69bpA"@HnG1M$OcQ3+StDOLU8Xl^ +SXuXRUT'rDL7QKYkMtOoq"4=Zs8W)ts8W-!rr2oss8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W&rrr)clr;?Klqs<\?abO;%?<(!+;d<@.>?tH<=BS^2 +>"qtB\*i\LlM^_Wr;Zfsrr2rts8W)trr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!rVZZprVuopmGm*[\:6k%,UY&l-mp2b-7L#[,pGEo[b]p+ +pAapes8Vrlrr2oss8W,urr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W&srquZiqYKp`s82KWme>J;H>[,#AnPgk@U`hZAnYsiF._"Mm-49Cp&"dh +qtg?kH=<`W:*=B]!3Bpm?5lfn-Ap&"agqYL3jrr<#us8N#s +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)rq>1!fs8W-! +s8VlenaZ1mMc2GZ.P!&).3pT?L9T=llgjlOs8N&ur;Q`rrr2rts8W-!rr<#us8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Drss8W,trr2orp[dV3 +mDtfAT\>j6l@+pA=gds8W)urr2ors8W-!s8W)us8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!qYL0js8W-!s8W&rrVcE_mI9bsY`Xs* +QCXeLRYulZYfc4tjm)C4s8W-!rVuotrr2rts8W-!rr<#us8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr)fprr<#trr2orp[me;n&h&7>>eX1?Y!>9 +;eD<+i9Tb"pAFpgs8W&trr2ors8W-!s8W)us8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W)tqtp9hs8N&us8W,ss8V9Mhor-N;`c<]:O/bYhW!ef +pAFsjs8N&trVlZns8W-!rr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W)us8W-!s8N∨QTms8)N`ip?1#gp`AkB60'8cg1)go_81Zr;Q]n +s8N&uq>UEos8W)ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!q>1'is8W-!s8DinqYgBkrVl'Us8W,]^TF'+^u5%gs8;`enFZJRs8W-!rr;ut +s8W-!rr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)t +rr;usrr2rprVl`os82]hjR2ErdAqn:=_3,Za5cOQnauSQr;Q]os8N#tqYpNps8W)t +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVcZl +rVuots8W-!rVcWcoBu)5lJ^CPlLX9&mJ$Y\rVlfps8W-!s8W)ts8W-!rr2rts8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2rts8W-!rql]n +qYgHos7l9RlK73`db*[Ll/q:'s8W-!s8W)sqtp?js8W-!s8W)ts8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!q"X^`r;?Nlr;HTjs8W-!o()YO +o^2)3lf-FJip5jkiTpI@r;HEbq>L?ns8W-!s8W-!rr2rts8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2orrr2osrqucpr;QZnrV,sOm-*Wh +eCs'Rl/q:'s8W)trr2orrVc`ps8W-!s8W)ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2inrr2rts8W-!rr;lnrr;uqo^D&5p&+Ua +s8Drrr;HTns8W-!rr;urrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W&rrr<#us8W,trVlcnrVQWps8W,uq=j@Cj6?(-q#:3frr2os +s8W,tq"ssds8W)ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!p\4O_rVc]nrVQNkrr<#uoCVnZs8W&pp$h)/mI^2QoC;bVqu$3`qYgHo +s8W,urr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W&rrr;usrr2oqrVlfprr)fprVlirqt]dKjm2I3q#:3frr2lqrr2orqu-Hks8N#s +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!rVZQhrVlZiq>($hqtKaVq>L9kqtKsdrVcZos8W-!s8;]gs8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&rrr2rts8W-! +s8W,tr;6Kns8W-!s8W,sp@\4XrVlTaqYpNprVlcps8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&rqtp9fr;Zcp +q>1-kqtp9fr:omTpAY*ls8Dlqrr2rts8DZbq"t*ks8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2rts8W-!s8W)sr;6Hlrr2lp +rr2lmp%A+XrVlZeqYpKnrVlfqrr2orrVccrs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trVc`ps8Mihp\+CVqY0a\ +rVcK^s8;osrVc]ps8W-!rquTfrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W#prr2rts8W-!s8W,us8W-!s8MupqYC0hq>'scp[e=Y +s8W-!rr2lprr2rts8W)ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W&rqtp6dr;Zfsqtg?lq=sXTqtTmZqYpNls8W-!rr2rt +s8;Q_p\Y!jrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W&rrr2rts8W-!rr2ors8W,urVZQhq=spbq"ajcq"4O^s8W)trr2oqrVc`p +rVc`ps8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +q>'jar;Zfss8W-!rr2inqtg?mrVQ3Vm-'j`qu6Tps8W)urr2fkp\4^fq=*=r +g"Fm(db!XOs8N&tr;ZcpqYU*ar;Zfss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N&srVlisrr<#us8MuqqYKsVl/U^[iS`\W +md^8PrV?3ar;Zfss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)srVcH`q"=4Ek2tjhjQYXdp@nRd +rVuiqrr<#us8Vlgs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W&rrVc`prr2rtrr<#urr)`kqtp0YkMb=UhVI#IlL=cLrqlNhrVlcp +rVc`qrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W)us8W-!s8W-!s8W-!s7tj5e^DmncI(1oe^VjicICk@pAY'jr;Q`rs8W-! +r;?Nms8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8Dooqtg9hqtp?krqu`gnET/riS`_WkiUsdkNV'jnbN+_s8;`krr2orr;?KjrVlis +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!q"XUWp@e:Y +rVZTkr;HTks8W,nnEoB"l0Rd&l0.j9n*]iDqZ$TqrVufnqYU6ir;?Nms8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr)fnr;?Qmr;?Nm +rr)ikn)r]fh;$iEj5T"SiT&hTmIg>Us8Dinrr2orrVcZlrVliss8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2oss8W-!s8W-!s8W&om-:-hrr2rts8W,us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W)trr2oqrVc`orr2orqY0=?k2YI[iS`\Sj5f:]io/tWjlu4- +r;QWnrqu`orVc`ps8W-!s8N&us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W)tqtTpZo^:r'h:pW8g"=m-gY(-,eC`U5g""d0g"k`Tp\b!g +qY^0as8W-!s8W)ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W)trr2rts8W-!s8W,pna,H#io/t]l0@X#kN:phk2tjekNM-rn+6GSrVc`qs8W-! +s8W-!rr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8DZ]nF#K%kjIs1o^_PAo(2>=nEfZ7n+6/Dr;QZns8W-!s8W-!s8W)t +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trr2rts8W)s +rVZTen*9#pi8Ki8`n`n+6>Rs8N#ts8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urVlisrqc9UmHj3*lg3p& +lg*m&lg4$+mHj3+m-O**mHs9,m-O-+mI0]BrVuosrr<#us8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVZWns8W,tp@\"Lp%7nLoCV\Io^qeK +p@e4Qp%A"Np@e4Ro^q_FoCMPGq#(0ls8N#ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urVlisrV?$Plg!d"l0@Ksl07Hsl0@U#lg!d# +lK[["lK[Wul07KulgFB=r;Zfrrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8MrprquHZl/q$fk2k^dj5f:^jlPUdki_*ijlPUdjlY[c +j5]4]kiV!gl0Rs8s8W-!s8N&us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W,urr<#sq=X1AlKn!-mdBH/mHs?0mdK]8n*]W3mdKT4n*]W3n*ff8 +m-O01pA+ags8W,us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8Murs8W#lo'c)=p@\1Sp%J+Qp\4FWqYBp\p\4FWp\=OXo^qhLp@RqHo(DkY +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,u +rVliqq"3t=l0Ia'm-O$'lg*p(m-X90mHj3+m-X0,mHj0)m-O3.lg*s-p%eXfs8W,u +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2rts8W)rq"4"@ +lfmTrki_*jk3(pjkND$lkND!ik2tjik2tggk2tghl0.Bql07R*qY^?ms8N#ts8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!s8Mieo'l/:mdK]8 +n*f`7nF5r:nF?#;n*f`6nF5o8nF5u'j_q>'g\q"X[\q"X[\p\4FWp\+=Ro()JKr;Q`rs8W)us8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!s8DcdnaGr6mI'H2mHsu9n*f`5n*f]4mdBN3n*fc7n*oi: +naZ);nac/:n+-,Gr;Q`rs8W-!s8W)trr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!rr2oss8W,sq"4.Jp%7tPp@e:Wq"XXZq"ORYp\4FVp\=OYp@\+Pp@n=Up%J.T +o^h_Lq#(0ls8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)t +rr;utrqc9VmdBT5n*of7n*of7n*f`5n*f]4mdBN3n*f`5mdKW6nF5l7nF>u8n+-,G +r;Q`rs8W-!s8W)trr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)srVQB_ +oC;57mHs<.lK[^%m-X3-mHs@o(2A@naZ/>nac5?o()AAnaQ/@o()ACo'u8@oCMJ?n+#uAq>C3ks8W)us8W)t +rr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ss8Mojq"F@Op@e:Vp\4O] +q>0saqYL'cqYL*dqtg0bq=sa[q"a^Zp\=R[p%7nMpA+[es8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr)ioq=aIOnF,o;naZ,naZ/> +nac5?o()AAnaQ,>naZ/?naQ&C3ks8W)us8W)trr2rts8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W)us8W&qqY0XRoCVP@naZ/=nF5r:naZ/?naZ2@o()AB +o'u8?o()>@nF5r9nF6#=n*TT6o(;VLq>C9mrr2rts8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!rr<#urVZQfp%7nLo^h_Io^h\GoCMVHo_%kKp%A"Np%A"Mo^qhL +o^qhLp%7qMp%7hEnFH2DpA"L_s8W)trr2orrr2rts8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W)us8W&qs8;]fq"a[Xq>'j]q"X^^qtp9gqtp'j] +q>'m_p\"4Rp\F[`rr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +rr<#urVZQfp%7nLoCDPGo^h\GoCMVHo_%kKp%A"Np%A"Mo^qhLo^qeJo^h_Ip%7hE +nFH2DpA"L_s8W)trr2orrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#ts8W&p +p@\(LoCMPDo()ABoCVYFoCMVGoCMSFoCMSFoCMSFoCMVGo()ACo()DDnaQ/Cp%@tK +p%eUdrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr<#urVQ?_p%7nK +p@e1Pp%A%Qp@\.Qp\+=Sp@e4Rp@e4Rp@e4Rp\+@Up\=LWp@e.Mo_/"Pp%7tSrr2or +rr2orrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#ts8W&pqtg-`q"X[\qYL'b +qu$EjrVc`orVc]nrVc]nrVc]nqtp'paq>'m^ +q"jg_p@S1Up%S4Uq>0m\p@e:Wp%S7Uqtg?krr2orrr)lss8W-!s8N&us8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#ts8Drs +rr<#us8W-!rr2rts8W≺$6`qu$Bir;6?eq>'maqtp9gr;?Kjrr)cmrVQKjqu$'gaq=j^Z +q#:1$erVc]orVc]nrVc`pr;Z`mrVQHks8W,u +rr<#ss8W)trr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W)us8W-!s8W-!s8W-!s8W-!s8W,ur;-6]qYU*bqY0^Xq"jj_ +q"X[[q>0s`q>0p^q>0m^qYBm\q"X[\q>0p_q>'j^q>'gaq=j^Zq#:0saq>1$cq>0serr;rsr;Zfss8W,urr<#u +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8DrrrVlfrrr2rts8N#rr;-<_q>L'br;-'maqtp6erVQEeqYpKorVu`nrr2rts8N#ts8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W,trr2lqrr;uss8W,urr)ckrV$-gq>LL'br;-'maqtp6erVQEeqYpKorVucorr2rts8N#ts8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Muss8N#ts8W-!s8W-! +s8W,urr2lor:g!`pA4U_rVc]mqtpC!aqYgEmrr)cmrVlfprVlfpr;HZprVc`orVlcoqu$Korr2loqtg3frVc`l +rr)coqYL-cs8N#mrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Muss8N#ts8W-!s8W-!s8W,urr2los8)Wl +q>L6ks8W-!rr2rts8N#ts8Murs8W)ts8N#ts8W&ss8W-!s8Mups8W-!s8N&urr;oo +rql`ps7u]ps8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W,urVuosrr<#us8W-!s8W-!s8N#srVZWhq>C!aqYgEm +rr)cmrVlcnr;HTlqu$Hlr;?Nkr;HTmqu$Korr2loqtg3frVc`lrr)coqYL-cs8N#n +rr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8;cmrr)irs8W-!rr)fps8W-!s8W)trr;rqrVlQiq>C6krr2oq +qtp9hrr)iqrVlWgrqlKiqu6Kgs8W#srVlfqrr2rtrr<#ns8MWfrVQEirr<#pr;Q`r +s8W)ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W,squ-Nmrr<#us8W)srVliss8W-!rr2osrVc]op\jpcrr2orrr)forVuot +s8W-!qtpElqZ$NorVQWpr;Z`prr2ors8W)us7lWnoDJRaq>UBns8)Zms8W-!rr2rt +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8;cmrr)irs8W-!rr)fps8W-!s8W)trr;rqrVlQiq>C9ms8W-!r;?Kls8N&urr;ik +s8;]mr;Z]ks8W#srVliss8W-!s8W,qs8V]grVQEirr<#pr;Q`rs8W)ts8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,squ-Nm +rr<#us8W)srVliss8W-!rr2osrVc]op\jpcrr2orrr)cmr;Q`qs8W)uqYL6iq>^Bm +r;-Hnr;Z`prr2ors8W)us7lWnoDJRaq>UBns8)Zms8W-!rr2rts8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr;rnqYgEkrVcZk +qYU6jrr2oss8W-!rr;rns8Vopqu6WprVlirrr)fprr2orrr2cjrquTkr;Q]nrquZn +r;Q`rs8W-!s8)cqpA4gdoDejjoDSU`q>:0ks8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)urVHBhrqu`nr;6?frVlfq +rr<#us8W)urVHQoq>^?ks8Murs8N&us8W-!s8W-!r;?Toqu?Zqs8N#qqu?Tns8W-! +s8W,qs8Vfhs82Efs8V]hr;-6drr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr;rnqYgEkrVcZkqYU6jrr2oss8W-! +rr;rns8Vopqu6Wqs8W-!s8N#ts8W-!s8Vuns8DforVuorrquZnr;Q`rs8W-!s8;os +q#(0hoDejjoDSU`q>:0ks8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W)urVHBhrqu`nr;6?frVlfqrr<#us8W)urVHQo +q>^?ks8Murs8N&trr<#us8W-!qtpElqZ$Nos8Drpqu?Tns8W-!s8W,qs8Vfhs82Ef +s8V]hr;-6drr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W,rqu6Qjs8Muqrr<#trVlfrs8W-!s8W&mrr;rss8W,t +r;HZqs8W-!s8W-!s8W,urr;uqr;-BkrVlirr;HWps8W,uqZ$Kgs8;ZlrqZQas8Duf +qY^?ms8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s82]mrVHQnrVc`qs8Murrr<#us8W-!rV6BlrVuots8Dlos8W)t +rr2oqrVlfqrVZTlr;-Ejs8W&ss8Mrprr<#us8Mlpr:p^Klr;$^Klr;$^?^rVulsrqlZms8W,tr;Zcrrr;ipr;HZmrq-0hq=O^]rqucqrr2rts8W)qqY^9f +rriH(!,qf6qYpEmrr;ors82ipqZ$QpHjKi_HM[[@qYgHor;Z`os8W-!s8W)us8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#ts8N&ts8)QkqsjXb +rr;uprVccrs8Dlqrr;utqZ$Kls82ffrVu]cs7cNjrr;uss8W-!rqlQir;-Es!WW4= +r;HKkr;Zcrr;Zfos8Dforr7?P!XsDOs8Mlns8W#srVccrs8W-!rr<#us8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr<#ts8N&pq>^?^rVulsrqlZm +s8W,tr;Zcrrr;ipr;HZmrq-0hq=O^]rqucqrr2rts8W)qqY^9frriH(!,qf6qYpEm +rr;ors82ipqZ$QpHjKi_HM[[@qYgHor;Z`os8W-!s8W)us8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#ts8N&ts8)QkqsjXbrr;uprVccrs8Dlq +rr;utqZ$Kls82ffrVu]cs7cNjrr;uss8W-!rqlQir;-Es!WW4=r;HKkr;Zcrr;Zfo +s8Dforr7?P!XsDOs8Mlns8W#srVccrs8W-!rr<#us8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)us8;ims763XfX$0LWW)bos82irs8Moq +s82`oOa(k^CQ82is8Drss8W-!s8W&pqu-Kkr;Zs'!HS5>rr)lss8W-!s8Mlnrr;r7 +&c_n4%b1:MrqHEks8DutrVuoss8W&ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!rr<#rrVQWcs6eOGJoRdhqZ$Tms8W,uqu?]nr;Vn( +EGTEMqYpNnrr<#us8W-!rVQKjrVZTo"9\aGs8N#rs8W-!s8W,uqYgEnrPK6J!!*SZ +q"k!arr2rrs8W&ts8N&urVuots8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W)us8;ims763XfX$0LWW)bos82irs8Moqs82`oOa(k^CQ82i +s8Drss8W-!s8W&pqu-Kkr;Zs'!HS5>rr)lss8W-!s8Mlnrr;r7&c_n4%b1:MrqHEk +s8DutrVuoss8W&ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!rr<#rrVQWcs6eOGJoRdhqZ$Tms8W,uqu?]nr;Vn(EGTEMqYpNnrr<#u +s8W-!rVQKjrVZTo"9\aGs8N#rs8W-!s8W,uqYgEnrPK6J!!*SZq"k!arr2rrs8W&t +s8N&urVuots8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,us8W-! +s8;lrr;?Hlo9_KO!!!!)B`J,3s8W)us8W&qrr2l3"TSQ(!&jQNs8N&us8W-!rr;ur +rVuotrW!**!,DH3s7lWnrr)lqs8Duqr;HZ+!so#1!4Dk*s8W-!rVuosr;Zfqs8W)u +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N&us8W,srr;oo +qu?8T3"u>m!!m9m!!m9< +s8N&urr<#urVZZorP/R:!^Kkrr<"8$3L8."98c1CAn,2s8;os +r;ZcnrVHO9%0HS2!&OZQs8N&us8W-!s8W-!rr<#tr<*0*")@c6q#($hr;Z]orV?Kk +qtU*J$NL80#gNAJqu-9gs8Tj>r;Zcorr;uts8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W,urr2orrr2`ns8)`ps(r)F!!!-%$3Fu@rVuoqs8W#srqlZj +ruV[P!!*'Us8;ors8W-!s8W-!s8W)us8Ms"!X/[@r;ZQiqu?Tor;QZjs8;chr8A"` +!s&\Prr2fnp\t3m^U!e;rqucqrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8N#srr2orq>^Kkrr<"8$3L8."98c1CAn,2s8;osr;ZcnrVHO9%0HS2 +!&OZQs8N&us8W-!s8W-!rr<#tr<*0*")@c6q#($hr;Z]orV?KkqtU*J$NL80#gNAJ +qu-9gs8Tj>r;Zcorr;uts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W,urr2orrr2`ns8)`ps(r)F!!!-%$3Fu@rVuoqs8W#srqlZjruV[P!!*'Us8;or +s8W-!s8W-!s8W)us8Ms"!X/[@r;ZQiqu?Tor;QZjs8;chr8A"`!s&\Prr2fnp\t3m +^U!e;rqucqrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)t +rr)cnq>^9jrk0TX"TSN,!!!'&C]FG4s8;oss8Vrnq>=b,!!!**!&=EOs8N&us8N&u +s8W-!s8N#sq#pa$#]9P?q#C^H-,le)K!!WE'!X!6^9jrk0TX +"TSN,!!!'&C]FG4s8;oss8Vrnq>=b,!!!**!&=EOs8N&us8N&us8W-!s8N#sq#pa$ +#]9P?q#C^H-,le)K!!WE' +!X!6rr<#ts760hrr)ls +rr;rsrV:18!s"Krr<#ts760hrr)lsrr;rsrV:18!s"K< +!!`KVs8N&ts8W-!rr2rtrr;rsrr;m"!]&u7j:#dOnAPMs8;oorqM[pBQ]4,p[Dm:C]aY=!A/M5 +DfGXQs8MuprVliss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)sr;Z`m +qYsFn#65:Is7lQep&+afs82iqrVulrs7uZ+#QOiOp+l^M!&soTs8Dusrr;utrr;ut +rVuiqrrN0$%!DCGf7HL:4%YS,qu6Wns82fjPAY&VMYHl7BlRqk!!30QGA_>]&u7j:#dOnAPMs8;oorqM[pBQ]4,p[Dm:C]aY=!A/M5DfGXQs8MuprVlis +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8VupqYpBjs/Q,%!!0=ls82iq +rVucms8;fprr)lss8Va?!!WY-rA"?R">]fQs8W,trVuots8W-!rr<#uq?I!1!-Im< +!!`K5!!WE?QMpj_rUfpc/Hu@[1B.=R!!*3+#7C\8"on]3mem+[s8N#ts8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!qu-Bjqu-Pq!!<3%YjVPgs8Musqu$Kl +r;Zcps8W-!odBeE#-.VW!!*3Xq>^Kps8Dors8W-!s8W)us8Vp#!"K!NoihD$!"Ao4 +!#V%#s8Muhq>W#N"TgIYs8N'""9f#<"TS`,!XeAns7lWnrr<#us8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8VupqYpBjs/Q,%!!0=ls82iqrVucms8;fprr)ls +s8Va?!!WY-rA"?R">]fQs8W,trVuots8W-!rr<#uq?I!1!-Im^Kps8Dors8W-!s8W)us8Vp#!"K!NoihD$!"Ao4!#V%#s8Muhq>W#N +"TgIYs8N'""9f#<"TS`,!XeAns7lWnrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8Vrqqu?Tonk]Sl"YofKr8+Wbg&(dIrVZ]os8W)qr;UO4"TUgaq_S9W +!%e0Mrr)lrs8W&ss8W)trVlfrr;d*&$YWNB!<`N*!sAr2$&8KZo`+sc1]ROW2ZNRK +%Kc\=!!!?.!!NK*rr<#ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!qZ$Hmr;Z=a#QP#_q"jpFYI3'\rr)fns8DutrqlWnCB+M<5l1@7!!WESs8W)s +s8N&urVlisrr2lqrr;ot"oo$E<M!M!e!!<4;rqH9Us7u]nrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!rVuiqqu*&c!!!PF)$^!!WM'nc&JA"9SW\ +rr<#srqu]orVlfqs8Drqrr2]q!!!!+!%c:jrqath!"Au3-0G7-rU`,N!sgOUqu>pZ +pC@6+!,VZ/qX"7Xs8Drss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W&trVl]mSH&Wi&&9%f"UGG8#71GL]Dhj$rVuWlpacCL!iYYgr@nEW!&X]Ts8Drp +r;Z`prr2rrrr)iqq#^Ts!"&]Wb5D88cmJf&!Wsb2s8W&i3WK6f0)GJFl2C>e!!<4; +rqH9Us7u]nrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVuiq +qu*&c!!!PF)$^!!WM'nc&JA"9SW\rr<#srqu]orVlfq +s8Drqrr2]q!!!!+!%c:jrqath!"Au3-0G7-rU`,N!sgOUqu>pZpC@6+!,VZ/qX"7X +s8Drss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)urVlco?3:93 +,7+>N!!!'#"T\T0&CUIUs82inBE//;6iI#^nMgUN$Sh2Cs8W,qqu?]prqu]hqY:!d +rW!$+!!+8$p\Y!hpus1,!!!%_s8;of2$43d2#m=Es7uNl!X&gJqZ$N!!!'#"T\T0 +&CUIUs82inBE//;6iI#^nMgUN$Sh2Cs8W,qqu?]prqu]hqY:!drW!$+!!+8$p\Y!h +pus1,!!!%_s8;of2$43d2#m=Es7uNl!X&gJqZ$mThtdl#64`]s8N&urj<%>";0;bs8)aK +#64iYs8W)lq#:mThtdl#64`]s8N&urj<%>";0;bs8)aK#64iYs8W)lq#:qZ$T^s82WgqYpNk +mf3=drr<--!'BuIs8W#pqu-1S#6=i6q"sgb1&q=Z2#dOTo`+mn!!!"?s8;ocs8Dus +r;HWos8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVufqs80ses8)0`s8N#u +!snrhq"+Ocr;?Hjog/la!=\c#p\loJ!qZ$T^s82WgqYpNkmf3=drr<--!'BuI +s8W#pqu-1S#6=i6q"sgb1&q=Z2#dOTo`+mn!!!"?s8;ocs8Dusr;HWos8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVufqs80ses8)0`s8N#u!snrhq"+Ocr;?Hj +og/la!=\c#p\loJ!L?n!!`K("1J(+s8N#topZ3e"p.m)p]#=8 +!!bXbp%\Rer\+4!!NE( +g&M$L1BIOe-ia5Ds7H!n!!3IAs8;ons8N&os8W-!s8W,us8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8Vons8N'(!!!,0qZ$Tprr;Y\#QP&1=8hmnF8u:G4T4sJ +s8W'P!!E9WqZ$No\2lZ-1bCX<1c%A+qu6L#!!!=:rVZ]ls8Vurol^<=!W^pRrV\MR +!"UIWs82igp'^p&$#9ML?n!!`K("1J(+s8N#topZ3e"p.m)p]#=8!!bXbp%\Rer\+4!!NE(g&M$L1BIOe-ia5D +s7H!n!!3IAs8;ons8N&os8W-!s8W,us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8Vons8N'(!!!,0qZ$Tprr;Y\#QP&1=8hmnF8u:G4T4sJs8W'P!!E9WqZ$No +\2lZ-1bCX<1c%A+qu6L#!!!=:rVZ]ls8Vurol^<=!W^pRrV\MR!"UIWs82igp'^p& +$#9M[2!!=V>s1S[;!t=8jpAF[aqCr*R"uuAVmJjNu!!!$, +#QOl*$*X@-p](Es!,hi8oDeR`oDeif"onl.\,64$0a%R_/H,PDrr;os!WrL9rql`p +q#:9hrVc`qs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urVucps8E!* +!!YmdrVZs8DQhp\j^`s/#u##6;71s7nAP!sU=TrVHNnr;Zm$!bVH/s8MfmrqcTl +rr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Musqu?]q!"&]17JHcY +o`+R]p&>[2!!=V>s1S[;!t=8jpAF[aqCr*R"uuAVmJjNu!!!$,#QOl*$*X@-p](Es +!,hi8oDeR`oDeif"onl.\,64$0a%R_/H,PDrr;os!WrL9rql`pq#:9hrVc`qs8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urVucps8E!*!!YmdrVZs8DQh +p\j^`s/#u##6;71s7nAP!sU=TrVHNnr;Zm$!bVH/s8MfmrqcTlrr<#us8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Mrqqu?Zn!rrE-A,Q?)s82irs6`Ya!R7LrVult$31*FrVc`pp\t-jr;HTns8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W,ur;QTnrqliu!sW95rr)los8W,e:BCOu"9&6I!!!?= +0eP@@/2K'm!rr<12CCf`Z2b.1!rrB&!!`S3s8Ms"!=8pJs8N&ss7u]lqRQh1!!';( +qu/8N"TUFUrqu`prrR7LrVult$31*FrVc`pp\t-jr;HTns8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W,ur;QTnrqliu!sW95rr)los8W,e:BCOu"9&6I!!!?=0eP@@/2K'm!rr<1 +2CCf`Z2b.1!rrB&!!`S3s8Ms"!=8pJs8N&ss7u]lqRQh1!!';(qu/8N"TUFUrqu`p +rrL?ns8W-!s8N&us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)tq#(*j!s8N- +Du]_7o_ngdqYkX="Tnc)rW!$'!!36&!!!$%!s&B0!!*'+!<2#pXgGC>['6pA]A`Ye +q>gQu#A=)3s8Vupqu6E!!!!-([K$7+1&q:Z0E(qLrVufr$NL3Hqu?]rrr;fms8W-! +s8W,us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2]jrVls%!![BAqu?L?ns8W-!s8N&u +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr<#ur;QZl0`qFa8,N>ds8Voks7pL: +!L?ms8Mfmrr2rts8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W)us8W#rrVJ;O!=MEps8W-!q>1-eD$L(B!r2Hk +!'X^s8W*!#6FpJs8VE`qu?]os,$pZ +#6ds8Voks7pL:!L?ms8Mfmrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W)us8W#rrVJ;O!=MEps8W-!q>1-eD$L(B!r2Hk!'X^s8W*!#6FpJs8VE`qu?]os,$pZ#6Ene!!t"Ms#hhg0.nn8/i#FC3!fTm":$h3 +5kt9PrVuoor;ZTms8MfkrrrH'!,;!'s8Dfoo_eSl"U4r5s8Vrq/d24U2#mIQrVlTr +"p"aFr;6?gqYpBlr;?Nms8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)t +rVulsr:jb'#lke@r:g6Zs8Mim8ceu!-N*m,.Pre20/Y@;3AWW$!=Ar72C:]ar:p6j +s8)Znq>^Koq#(-r!!!"5nc/XfqZ$3cqcs@0!"&]*qYr/O!!+qVqu?Woq#ps'!HS,8 +qY^3hqu?TlrVliss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr2lrrr;ok +@fcr:(]O@,s6fpdq>Ene!!t"Ms#hhg0.nn8/i#FC3!fTm":$h35kt9PrVuoor;ZTm +s8MfkrrrH'!,;!'s8Dfoo_eSl"U4r5s8Vrq/d24U2#mIQrVlTr"p"aFr;6?gqYpBl +r;?Nms8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)trVulsr:jb'#lke@ +r:g6Zs8Mim8ceu!-N*m,.Pre20/Y@;3AWW$!=Ar72C:]ar:p6js8)Znq>^Koq#(-r +!!!"5nc/XfqZ$3cqcs@0!"&]*qYr/O!!+qVqu?Woq#ps'!HS,8qY^3hqu?TlrVlis +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&rp\XpgVuQf""j-cCqZ$Bk +qu.N7#R!furT=.[s8W&qqYKpcn2CUQ!]BoUkl:\[s8Vups8;`nqtg9grr<3("![d; +rVl`ps7uO2!!`fqoD&=a/cl"V/H>bMs8Drt"TSd@s8;coq#C^?k)ZU-H +9DnbNs8W-!rVZNgpAaV@#QOo`r;Z!\s82irqu-QmqZ$HhrVQTp"TecMs7H9hr;Zfm +q\oM?#se+Wrr+MO!!OqRs8W,trr<3&#AF/8qu?HkrVulrs8W-!s8N&us8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W&rp\XpgVuQf""j-cCqZ$Bkqu.N7#R!furT=.[ +s8W&qqYKpcn2CUQ!]BoUkl:\[s8Vups8;`nqtg9grr<3("![d;rVl`ps7uO2!!`fq +oD&=a/cl"V/H>bMs8Drt"TSd@s8;coq#C^?k)ZU-H9DnbNs8W-!rVZNg +pAaV@#QOo`r;Z!\s82irqu-QmqZ$HhrVQTp"TecMs7H9hr;Zfmq\oM?#se+Wrr+MO +!!OqRs8W,trr<3&#AF/8qu?HkrVulrs8W-!s8N&us8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W,urVc`poah6+#q>cOs75par/([Z!W]b(r;-BfTs8N&urr)fqs8W-!s8N#trW3'-!!9+us7Q?eqYu*J!WW7gp\t3i1B@LZ0`V1P +s8W*!"onfus8Vclr;?Tkrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8Muqrr2R%"98`Wqu?]ep](/K"p"c*\G#jsqu$Bjr;Zcrrr)gK"9eo]s8W,u +s8W)srVuots8W,urr;s!!"/c.W;chirVHBjJH>lQ!LWW\s8+SQ!cOs75par/([Z!W]b(r;-BfTs8N&urr)fq +s8W-!s8N#trW3'-!!9+us7Q?eqYu*J!WW7gp\t3i1B@LZ0`V1Ps8W*!"onfus8Vcl +r;?Tkrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Muqrr2R% +"98`Wqu?]ep](/K"p"c*\G#jsqu$Bjr;Zcrrr)gK"9eo]s8W,us8W)srVuots8W,u +rr;s!!"/c.W;chirVHBjJH>lQ!LWW\s8+SQ!OD4cs8BhA +!"9)fqu?Zqs8;lps8N&tr;?FJ!!<6SrUp3js8W&qrr;lqs8Moqs8N#u!!!'%&$u'2 +qZ$T-$3L_;+7&t,rV/2P!OD4cs8BhA!"9)fqu?Zqs8;lp +s8N&tr;?FJ!!<6SrUp3js8W&qrr;lqs8Moqs8N#u!!!'%&$u'2qZ$T-$3L_;+7&t, +rV/2P!OS];&p;#QOi1XT%k_rVnSR!!>%Wrr<#u +s#USg!!+^EXGHoLq#C?mrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8Dlps8Vujrr+AM#ljrhJZl.Z%gW==%EJDGrr<#ts82ios8W&sq_%sQ!&srXs8W-! +rr)irqZ$Tqqu?ZoqZ-s'%L<.PBOS];&p;#QOi1XT%k_rVnSR!!>%Wrr<#us#USg!!+^EXGHoL +q#C?mrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8N#srr)forVPq' +!9`Rqu$Hns8W,us8DiprVcWkj8fA`3;HMS!=&i0!!`K8JGoNGqZ$No +0`_7W0E;(Mr;HZj>6"d/!!WW-s7uTmrVlfrs8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W&ss8W&ts4o[8#64o-!!Ec4(6e^srVulsrVuosrr)]mqYg:E +!!EEWs8Monrr<#us8N&squ?Wnqu#LU"9:FW;um")#64`/!"a\Zs8;`nrVnSQ!!FtT +s8;fns7fdu"9\]/"p"]!r;Z`prr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!rVlisrVuoR3<09a"TSN*%KR?/rVuirrr;rss8N#rqYp?iq_%pP">9`R +qu$Hns8W,us8DiprVcWkj8fA`3;HMS!=&i0!!`K8JGoNGqZ$No0`_7W0E;(Mr;HZj +>6"d/!!WW-s7uTmrVlfrs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W&ss8W&ts4o[8#64o-!!Ec4(6e^srVulsrVuosrr)]mqYg:E!!EEWs8Monrr<#u +s8N&squ?Wnqu#LU"9:FW;um")#64`/!"a\Zs8;`nrVnSQ!!FtTs8;fns7fdu"9\]/ +"p"]!r;Z`prr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s7l6do8l0D!=B,7&oQ_-s8)cor;Zfss8W&tqu6Nmlp1gU"?#`Lrr<#trr<#us8W,r +r;Q]l[KHd?3W8Q3/-#YM!=`/Ms7u]hr;HZb0E_@_3q)qFrVu`on;SIk$NL5:q>^*e +rr2oss8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,oo`+NE +57.Du#m(`Wir/oRs8Dlqs8W-!rVucor;Q%K"onc`nc/Ugs8N#ts8W-!s82`nrqa&+ +"pd6fo8tR(!!!$/=N1=9s7cHis6q]F!"(dUqZ$NoqZ$&E*WlcM!Y"o)o`+pirr<#u +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s7l6do8l0D!=B,7 +&oQ_-s8)cor;Zfss8W&tqu6Nmlp1gU"?#`Lrr<#trr<#us8W,rr;Q]l[KHd?3W8Q3 +/-#YM!=`/Ms7u]hr;HZb0E_@_3q)qFrVu`on;SIk$NL5:q>^*err2oss8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,oo`+NE57.Du#m(`Wir/oR +s8Dlqs8W-!rVucor;Q%K"onc`nc/Ugs8N#ts8W-!s82`nrqa&+"pd6fo8tR(!!!$/ +=N1=9s7cHis6q]F!"(dUqZ$NoqZ$&E*WlcM!Y"o)o`+pirr<#us8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr;ris82fn]<&0iqYgEno)J[gs8)Wm +rr;orrqufqrO9&=YeU57s8W,urr<#us8W,pr;?TmnuT%&fDY[JoD>f$b4kr5s8D]l +rV$9i^Tt2L\,ZF,s7ZBjrqu'-Z*ML9s7cEdrr2rts8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8N#trUp3frqsC0Y1rgOrr;QhrVuooqu?Zqr;Zco +s8Mu+Z*^aMs8)cqs8N#ts8W-!s7uTjs8;GhYI3!\rVuKdZ*qgLs82ipp](3cs8B^< +Z`gkf$b4kr5s8D]lrV$9i^Tt2L\,ZF, +s7ZBjrqu'-Z*ML9s7cEdrr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8N#trUp3frqsC0Y1rgOrr;QhrVuooqu?Zqr;Zcos8Mu+Z*^aMs8)cq +s8N#ts8W-!s7uTjs8;GhYI3!\rVuKdZ*qgLs82ipp](3cs8B^^Kds8Duss8N#tr;HZis82irqZ$Nos7-'fs8W-!s8N&rs7uWf +rVuips82fmp\t3mqZ$Qnqu?Tiq>C9jq#C?ns7uBgp\t*js8N#rs8)NfrVulhr;?Qo +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr<#urr2rts8W)us8W,t +s8Vins7lEis7?9hs8N&trr;ops7cQjs8VrqrVuofrVuots8W,us8;omrV-9jrVccn +rqlHhs8Vrqrr)`or;$0ds8;Zlrr<#opAamdr;Zfrrr)lnq"t$irq--drr<#us8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)us8W)ts8W-!rr<#us8Dutp](9g +q>^Kds8Duss8N#tr;HZis82irqZ$Nos7-'fs8W-!s8N&rs7uWfrVuips82fmp\t3m +qZ$Qnqu?Tiq>C9jq#C?ns7uBgp\t*js8N#rs8)NfrVulhr;?Qos8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rVuorrVuikrVuckqu-Qjs8W-! +s8W-!s8N&rrqufrpAFpgs8Dlqrr2oss8W-!s8MomrVuotrr;forr)Qjs8MljrVulm +r;Q`qrr;uqs7ZBgs7u]pq>C3err;fos8W,us8Vlorr2rts8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W&ts8DorrV6?kqtg3gs7u]ps8W-!s8W,u +s8;los8Vfjrr)lqr;Zcqrr<#us8W,uqtp?ls8W)uq>^HmpAb0lqYC*irqZKks8N#t +rqufir;?Tjs8VomrV?Hmq>^Kps8N&uq#C?ms8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!rVuorrVuikrVuckqu-Qjs8W-!s8W-!s8N&rrqufr +pAFpgs8Dlqrr2oss8W-!s8MomrVuotrr;forr)Qjs8MljrVulmr;Q`qrr;uqs7ZBg +s7u]pq>C3err;fos8W,us8Vlorr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W&ts8DorrV6?kqtg3gs7u]ps8W-!s8W,us8;los8Vfjrr)lq +r;Zcqrr<#us8W,uqtp?ls8W)uq>^HmpAb0lqYC*irqZKks8N#trqufir;?Tjs8Vom +rV?Hmq>^Kps8N&uq#C?ms8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8MrmqY^?mp\k!grVQWprr2ors8W-!s8Dlmrr2oprVuoss8Dlorr2os +s8W-!s8W-!s8D`bs8Vlmo)JaioDJXgrVHKms8W,ur;6?cs8;ops8)`nqu?Kis82fp +p&"@\li7"\rr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W,ur;-9frr;`kqu6Qks8W)trr2rts8W,tr;6Kmrqu`ps8N&sr;HWorr<#us8W-! +s8W,tq"4Udq#0d`s8V]gs8W&orVuots8MrnqY:*gs8;onrr)`oq>C9irr2TfoDe.V +s7uZns8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8Mrm +qY^?mp\k!grVQWprr2ors8W-!s8Dlmrr2oprVuoss8Dlorr2oss8W-!s8W-!s8D`b +s8Vlmo)JaioDJXgrVHKms8W,ur;6?cs8;ops8)`nqu?Kis82fpp&"@\li7"\rr2rt +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,ur;-9frr;`k +qu6Qks8W)trr2rts8W,tr;6Kmrqu`ps8N&sr;HWorr<#us8W-!s8W,tq"4Udq#0d` +s8V]gs8W&orVuots8MrnqY:*gs8;onrr)`oq>C9irr2TfoDe.Vs7uZns8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8DinrVQNmq"ssgs8)cq +rVlfqs8W-!s8DfkrVuins8;forVc]nrr2oss8W-!s8Molr;HWoqtC!gs8)`kr;?Nn +s8N#sq>C6jrVlisq"jsarr2rtrr;omrVl`ps8;ocrr;Ngrr<#us8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,tqu-Kjr;ZQhqu?]ms8W&srr2rt +s8W,tqYU6krVQWmr;QZnrVc`prr<#us8W,uqtg6hrr2fgrVuoorqcQjrVuosrr2`k +rr)fps8VljrV6Bks8W)ur;-Bkr;Zfps6osenc/Ugs8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8DinrVQNmq"ssgs8)cqrVlfqs8W-!s8Dfk +rVuins8;forVc]nrr2oss8W-!s8Molr;HWoqtC!gs8)`kr;?Nns8N#sq>C6jrVlis +q"jsarr2rtrr;omrVl`ps8;ocrr;Ngrr<#us8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W,tqu-Kjr;ZQhqu?]ms8W&srr2rts8W,tqYU6krVQWm +r;QZnrVc`prr<#us8W,uqtg6hrr2fgrVuoorqcQjrVuosrr2`krr)fps8VljrV6Bk +s8W)ur;-Bkr;Zfps6osenc/Ugs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8N#ts8Dlorr)]ns8;lqrr2rts8W-!rr;rsr;Z`qs7uNjrVccq +rr2rts8W-!s8Muqrr;uss8;fds7Q?js8W&srVZWoqu-Qorr<#uq#13err)ips8;lm +rVucprqc3crp9[Ys8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W,urr<#sr;HWnqZ$Tnrr2ors8W-!s8W)urVufqrVuonqYpHls8N#ss8W-! +s8W,urVc`qrr2rqr:Bs]rVuotrVlcnrVucns8N#ts8VlmrqQKkrr)lprqcTnqu?Zl +o)J^Us7ZKms8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8N#ts8Dlorr)]ns8;lqrr2rts8W-!rr;rsr;Z`qs7uNjrVccqrr2rts8W-!s8Muq +rr;uss8;fds7Q?js8W&srVZWoqu-Qorr<#uq#13err)ips8;lmrVucprqc3crp9[Y +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W,urr<#s +r;HWnqZ$Tnrr2ors8W-!s8W)urVufqrVuonqYpHls8N#ss8W-!s8W,urVc`qrr2rq +r:Bs]rVuotrVlcnrVucns8N#ts8VlmrqQKkrr)lprqcTnqu?Zlo)J^Us7ZKms8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)us8W-!s8Mop +s8W,us8W-!s8W-!rr<#urVulss8;lrs8Dusrr2rts8W-!rr<#us8W&qqu?]rs8Vup +rVliss8;lrs8W-!s8W,urr<#rs8Muqrr;lqs8N&trVucps8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr<#us8W,uqu6Wqs8N&u +s8W-!s8W)us8W&trr<#rrr<#ss8N#ss8W-!s8W)us8W-!rVZQms8W-!qu-Kms8W,s +rr<#us8W-!s8N#ts8;orrVc`qqu?]qs8Musqu?]rs8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)us8W-!s8Mops8W,us8W-!s8W-! +rr<#urVulss8;lrs8Dusrr2rts8W-!rr<#us8W&qqu?]rs8VuprVliss8;lrs8W-! +s8W,urr<#rs8Muqrr;lqs8N&trVucps8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rr<#us8W,uqu6Wqs8N&us8W-!s8W)us8W&t +rr<#rrr<#ss8N#ss8W-!s8W)us8W-!rVZQms8W-!qu-Kms8W,srr<#us8W-!s8N#t +s8;orrVc`qqu?]qs8Musqu?]rs8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W,urr<#us8W-!s8W-!s8W-!s8N#ss8W)us8W-!s8N&u +s8N#trr<#us8W-!s8Muqrr<#us8DutrVuoss8N#ts8W,us8N#ss8W-!rr2rts8W-! +s8W)us8W,ts8N&os8N&ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8N#ts8W-!s8W-!s8W-!s8W,urr2rtrr<#us8W,us8W,urr;ut +s8W-!s8W,urVc`qs8W,ts8W&ts8N&trr<#us8N&trr2rts8W)ts8W-!s8W-!rr<#u +s8Duss7u]os8N&us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W,urr<#us8W-!s8W-!s8W-!s8N#ss8W)us8W-!s8N&us8N#trr<#us8W-! +s8Muqrr<#us8DutrVuoss8N#ts8W,us8N#ss8W-!rr2rts8W-!s8W)us8W,ts8N&o +s8N&ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8N#ts8W-!s8W-!s8W-!s8W,urr2rtrr<#us8W,us8W,urr;uts8W-!s8W,urVc`q +s8W,ts8W&ts8N&trr<#us8N&trr2rts8W)ts8W-!s8W-!rr<#us8Duss7u]os8N&u +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)r +s8W-!s8W)us8W-!s8W)ts8N#ss8W,urr<#ts8W)us8W-!s8W-!s8W-!s8N#rs7u]p +s8)cqs8W-!rVliss8W-!s8N#ss8W-!rr2rss82iqrVufps82irrr<#us8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rqufrs8W-! +rr<#us8W-!rr2rsrr2rts8N#ts8N&urr<#us8W-!s8W-!s8W,urr)lms8W,qs8W-! +s8W&ss8W-!s8W,urr2rts8W)ts8N&qs8Musr;Q`ns8W)us8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W)rs8W-!s8W)us8W-! +s8W)ts8N#ss8W,urr<#ts8W)us8W-!s8W-!s8W-!s8N#rs7u]ps8)cqs8W-!rVlis +s8W-!s8N#ss8W-!rr2rss82iqrVufps82irrr<#us8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!rqufrs8W-!rr<#us8W-!rr2rs +rr2rts8N#ts8N&urr<#us8W-!s8W-!s8W,urr)lms8W,qs8W-!s8W&ss8W-!s8W,u +rr2rts8W)ts8N&qs8Musr;Q`ns8W)us8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W)ts8W-!s8N#ss8W-!s8W-!s8W-!s8N&ts8Dut +rr<#ss8W)us8W-!s8W-!s8W-!s8W-!rVuoqs8W)us8W)ss8W,urr<#us8W-!s8N&u +rVuosrr;uts8Duts8W,us8W)ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!rr2rts8W,urr2rts8W-!s8W-!s8W,us8N&ss8W)us8Dut +rr<#us8W-!s8W-!s8W-!s8W&ts8;osrr<#urr)lss8N#ts8W-!s8W,us8W&ts8N#t +rr<#ss8W-!s8N&urr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W)ts8W-!s8N#ss8W-!s8W-!s8W-!s8N&ts8Dutrr<#ss8W)us8W-! +s8W-!s8W-!s8W-!rVuoqs8W)us8W)ss8W,urr<#us8W-!s8N&urVuosrr;uts8Dut +s8W,us8W)ts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!rr2rts8W,urr2rts8W-!s8W-!s8W,us8N&ss8W)us8Dutrr<#us8W-!s8W-! +s8W-!s8W&ts8;osrr<#urr)lss8N#ts8W-!s8W,us8W&ts8N#trr<#ss8W-!s8N&u +rr2rts8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-!s8W-! +s8W-!s8W-!s8W-!s8W-!~> %%EndBinary grestore end % Image Trailer grestore grestore % EPS grestore [{nextImage} 1 dict begin /Metadata {photoshop_metadata_stream} def currentdict end /PUT pdfmark [/NamespacePop pdfmark \ No newline at end of file diff --git a/doc/IGE332/Bibliography.tex b/doc/IGE332/Bibliography.tex new file mode 100644 index 0000000..e19a188 --- /dev/null +++ b/doc/IGE332/Bibliography.tex @@ -0,0 +1,34 @@ +\begin{thebibliography}{99} + +\bibitem{cle2000} +R.~Roy, \textsl{The CLE-2000 Tool-Box}, +Report IGE--163, Institut de g\'enie nucl\'eaire, \'{E}cole Polytechnique de Montr\'eal, +Montr\'{e}al, Qu\'{e}bec (1999). + +\bibitem{lcm2002} +A. H\'ebert, \textsl{LCM -- Guide du programmeur}, +Rapport IGE--296, Institut de g\'enie nucl\'eaire, \'{E}cole Polytechnique de Montr\'eal, +Montr\'{e}al, Qu\'{e}bec (2002). + +\bibitem{ansiC} +B. W. Kernighan and D. M. Ritchie, \textsl{The C programming language, second edition}, +Prentice Hall, Englewood Cliffs, New Jersey (1988). + +\bibitem{fortran2003} +M. Metcalf, J. Reid and M. Cohen, \textsl{Fortran 95/2003 explained}, +Oxford University Press, Oxford, U.~K. (2004). + +\bibitem{lcm1994} +A.~H\'ebert and R.~Roy, ``A Programmer's Guide for the GAN Generalized Driver, FORTRAN-77 version'', Report IGE-158, Institut de G\'enie Nucl\'eaire, \'Ecole Polytechnique de Montr\'eal, December 1994. + +\bibitem{jargon} +A. H\'ebert, ``Coarse-Grain Parallelism Using Remote Method Invocation", paper submitted at the {\sl International Conference on Supercomputing in Nuclear Applications}, +Paris, France, September 22 -- 24 (2003). + +\bibitem{npython} +T.~E.~Oliphant, ``Guide to NumPy'', Brigham Young University, Provo, UT, 2006. See the home page at \url{https://numpy.org}. + +\bibitem{hdf5} +The HDF Group, \url{https://www.hdfgroup.org}. + +\end{thebibliography} diff --git a/doc/IGE332/GuideBW.sty b/doc/IGE332/GuideBW.sty new file mode 100644 index 0000000..8358fff --- /dev/null +++ b/doc/IGE332/GuideBW.sty @@ -0,0 +1,211 @@ +% Guide.sty +% G. Marleau +% created : 1998/09/18 +% modified: 1999/05/07 +% 1999/05/07 +% + +\ProvidesPackage{GuideBW}[1999/09/07] +\RequirePackage{array,cite,ifthen,longtable} +\gdef\@GuideVersion{0} +\newcommand\GuideVersion[1]{\gdef\@GuideVersion{#1}} + +% +% \moc{Keyword} +% \dds{DragonDataStructure} +% \dusa{UserData} +% \dstr{InputStructure} +% \dir{Directory} +% \listedir{DirectoryList} +% \tst{TestCase} +% + +\DeclareRobustCommand{\moc}[1]{\texttt{#1}\index{#1@\texttt{#1}}} +\DeclareRobustCommand{\dds}[1]{\textsc{#1}\index{#1@\textsc{#1}}} +\DeclareRobustCommand{\dusa}[1]{\textsl{#1}\index{#1@\textsl{#1}}} +\DeclareRobustCommand{\dstr}[1]{\textbf{(#1)}\index{#1@\textbf{(#1)}}} +\DeclareRobustCommand{\dir}[1]{\textrm{/#1/}\index{#1@\textrm{/#1/}}} +\DeclareRobustCommand{\listedir}[1]{\textrm{\{/#1/\}}\index{#1@\textrm{\{/#1/\}}}} +\DeclareRobustCommand{\namedir}[1]{\texttt{/#1/}\index{#1@\texttt{/#1/}}} +\DeclareRobustCommand{\tst}[1]{\textbf{#1}\index{#1@\textbf{#1}}} +% +% More commands +% +\newcommand{\keff}{\ensuremath{K_{\mathrm{eff}}}} +\newcommand{\kin}[1]{\ensuremath{\mathrm{Ki}_{#1}}} +\newcommand{\rv}{\ensuremath{\vec{r}}} +\newcommand{\Ov}{\ensuremath{\vec{\Omega}}} +\newcommand{\delv}{\ensuremath{\vec{\nabla}}} +\newcommand{\nv}{\ensuremath{\vec{N}}} +\newcommand{\drift}{\ensuremath{\vec{\Omega}\cdot\vec{\nabla}}} +\newcommand{\Iso}[2]{\ensuremath{^{#2}\mathrm{#1}}} +\newcommand{\xsunit}{\ensuremath{\mathrm{cm}^{-1}}} + +% +% Environnement DataStructure +% +% \begin{DataStructure}{Nom du tableau} +% \end{DataStructure}} +% +% + +\newenvironment{DataStructure}[1]{\noindent +\setlongtables \setlength{\LTleft}{0pt}\setlength{\LTright}{0pt} +\setlength{\LTcapwidth}{15.0cm} +\begin{longtable}{|p{15.5cm}|} +\caption{#1}\\ +\hline +\multicolumn{1}{|l|}{} \\ +\endfirsthead +\multicolumn{1}{l}{#1 \hfill continued from last page}\\ +\hline +\multicolumn{1}{|l|}{} \\ +\endhead +\multicolumn{1}{|l|}{}\\ \hline +\multicolumn{1}{r}{continued on next page}\\ +\endfoot +\multicolumn{1}{|l|}{}\\ \hline +\endlastfoot} +{\end{longtable} \vskip 0.5cm } + +% +% Environnement DescriptionEnregisterment +% +% \begin{DescriptionEnregisterment}{Nom du tableau}{dimension des commentaires} +% \end{DescriptionEnregisterment} +% +% Peut contenir les commandes: +% \IntEnr{Nom du record}{Dimension}{Commentaires} +% \OptIntEnr{Nom du record}{Dimension}{Condition} +% {Commentaires} +% \RealEnr{Nom du record}{Dimension}{Commentaires}{Unites} +% \OptRealEnr{Nom du record}{Dimension}{Condition}{Unites} +% {Commentaires} +% \DbleEnr{Nom du record}{Dimension}{Commentaires}{Unites} +% \OptDbleEnr{Nom du record}{Dimension}{Condition}{Unites} +% {Commentaires} +% \CharEnr{Nom du record}{Dimension}{Commentaires} +% \OptCharEnr{Nom du record}{Dimension}{Condition} +% {Commentaires} +% \DirEnr{Nom du repertoire}{Dimension}{Commentaires} +% \OptDirEnr{Nom du repertoire}{Dimension}{Condition} +% {Commentaires} +% \DirlEnr{Nom du repertoire}{Dimension}{Commentaires} +% \OptDirlEnr{Nom du repertoire}{Dimension}{Condition}{Commentaires} +% +% \IntVar{Variable associee au Nom du record}{Dimension}{Commentaires} +% \OptIntVar{Variable associee au Nom du record}{Dimension}{Condition} +% {Commentaires} +% \RealVar{Variable associee au Nom du record}{Dimension}{Commentaires}{Unites} +% \OptRealVar{Variable associee au Nom du record}{Dimension}{Condition}{Unites} +% {Commentaires} +% \DbleVar{Variable associee au Nom du record}{Dimension}{Commentaires}{Unites} +% \OptDbleVar{Variable associee au Nom du record}{Dimension}{Condition}{Unites} +% {Commentaires} +% \CharVar{Variable associee au Nom du record}{Dimension}{Commentaires} +% \OptCharVar{Variable associee au Nom du record}{Dimension}{Condition} +% {Commentaires} +% \DirVar{Variable associee au Nom du repertoire}{Dimension}{Commentaires} +% \OptDirVar{Variable associee au Nom du repertoire}{Dimension}{Condition} +% {Commentaires} +% +% + +\newenvironment{DescriptionEnregistrement}[2]{\noindent +\setlongtables \setlength{\LTleft}{0pt}\setlength{\LTright}{0pt} +\begin{longtable}{|llll@{\extracolsep{\fill}}p{#2}|} +\caption{#1}\\ +\hline \hline +\multicolumn{5}{|l|}{} \\ +Name & Type & Condition &Units &Comment\\ +\multicolumn{5}{|l|}{} \\ \hline +\multicolumn{5}{|l|}{} \\ +\endfirsthead +\multicolumn{5}{l}{#1 \hfill continued from last page}\\ +\hline \hline +\multicolumn{5}{|l|}{} \\ +Name & Type & Condition &Units &Comment\\ +\multicolumn{5}{|l|}{} \\ \hline +\multicolumn{5}{|l|}{} \\ +\endhead +\multicolumn{5}{|l|}{}\\ \hline\hline +\multicolumn{5}{r}{continued on next page}\\ +\endfoot +\multicolumn{5}{|l|}{}\\ \hline\hline +\endlastfoot} +{\end{longtable} \vskip 0.5cm } + + +\newcommand{\IntEnr}[3]{ \texttt{#1} & I(#2) & &  \\} +\newcommand{\OptIntEnr}[4]{ \texttt{#1} & I(#2) & #3 &  \\} +\newcommand{\RealEnr}[4]{ \texttt{#1} & R(#2) & & #3  \\} +\newcommand{\OptRealEnr}[5]{\texttt{#1} & R(#2) & #3 & #4  \\} +\newcommand{\DbleEnr}[4]{ \texttt{#1} & D(#2) & & #3  \\} +\newcommand{\OptDbleEnr}[5]{\texttt{#1} & D(#2) & #3 & #4  \\} +\newcommand{\CharEnr}[3]{ \texttt{#1} & C#2 & &  \\} +\newcommand{\OptCharEnr}[4]{\texttt{#1} & C#2 & #3 &  \\} +\newcommand{\DirEnr}[2]{ \texttt{#1} & Dir & &  \\} +\newcommand{\OptDirEnr}[3]{ \texttt{#1} & Dir & #2 &  \\} +\newcommand{\DirlEnr}[3]{ \texttt{#1} & Dir(#2) & &  \\} +\newcommand{\OptDirlEnr}[4]{\texttt{#1} & Dir(#2) & #3 &  \\} + +\newcommand{\IntVar}[3]{ \textsl{#1} & I(#2) & &  \\} +\newcommand{\OptIntVar}[4]{ \textsl{#1} & I(#2) & #3 &  \\} +\newcommand{\RealVar}[4]{ \textsl{#1} & R(#2) & & #3  \\} +\newcommand{\OptRealVar}[5]{\textsl{#1} & R(#2) & #3 & #4  \\} +\newcommand{\DbleVar}[4]{ \textsl{#1} & D(#2) & & #3  \\} +\newcommand{\OptDbleVar}[5]{\textsl{#1} & D(#2) & #3 & #4  \\} +\newcommand{\CharVar}[3]{ \textsl{#1} & C#2 & &  \\} +\newcommand{\OptCharVar}[4]{\textsl{#1} & C#2 & #3 &  \\} +\newcommand{\DirVar}[2]{ \textsl{#1} & Dir & &  \\} +\newcommand{\OptDirVar}[3]{ \textsl{#1} & Dir & #2 &  \\} + +% +% Environnement ListeDeNotation +% +% \begin{ListeDeNotation}{largeur de l'etiquette} +% \end{ListeDeNotation} +% + +\newlength{\NotationLength} +\newcommand{\NotationLabel}[1]{\mbox{#1}\hfil} +\newenvironment{ListeDeNotation}[1]{% + \begin{list}{}{\renewcommand{\makelabel}{\NotationLabel}% + \setlength{\NotationLength}{#1}% + \setlength{\labelwidth}{\NotationLength}% + \addtolength{\NotationLength}{\labelsep}% + \setlength{\leftmargin}{\NotationLength}% + }}{\end{list}} +% +% Environnement ListeDeDescription +% +% \begin{ListeDeDescription}{Nom le plus large de l'etiquette} +% \end{ListeDeDescription} +% +\newlength{\DescriptionLength} +\newcommand{\DescriptionLabel}[1]{\mbox{#1}\hfil} +\newenvironment{ListeDeDescription}[1]{% + \begin{list}{}{\renewcommand{\makelabel}{\DescriptionLabel}% + \settowidth{\DescriptionLength}{\textbf{#1}}% + \setlength{\labelwidth}{\DescriptionLength}% + \addtolength{\DescriptionLength}{\labelsep}% + \setlength{\leftmargin}{\DescriptionLength}% + }}{\end{list}} + + +\newcommand{\Release}[2]{% +\ifthenelse{\equal{#1}{\@GuideVersion}}% +{#2 (\textsf{Release #1})}% +{#2 (\textsf{Release #1})}} +\newcommand{\Releasetmp}[1]{% +\ifthenelse{\equal{#1}{\@GuideVersion}}% +{(\textsf{Release #1})}% +{(\textsf{Release #1})}} +\newenvironment{GuideUpdate}[1]{% + \hfill\Releasetmp{#1}% + \ifthenelse{\equal{#1}{\@GuideVersion}}{}{}}{} +\newcommand{\BegRel}[1]{% +\ifthenelse{\equal{#1}{\@GuideVersion}}% +{}% +{}} +\newcommand{\EndRel}[0]{} diff --git a/doc/IGE332/GuideCOL.sty b/doc/IGE332/GuideCOL.sty new file mode 100644 index 0000000..66aab30 --- /dev/null +++ b/doc/IGE332/GuideCOL.sty @@ -0,0 +1,199 @@ +% Guide.sty +% G. Marleau +% created : 1998/09/18 +% modified: 1999/05/07 +% 1999/05/07 +% + +\ProvidesPackage{GuideCOL}[1999/09/07] +\RequirePackage{array,cite,ifthen,longtable,color} +\gdef\@GuideVersion{0} +\newcommand\GuideVersion[1]{\gdef\@GuideVersion{#1}} +\definecolor{Red}{cmyk}{0,1.,1.,0} % PANTONE RED +\definecolor{Blue}{cmyk}{1.,1.,0,0} % PANTONE BLUE-072 +\definecolor{Black}{cmyk}{0,0,0,1.} % PANTONE PROCESS-BLACK + +% +% \moc{Keyword} +% \dds{DragonDataStructure} +% \dusa{UserData} +% \dstr{InputStructure} +% \dir{Directory} +% \listedir{DirectoryList} +% \tst{TestCase} +% + +\DeclareRobustCommand{\moc}[1]{\texttt{#1}\index{#1@\texttt{#1}}} +\DeclareRobustCommand{\dds}[1]{\textsc{#1}\index{#1@\textsc{#1}}} +\DeclareRobustCommand{\dusa}[1]{\textsl{#1}\index{#1@\textsl{#1}}} +\DeclareRobustCommand{\dstr}[1]{\textbf{(#1)}\index{#1@\textbf{(#1)}}} +\DeclareRobustCommand{\dir}[1]{\textrm{/#1/}\index{#1@\textrm{/#1/}}} +\DeclareRobustCommand{\listedir}[1]{\textrm{\{/#1/\}}\index{#1@\textrm{\{/#1/\}}}} +\DeclareRobustCommand{\namedir}[1]{\texttt{/#1/}\index{#1@\texttt{/#1/}}} +\DeclareRobustCommand{\tst}[1]{\textbf{#1}\index{#1@\textbf{#1}}} + +% +% Environnement DataStructure +% +% \begin{DataStructure}{Nom du tableau} +% \end{DataStructure}} +% +% + +\newenvironment{DataStructure}[1]{\noindent +\setlongtables \setlength{\LTleft}{0pt}\setlength{\LTright}{0pt} +\setlength{\LTcapwidth}{15.0cm} +\begin{longtable}{|p{15.5cm}|} +\caption{#1}\\ +\hline +\multicolumn{1}{|l|}{} \\ +\endfirsthead +\multicolumn{1}{l}{#1 \hfill continued from last page}\\ +\hline +\multicolumn{1}{|l|}{} \\ +\endhead +\multicolumn{1}{|l|}{}\\ \hline +\multicolumn{1}{r}{continued on next page}\\ +\endfoot +\multicolumn{1}{|l|}{}\\ \hline +\endlastfoot} +{\end{longtable} \vskip 0.5cm } + +% +% Environnement DescriptionEnregisterment +% +% \begin{DescriptionEnregisterment}{Nom du tableau}{dimension des commentaires} +% \end{DescriptionEnregisterment} +% +% Peut contenir les commandes: +% \IntEnr{Nom du record}{Dimension}{Commentaires} +% \OptIntEnr{Nom du record}{Dimension}{Condition} +% {Commentaires} +% \RealEnr{Nom du record}{Dimension}{Commentaires}{Unites} +% \OptRealEnr{Nom du record}{Dimension}{Condition}{Unites} +% {Commentaires} +% \DbleEnr{Nom du record}{Dimension}{Commentaires}{Unites} +% \OptDbleEnr{Nom du record}{Dimension}{Condition}{Unites} +% {Commentaires} +% \CharEnr{Nom du record}{Dimension}{Commentaires} +% \OptCharEnr{Nom du record}{Dimension}{Condition} +% {Commentaires} +% \DirEnr{Nom du repertoire}{Dimension}{Commentaires} +% \OptDirEnr{Nom du repertoire}{Dimension}{Condition} +% {Commentaires} +% +% \IntVar{Variable associee au Nom du record}{Dimension}{Commentaires} +% \OptIntVar{Variable associee au Nom du record}{Dimension}{Condition} +% {Commentaires} +% \RealVar{Variable associee au Nom du record}{Dimension}{Commentaires}{Unites} +% \OptRealVar{Variable associee au Nom du record}{Dimension}{Condition}{Unites} +% {Commentaires} +% \DbleVar{Variable associee au Nom du record}{Dimension}{Commentaires}{Unites} +% \OptDbleVar{Variable associee au Nom du record}{Dimension}{Condition}{Unites} +% {Commentaires} +% \CharVar{Variable associee au Nom du record}{Dimension}{Commentaires} +% \OptCharVar{Variable associee au Nom du record}{Dimension}{Condition} +% {Commentaires} +% \DirVar{Variable associee au Nom du repertoire}{Dimension}{Commentaires} +% \OptDirVar{Variable associee au Nom du repertoire}{Dimension}{Condition} +% {Commentaires} +% +% + +\newenvironment{DescriptionEnregistrement}[2]{\noindent +\setlongtables \setlength{\LTleft}{0pt}\setlength{\LTright}{0pt} +\begin{longtable}{|llll@{\extracolsep{\fill}}p{#2}|} +\caption{#1}\\ +\hline \hline +\multicolumn{5}{|l|}{} \\ +Name & Type & Condition &Units &Comment\\ +\multicolumn{5}{|l|}{} \\ \hline +\multicolumn{5}{|l|}{} \\ +\endfirsthead +\multicolumn{5}{l}{#1 \hfill continued from last page}\\ +\hline \hline +\multicolumn{5}{|l|}{} \\ +Name & Type & Condition &Units &Comment\\ +\multicolumn{5}{|l|}{} \\ \hline +\multicolumn{5}{|l|}{} \\ +\endhead +\multicolumn{5}{|l|}{}\\ \hline\hline +\multicolumn{5}{r}{continued on next page}\\ +\endfoot +\multicolumn{5}{|l|}{}\\ \hline\hline +\endlastfoot} +{\end{longtable} \vskip 0.5cm } + + +\newcommand{\IntEnr}[3]{ \texttt{#1} & I(#2) & &  \\} +\newcommand{\OptIntEnr}[4]{ \texttt{#1} & I(#2) & #3 &  \\} +\newcommand{\RealEnr}[4]{ \texttt{#1} & R(#2) & & #3  \\} +\newcommand{\OptRealEnr}[5]{\texttt{#1} & R(#2) & #3 & #4  \\} +\newcommand{\DbleEnr}[4]{ \texttt{#1} & D(#2) & & #3  \\} +\newcommand{\OptDbleEnr}[5]{\texttt{#1} & D(#2) & #3 & #4  \\} +\newcommand{\CharEnr}[3]{ \texttt{#1} & C#2 & &  \\} +\newcommand{\OptCharEnr}[4]{\texttt{#1} & C#2 & #3 &  \\} +\newcommand{\DirEnr}[2]{ \texttt{#1} & Dir & &  \\} +\newcommand{\OptDirEnr}[3]{ \texttt{#1} & Dir & #2 &  \\} + +\newcommand{\IntVar}[3]{ \textsl{#1} & I(#2) & &  \\} +\newcommand{\OptIntVar}[4]{ \textsl{#1} & I(#2) & #3 &  \\} +\newcommand{\RealVar}[4]{ \textsl{#1} & R(#2) & & #3  \\} +\newcommand{\OptRealVar}[5]{\textsl{#1} & R(#2) & #3 & #4  \\} +\newcommand{\DbleVar}[4]{ \textsl{#1} & D(#2) & & #3  \\} +\newcommand{\OptDbleVar}[5]{\textsl{#1} & D(#2) & #3 & #4  \\} +\newcommand{\CharVar}[3]{ \textsl{#1} & C#2 & &  \\} +\newcommand{\OptCharVar}[4]{\textsl{#1} & C#2 & #3 &  \\} +\newcommand{\DirVar}[2]{ \textsl{#1} & Dir & &  \\} +\newcommand{\OptDirVar}[3]{ \textsl{#1} & Dir & #2 &  \\} + +% +% Environnement ListeDeNotation +% +% \begin{ListeDeNotation}{largeur de l'etiquette} +% \end{ListeDeNotation} +% + +\newlength{\NotationLength} +\newcommand{\NotationLabel}[1]{\mbox{#1}\hfil} +\newenvironment{ListeDeNotation}[1]{% + \begin{list}{}{\renewcommand{\makelabel}{\NotationLabel}% + \setlength{\NotationLength}{#1}% + \setlength{\labelwidth}{\NotationLength}% + \addtolength{\NotationLength}{\labelsep}% + \setlength{\leftmargin}{\NotationLength}% + }}{\end{list}} +% +% Environnement ListeDeDescription +% +% \begin{ListeDeDescription}{Nom le plus large de l'etiquette} +% \end{ListeDeDescription} +% +\newlength{\DescriptionLength} +\newcommand{\DescriptionLabel}[1]{\mbox{#1}\hfil} +\newenvironment{ListeDeDescription}[1]{% + \begin{list}{}{\renewcommand{\makelabel}{\DescriptionLabel}% + \settowidth{\DescriptionLength}{\textbf{#1}}% + \setlength{\labelwidth}{\DescriptionLength}% + \addtolength{\DescriptionLength}{\labelsep}% + \setlength{\leftmargin}{\DescriptionLength}% + }}{\end{list}} + + +\newcommand{\Release}[2]{% +\ifthenelse{\equal{#1}{\@GuideVersion}}% +{\color{Red}#2 (\textsf{Release #1})\color{Black}}% +{\color{Blue}#2 (\textsf{Release #1})\color{Black}}} +\newcommand{\Releasetmp}[1]{% +\ifthenelse{\equal{#1}{\@GuideVersion}}% +{\color{Red}(\textsf{Release #1})\color{Black}}% +{\color{Blue}(\textsf{Release #1})\color{Black}}} +\newenvironment{GuideUpdate}[1]{% + \hfill\Releasetmp{#1}% + \ifthenelse{\equal{#1}{\@GuideVersion}}{\color{Red}}{\color{Blue}}}{\color{Black}} +\newcommand{\BegRel}[1]{% +\ifthenelse{\equal{#1}{\@GuideVersion}}% +{\color{Red}}% +{\color{Blue}}} +\newcommand{\EndRel}[0]{\color{Black}} + diff --git a/doc/IGE332/IGE332.tex b/doc/IGE332/IGE332.tex new file mode 100644 index 0000000..fd8e733 --- /dev/null +++ b/doc/IGE332/IGE332.tex @@ -0,0 +1,36 @@ +\def\opcite#1{\textsuperscript{\cite{#1}}} +\documentclass{report} +% +% Black and white +% +\usepackage{IGNrapport,GuideBW} +\usepackage{makeidx} +\setlength{\textheight}{22.5cm} +\topmargin -0.5cm + +\makeindex +\begin{document} + +\title{THE GANLIB5 KERNEL GUIDE \\(64--BIT CLEAN VERSION)} + +\author{A.~H\'ebert and R.~Roy} + +\date{\today} + +\RapportIGN{IGE--332} + +\GuideVersion{5.00} + +\tableofcontents + +\Debutdutexte + +\input{chapter1.tex} +\clearpage +\phantomsection +\input{Bibliography.tex} +\clearpage +\phantomsection +\printindex + +\end{document} diff --git a/doc/IGE332/IGNrapport.sty b/doc/IGE332/IGNrapport.sty new file mode 100644 index 0000000..0d1f4d5 --- /dev/null +++ b/doc/IGE332/IGNrapport.sty @@ -0,0 +1,574 @@ +% IGNrapport.sty +% G. Marleau +% 1998/09/18 +% + +\ProvidesPackage{IGNrapport}[1998/09/18] +\RequirePackage{array,cite,indentfirst,epsfig,fleqn} +\RequirePackage{hyperref} +\hypersetup{colorlinks} + +% +% Definition +% +\newcommand{\warningStyle}{\itshape} +\newcommand{\warningRestore}{\normalfont} +\newcommand{\ColorComments}[1]{\renewcommand{\warningStyle}{\color{#1}\itshape} + \renewcommand{\warningRestore}{\color{Black}\normalfont}} +\newcommand{\warning}[1]{\warningStyle This option is not supported in #1.\warningRestore} + +\newcommand{\sectionformat}[1]{\ifnum \@typerapport=0 {#1} \else {#1} \fi} +\newcommand{\sectionstyle}[1]{\ifnum \@typerapport=0 {#1} \else {#1} \fi} +\newcommand{\subsectionstyle}[1]{\ifnum \@typerapport=0 {#1} \else {#1} \fi} +\gdef\@typerapport{0} +\gdef\@typesections{0} +\def\RapportCourt{\gdef\@typerapport{1}} +\def\refname{References} +\def\Indexname{Index} +\gdef\@tableofcontents{Contents} +\gdef\@listoffigures{List of Figures} +\gdef\@listoftables{List of Tables} +\gdef\@listofinput{List of Input Files} +\gdef\@listoftation{List of Notations and Symbols} +\gdef\@listofappendix{List of Appendices} +\def\appendixname{Appendix} +\def\indexname{{\Indexname}} + +\renewcommand\tableofcontents{% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + \section*{\@tableofcontents}% + \@starttoc{toc}% + \if@restonecol\twocolumn\fi + } +\newcommand\listofappendices{% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + \section*{\@listofappendix}% + \@starttoc{loa}% + \if@restonecol\twocolumn\fi + } +\renewcommand\listoffigures{% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + \section*{\@listoffigures}% + \@starttoc{lof}% + \if@restonecol\twocolumn\fi + } +\renewcommand\listoftables{% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + \section*{\@listoftables}% + \@starttoc{lot}% + \if@restonecol\twocolumn\fi + } +\newcommand\listofinputdecks{% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + \section*{\@listofinput}% + \@starttoc{loi}% + \if@restonecol\twocolumn\fi + } + +% +% References +% +\renewenvironment{thebibliography}[1] + {\ifnum \@typerapport=0 + \section*{\refname} + \else + \section{\refname} + \fi + \list{\@biblabel{\@arabic\c@enumiv}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \@openbib@code + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{\@arabic\c@enumiv}}% + \sloppy + \clubpenalty4000 + \@clubpenalty \clubpenalty + \widowpenalty4000% + \sfcode`\.\@m} + {\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \endlist} +\newenvironment{ListeDesRapports}[1] + {\section*{Liste des Rapports}% + \list{\@biblabel{\@arabic\c@enumiv}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \@openbib@code + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{\@arabic\c@enumiv}}% + \sloppy + \clubpenalty4000 + \@clubpenalty \clubpenalty + \widowpenalty4000% + \sfcode`\.\@m} + {\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \endlist} +\renewenvironment{theindex} + {\addcontentsline{toc}{section}{\indexname}% + \if@twocolumn + \@restonecolfalse + \else + \@restonecoltrue + \fi + \columnseprule \z@ + \columnsep 35\p@ + \twocolumn[\@makesnewsectionhead{\indexname}]% + \parindent\z@ + \parskip\z@ \@plus .3\p@\relax + \let\item\@idxitem} + {\if@restonecol\onecolumn\else\clearpage\fi} + +% +% Commande de mise en page +% +% TitreRapportIGN{Nom du rapport}{auteurs} +% {numero du rapport IGN}{date} +% + +\setlength{\textheight}{22.0cm} +\setlength{\textwidth}{16.0cm} +\setlength{\oddsidemargin}{0.5cm} +\setlength{\evensidemargin}{0.5cm} +\setlength{\topmargin}{0cm} +\setlength{\headheight}{0.5cm} +\setlength{\headsep}{0.5cm} +\makeindex + +\newcommand{\RapportIGN}[1]{ + \markright{\normalfont \slshape #1} + \pagestyle{myheadings} + \pagetitreRapportIGN{#1} + \pagenumbering{roman} + \setcounter{page}{1}\clearpage} + +\newcommand{\TitreRapportIGN}[4]{ + \markright{\normalfont \slshape #3} + \pagestyle{myheadings} + \pagetitreIGN{#1}{#2}{#3}{#4} + \pagenumbering{roman} + \setcounter{page}{1}\clearpage} + +\newcommand{\SectionFigures}[0]{\clearpage +\vspace*{5.0in} +\begin{center} +{\bfseries \Large FIGURES} +\end{center}} + +\newcommand{\pagetitreRapportIGN}[1]{% +\noindent\parbox{\textwidth}{\hfill \bfseries \large TECHNICAL REPORT} +\parbox{\textwidth}{\hfill \bfseries \large {#1}} +\thispagestyle{empty} +\vskip 5.0cm +\begin{center} +{\bfseries \Large \@title} +\vskip 3.0cm +{\scshape \Large \@author} +\end{center} +\vfill +\noindent +\parbox{\textwidth}{\hfill Institut de g\'enie nucl\'eaire} +\parbox{\textwidth}{\hfill D\'epartement de g\'enie m\'ecanique} +\parbox{\textwidth}{\hfill \'Ecole Polytechnique de Montr\'eal} +\parbox{\textwidth}{\hfill \@date} +\begin{picture}(10,0)(0,50) + \put(0.5,50){\includegraphics[height=2cm]{64_bit.eps}} +\end{picture} +} +\newcommand{\pagetitreIGN}[4]{% +\noindent\parbox{\textwidth}{\hfill \bfseries \large TECHNICAL REPORT} +\parbox{\textwidth}{\hfill \bfseries \large {#3}} +\thispagestyle{empty} +\vskip 5.0cm +\begin{center} +{\bfseries \large \MakeUppercase{#1}} +\vskip 3.0cm +{\scshape #2} +\end{center} +\vfill +\noindent +\parbox{\textwidth}{\hfill Institut de g\'enie nucl\'eaire} +\parbox{\textwidth}{\hfill D\'epartement de g\'enie m\'ecanique} +\parbox{\textwidth}{\hfill \'Ecole Polytechnique de Montr\'eal} +\parbox{\textwidth}{\hfill #4}} + +\newcommand{\Debutdutexte}{\clearpage +\pagenumbering{arabic} +\setcounter{page}{1}} + +\setcounter{tocdepth}{3} +\renewcommand{\thesection}{\@arabic\c@section} +\renewcommand{\thesubsection}{\thesection.\@arabic\c@subsection} +\renewcommand{\thesubsubsection}{\thesubsection.\@arabic\c@subsubsection} +\@addtoreset {equation}{section} +\renewcommand{\theequation}{\thesection.\@arabic\c@equation} + + +\renewcommand\section{\if@openright + \cleardoublepage + \else + \ifnum\@typerapport=0 + \clearpage + \else + \vspace{0.5cm} + \fi + \fi + \global\@topnum\z@ + \@afterindentfalse + \secdef\@newsection\@snewsection} +\def\@newsection[#1]#2{\refstepcounter{section}% + \typeout{Section \space\thesection.}% + \addcontentsline{toc}{section}% + {\protect\numberline{\thesection}\sectionformat{#1}}% + \if@twocolumn + \@topnewpage[\@makenewsectionhead{#2}]% + \else + \@makenewsectionhead{#2}\@afterheading + \fi} +\def\@makenewsectionhead#1{% + {\parindent \z@ \raggedright \normalfont + \interlinepenalty\@M + \large\bfseries \thesection \space \sectionformat{#1} \par\nobreak + \vskip 20\p@ + }} +\def\@snewsection#1{\addcontentsline{toc}{section}{\sectionformat{#1}}% + \if@twocolumn + \@topnewpage[\@makesnewsectionhead{#1}]% + \else + \@makesnewsectionhead{#1}\@afterheading + \fi} +\def\@makesnewsectionhead#1{% + {\parindent \z@ \raggedright \normalfont + \interlinepenalty\@M + \centerline{\large\bfseries \sectionformat{#1}}\par\nobreak + \vskip 20\p@ + }} + +\renewcommand{\subsection}{\@startsection{subsection}{2}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\normalfont\normalsize\bfseries}} + +\renewcommand{\subsubsection}{\global\@topnum\z@ + \@afterindentfalse + \secdef\@newsssection\@snewsssection} + +\def\@newsssection[#1]#2{\refstepcounter{subsubsection}% + \addcontentsline{toc}{subsubsection}% + {\protect\numberline{\thesubsubsection}#1}% + \if@twocolumn + \@topnewpage[\@makenewsssectionhead{#2}]% + \else + \@makenewsssectionhead{#2}\@afterheading + \fi} +\def\@makenewsssectionhead#1{% + {\vskip 20\p@ + \parindent \z@ \raggedright + \interlinepenalty\@M + \normalfont\normalsize\slshape \thesubsubsection \space #1\par\nobreak + \vskip 20\p@ + }} +\def\@snewsssection#1{\addcontentsline{toc}{subsubsection}{#1}% + \if@twocolumn + \@topnewpage[\@makesnewsssectionhead{#1}]% + \else + \@makesnewsssectionhead{#1}\@afterheading + \fi} +\def\@makesnewsssectionhead#1{% + {\vskip 20\p@ \parindent \z@ \raggedright + \interlinepenalty\@M + \vskip 20\p@ + \normalfont\normalsize\slshape #1\par\nobreak + \vskip 20\p@ + }} +\renewcommand{\paragraph}{\@startsection{paragraph}{4}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\normalfont\normalsize\sffamily\bfseries}} + +\newcommand\appendices{\par + \setcounter{chapter}{0}% + \setcounter{section}{0}% + \renewcommand{\thesection}{\@Alph\c@section} + \renewcommand{\thesubsection}{\thesection.\@arabic\c@subsection} + \renewcommand{\thesubsubsection}{\thesection.\@arabic\c@subsubsection}} + + +\renewcommand\appendix{\if@openright\cleardoublepage\else\ifnum\@typerapport=0\clearpage\fi\fi + \global\@topnum\z@ + \@afterindentfalse + \secdef\@newappendix\@snewappendix} +\newcommand{\subappendix}{\@startappendices{subsection}{2}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\normalfont\normalsize\bfseries}} +\newcommand{\subsubappendix}{\@startappendices{subsubsection}{3}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\normalfont\normalsize\slshape}} +\def\@newappendix[#1]#2{\refstepcounter{section}% + \typeout{Appendix \space\thesection.}% + \addcontentsline{loa}{section}% + {\protect\numberline{\thesection}#1}% + \if@twocolumn + \@topnewpage[\@makenewappendixhead{#2}]% + \else + \@makenewappendixhead{#2}\@afterheading + \fi} +\def\@makenewappendixhead#1{% + {\parindent \z@ \raggedright \normalfont + \interlinepenalty\@M + \centerline{\large\bfseries Appendix \thesection}\par\nobreak + \vskip 20\p@ + \centerline{ #1}\par\nobreak + \vskip 20\p@ + }} +\def\@snewappendix#1{\addcontentsline{loa}{section}{#1}% + \if@twocolumn + \@topnewpage[\@makesnewappendixhead{#1}]% + \else + \@makesnewappendixhead{#1}\@afterheading + \fi} +\def\@makesnewappendixhead#1{% + {\parindent \z@ \raggedright \normalfont + \interlinepenalty\@M + \centerline{\large\bfseries #1}\par\nobreak + \vskip 20\p@ + }} + +\newcommand\InputDecks{\par + \setcounter{chapter}{0}% + \setcounter{section}{0}% + \renewcommand{\thesection}{\@Roman\c@section} + \renewcommand{\thesubsection}{\thesection.\@arabic\c@subsection} + \renewcommand{\thesubsubsection}{\thesection.\@arabic\c@subsubsection}} + + +\newcommand\inputdeck{\if@openright\cleardoublepage\else\ifnum\@typerapport=0\clearpage\fi\fi + \global\@topnum\z@ + \@afterindentfalse + \secdef\@newinputdeck\@snewinputdeck} +\newcommand{\subinputdeck}{\@startinputdeck{subsection}{2}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\normalfont\normalsize\bfseries}} +\newcommand{\subsubinputdeck}{\@startinputdeck{subsubsection}{3}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\normalfont\normalsize\slshape}} +\def\@newinputdeck[#1]#2{\refstepcounter{section}% + \typeout{Input deck \space\thesection.}% + \addcontentsline{loi}{section}% + {\protect\numberline{\thesection}#1}% + \if@twocolumn + \@topnewpage[\@makenewinputdeckhead{#2}]% + \else + \@makenewinputdeckhead{#2}\@afterheading + \fi} +\def\@makenewinputdeckhead#1{% + {\parindent \z@ \raggedright \normalfont + \interlinepenalty\@M + \large\bfseries \thesection \space #1\par\nobreak + \vskip 20\p@ + }} +\def\@snewinputdeck#1{\addcontentsline{loa}{section}{#1}% + \if@twocolumn + \@topnewpage[\@makesnewinputdeckhead{#1}]% + \else + \@makesnewinputdeckhead{#1}\@afterheading + \fi} +\def\@makesnewinputdeckhead#1{% + {\parindent \z@ \raggedright \normalfont + \interlinepenalty\@M + \large\bfseries #1\par\nobreak + \vskip 20\p@ + }} + +\def\@startappendices#1#2#3#4#5#6{% + \if@noskipsec \leavevmode \fi + \par + \@tempskipa #4\relax + \@afterindenttrue + \ifdim \@tempskipa <\z@ + \@tempskipa -\@tempskipa \@afterindentfalse + \fi + \if@nobreak + \everypar{}% + \else + \addpenalty\@secpenalty\addvspace\@tempskipa + \fi + \@ifstar + {\@sappend{#3}{#4}{#5}{#6}}% + {\@dblarg{\@append{#1}{#2}{#3}{#4}{#5}{#6}}}} +\def\@append#1#2#3#4#5#6[#7]#8{% + \ifnum #2>\c@secnumdepth + \let\@svsec\@empty + \else + \refstepcounter{#1}% + \protected@edef\@svsec{\@seccntformat{#1}\relax}% + \fi + \@tempskipa #5\relax + \ifdim \@tempskipa>\z@ + \begingroup + #6{% + \@hangfrom{\hskip #3\relax\@svsec}% + \interlinepenalty \@M #8\@@par}% + \endgroup + \csname #1mark\endcsname{#7}% + \addcontentsline{loa}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7}% + \else + \def\@svsechd{% + #6{\hskip #3\relax + \@svsec #8}% + \csname #1mark\endcsname{#7}% + \addcontentsline{loa}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7}}% + \fi + \@xsect{#5}} +\def\@sappend#1#2#3#4#5{% + \@tempskipa #3\relax + \ifdim \@tempskipa>\z@ + \begingroup + #4{% + \@hangfrom{\hskip #1}% + \interlinepenalty \@M #5\@@par}% + \endgroup + \else + \def\@svsechd{#4{\hskip #1\relax #5}}% + \fi + \@xsect{#3}} + +\def\@startinputdeck#1#2#3#4#5#6{% + \if@noskipsec \leavevmode \fi + \par + \@tempskipa #4\relax + \@afterindenttrue + \ifdim \@tempskipa <\z@ + \@tempskipa -\@tempskipa \@afterindentfalse + \fi + \if@nobreak + \everypar{}% + \else + \addpenalty\@secpenalty\addvspace\@tempskipa + \fi + \@ifstar + {\@sinpd{#3}{#4}{#5}{#6}}% + {\@dblarg{\@inpd{#1}{#2}{#3}{#4}{#5}{#6}}}} +\def\@inpd#1#2#3#4#5#6[#7]#8{% + \ifnum #2>\c@secnumdepth + \let\@svsec\@empty + \else + \refstepcounter{#1}% + \protected@edef\@svsec{\@seccntformat{#1}\relax}% + \fi + \@tempskipa #5\relax + \ifdim \@tempskipa>\z@ + \begingroup + #6{% + \@hangfrom{\hskip #3\relax\@svsec}% + \interlinepenalty \@M #8\@@par}% + \endgroup + \csname #1mark\endcsname{#7}% + \addcontentsline{loi}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7}% + \else + \def\@svsechd{% + #6{\hskip #3\relax + \@svsec #8}% + \csname #1mark\endcsname{#7}% + \addcontentsline{loi}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7}}% + \fi + \@xsect{#5}} +\def\@sinpd#1#2#3#4#5{% + \@tempskipa #3\relax + \ifdim \@tempskipa>\z@ + \begingroup + #4{% + \@hangfrom{\hskip #1}% + \interlinepenalty \@M #5\@@par}% + \endgroup + \else + \def\@svsechd{#4{\hskip #1\relax #5}}% + \fi + \@xsect{#3}} + +% +% Commande pour inserer in fichier de texte en +% format verbatim +% +\def\listfile#1{\goodbreak\vskip 0.5cm\noindent {File: {\tt #1}} + \vskip 0.2cm\begingroup\setupverbatim\input #1 \endgroup} +\def\listing#1{\goodbreak\vskip 0.5cm\noindent {Input data for test case: {\bf #1}} + \vskip 0.2cm\begingroup\setupverbatim\input #1 \endgroup} +\def\setupverbatim{\tt + \def\par{\leavevmode\endgraf}\catcode`\`=\active + \obeylines\uncatdospecials \obeyspaces} +{\obeyspaces\global\let =\ } +\def\uncatdospecials{\def\do##1{\catcode`##1=12 }\dospecials} + +\newcommand{\Eq}[1]{Eq.~(\ref{eq:#1})} +\newcommand{\Eqto}[2]{Eqs.~(\ref{eq:#1}) to~(\ref{eq:#2})} +\newcommand{\Eqand}[2]{Eqs.~(\ref{eq:#1}) and~(\ref{eq:#2})} +\newcommand{\Eqor}[2]{Eqs.~(\ref{eq:#1}) or~(\ref{eq:#2})} + +\newcommand{\Appen}[1]{Appendix~\ref{appen:#1}} +\newcommand{\Appento}[2]{Appendices~\ref{appen:#1} to~\ref{appen:#2}} +\newcommand{\Appenand}[2]{Appendices~\ref{appen:#1} and~\ref{appen:#2}} +\newcommand{\Appenor}[2]{Appendices~\ref{appen:#1} or~\ref{appen:#2}} + +\newcommand{\Sect}[1]{Section~\ref{sect:#1}} +\newcommand{\Sectto}[2]{Sections~\ref{sect:#1} to~\ref{sect:#2}} +\newcommand{\Sectand}[2]{Sections~\ref{sect:#1} and~\ref{sect:#2}} +\newcommand{\Sector}[2]{Sections~\ref{sect:#1} or~\ref{sect:#2}} + +\newcommand{\Fig}[1]{Figure~\ref{fig:#1}} +\newcommand{\Figto}[2]{Figure~\ref{fig:#1} to~\ref{fig:#2}} +\newcommand{\Figand}[2]{Figure~\ref{fig:#1} and~\ref{fig:#2}} +\newcommand{\Figor}[2]{Figure~\ref{fig:#1} or~\ref{fig:#2}} + +\newcommand{\Tab}[1]{Table~\ref{tab:#1}} +\newcommand{\Tabto}[2]{Table~\ref{tab:#1} to~\ref{tab:#2}} +\newcommand{\Taband}[2]{Table~\ref{tab:#1} and~\ref{tab:#2}} +\newcommand{\Tabor}[2]{Table~\ref{tab:#1} or~\ref{tab:#2}} + +\newcounter{nblank} +\newcommand{\blank}[1]{\setcounter{nblank}{#1}\symbol{32}\whiledo{\value{nblank}>1}{\symbol{32}\addtocounter{nblank}{-1}}} +\renewcommand{\@cite}[2]{{\textsuperscript{[#1]}\ifthenelse{\boolean{@tempswa}}{,#2}{}}} diff --git a/doc/IGE332/chapter1.tex b/doc/IGE332/chapter1.tex new file mode 100644 index 0000000..5e8a5ef --- /dev/null +++ b/doc/IGE332/chapter1.tex @@ -0,0 +1,7412 @@ +\section{The GANLIB Version 5 architecture} + +The GANLIB is a small library that is linked to a software application in order to facilitate modularity, +interoperability, and to bring generic capabilities in term of data transfer. The GANLIB is an application programming +interface (API) made of subroutines that are called by the software application (e.g., a lattice code) or by +the multi-physics surrounding application. In other words, the GANLIB acts as a standardized interface between the +software application and the multi-physics application, as depicted in \Fig{multi}. + +\begin{figure}[htbp] +\begin{center} +\epsfxsize=9cm +\centerline{ \epsffile{multiphysics.eps}} +\parbox{12cm}{\caption{Implementing a multi-physics application.}\label{fig:multi}} +\end{center} +\end{figure} +\goodbreak + +\vskip 0.08cm + +The GANLIB is made of two distinct and inter-related components: +\begin{itemize} +\item CLE--2000 is a compact supervisor responsible for the free-format recovery of input data, for the modularization +of the software application and for the insertion of loops and control statements in the input data flow. CLE-2000 +permits the conception of {\sl computational schemes}, dedicated to specific engineering studies, without any need +for recompilation of the software application.\cite{cle2000} +\item LCM objects are data structures used to transfer data between modules of the software application and towards the +multi-physics application. LCM objects are structures made of {\sl associative table} and {\sl heterogeneous lists}. These +structures are either {\sl memory resident} or {\sl persistent} (i.e., stored in a file). The LCM object API is implemented +with access efficiency as its first requirement, even for frequent calls with small chunks of data.\cite{lcm2002} +\end{itemize} + +\vskip 0.08cm + +The GANLIB Version 5 is implemented in the ANSI~C programming language\cite{ansiC}, in order to maximize its compatibility +in a multi-physics environment where different components are implemented in various programming languages (C++, +Fortran, Java, etc.). The GANLIB Version 5 is {\sl 64-bit clean}, another benefit of using an ANSI~C implementation. This +last property allows the execution of software applications with 32-bit integers and 64-bit addresses. Specific Fortran +APIs are also available and are implemented according to the C interoperability mechanism, +available in Fortran~2003 and standardized by the International Organization for Standardization (ISO). This architecture is 64-bit clean.\cite{fortran2003} + +\vskip 0.8cm + +\subsection {From Versions 3 or 4 to Version 5} + +The Version 3 and Version 4 software applications available at GAN are using a legacy GANLIB, implemented in FORTRAN~77, +and relatively unchanged for more than 15~years.\cite{lcm1994} The only addition in Version~4 are the heterogeneous lists within LCM +objects. This Fortran implementation is {\sl not} ISO standard and {\sl not} 64-bit clean. However, the corresponding API +is mature and efficient, two qualities that we want to preserve. + +\vskip 0.08cm + +A software application is not 64-bit clean when 32-bit integers are used to store addresses (or differences between +two addresses). This nasty operation is possible in ANSI~C but can always be avoided. Unfortunately, this operation +is extensively used in software applications DRAGON, TRIVAC and DONJON Versions 3 or 4, due to design constraints +related to the choice of FORTRAN~77 as programming language. + +\vskip 0.08cm + +Versions 3 or 4 software applications can be re-implemented around the Version~5 GANLIB in order to become ISO standard and 64-bit clean. +However, the conversion process is not automatic and is time-consuming. Two major modifications must be done: +\begin{enumerate} +\item All variables containing addresses of LCM objects must be declared as {\tt TYPE(C\_PTR)} instead of been +declared as {\tt INTEGER}. The intrinsic type {\tt TYPE(C\_PTR)} is available in Fortran~2003, as defined by ISO. +\item Every call to the {\tt SETARA} subroutine of the GANLIB must be replaced by an {\tt ALLOCATE} statement and every call to the {\tt RLSARA} +subroutine must be replaced by a {\tt DEALLOCATE} statement. Statements {\tt ALLOCATE} and {\tt DEALLOCATE} are +available in Fortran~90, as defined by ISO. The {\tt ALLOCATABLE} attribute is used to identify allocated arrays. Blank common +are no longer required as reference addresses. This modification +is the more time-consuming of the two. +\end{enumerate} + +\vskip 0.08cm + +Implementing software applications in Fortran 2003 offers the opportunity to use advanced features of this language, such +as pointers, Fortran modules (not to be confused with CLE-2000 modules) and polymorphism. However, this is a programming +style issue which is independent of the selection of GANLIB Version 5. It is possible, as a pragmatic choice, to keep the Fortran-77 programming style +and just use the GANLIB Version~5, {\tt TYPE(C\_PTR)} types and {\tt ALLOCATABLE} arrays. + +\section {The ANSI C {\sc lcm} API}\label{sect:lcmapiC} + +LCM objects are data structures, implemented in ANSI~C, with characteristics of {\sl associative tables} (a.k.a., dictionaries or +hash tables) and/or {\sl heterogeneous lists} (a.k.a., cell arrays). These data structures are either stored in memory or are persistent +(i.e., stored in a file). These objects are primarily accessed via an API implemented in ANSI~C. Access by other languages is +possible via {\sl specific bindings} that are also described in this report. Deep copy and serialization utilities are available. + +\vskip 0.08cm + +Persistence is implemented using XSM data structures, together with another API implemented in ANSI~C. {\sc xsm} files are used +in this case. However, the XSM API +is invoked from within LCM and a developer using the GANLIB never has to call it directly. + +\vskip 0.08cm + +The {\sc lcm} API was implemented in such a way that +\begin{itemize} +\item the access from ANSI~C or from Fortran is highly optimized, even for frequent calls with small chunks of data. +\item the access from other languages (Matlab, Python, Java, or Objective~C) permits a complete read/write access +of the totality of information contained in the object. +\end{itemize} + +\vskip 0.08cm + +This technical report contains the precise description of each ANSI~C function available in the {\sc lcm} API and dedicated +to a programmer using the GANLIB Version~5. + +\vskip 0.08cm + +A LCM object is a collection of the following elements: +\vskip 0.08cm +{\bf Associative tables} \\ +An associative table is equivalent to a Python dictionary or to a Java hash table. Each element of an associative table is an association between a 12-character name and a block of data. A block of data can be an array of some elementary type, another associative table or an heterogeneous list. Tree structures can be constructed that way. +\vskip 0.08cm +{\bf Heterogeneous list} \\ +An heterogeneous list is an ordered set of blocks of information (referred as ``0", ``1", ``2", etc. ). A block of data can be an array of some elementary type, another associative table or an heterogeneous list. +\vskip 0.08cm +{\bf Array of elementary type} \\ +An array of elementary type is a set of consecutive values in memory, all of the same type. The type is selected in the following table: \\ +\begin{tabular}{|c|c|c|} +\hline +index & array of ... & type\\ +\hline +1 & 32-bit integer & int\_32 \\ +2 & 32-bit real & float\_32 \\ +3 & 4-character strings & \\ +4 & 64-bit real & double\_64 \\ +5 & 32-bit logical & int\_32 \\ +6 & 64-bit complex& \\ +\hline +\end{tabular} + +\vskip 0.08cm + +Any ANSI~C function calling the {\sc lcm} API must use an include file of the form +\begin{verbatim} +#include "lcm.h" +\end{verbatim} + +Each LCM object has a {\sl root associative table} from which the complete object is constructed. + +\clearpage + +\subsection{General utility functions} + +\subsubsection{strcut\_c\index{strcut\_c}} + +Copy {\tt n} characters from string {\tt ct} to {\tt s}. Eliminate leading {\tt ' '} and {\tt '}$\backslash${\tt 0'} +characters in {\tt s}. Terminate {\tt s} with a {\tt '}$\backslash${\tt 0'}. + +\begin{verbatim} + +strcut_c(s, ct, n); +\end{verbatim} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ct} & {\it char*} & character variable of length {\tt n}. May not be null-terminated.\\ +\hline +{\tt n} & {\it int\_32} & length of {\tt ct}. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt s} & {\it char*} & null terminated string. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\subsubsection{strfil\_c\index{strfil\_c}} + +Copy {\tt n} characters from string {\tt ct} to {\tt s}. Eliminate {\tt '}$\backslash${\tt 0'} characters and +pack with {\tt ' '}. Assume that {\tt ct} is null-terminated. + +\begin{verbatim} + +strfil_c(s, ct, n); +\end{verbatim} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ct} & {\it char*} & null-terminated character variable.\\ +\hline +{\tt n} & {\it int\_32} & expected length of {\tt s}. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt s} & {\it char*} & character variable of length {\tt n} (not null-terminated). \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsection{Opening, closing and validation of LCM objects} + +\subsubsection{lcmop\_c\index{lcmop\_c}} + +Open an LCM object (either memory resident or persistent). Obtain the address of the LCM +object if it is created. Note that CLE-2000 is responsible to perform the calls to +{\tt lcmop\_c} for the LCM objects that are used as parameters of a CLE-2000 module. The use +of {\tt lcmop\_c} is generally restricted to the use of temporary LCM objects created within a CLE-2000 module. + +\begin{verbatim} + +lcmop_c(iplist,namp,imp,medium,impx); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the LCM object if {\tt imp=1} or {\tt imp=2}. {\tt iplist} corresponds to the address of the root associative table. \\ +\hline +{\tt namp} & {\it char[73]} & name of the LCM object if {\tt imp=0}. \\ +\hline +{\tt imp} & {\it int\_32} & =0 to create a new LCM object ; + =1 to modify an existing LCM object; + =2 to access an existing LCM object in {\bf read-only} mode. \\ +\hline +{\tt medium} & {\it int\_32} & =1 to use a memory-resident LCM object; + =2 to use an {\sc xsm} file to store the LCM object. \\ +\hline +{\tt impx} & {\it int\_32} & print parameter. Equal to zero to suppress all printings. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of an LCM object if {\tt imp=0}. \\ +\hline +{\tt namp} & {\it char*} & name of the LCM object if {\tt imp=1} or {\tt imp=2}. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\subsubsection{lcmcl\_c\index{lcmcl\_c}} + +Close an LCM object (either memory resident or persistent). Note that CLE-2000 is responsible to perform the calls to +{\tt lcmcl\_c} for the LCM objects that are used as parameters of a CLE-2000 module. The use +of {\tt lcmcl\_c} is generally restricted to the use of temporary LCM objects created within a CLE-2000 module. + +\vskip 0.2cm + +A LCM object can only be closed if {\tt iplist} points towards its root directory. + +\begin{verbatim} + +lcmcl_c(iplist,iact); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the LCM object (address of the root directory of the LCM object). \\ +\hline +{\tt iact} & {\it int\_32} & =1 close the LCM object without destroying it; =2 and destroying it; =3 erase and close the LCM object without destroying it. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & {\tt iplist=null} indicates that the LCM object is closed and destroyed. A memory-resident LCM object keeps the +same address during its complete existence. A persistent LCM object is associated to an XSM file and is represented by a different +value of {\tt iplist} each time it is reopened. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\subsubsection{lcmval\_c\index{lcmval\_c}} + +Function to validate a single block of data in a LCM object or the totality of the LCM object, +starting from the address of an associative table. This function has no effect if the object is +persistent. The validation consists to verify the connections between the elements of the LCM +object, to verify that each element of the object is defined and to check for possible memory corruptions. +If an error is detected, the following message is issued: + +\begin{verbatim} +LCMVAL_C: BLOCK xxx OF THE TABLE yyy HAS BEEN OVERWRITTEN. +\end{verbatim} + +This function is called as + +\begin{verbatim} + +lcmval_c(iplist,namp); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the associative table or of the heterogeneous list. \\ +\hline +{\tt namp} & {\it char*} & name of the block to validate in the associative table. +If {\tt namp='~'}, all the blocks in the associative table are verified in a recursive way. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it void} & \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsection{Interrogation of LCM objects} + +The data structures in an LCM object are self-described. It is therefore possible to +interrogate them in order to know their characteristics. + +\vskip 0.4cm + +\begin{center} +\begin{tabular}{|c|l|l|l|} +\cline{3-4} +\multicolumn{2}{c|}{} & \multicolumn{2}{c|}{type of interrogation} \\ +\cline{3-4} +\multicolumn{2}{c|}{} & father structure~~~~ & information block \\ +\hline +father & associative table & {\tt lcminf\_c} & {\tt lcmlen\_c} \\ + & & {\tt lcmnxt\_c} & \\ +\cline{2-4} + & heterogeneous list & {\tt lcminf\_c} & {\tt lcmlel\_c} \\ +\hline +\end{tabular} +\end{center} + +\subsubsection{lcmlen\_c\index{lcmlen\_c}} + +Function used to recover the length and type of an information block stored in an +associative table (either memory-resident or persistent). The length is the number of +elements in a daughter heterogeneous list or the number of elements in an array of elementary type. +If {\tt itylcm=3}, the length is the number of four-character words. As an example, the length required +to store an array of eight-character words is twice its dimension. + +\begin{verbatim} + +lcmlen_c(iplist,namp,ilong,itylcm); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the associative table. \\ +\hline +{\tt namp} & {\it char*} & name of the block. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt ilong} & {\it int\_32*} & length of the block. =$-1$ for a daughter associative table; + =$N$ for a daughter heterogeneous list containing $N$ components; + =0 if the block does't exist. \\ +\hline +{\tt itylcm} & {\it int\_32*} & type of information. =0 associative table; =1 32-bit integer; + =2 32-bit real; =3 4-character data; + =4 64-bit real; =5 32-bit logical; =6 64-bit complex; =10 heterogeneous list; + =99 undefined (99 is returned if the block does't exist). \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\subsubsection{lcminf\_c\index{lcminf\_c}} + +Function used to recover general information about a LCM object. + +\begin{verbatim} + +lcminf_c(iplist,namlcm,nammy,empty,ilong,lcm,access); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameter:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the associative table or of the heterogeneous list. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt namlcm} & {\it char[73]} & name of the LCM object. \\ +\hline +{\tt nammy} & {\it char[13]} & name of the associative table at address {\tt iplist}. $=${\tt '/'} if the associative table +is the root of the LCM object; $=${\tt ' '} if the associative table +is an heterogeneous list component. \\ +\hline +{\tt empty} & {\it int\_32*} & 32-bit integer variable set to $1$ + if the associative table is empty + or set to $0$ otherwise. \\ +\hline +{\tt ilong} & {\it int\_32*} & $=-1$: {\tt iplist} is an associative table; $>0$: number of components in the heterogeneous list {\tt iplist}. \\ +\hline +{\tt lcm} & {\it int\_32*} & 32-bit integer variable set to $1$ + if information is memory-resident or set to $0$ if information is persistent (stored in an XSM file). \\ +\hline +{\tt access} & {\it int\_32*} & 32-bit integer variable set to the access mode of object. $=0$: the object +is closed (only available for memory-resident LCM objects); $=1$: the object is open for modification; +$=2$: the object is open in read-only mode.\\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\subsubsection{lcmnxt\_c\index{lcmnxt\_c}} + +Function used to find the name of the next block of data in an associative table. Use +of {\tt lcmnxt\_c} is forbidden if the associative table is empty. The order of names is +arbitrary. The search cycle indefinitely. + +\begin{verbatim} + +lcmnxt_c(iplist,namp); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the associative table. \\ +\hline +{\tt namp} & {\it char*} & name of an existing block. + {\tt namp=' '} can be used to obtain a first name to initiate the search. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt namp} & {\it char*} & name of the next block. + A call to {\tt xabort\_c} is performed if the associative table is empty. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\subsubsection{lcmlel\_c\index{lcmlel\_c}} + +Function used to recover the length and type of an information block stored in an +heterogeneous list (either memory-resident or persistent). The length is the number of +elements in a daughter heterogeneous list or the number of elements in an array of elementary type. +If {\tt itylcm=3}, the length is the number of four-character words. As an example, the length required +to store an array of eight-character words is twice its dimension. + +\begin{verbatim} + +lcmlel_c(iplist,iset,ilong,itylcm); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the heterogeneous list. \\ +\hline +{\tt iset} & {\it int\_32} & index of the block in the list. +The first element of the list is located at index $0$. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt ilong} & {\it int\_32*} & length of the block. =0 if the block does't exist. \\ +\hline +{\tt itylcm} & {\it int\_32*} & type of information. =0 associative table; =1 32-bit integer; + =2 32-bit real; =3 4-chatacter data; + =4 64-bit real; =5 32-bit logical; =6 64-bit complex; =10 heterogeneous list; + =99 undefined (99 is returned if the block does't exist). \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsection{Management of the array of elementary type} + +Management of the array of elementary type can be performed {\sl with} copy of the data ({\tt lcmput\_c}, {\tt lcmget\_c}, {\tt lcmpdl\_c} or +{\tt lcmgdl\_c}) or {\sl without} copy ({\tt lcmppd\_c}, {\tt lcmgpd\_c}, {\tt lcmppl\_c} or +{\tt lcmgpl\_c}). + +\vskip 0.4cm + +\begin{center} +\begin{tabular}{|c|l|l|l|} +\cline{3-4} +\multicolumn{2}{c|}{} & \multicolumn{2}{c|}{type of operation} \\ +\cline{3-4} +\multicolumn{2}{c|}{} & put~~~~~~~~~~~~~ & get~~~~~~~~~~~~~ \\ +\hline +father & associative table & {\tt lcmput\_c} & {\tt lcmget\_c} \\ + & & {\tt lcmppd\_c} & {\tt lcmgpd\_c} \\ +\cline{2-4} + & heterogeneous list & {\tt lcmpdl\_c} & {\tt lcmgdl\_c} \\ + & & {\tt lcmppl\_c} & {\tt lcmgpl\_c} \\ +\hline +\end{tabular} +\end{center} + +\subsubsection{lcmget\_c\index{lcmget\_c}} + +Function used to recover an information block (array of elementary type) from an associative table and to copy +this data into memory. + +\begin{verbatim} + +lcmget_c(iplist,namp,data); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the associative table. \\ +\hline +{\tt namp} & {\it char*} & name of the block to recover. + A call to {\tt xabort\_c} is performed if the block does't exist. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt data} & {\it int\_32*} & array of dimension $\ge$ {\tt ilong} in which the block is copied. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\vskip 0.8cm + +Function {\tt lcmget\_c} can be used to recover information of type other than {\it int\_32*} by using a +cast operation. Here is an example: + +\begin{verbatim} +#include "lcm.h" + ... + float_32 data[5]; + lcm *iplist; + iplist=... ; + lcmget_c(&iplist,namp,(int_32*)data); +\end{verbatim} + +\vskip 0.2cm + +Function {\tt lcmget\_c} can also be used to recover character-string information available in a block +of the LCM object. It is also possible to use function {\tt lcmgcd\_c} presented in \Sect{lcmgcdc}. +In the following example, a block is stored in an associative table located at +address {\tt iplist}. The block has a name {\tt namp} and a length equivalent to 5 32-bit words. +The information is recovered into the integer array {\tt idata} and transformed into a null-terminated +character string {\tt hname} using the {\tt strcut\_c} utility: + +\begin{verbatim} +#include "lcm.h" + ... + char *namp="...", hname[21]; + int_32 idata[5]; + lcm *iplist; + iplist=... ; + lcmget_c(&iplist,namp,idata); + strcut_c(hname,(char *)idata,20); +\end{verbatim} + +\subsubsection{lcmput\_c\index{lcmput\_c}} + +Function used to store a block of data (array of elementary type) into an associative table. +The information is copied from memory towards the LCM object. If the block already exists, it is replaced; +otherwise, it is created. This operation cannot be performed into a LCM object open in {\tt read-only} mode. + +\begin{verbatim} + +lcmput_c(iplist,namp,ilong,itylcm,data); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the associative table. \\ +\hline +{\tt namp} & {\it char*} & name of the block. \\ +\hline +{\tt ilong} & {\it int\_32} & length of the block. \\ +\hline +{\tt itylcm} & {\it int\_32} & type of information. =1 32-bit integer; + =2 32-bit real; =3 4-character data; + =4 64-bit real; =5 32-bit logical; =6 64-bit complex; =99 undefined. \\ +\hline +{\tt data} & {\it int\_32*} & array of dimension $\ge$ {\tt jlong} to be copied into the LCM object. {\tt jlong}={\tt 2*ilong} if {\tt itylcm}=4 or {\tt itylcm}=6; + {\tt jlong}={\tt ilong} otherwise. + Array elements {\tt data[0]} to {\tt data[jlong-1]} + must be initialized before the call to {\tt lcmput\_c}. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it void} & \\ +\hline +\end{tabular} + +\vskip 0.4cm + +Function {\tt lcmput\_c} can be used to store information of type other than {\it int\_32*} by using a +cast operation. Here is an example: + +\begin{verbatim} +#include "lcm.h" + ... + float_32 data[5]; + lcm *iplist; + int_32 i; + iplist=... ; + for (i=0;i<5;i++) { + data[i]=... ; + } + lcmput_c(&iplist,namp,5,2,(int_32*)data); +\end{verbatim} + +\vskip 0.2cm + +Function {\tt lcmput\_c} can also be used to store character-string information in an associative table +of a LCM object. It is also possible to use function {\tt lcmpcd\_c} presented in \Sect{lcmpcdc}. In the +following example, a character string {\tt hname} is first transformed into an integer array {\tt idata} +using the {\tt strfil\_c} utility. This array (block of data) is stored into the LCM object located at +address {\tt iplist}, using {\tt lcmput\_c}. The block has a name {\tt namp}, a length equivalent +to 5 32-bit words, and a type equal to 3. + +\begin{verbatim} +#include "lcm.h" + ... + char *namp="...", hname[20]; + int_32 idata[5], il=5, it=3; + lcm *iplist; + iplist=... ; + strfil_c((char *)idata,hname,20); + lcmput_c(&iplist,namp,il,it,idata); +\end{verbatim} + +\subsubsection{lcmgpd\_c\index{lcmgpd\_c}} + +Function used to recover the memory address of an information block (array of elementary type) from an associative table, +{\sl without} making a copy of the information. Use of this function must respect the following rules: +\begin{itemize} +\item If the information is modified after the call to {\tt lcmgpd\_c}, a call to {\tt lcmppd\_c} +must be performed to acknowledge the modification. +\item The block {\tt *iofset} should never be released using a deallocation function such as +{\tt rlsara\_c}, {\tt free}, etc. +\item The address {\tt iofset} must never be copied into another variable. +\end{itemize} +Non respect of these rules may cause execution failure (core dump, +segmentation fault, etc) without possibility to throw an exception. + +\vskip 0.2cm + +A call to {\tt lcmgpd\_c} doesn't cause any modification to the LCM object. +The data array information is accessed directly from memory locations {\tt *iofset[0]} to {\tt *iofset[ilong-1]} +where {\tt iofset} is the address returned by function {\tt lcmgpd\_c}. + +\begin{verbatim} + +lcmgpd_c(iplist,namp,iofset); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the associative table. \\ +\hline +{\tt namp} & {\it char*} & name of the block to recover. + A call to {\tt xabort\_c} is performed if the block does't exist. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt iofset} & {\it int\_32**} & address of the data array. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\subsubsection{lcmppd\_c\index{lcmppd\_c}} + +Function used to store a block of data (array of elementary type) into an associative table +{\sl without} making a copy of the information. If the block already exists, it is replaced; +otherwise, it is created. This operation cannot be performed into a LCM object open in {\tt read-only} mode. + +\vskip 0.2cm + +{\sl If a block named {\tt namp} already exists in the associative table, the address associated +with {\tt namp} is replaced by the new address and the information pointed by the old address +is deallocated.} + +\vskip 0.2cm + +The array containing information stored by {\tt lcmppd\_c} {\sl must be} originally +allocated by a call of the form +{\tt iofset = setara\_c(jlong)} or {\tt iofset = (int\_32*)malloc(jlong*sizeof(int\_32))}. +where {\tt jlong} is generally equal to {\tt ilong} except if +{\tt itylcm}=4 or {\tt itylcm}=6 where {\tt jlong}={\tt 2*ilong}. + +\begin{verbatim} + +lcmppd_c(iplist,namp,ilong,itylcm,iofset); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the associative table. \\ +\hline +{\tt namp} & {\it char*} & name of the block. \\ +\hline +{\tt ilong} & {\it int\_32} & length of the block. \\ +\hline +{\tt itylcm} & {\it int\_32} & type of information. =1 32-bit integer; + =2 32-bit real; =3 4-character data; + =4 64-bit real; =5 32-bit logical; =6 64-bit complex; =99 undefined. \\ +\hline +{\tt iofset} & {\it int\_32*} & address of the data array of length {\tt jlong}, as returned by {\tt setara\_c}. {\tt jlong}={\tt 2*ilong} + if {\tt itylcm}=4 or {\tt itylcm}=6; {\tt jlong}={\tt ilong} otherwise. + Data elements {\tt iofset[0]} to {\tt iofset[jlong-1]} + must be initialized before the call to {\tt lcmppd\_c}. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it void} & \\ +\hline +\end{tabular} + +\vskip 0.4cm + +The information block of address {\tt iofset} will automatically be deallocated using function {\tt rlsara\_c} +at closing time of the LCM object. Situations exist where this block is shared with data structures other +than LCM, and where the block must {\sl not} be deallocated by the {\sc lcm} API. In this case, it is imperative +to follow the call to {\tt lcmppd\_c} by a call to function {\tt refpush} of the form: + +\begin{verbatim} +refpush(iplist,iofset); +\end{verbatim} + +\subsubsection{lcmdel\_c\index{lcmdel\_c}} + +Function used to erase an information block or a daughter heterogeneous list stored in a memory-resident associative table. +Function {\tt lcmdel\_c} {\sl cannot} be used with persistent LCM objects. + +\begin{verbatim} + +lcmdel_c(iplist,namp); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the associative table. \\ +\hline +{\tt namp} & {\it char*} & name of the block to erase. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it void} & \\ +\hline +\end{tabular} + +\subsubsection{lcmgdl\_c\index{lcmgdl\_c}} + +Function used to recover an information block (array of elementary type) from an heterogeneous list and to copy +this data into memory. + +\begin{verbatim} + +lcmgdl_c(iplist,iset,data); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the heterogeneous list. \\ +\hline +{\tt iset} & {\it int\_32} & index of the block in the heterogeneous list. A call to {\tt xabort\_c} + is performed if the block does't exist. +The first element of the list is located at index $0$. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt data} & {\it int\_32*} & array of dimension $\ge$ {\tt ilong} in which the block is copied. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\vskip 0.4cm + +Function {\tt lcmgdl\_c} can be used to recover character-string information available in a block +of the LCM object. It is also possible to use subroutine {\tt lcmgcl\_c} presented in \Sect{lcmgclc}. In the following example, a block is stored in an the heterogeneous list located at +address {\tt iplist}. The block is located at the {\tt iset}--th position of the heterogeneous list and has a length equivalent to 5 32-bit words. +The information is recovered into the integer array {\tt idata} and transformed into a null-terminated +character string {\tt hname} using the {\tt strcut\_c} utility: + +\begin{verbatim} +#include "lcm.h" + ... + char *namp="...", hname[21]; + int_32 iset,idata[5]; + lcm *iplist; + iplist=... ; + iset=...; + lcmgdl_c(&iplist,iset,idata); + strcut_c(hname,(char *)idata,20); +\end{verbatim} + +\subsubsection{lcmpdl\_c\index{lcmpdl\_c}} + +Function used to store a block of data (array of elementary type) into an heterogeneous list. +The information is copied from memory towards the LCM object. If the block already exists, it is replaced; +otherwise, it is created. This operation cannot be performed into a LCM object open in {\tt read-only} mode. + +\begin{verbatim} + +lcmpdl_c(iplist,iset,ilong,itylcm,data); +\end{verbatim} + +\vskip 0.2cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the heterogeneous list. \\ +\hline +{\tt iset} & {\it int\_32} & index of the block in the list. +The first element of the list is located at index $0$. \\ +\hline +{\tt ilong} & {\it int\_32} & length of the block. \\ +\hline +{\tt itylcm} & {\it int\_32} & type of information. =1 32-bit integer; + =2 32-bit real; =3 4-character data; + =4 64-bit real; =5 32-bit logical; =6 64-bit complex; =99 undefined. \\ +\hline +{\tt data} & {\it int\_32*} & array of dimension $\ge$ {\tt ilong} to be copied into the LCM object. {\tt jlong}={\tt 2*ilong} + if {\tt itylcm}=4 or {\tt itylcm}=6; {\tt jlong}={\tt ilong} otherwise. + Array elements {\tt data[0]} to {\tt data[jlong-1]} + must be initialized before the call to {\tt lcmpdl\_c}. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it void} & \\ +\hline +\end{tabular} + +\vskip 0.4cm + +Function {\tt lcmpdl\_c} can be used to store character-string information into an heterogeneous list of a LCM object. In the +following example, a character string {\tt hname} is first transformed into an integer array {\tt idata} +using the {\tt strfil\_c} utility. This array (block of data) is stored into the LCM object located at +address {\tt iplist}, using {\tt lcmpdl\_c} . The block is located at the {\tt iset}--th position of the heterogeneous list, has a length equivalent to 5 32-bit words, and a type +equal to 3. + +\begin{verbatim} +#include "lcm.h" + ... + char *namp="...", hname[20]; + int_32 iset,idata[5],it=3,il=5; + lcm *iplist; + iplist=... ; + iset=...; + strfil_c((char *)idata,hname,20); + lcmpdl_c(&iplist,iset,il,it,idata); +\end{verbatim} + +\subsubsection{lcmgpl\_c\index{lcmgpl\_c}} + +Function used to recover the memory address of an information block (array of elementary type) from an heterogeneous list, +{\sl without} making a copy of the information. Use of this function must respect the following rules: +\begin{itemize} +\item If the information is modified after the call to {\tt lcmgpl\_c}, a call to {\tt lcmppl\_c} +must be performed to acknowledge the modification. +\item The block {\tt *iofset} should never be released using a deallocation function such as +{\tt rlsara\_c}, {\tt free}, etc. +\item The address {\tt iofset} must never be copied into another variable. +\end{itemize} +Non respect of these rules may cause execution failure (core dump, +segmentation fault, etc) without possibility to throw an exception. + +\vskip 0.2cm + +A call to {\tt lcmgpl\_c} doesn't cause any modification to the LCM object. +The data array information is accessed directly from memory locations {\tt *iofset[0]} to {\tt *iofset[ilong-1]} +where {\tt iofset} is the address returned by function {\tt lcmgpl\_c}. + +\begin{verbatim} + +lcmgpl_c(iplist,iset,iofset); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the heterogeneous list. \\ +\hline +{\tt iset} & {\it int\_32} & index of the block in the list. +A call to {\tt xabort\_c} is performed if the block does't exist. +The first element of the list is located at index $0$. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt iofset} & {\it int\_32**} & address of the data array, as returned by {\tt setara\_c}. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\subsubsection{lcmppl\_c\index{lcmppl\_c}} + +Function used to store a block of data (array of elementary type) into an heterogeneous list +{\sl without} making a copy of the information. If the block already exists, it is replaced; +otherwise, it is created. This operation cannot be performed into a LCM object open in {\tt read-only} mode. + +\vskip 0.2cm + +{\sl If the {\tt iset}-th component of the heterogeneous list already exists, the address associated +with this component is replaced by the new address and the information pointed by the old address +is deallocated.} + +\vskip 0.2cm + +The array containing information stored by {\tt lcmppl\_c} {\sl must be} originally +allocated by a call of the form +{\tt iofset = setara\_c(jlong)} or {\tt iofset = (int\_32*)malloc(jlong*sizeof(int\_32))} +where {\tt jlong} is generally equal to {\tt ilong} except if +{\tt itylcm}=4 or {\tt itylcm}=6 where {\tt jlong}={\tt 2*ilong}. + +\begin{verbatim} + +lcmppl_c(iplist,iset,ilong,itylcm,iofset); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the heterogeneous list. \\ +\hline +{\tt iset} & {\it int\_32} & index of the block in the list. +The first element of the list is located at index $0$. \\ +\hline +{\tt ilong} & {\it int\_32} & length of the block. \\ +\hline +{\tt itylcm} & {\it int\_32} & type of information. =1 32-bit integer; + =2 32-bit real; =3 4-character data; + =4 64-bit real; =5 32-bit logical; =6 64-bit complex; + =99 undefined. \\ +\hline +{\tt iofset} & {\it int\_32*} & address of the data array, as returned by {\tt setara\_c}. {\tt jlong}={\tt 2*ilong} + if {\tt itylcm}=4 or {\tt itylcm}=6; {\tt jlong}={\tt ilong} otherwise. + Data elements {\tt iofset[0]} to {\tt iofset[jlong-1]} + must be initialized before the call to {\tt lcmppl\_c}. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it void} & \\ +\hline +\end{tabular} + +\vskip 0.4cm + +The information block of address {\tt iofset} will automatically be deallocated using function {\tt rlsara\_c} +at closing time of the LCM object. Situations exist where this block is shared with data structures other +than LCM, and where the block must {\sl not} be deallocated by the {\sc lcm} API. In this case, it is imperative +to follow the call to {\tt lcmppl\_c} by a call to function {\tt refpush} of the form: + +\begin{verbatim} +refpush(iplist,iofset); +\end{verbatim} + +\vskip 0.8cm + +\subsection{Management of the associative tables and of the heterogeneous lists} + +These functions permit to create ({\tt lcmsix\_c}, {\tt lcmdid\_c}, {\tt lcmdil\_c}, +{\tt lcmlid\_c}, {\tt lcmlil\_c}) or to access ({\tt lcmsix\_c}, {\tt lcmgid\_c}, {\tt lcmgil\_c}) +daughter associative tables or daughter heterogeneous lists. Use of these functions is summarized in the following table: + +\vskip 0.4cm + +\begin{center} +\begin{tabular}{|c|l|l|l|} +\cline{3-4} +\multicolumn{2}{c|}{} & \multicolumn{2}{c|}{daughter} \\ +\cline{3-4} +\multicolumn{2}{c|}{} & associative table & heterogeneous list \\ +\hline +father & associative table & {\tt lcmdid\_c} & {\tt lcmlid\_c} \\ + & & {\tt lcmgid\_c} & {\tt lcmgid\_c} \\ +\cline{2-4} + &heterogeneous list & {\tt lcmdil\_c} & {\tt lcmlil\_c} \\ + & & {\tt lcmgil\_c} & {\tt lcmgil\_c} \\ +\hline +\end{tabular} +\end{center} + +\subsubsection{lcmdid\_c\index{lcmdid\_c}} + +Function used to create or access a daughter associative table included into a father associative table. This operation cannot be +performed in a LCM object open in {\tt read-only} mode. + +\vskip 0.2cm + +The daughter associative table is created if it doesn't already exist. Otherwise, the +existing daughter associative table is accessed. In the latter case, it is recommended +to use function {\tt lcmgid\_c} which is faster for a simple access and which can be used +with LCM object open in {\tt read-only} mode. + +\begin{verbatim} + +lcmdid_c(iplist,namp); +\end{verbatim} + +\vskip 0.5cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameterss:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the father associative table. \\ +\hline +{\tt namp} & {\it char*} & name of the daughter associative table. \\ +\hline +\end{tabular} + +\vskip 0.4cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it lcm*} & address of the daughter associative table. \\ +\hline +\end{tabular} + +\subsubsection{lcmlid\_c\index{lcmlid\_c}} + +Function used to create or access a daughter heterogeneous list included into a father associative table. This operation cannot be +performed in a LCM object open in {\tt read-only} mode. + +\vskip 0.2cm + +In the following example, a daughter heterogeneous list is created as a block {\tt LIST} +into a father associative table. The heterogeneous list contains 5~components. A block of data +is stored in each component of the heterogeneous list using {\tt lcmppl\_c}: + +\begin{verbatim} +#include "lcm.h" + ... + lcm *iplist,*jplist; + int_32 n=5, i ; + ... + jplist=lcmlid_c(&iplist,"LIST",n); + for(i=0;i<5;i++) { + lcmppl_c(&jplist,i,... + } +\end{verbatim} + +\vskip 0.2cm + +The heterogeneous list capability is implemented through calls to function {\tt lcmlid\_c}. Such a +call permit the following possibilities: +\begin{itemize} +\item the heterogeneous list is created if it doesn't already exist. +\item the heterogeneous list is accessed if it already exists {\sl and} if its length is unchanged. In this case, +it is recommended to use function {\tt lcmgid\_c} which is faster for a simple access and which can be used +with LCM object open in {\tt read-only} mode. +\item the heterogeneous list is enlarged (components are added) if it already exists {\sl and} if the new length is larger than the preceding one. +\end{itemize} + +\begin{verbatim} + +lcmlid_c(iplist,namp,ilong); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameterss:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the father associative table. \\ +\hline +{\tt namp} & {\it char*} & name of the daughter heterogeneous list. \\ +\hline +{\tt ilong} & {\it int\_32} & number of components in the daughter heterogeneous list.\\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it lcm*} & address of the daughter heterogeneous list named {\tt namp}. \\ +\hline +\end{tabular} + +\subsubsection{lcmlil\_c\index{lcmlil\_c}} + +Function used to create or access a daughter heterogeneous list included into a father heterogeneous list. This operation cannot be +performed in a LCM object open in {\tt read-only} mode. + +\vskip 0.2cm + +In the following example, a daughter heterogeneous list is created as {\tt 77}-th component +of a father heterogeneous list. The heterogeneous list contains 5~components. A block of data +is stored in each component of the heterogeneous list using {\tt lcmppl\_c}: + +\begin{verbatim} +#include "lcm.h" + ... + lcm *iplist,*jplist; + int_32 n=5, i, iset=77 ; + ... + jplist=lcmlil_c(&iplist,iset,n); + for(i=0;i<5;i++) { + lcmppl_c(&jplist,i,... + } +\end{verbatim} + +\vskip 0.2cm + +The heterogeneous list capability is implemented through calls to function {\tt lcmlil\_c}. Such a +call permit the following possibilities: +\begin{itemize} +\item the heterogeneous list is created if it doesn't already exist. +\item the heterogeneous list is accessed if it already exists {\sl and} if its length is unchanged. In this case, +it is recommended to use function {\tt lcmgil\_c} which is faster for a simple access and which can be used +with LCM object open in {\tt read-only} mode. +\item the heterogeneous list is enlarged (components are added) if it already exists {\sl and} if the new length is larger than the preceding one. +\end{itemize} + +\begin{verbatim} + +lcmlil_c(iplist,iset,ilong); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameterss:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the father heterogeneous list. \\ +\hline +{\tt iset} & {\it int\_32} & index of the daughter heterogeneous list in the father heterogeneous list. +The first element of the list is located at index $0$. \\ +\hline +{\tt ilong} & {\it int\_32} & number of components in the daughter heterogeneous list. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it lcm*} & address of the daughter heterogeneous list. \\ +\hline +\end{tabular} + +\subsubsection{lcmdil\_c\index{lcmdil\_c}} + +Function used to create or access a daughter associative table included into a father heterogeneous list. This operation cannot be +performed in a LCM object open in {\tt read-only} mode. + +\vskip 0.2cm + +The daughter associative table is created if it doesn't already exist. Otherwise, the +existing daughter associative table is accessed. In the latter case, it is recommended +to use function {\tt lcmgil\_c} which is faster for a simple access and which can be used +with LCM object open in {\tt read-only} mode. + +\vskip 0.2cm + +It is a good programming practice to replace a set of $N$ distinct associative tables by a +list made of $N$ associative tables, as depicted in \Fig{f1}. + +\vskip 0.2cm + +In the example of \Fig{f1}, a set of 5~associative tables, created by {\tt lcmdid\_c}: +\begin{verbatim} +#include "lcm.h" + ... + char HDIR[13] + lcm*iplist,*kplist ; + int_32 i; + HDIR[12] = '\0'; + for(i=0;i<5;i++) { + (void)sprintf(HDIR,"GROUP%3d/ 5",i+1); + kplist=lcmsix_c(&iplist,HDIR); + lcmppd_c(&kplist,...); + ... + } +\end{verbatim} + +\noindent are replaced by a list of 5~associative tables, created by {\tt lcmlid\_c} and {\tt lcmdil\_c}: + +\begin{verbatim} +#include "lcm.h" + ... + lcm *iplist,*jplist,*kplist; + int_32 n=5 ; + jplist=lcmlid_c(&iplist,'GROUP',n); + for(i=0;i<5;i++) { + kplist=lcmdil_c(&jplist,i); + lcmppd_c(&kplist,...); + } +\end{verbatim} + +\vskip 0.2cm + +\begin{figure}[htbp] +\begin{center} +\epsfxsize=9cm +\centerline{ \epsffile{vect.eps}} +\parbox{12cm}{\caption{A list of associative tables.}\label{fig:f1}} +\end{center} +\end{figure} + +\vskip 0.2cm + +The capability to include associative tables into an heterogeneous list is implemented using +the {\tt lcmdil\_c} function: + +\begin{verbatim} + +lcmdil_c(iplist,iset); +\end{verbatim} + +\vskip 0.5cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameterss:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the father heterogeneous list. \\ +\hline +{\tt iset} & {\it int\_32} & index of the daughter associative table in the father heterogeneous list. +The first element of the list is located at index $0$. \\ +\hline +\end{tabular} + +\vskip 0.4cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it lcm*} & address of the daughter associative table. \\ +\hline +\end{tabular} + +\subsubsection{lcmgid\_c\index{lcmgid\_c}} + +Function used to access a daughter associative table {\sl or} heterogeneous list included into a father associative table. + +\begin{verbatim} + +lcmgid_c(iplist,namp); +\end{verbatim} + +\vskip 0.5cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameterss:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the father associative table. \\ +\hline +{\tt namp} & {\it char*} & name of the daughter associative table or heterogeneous list. \\ +\hline +\end{tabular} + +\vskip 0.4cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it lcm*} & address of the daughter associative table or heterogeneous list. A call to {\tt xabort\_c} is performed if this daughter doesn't extst. \\ +\hline +\end{tabular} + +\subsubsection{lcmgil\_c\index{lcmgil\_c}} + +Function used to access a daughter associative table {\sl or} heterogeneous list included into a father heterogeneous list. + +\begin{verbatim} + +lcmgil_c(iplist,iset); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameterss:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the father heterogeneous list. \\ +\hline +{\tt iset} & {\it int\_32} & index of the daughter associative table or heterogeneous list in the father heterogeneous list. +The first element of the list is located at index $0$. \\ +\hline +\end{tabular} + +\vskip 0.4cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it lcm*} & address of the daughter associative table or heterogeneous list. A call to {\tt xabort\_c} is performed if this daughter doesn't extst. \\ +\hline +\end{tabular} + +\subsubsection{lcmsix\_c\index{lcmsix\_c}} + +Function used to move across the hierarchical structure of a LCM object made of +associative tables. Using this function, there is no need to remember the names of +the father (grand-father, etc.) associative tables. If a daughter associative table doesn't +exist and if the LCM object is open on creation or modification mode, the daughter +associative table is created. A daughter associative table cannot be created if the +LCM object is open in {\tt read-only} mode. + +\vskip 0.4cm + +Function {\tt lcmsix\_c} is deprecated, as {\tt lcmdid\_c} offers a more elegant way to perform the same operation. +However, {\tt lcmsix\_c} is kept available in the {\sc lcm} API for historical reasons. + +\begin{verbatim} + +lcmsix_c(iplist,namp,iact); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the associative table before the call to {\tt lcmsix\_c}. \\ +\hline +{\tt namp} & {\it char**} & name of the daughter associative table if {\tt iact=1}. + This parameter is not used if {\tt iact=0} or {\tt iact=2}. \\ +\hline +{\tt iact} & {\it int\_32} & type of move: =0 return towards the root directory of the LCM object; + =1 move towards the daughter associative table (create it if it doesn't exist); + =2 return towards the father associative table. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt iplist} & lcm** & address of the associative table after the call to {\tt lcmsix\_c}. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\vspace{0.8cm} + +\subsection{LCM utility functions} + +\subsubsection{lcmlib\_c\index{lcmlib\_c}} + +Function used to print (towards {\tt stdout}) the content of the active directory of an associative table or heterogeneous list. + +\begin{verbatim} + +lcmlib_c(iplist); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameter:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the associative table or of the heterogeneous list. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it void} & \\ +\hline +\end{tabular} + +\subsubsection{lcmequ\_c\index{lcmequ\_c}} + +Function used to perform a deep-copy of the information contained in an associative table (address {\tt iplis1}) +towards another associative table (address {\tt iplis2}). Note that the second associative table (address {\tt iplis2}) is modified +but not created by {\tt lcmequ\_c}. + +\begin{verbatim} + +lcmequ_c(iplis1,iplis2); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameter:} \\ +\hline +{\tt iplis1} & {\it lcm**} & address of the existing associative table or of the heterogeneous list + (accessed in {\tt read-only} mode). \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt iplis2} & {\it lcm**} & address of the associative table or of the heterogeneous list, modified by {\tt lcmequ\_c}. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\subsubsection{lcmexp\_c\index{lcmexp\_c}} + +Function used to export (or import) the content of an associative table towards (or from) a sequential file. The sequential file +can be in binary or {\tt ascii} format. + +\vskip 0.4cm + +The export of information starts from the active directoty. Note that {lcmexp\_c} is basically a serialization algorithm +based on the contour algorithm. + +\begin{verbatim} + +lcmexp_c(iplist,impx,file,imode,idir); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameterss:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the associative table or of the heterogeneous list to be exported (or imported). \\ +\hline +{\tt impx} & {\it int\_32} & print parameter (equal to 0 for no print). \\ +\hline +{\tt file} & {\it FILE*} & sequential file. \\ +\hline +{\tt imode} & {\it int\_32} & =1 binary sequential file; + =2 {\sc ascii} sequential file. \\ +\hline +{\tt idir} & {\it int\_32} & =1 to export; =2 to import. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it void} & \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsection{Using variable-length string arrays} + +The following functions are implemented using the C~functions of the preceding sections. They +permit the use of variable-length string arrays, a capability not yet available with the Fortran +{\sc lcm} API. + +\vskip 0.4cm + +\begin{center} +\begin{tabular}{|c|l|l|l|} +\cline{3-4} +\multicolumn{2}{c|}{} & \multicolumn{2}{c|}{type of operation} \\ +\cline{3-4} +\multicolumn{2}{c|}{} & put~~~~~~~~~~~~~ & get~~~~~~~~~~~~~ \\ +\hline +father & associative table & {\tt lcmpcd\_c} & {\tt lcmgcd\_c} \\ +\cline{2-4} + & heterogeneous list & {\tt lcmpcl\_c} & {\tt lcmgcl\_c} \\ +\hline +\end{tabular} +\end{center} + +\subsubsection{lcmgcd\_c\index{lcmgcd\_c}}\label{sect:lcmgcdc} + +Function used to recover a variable-length string array from a block of data stored in an associative table. + +\begin{verbatim} + +lcmgcd_c(iplist,namp,hdata); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the associative table. \\ +\hline +{\tt namp} & {\it char*} & name of the variable-length string array +to recover. A call to {\tt xabort\_c} is performed if the block does't exist. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt hdata} & {\it char**} & variable-length string array of dimension $\ge$ {\tt ilong}. The memory space required to represent the string array is allocated by {\tt lcmgcd\_c}.\\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\subsubsection{lcmpcd\_c\index{lcmpcd\_c}}\label{sect:lcmpcdc} + +Function used to store a variable-length string array into a block of data stored in an associative table. +If the block of data already exists, it is updated; otherwise, it is created. This operation cannot be performed +in a LCM object open in {\tt read-only} mode. + +\begin{verbatim} + +lcmpcd_c(iplist,namp,ilong,hdata); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iplist} & {\it lcm**} & address of the associative table. \\ +\hline +{\tt namp} & {\it char*} &name of the variable-length string array +to store. \\ +\hline +{\tt ilong} & {\it int\_32} & number of components in the variable-length string array.\\ +\hline +{\tt hdata} & {\it char**} & array of dimension $\ge$ {\tt ilong} to be copied in the LCM object. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it void} & \\ +\hline +\end{tabular} + +\vskip 0.4cm + +\noindent Example: +\begin{verbatim} +#include "lcm.h" + ... + lcm *iplist; + int_32 i, ilong = 5; + char *hdata1[ilong],*hdata2[ilong]; + + hdata1[0] = "string1"; + hdata1[1] = " string2"; + hdata1[2] = " string3"; + hdata1[3] = " string4"; + hdata1[4] = " string5"; + for (i=0;i +#include "cle2000.h" +main() +{ + int_32 iprint = 0; + int_32 ier, ilevel = 1; + int_32 ganmod(); + + ier = cle2000_c(ilevel, &ganmod, " ", iprint, NULL); + printf("end of execution; ier=%d\n", ier); +} +\end{verbatim} + +The {\tt ganmod()} function is another developer-supplied function that is responsible for dispatching the execution among modules +{\tt MOD1:}, {\tt MOD2} or {\tt MOD3}. The {\tt ganmod()} function is responsible for opening any file that can be requested +by these modules. This open/close operation may be different, depending if the modules are programmed in ANSI~C (as in this example) or in another language. +\begin{verbatim} +#include +#include +#include "cle2000.h" +int_32 ganmod(char *cmodul, int_32 nentry, char (*hentry)[13], int_32 *ientry, + int_32 *jentry, lcm **kentry, char (*hparam)[73]) +{ + int_32 iloop1, ier; + FILE *kentry_file[maxent]; + char hsmg[132]; + +/* open files */ + for (iloop1 = 0; iloop1 < nentry; ++iloop1) { + if (ientry[iloop1] >= 3) { + char *mode; + if ((ientry[iloop1] == 3) && (jentry[iloop1] == 0)) { + strcpy(mode, "w"); + } else if ((ientry[iloop1] == 3) && (jentry[iloop1] == 1)) { + strcpy(mode, "a"); + } else if ((ientry[iloop1] == 3) && (jentry[iloop1] == 2)) { + strcpy(mode, "r"); + } else if ((ientry[iloop1] == 4) && (jentry[iloop1] == 0)) { + strcpy(mode, "wb"); + } else if ((ientry[iloop1] == 4) && (jentry[iloop1] == 1)) { + strcpy(mode, "ab"); + } else if ((ientry[iloop1] == 4) && (jentry[iloop1] == 2)) { + strcpy(mode, "rb"); + } else { + sprintf(hsmg, "ganmod: type not supported for file %s", hentry[iloop1]); + xabort_c(hsmg); + } + kentry_file[iloop1] = fopen(hparam[iloop1], mode); + if (kentry_file[iloop1] == NULL) { + sprintf(hsmg, "ganmod: unable to open file %s", hentry[iloop1]); + xabort_c(hsmg); + } + } else { + kentry_file[iloop1] = NULL; + } + } + +/* call modules */ + if(strcmp(cmodul, "MOD1:") == 0) { + mod1(nentry, hentry, ientry, jentry, kentry, kentry_file); + } else if(strcmp(cmodul, "MOD2:") == 0) { + mod2(nentry, hentry, ientry, jentry, kentry, kentry_file); + } else if(strcmp(cmodul, "MOD3:") == 0) { + mod3(nentry, hentry, ientry, jentry, kentry, kentry_file); + } else { + return 1; + } + +/* close files */ + for (iloop1 = 0; iloop1 < nentry; ++iloop1) { + if (ientry[iloop1] >= 3) { + ier = fclose(kentry_file[iloop1]); + if (ier != 0) { + sprintf(hsmg, "ganmod: unable to close file %s", hentry[iloop1]); + xabort_c(hsmg); + } + } + } + return 0; +} +\end{verbatim} + +\subsubsection {Calling a parametrized CLE-2000 procedure} + +In cases where an application software is called from a multi-physics application, it is likely that the multi-physics application +will need to call parametrized CLE-2000 procedures (with ``{\tt .c2m}" suffix). This approach provides an efficient way of communication between +the application software and the multi-physics application. It also permit to develop computational schemes outside the scope (i.e., independently) +of the multi-physics application. Parameters are either LCM objects (memory-resident) or +files that are managed by the operating system. Multi-physics applications are generally programmed +in C++ or in Java. In the latter case, {\sl Java Native Interfaces} (JNIs) are required to allow this communication. + +\vskip 0.08cm + +In the following example, a parametrized procedure, {\tt TESTproc.c2m}, take two object parameters and three CLE-2000 input variables. +Note that the CLE-2000 variables are always defined after LCM and file objects. The first parameter, {\tt MACRO\_ASCII}, is +an {\sc ascii} file written by the procedure and containing an export of the information pointed by the second parameter {\tt MACRO}. This second parameter is a +memory resident LCM object containing a Macrolib. It is accessed in {\tt read-only} mode. The procedure also prints a table-of-content +of the root directory of {\tt MACRO}, using the {\tt UTL:} module of the GANLIB. The procedure {\tt TESTproc.c2m} is implemented as +\begin{verbatim} +REAL KEFF1 KEFF2 ; +INTEGER I123 ; +PARAMETER MACRO_ASCII MACRO :: + EDIT 1 + ::: SEQ_ASCII MACRO_ASCII ; + ::: LINKED_LIST MACRO ; +; +:: >>KEFF1<< >>KEFF2<< >>I123<< ; +MODULE UTL: END: ; +* +UTL: MACRO :: DIR ; +MACRO_ASCII := MACRO ; +ECHO "KEFF1=" KEFF1 ""KEFF2=" KEFF2 "I123=" I123 ; +ECHO "procedure TESTproc completed" ; +END: ; +QUIT "XREF" . +\end{verbatim} + +\noindent More information about the development of CLE-2000 procedures can be found in Ref.~\citen{cle2000}. + +\vskip 0.08cm + +The next ANSI~C function is an example of how a multi-physics application can call such a procedure. A LCM object +containing a Macrolib is first created by importing its information from an existing {\sc ascii} file named {\tt Macrolib}. Next, a call to function +{\tt cle2000\_c()} is performed to execute {\tt TESTproc.c2m}. The corresponding {\tt main} program is written +\goodbreak + +\begin{verbatim} +#include +#include +#include "cle2000.h" +main() +{ + int_32 iprint = 0; + int_32 ier, ilevel = 1; + FILE *filein; + char cproce[13]; + int_32 ganmod(); + lcm *my_lcm; + lifo *my_lifo; + lifo_node *my_node; + +/* create the LCM object containing a Macrolib */ + filein = fopen("Macrolib", "r"); + lcmop_c(&my_lcm, "MACRO1", 0, 1, iprint); + lcmexp_c(&my_lcm, iprint, filein, 2, 2); + fclose(filein); + lcmlib_c(&my_lcm); + lcmcl_c(&my_lcm, 1); + +/* construct the lifo stack */ + cleopn(&my_lifo); + /* node 1 */ + my_node = (lifo_node *) malloc(sizeof(lifo_node)); + strcpy(my_node->name, "MACRO_ASCII1"); strcpy(my_node->OSname, "my_ascii_file"); + my_node->type = -6; + clepush(&my_lifo, my_node); + /* node 2 */ + my_node = (lifo_node *) malloc(sizeof(lifo_node)); + strcpy(my_node->name, "MACRO1"); strcpy(my_node->OSname, "MACRO1"); my_node->type = 3; + my_node->value.mylcm = my_lcm; + clepush(&my_lifo, my_node); + /* node 3 */ + my_node = (lifo_node *) malloc(sizeof(lifo_node)); + strcpy(my_node->name, "value1"); my_node->type = 12; my_node->value.fval = 1.703945; + clepush(&my_lifo, my_node); + /* node 4 */ + my_node = (lifo_node *) malloc(sizeof(lifo_node)); + strcpy(my_node->name, "value2"); my_node->type = 12; my_node->value.fval = 1.562276; + clepush(&my_lifo, my_node); + /* node 5 */ + my_node = (lifo_node *) malloc(sizeof(lifo_node)); + strcpy(my_node->name, "value3"); my_node->type = 11; my_node->value.ival = 12345; + clepush(&my_lifo, my_node); + +/* call the parametrized procedure */ + strcpy(cproce, "TESTproc"); + ier = cle2000_c(ilevel, &ganmod, cproce, iprint, my_lifo); + if (ier != 0) xabort_c("example2.1.5: cle2000 failure"); + +/* erase the lifo stack */ + while (my_lifo->nup > 0) { + my_node = clepop(&my_lifo); + free(my_node); + } + clecls(&my_lifo); + printf("successful end of execution\n"); +} +\end{verbatim} + +\subsubsection {Calling a CLE-2000 procedure with in-out CLE-2000 variables} + +The CLE-2000 API also offers the possibility to exchange CLE-2000 variables with a procedure. The following CLE-2000 procedure +permits to compute the factorial of a number, as proposed in Ref.~\citen{cle2000}. Here, {\tt n} and {\tt n\_fact} are input and +output CLE-2000 variable, respectively. The {\tt fact.c2m} procedure is written +\begin{verbatim} +! +! Example of a recursive procedure. +! +! input to "fact": *n* +! output from "fact": *n_fact* +! + INTEGER n n_fact prev_fact ; + :: >>n<< ; + IF n 1 = THEN + EVALUATE n_fact := 1 ; + ELSE + EVALUATE n := n 1 - ; + ! Here, "fact" calls itself + PROCEDURE fact ; + fact :: <> >>prev_fact<< ; + EVALUATE n_fact := n 1 + prev_fact * ; + ENDIF ; + :: <> ; + QUIT " Recursive procedure *fact* XREF " . +\end{verbatim} + +This procedure can be called from a program implemented in ANSI~C, using +\begin{verbatim} +#include +#include +#include "cle2000.h" +main() +{ + int_32 iprint = 0; + int_32 ier, ilevel = 1; + char cproce[13]; + int_32 ganmod(); + lifo *my_lifo; + lifo_node *my_node; + +/* construct the lifo stack */ + cleopn(&my_lifo); + /* node 1 */ + my_node = (lifo_node *) malloc(sizeof(lifo_node)); + strcpy(my_node->name, "input_val"); my_node->type = 11; my_node->value.ival = 5; + clepush(&my_lifo, my_node); + /* node 2 */ + my_node = (lifo_node *) malloc(sizeof(lifo_node)); + strcpy(my_node->name, "output_val"); my_node->type = -11; + clepush(&my_lifo, my_node); + +/* call the procedure with in-out CLE-2000 variables*/ + strcpy(cproce, "fact"); + ier = cle2000_c(ilevel, &ganmod, cproce, iprint, my_lifo); + if (ier != 0) xabort_c("fact: cle2000 failure"); + +/* recover and erase the lifo stack */ + printf("\noutput stack:\n"); + while (my_lifo->nup > 0) { + my_node = clepop(&my_lifo); + printf("node %d (name=%12s) ---> %d\n", my_lifo->nup, my_node->name, + my_node->value.ival); + free(my_node); + } + clecls(&my_lifo); + printf("successful end of execution\n"); +} +\end{verbatim} + +\vskip 0.8cm + +\subsection {Calling a calculation module without a CLE-2000 procedure} + +The GANLIB API also provides the possibility to call directly a calculation module without a CLE-2000 procedure. This +capability is required in the first-generation Jargon framework, as presented in Ref.~\citen{jargon}. The actual implementation +does not support CLE-2000 variables. A calculation module with ``{\tt >>~<<}" variables must therefore be encapsulated in a +CLE-2000 procedure. + +\subsubsection{clemod\_c\index{clemod\_c}} + +The general specification of function {\tt clemod\_c()} is + +\begin{verbatim} + +clemod_c(cmodul, filein, nentry, hentry, ientry, jentry, kentry, hparam, dummod); +\end{verbatim} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt cmodul} & {\it char*} & name of the calculation module to execute \\ +\hline +{\tt filein} & {\it FILE*} & sequential {\sc ascii} file containing the data for module {\tt cmodul} (i.e., the data between the ``{\tt ::}" and the ``{\tt ;}"). Can be set to {\tt stdin} (standard input, or unit~5 in Fortran) \\ +\hline +{\tt nentry} & {\it int\_32} & number of parameters (LCM objects or files) that are exchanged with the CLE-2000 procedure. {\tt nentry = 0} if no parameters are exchanged. \\ +\hline +{\tt hentry} & {\it char (*)[13]} & names of these parameters, as known by the calculation module. Each name is a character string with a maximum of 12 characters. \\ +\hline +{\tt ientry} & {\it int\_32*} & types of each parameter. $=1$: memory-resident LCM object; $=2$: persistent LCM object (stored in a XSM file); +$=3$: sequential binary file; +$=4$: sequential ascii file; +$=5$: direct access file; +$=6$: HDF5 file. +\\ +\hline +{\tt jentry} & {\it int\_32*} & mode of each parameter. $=0$: the object is created; $=1$: the object is opened for modifications ; $=2$: the object is opened in read-only mode. \\ +\hline +{\tt kentry} & {\it lcm**} & addresses of the {\tt lcm} objects (for parameters that are LCM objects). Set to {\tt NULL} for parameters that are files. \\ +\hline +{\tt hparam} & {\it char (*)[73]} & names of these parameters, as known by the operating system. Each name is a character string with a maximum of 72 characters. \\ +\hline +{\tt dummod} & {\it int\_32 (*)()} & external ANSI~C function (or C-interoperable Fortran-2003 function) responsible for dispatching the execution among calculation modules. Note that the calculation modules can be implemented in any language that is interoperable with ANSI~C. \\ +\hline +\end{tabular} + +\vskip 0.4cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it int\_32} & error code equal to zero if the execution of the calculation module is successful. Equal to the error code otherwise. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +In the following example, function {\tt clemod\_c()} is used to call a calculation module of the GANLIB. A LCM object +containing a Macrolib is first created by importing its information from an existing {\sc ascii} file named {\tt Macrolib}. +Module {\tt UTL:} is called with this {\tt read-only} Macrolib as unique parameter: +\begin{verbatim} +#include +#include "cle2000.h" +#define maxent 64 /* maximum number of module arguments */ +main() +{ + int_32 ganmod(); + char hentry[maxent][13], hparam[maxent][73]; + int_32 ier, nentry, ientry[maxent], jentry[maxent]; + lcm * my_lcm, *kentry[maxent]; + FILE *filein; + +/* create the LCM object containing a Macrolib */ + filein = fopen("Macrolib", "r"); + lcmop_c(&my_lcm, "MACRO", 0, 1, 99); + lcmexp_c(&my_lcm, 99, filein, 2, 2); + fclose(filein); + +/* create a file containing the UTL: data */ + filein = fopen("UTLdata", "r"); + +/* construct the parameter */ + nentry = 1 ; + strcpy(hentry[0], "MACRO"); strcpy(hparam[0], "MACRO"); ientry[0]=1; jentry[0]=2; + kentry[0]=my_lcm; + +/* execute the module */ + ier = clemod_c("UTL:", filein, nentry, hentry, ientry, jentry, kentry, hparam, + &ganmod); + lcmcl_c(&my_lcm, 1); + fclose(filein); + printf("end of execution; ier=%d\n", ier); +} +\end{verbatim} + +\vskip 0.08cm + +The ASCII file {\tt UTLdata} contains the data for module {\tt UTL:}. Here, it is defined as +\begin{verbatim} +DIR STEP UP GROUP +STEP AT 1 DIR STEP DOWN +STEP DOWN ; +\end{verbatim} + +\vskip 0.8cm + +\subsection{Management of the last-in-first-out (lifo) stack\index{lifo}}\label{sect:lifo} + +A last-in-first-out (lifo) stack manage the stored data so that the last data stored in the stack is the first data removed from the stack. This means that a POP function retrieves the values most recently stored with a PUSH function. CLE-2000 uses one lifo stack to manage information used within each specific CLE-2000 procedure instance and one lifo stack as dummy parameter list each time a CLE-2000 procedure is called. + +\vskip 0.08cm + +In case where a CLE-2000 procedure is called from a multi-physics environment, the parameter information is first integrated in a lifo stack {\sl before} calling +function {\tt cle2000\_c()}. After execution of the procedure, output parameter information is recovered from the lifo stack. The lifo stack can contain LCM (or XSM) objects, files and/or CLE-2000 variables. The lifo stack is constructed as a linked list of nodes, each node containing a single parameter. Three important rules must be satisfied: +\begin{itemize} +\item LCM (or XSM) objects and files must be defined prior to CLE-2000 variables in the lifo stack used as parameter information. +\item LCM (or XSM) objects and files must be closed when included in the lifo stack. +\item Output nodes are also included in the lifo stack before calling function {\tt cle2000\_c()}, but {\sl with negative} {\tt type} component and {\sl without} {\tt value} component. +\end{itemize} + +\vskip 0.08cm + +The specification of a lifo node is: + +\small +\begin{verbatim} +typedef struct LIFO_NODE { /* node in last-in-first-out (lifo) stack */ + int_32 type; /* type of node: 3= lcm object; 4= xsm file; 5= seq binary; + 6= seq ascii; 7= da binary; 8= hdf5 file; 11= integer value; + 12= real value; 13= character string; 14= double precision value; + 15= logical value */ + int_32 access; /* 0=creation mode/1=modification mode/2=read-only mode */ + int_32 lparam; /* record length for DA file objects */ + union { + int_32 ival; /* integer or logical value */ + float_32 fval; /* real value */ + double dval; /* double precision value */ + lcm *mylcm; /* handle towards a LCM object */ + char hval[73]; /* character value */ + hid_t myhdf5; /* handle towards a HDF5 file */ + } value; + struct LIFO_NODE *daughter; /* address of the daughter node in stack */ + char name[13]; /* name of node in the calling script */ + char name_daughter[13]; /* name of node in the daughter script */ + char OSname[73]; /* physical filename */ +} lifo_node ; +\end{verbatim} +\normalsize + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{2.4cm}|p{1.6cm}|p{10.5cm}|} +\hline +\multicolumn{3}{|c|}{\bf life\_node components:} \\ +\hline +{\tt type} & {\it int\_32} & type of data in node. +$=\pm 3$: LCM object; +$=\pm 4$: XSM file; +$=\pm 5$: sequential binary file; +$=\pm 6$: sequential ascii file; +$=\pm 7$: direct access binary file; +$=\pm 8$: HDF5 file; +$=\pm 11$: integer CLE-2000 value; +$=\pm 12$: real CLE-2000 value; +$=\pm 13$: character string (null-terminated); +$=\pm 14$: double precision CLE-2000 value; +$=\pm 15$: logical CLE-2000 value. +A positive value indicates that an input value is provided; a negative value indicates that {\sl no} input value is provided +so that the node is {\sl empty}. Empty nodes are defined to receive calculational results. +\\ +\hline +{\tt access} & {\it int\_32} & access state of data in node. +$= 0$: creation mode; +$= 1$: modification mode; +$= 2$: read-only mode. +This information is used internally in {\tt cle2000\_c()} function. +\\ +\hline +{\tt lparam} & {\it int\_32} & record length (in bytes) for DA file objects. This data is given if and only if $|${\tt type}$| = 7$.\\ +\hline +{\tt value.ival} & {\it int\_32} & integer or logical CLE-2000 value. This data is given or is available at output if and only if {\tt type} $= 11$ or $=15$.\\ +\hline +{\tt value.fval} & {\it float\_32} & real CLE-2000 value. This data is given or is available at output if and only if {\tt type} $= 12$.\\ +\hline +{\tt value.hval} & {\it char[73]} & character string CLE-2000 value. This data is given or is available at output if and only if {\tt type} $= 13$.\\ +\hline +{\tt value.dval} & {\it double} & double precision CLE-2000 value. This data is given or is available at output if and only if {\tt type} $= 14$.\\ +\hline +{\tt value.mylcm} & {\it lcm*} & LCM object (memory-resident). This data is given or is available at output if and only if {\tt type} $= 3$. The LCM object is closed.\\ +\hline +{\tt daughter} & {\it lifo\_node*} & address of the daughter node in stack. This information is used by the lifo utility to construct the linked list of nodes.\\ +\hline +{\tt name} & {\it char[13]} & name of node in the calling script.\\ +\hline +{\tt name\_daughter} & {\it char[13]} & name of node in the daughter script. This name is used internally in {\tt cle2000\_c()} function.\\ +\hline +{\tt OSname} & {\it char[73]} & name of node as known by the operating system. In the case of a LCM object, it is the name given to {\tt lcmop\_c()} function. In the case of a file, it is the operating system name of the file. The LCM object or file is closed. {\bf This data is given if and only if} $|${\tt type}$| \le 10$.\\ +\hline +\end{tabular} + +\vskip 1.0cm + +The following functions are used to manage the lifo stack. + +\vskip 0.8cm +\goodbreak + +\subsubsection {cleopn\index{cleopn}} + +Create an empty lifo stack. + +\begin{verbatim} + +cleopn(my_lifo); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt my\_lifo} & {\it lifo**} & address of the empty lifo stack. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\subsubsection{clepop\index{clepop}} + +Remove the ``last-in" node from the lifo stack. + +\begin{verbatim} + +clepop(my_lifo); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameter:} \\ +\hline +{\tt my\_lifo} & {\it lifo**} & address of the lifo stack. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it lifo\_node*} & node removed from the lifo stack \\ +\hline +\end{tabular} + +\subsubsection{clepush\index{clepush}} + +Add a new node in the lifo stack. + +\begin{verbatim} + +clepush(my_lifo, my_node); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt my\_lifo} & {\it lifo**} & address of the lifo stack. \\ +\hline +{\tt my\_node} & {\it lifo\_node*} & node to add to the lifo stack. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\subsubsection{clecls\index{clecls}} + +Delete an empty lifo stack. + +\begin{verbatim} + +clecls(my_lifo); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameter:} \\ +\hline +{\tt my\_lifo} & {\it lifo**} & address of the empty lifo stack. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it int\_32} & error code. $=0$: successful; $=-1$: the lifo stack is not empty. \\ +\hline +\end{tabular} + +\subsubsection{clenode\index{clenode}} + +Return the node with name {\tt my\_name}. The lifo stack is not modified. +\begin{verbatim} + +clenode(my_lifo, my_name); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt my\_lifo} & {\it lifo**} & address of the lifo stack. \\ +\hline +{\tt my\_name} & {\it char*} & name of the node. The name is null-terminated. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it lifo\_node*} & node of name {\tt my\_name} or NULL if the node doesn't exist. \\ +\hline +\end{tabular} + +\subsubsection{clepos\index{clepos}} +Return the {\tt ipos}--th node in the stack. The lifo stack is not modified. +\begin{verbatim} + +clepos(my_lifo, ipos); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt my\_lifo} & {\it lifo**} & address of the lifo stack. \\ +\hline +{\tt ipos} & {\it int\_32} & position of the node in the stack. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it lifo\_node*} & {\tt ipos}--th node or NULL if the node doesn't exist. \\ +\hline +\end{tabular} + +\subsubsection{clelib\index{clelib}} +Print a table-of-content for the lifo stack. +\begin{verbatim} + +clelib(my_lifo); +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameter:} \\ +\hline +{\tt my\_lifo} & {\it lifo**} & address of the lifo stack. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsection {The free-format input reader} + +The free-format inpsut reader of CLE-2000 is implemented using four functions: {\tt redopn\_c()}, {\tt redget\_c()}, {\tt redput\_c()} and {\tt redcls\_c()}. +Only {\tt redget\_c()} and {\tt redput\_c()} are expected to be used in an application software. + +\subsubsection{redopn\_c\index{redopn\_c}} + +Function {\tt redopn\_c()} is called to open the input reader. +The general specification of function {\tt redopn\_c()} is + +\begin{verbatim} + +redopn_c(iinp1, iout1, hout1, nrec); +\end{verbatim} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt iinp1} & {\it kdi\_file*} & KDI object containing the CLE-2000 input data, as computed by {\tt clepil()} and {\tt objpil()} functions of CLE-2000.\\ +\hline +{\tt iout1} & {\it FILE*} & sequential {\sc ascii} file used to write execution messages. Can be set to {\tt stdout}. \\ +\hline +{\tt hout1} & {\it char*} & name of the sequential {\sc ascii} file used to write execution messages. \\ +\hline +{\tt nrec} & {\it int\_32} & record index where reading occurs. Can be set to zero at first call. Set to the value returned by {\tt redcls\_c()} at subsequent calls.\\ +\hline +\end{tabular} + +\vskip 0.4cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it void} & \\ +\hline +\end{tabular} + +\subsubsection{redget\_c\index{redget\_c}} + +Function {\tt redget\_c()} is called within modules of the application software to recover the module-specific input data. +The general specification of function {\tt redget\_c()} is + +\begin{verbatim} + +redget_c(ityp, nitma, flott, text, dflot); +\end{verbatim} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt ityp} & {\it int\_32*} & type of the CLE-2000 variable. A negative value indicates that the variable is to be computed by the application software and returned towards CLE-2000 using a call to {\tt redput\_c}. $=\pm 1$: integer type; +$=\pm 2$: real (single precision) type; +$=\pm 3$: string type; +$=\pm 4$: double precision type; +$=\pm 5$: logical type.\\ +\hline +{\tt nitma} & {\it int\_32*} & integer input value when {\tt ityp} $= 1$ or $= 5$; number of characters when {\tt ityp} $= 3$. \\ +\hline +{\tt flott} & {\it float\_32*} & real input value when {\tt ityp} $= 2$. \\ +\hline +{\tt text} & {\it char[73]} & character string input value when {\tt ityp} $= 3$. \\ +\hline +{\tt dflot} & {\it double\_64*} & double precision input value when {\tt ityp} $= 4$. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\subsubsection{redput\_c\index{redput\_c}} + +Function {\tt redput\_c()} is called within modules of the application software to make information computed by the module available as CLE-2000 variables to the CLE-2000 procedure. +The application software must first call {\tt redget\_c()} and obtain a negative value of {\tt ityp}. A call to {\tt redput\_c()} is next performed with its first parameter set to +$-${\tt ityp} (now, a positive value) and with the corresponding value of the parameter. +The general specification of function {\tt redput\_c()} is + +\begin{verbatim} + +redput_c(ityp, nitma, flott, text, dflot); +\end{verbatim} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ityp} & {\it int\_32*} & type of the CLE-2000 variable. $=1$: integer type; +$=2$: real (single precision) type; +$=3$: string type; +$=4$: double precision type; +$=5$: logical type.\\ +\hline +{\tt nitma} & {\it int\_32*} & integer output value when {\tt ityp} $= 1$ or $= 5$; number of characters when {\tt ityp} $= 3$. \\ +\hline +{\tt flott} & {\it float\_32*} & real output value when {\tt ityp} $= 2$. \\ +\hline +{\tt text} & {\it char*} & character string output value when {\tt ityp} $= 3$. \\ +\hline +{\tt dflot} & {\it double\_64*} & double precision output value when {\tt ityp} $= 4$. \\ +\hline +\end{tabular} + +\vskip 0.4cm + +\noindent +\begin{tabular}{|p{4.0cm}|p{11cm}|} +\hline +\multicolumn{2}{|c|}{\bf value of the function:} \\ +\hline +{\it void} & \\ +\hline +\end{tabular} + +\subsubsection{redcls\_c\index{redcls\_c}} + +Function {\tt redcls\_c()} is called to close the input reader. +The general specification of function {\tt redcls\_c()} is + +\begin{verbatim} + +redcls_c(iinp1, iout1, hout1, nrec) +\end{verbatim} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt iinp1} & {\it kdi\_file**} & KDI object containing the CLE-2000 input data.\\ +\hline +{\tt iout1} & {\it FILE**} & sequential {\sc ascii} file used to write execution messages. \\ +\hline +{\tt hout1} & {\it char[73]} & name of the sequential {\sc ascii} file used to write execution messages. \\ +\hline +{\tt nrec} & {\it int\_32*} & record index where reading occurs. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsection{Defining built-in constants in CLE-2000} + +CLE-2000 has pre-defined built-in constants, either with mathematical meaning (e.g., $\pi$) or with physical meaning. Currently, available physical constants are +related to reactor physics. In future, one may want to include more physical constants. Here is the specification of the function available inside CLE-2000 to define these constants. + +\subsubsection{clecst\index{clecst}} + +Function {\tt dumcst()} is an external ANSI~C function implementing pre-defined parametric constants. A standard version is available in the GANLIB with name {\tt clecst()}. It is specified as +\begin{verbatim} + +clecst(cparm, ityp, nitma, flott, text, dflot); +\end{verbatim} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameter:} \\ +\hline +cparm & {\it char*} & name of the parametric constant (name starting with \$) \\ +\hline +\end{tabular} + +\vskip 0.4cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2cm}|p{11cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt ityp} & {\it int\_32*} & type of the parametric constant ($1 \le$ {\tt ityp} $ \le 5$) \\ +\hline +{\tt nitma} & {\it int\_32*} & integer value of the parametric constant if {\tt ityp} $= 1$; logical value (=1: true/=-1: false) of the parametric constant if {\tt ityp} $= 5$; +number of characters in the string if {\tt ityp} $= 3$. \\ +\hline +{\tt flott} & {\it float\_32*} & real value of the parametric constant if {\tt ityp} $= 2$ \\ +\hline +{\tt text} & {\it char*} & character string value of the parametric constant if {\tt ityp} $= 3$ \\ +\hline +{\tt dflot} & {\it double\_64*} & double precision value of the parametric constant if {\tt ityp} $= 4$ \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{{\it int\_32}} & error code equal to zero if the execution of {\tt clecst()} is successful. Equal to the error code otherwise. \\ +\hline +\end{tabular} + +\section {The ISO Fortran {\sc lcm} API} + +The ISO Fortran {\sc lcm} API is a set of Fortran-2003 wrapper subroutines or functions programmed around the ANSI-C functions of the {\sc lcm} API. This implementation is using +the C interoperability capabilities normalized by ISO and available in the Fortran-2003 compilers. All the subroutines and functions presented in this section are ISO-standard and 64-bit clean. + +\vskip 0.08cm + +Each LCM object has a {\sl root associative table} from which the complete object is constructed. + +\vskip 0.08cm + +Any subroutines or functions using the Fortran {\sc lcm} API must include a {\tt USE} statement of the form +\begin{verbatim} +USE GANLIB +\end{verbatim} + +The address of a LCM object is a {\tt TYPE(C\_PTR)} variable declared as +\begin{verbatim} + TYPE(C_PTR) :: IPLIST +\end{verbatim} +\noindent This intrinsic type is defined by the {\tt USE GANLIB} statement. Very few operations are permitted on +{\tt C\_PTR} variables. A {\tt C\_PTR} variable can be nullified by writing +\begin{verbatim} + IPLIST=C_NULL_PTR +\end{verbatim} +\noindent and a {\tt C\_PTR} variable can be checked for association with actual data using +\begin{verbatim} + IF(C_ASSOCIATED(IPLIST)) THEN +\end{verbatim} + +\vskip 0.8cm + +\subsection{Opening, closing and validation of LCM objects} + +\subsubsection{LCMOP\index{LCMOP}} + +Open an LCM object (either memory resident or persistent). Obtain the address of the LCM +object if it is created. Note that CLE-2000 is responsible to perform the calls to {\tt LCMOP} for the LCM +objects that are used as parameters of a CLE-2000 module. The use +of {\tt LCMOP} is generally restricted to the use of temporary LCM objects created within a CLE-2000 module. +\begin{verbatim} + +CALL LCMOP(IPLIST,NAMP,IMP,MEDIUM,IMPX) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the LCM object if {\tt IMP=1} or {\tt imp=2}. {\tt IPLIST} corresponds to the address of the root associative table. \\ +\hline +{\tt NAMP} & {\it CHARACTER*72} & name of the LCM object if {\tt IMP=0}. \\ +\hline +{\tt IMP} & {\it INTEGER} & =0 to create a new LCM object ; + =1 to modify an existing LCM object; + =2 to access an existing LCM object in {\bf read-only} mode. \\ +\hline +{\tt MEDIUM} & {\it INTEGER} & =1 to use a memory-resident LCM object; + =2 to use an {\sc xsm} file to store the LCM object. \\ +\hline +{\tt IMPX} & {\it INTEGER} & print parameter. Equal to zero to suppress all printings. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of an LCM object if {\tt IMP=0}. \\ +\hline +{\tt NAMP} & {\it CHARACTER*12} & name of the LCM object if {\tt IMP=1} or {\tt IMP=2}. \\ +\hline +\end{tabular} + +\subsubsection{LCMCL\index{LCMCL}} + +Close an LCM object (either memory resident or persistent). Note that CLE-2000 is responsible to perform the calls to +{\tt LCMCL} for the LCM objects that are used as parameters of a CLE-2000 module. The use +of {\tt LCMCL} is generally restricted to the use of temporary LCM objects created within a CLE-2000 module. + +\vskip 0.2cm + +A LCM object can only be closed if {\tt IPLIST} points towards its root directory. + +\begin{verbatim} + +CALL LCMCL(IPLIST,IACT) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the LCM object (address of the root directory of the LCM object). \\ +\hline +{\tt IACT} & {\it INTEGER} & =1 close the LCM object without destroying it; =2 and destroying it; =3 erase and close the LCM object without destroying it. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & {\tt IPLIST=0} indicates that the LCM object is closed and destroyed. A memory-resident LCM object keeps the +same address during its complete existence. A persistent LCM object is associated to an XSM file and is represented by a different +value of {\tt IPLIST} each time it is reopened. \\ +\hline +\end{tabular} + +\subsubsection{LCMVAL\index{LCMVAL}} + +Subroutine to validate a single block of data in a LCM object or the totality of the LCM object, +starting from the address of an associative table. This function has no effect if the object is +persistent. The validation consists to verify the connections between the elements of the LCM +object, to verify that each element of the object is defined and to check for possible memory corruptions. +If an error is detected, the following message is issued: + +\begin{verbatim} +LCMVAL: BLOCK xxx OF THE TABLE yyy HAS BEEN OVERWRITTEN. +\end{verbatim} + +This function is called as + +\begin{verbatim} + +CALL LCMVAL(IPLIST,NAMP) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table or of the heterogeneous list. \\ +\hline +{\tt NAMP} & {\it CHARACTER*12} & name of the block to validate in the associative table. +If {\tt NAMP='~'}, all the blocks in the associative table are verified in a recursive way. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsection{Interrogation of LCM objects} + +The data structures in an LCM object are self-described. It is therefore possible to +interrogate them in order to know their characteristics. + +\vskip 0.4cm + +\begin{center} +\begin{tabular}{|c|l|l|l|} +\cline{3-4} +\multicolumn{2}{c|}{} & \multicolumn{2}{c|}{type of interrogation} \\ +\cline{3-4} +\multicolumn{2}{c|}{} & father structure~~~~ & information block \\ +\hline +father & associative table & {\tt LCMINF} & {\tt LCMLEN} \\ + & & {\tt LCMNXT} & \\ +\cline{2-4} + & heterogeneous list & {\tt LCMINF} & {\tt LCMLEL} \\ +\hline +\end{tabular} +\end{center} + +\subsubsection{LCMLEN\index{LCMLEN}} + +Subroutine used to recover the length and type of an information block stored in an +associative table (either memory-resident or persistent). The length is the number of +elements in a daughter heterogeneous list or the number of elements in an array of elementary type. +If {\tt itylcm=3}, the length is the number of {\tt character*4} words. As an example, the length required +to store an array of {\tt character*8} words is twice its dimension. + +\begin{verbatim} + +CALL LCMLEN(IPLIST,NAMP,ILONG,ITYLCM) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table. \\ +\hline +{\tt NAMP} & {\it CHARACTER*12} & name of the block. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt ILONG} & {\it INTEGER} & length of the block. =$-1$ for a daughter associative table; + =$N$ for a daughter heterogeneous list containing $N$ components; + =0 if the block does't exist.\\ +\hline +{\tt ITYLCM} & {\it INTEGER} & type of information. =0 associative table; =1 32-bit integer; + =2 32-bit real; =3 {\tt character*4} data; + =4 64-bit real; =5 32-bit logical; =6 64-bit complex; =10 heterogeneous list; + =99 undefined (99 is returned if the block does't exist). \\ +\hline +\end{tabular} + +\subsubsection{LCMINF\index{LCMINF}} + +Subroutine used to recover general information about a LCM object. + +\begin{verbatim} + +CALL LCMINF(IPLIST,NAMLCM,NAMMY,EMPTY,ILONG,LCM) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameter:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table or of the heterogeneous list. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt NAMLCM} & {\it CHARACTER*72} & name of the LCM object. \\ +\hline +{\tt NAMMY} & {\it CHARACTER*12} & name of the associative table at address {\tt IPLIST}. $=${\tt '/'} if the associative table +is the root of the LCM object; $=${\tt ' '} if the associative table +is an heterogeneous list component. +\\ +\hline +{\tt EMPTY} & {\it LOGICAL} & logical variable set to {\tt .true.} + if the associative table is empty + or set to {\tt .false.} otherwise. \\ +\hline +{\tt ILONG} & {\it INTEGER} & $=-1$: {\tt IPLIST} is an associative table; $>0$: number of components in the heterogeneous list {\tt IPLIST}\\ +\hline +{\tt LCM} & {\it LOGICAL} & logical variable set to {\tt .true.} + if information is memory-resident or set to {\tt .false.} if information is persistent (stored in an XSM file). \\ +\hline +\end{tabular} + +\subsubsection{LCMNXT\index{LCMNXT}} + +Subroutine used to find the name of the next block of data in an associative table. Use +of {\tt LCMNXT} is forbidden if the associative table is empty. The order of names is +arbitrary. The search cycle indefinitely. + +\begin{verbatim} + +CALL LCMNXT(IPLIST,NAMP) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table. \\ +\hline +{\tt NAMP} & {\it CHARACTER*12} & name of an existing block. + {\tt NAMP=' '} can be used to obtain a first name to initiate the search. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt NAMP} & {\it CHARACTER*12} & name of the next block. +A call to {\tt XABORT} is performed if the associative table is empty. \\ +\hline +\end{tabular} + +\subsubsection{LCMLEL\index{LCMLEL}} + +Subroutine used to recover the length and type of an information block stored in an +heterogeneous list (either memory-resident or persistent). The length is the number of +elements in a daughter heterogeneous list or the number of elements in an array of elementary type. +If {\tt itylcm=3}, the length is the number of {\tt character*4} words. As an example, the length required +to store an array of {\tt character*8} words is twice its dimension. + +\begin{verbatim} + +CALL LCMLEL(IPLIST,ISET,ILONG,ITYLCM) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the heterogeneous list. \\ +\hline +{\tt ISET} & {\it INTEGER} & index of the block in the list. +The first element of the list is located at index $1$.\\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt ILONG} & {\it INTEGER} & length of the block. =0 if the block does't exist. \\ +\hline +{\tt ITYLCM} & {\it INTEGER} & type of information. =0 associative table; =1 32-bit integer; + =2 32-bit real; =3 {\tt character*4} data; + =4 64-bit real; =5 32-bit logical; =6 64-bit complex; =10 heterogeneous list; + =99 undefined (99 is returned if the block does't exist); + =999 undefined (999 is returned if index {\tt ISET} is out of bounds). \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsection{Management of the array of elementary type} + +Management of the array of elementary type can be performed {\sl with} copy of the data ({\tt LCMPUT}, {\tt LCMGET}, {\tt LCMPDL} or +{\tt LCMGDL}) or {\sl without} copy ({\tt LCMPPD}, {\tt LCMGPD}, {\tt LCMPPL} or {\tt LCMGPL}). + +\vskip 0.4cm + +\begin{center} +\begin{tabular}{|c|l|l|l|} +\cline{3-4} +\multicolumn{2}{c|}{} & \multicolumn{2}{c|}{type of operation} \\ +\cline{3-4} +\multicolumn{2}{c|}{} & put~~~~~~~~~~~~~ & get~~~~~~~~~~~~~ \\ +\hline +father & associative table & {\tt LCMPUT} & {\tt LCMGET} \\ + & & {\tt LCMPPD} & {\tt LCMGPD} \\ +\cline{2-4} + & heterogeneous list & {\tt LCMPDL} & {\tt LCMGDL} \\ + & & {\tt LCMPPL} & {\tt LCMGPL} \\ +\hline +\end{tabular} +\end{center} + +\subsubsection{LCMGET\index{LCMGET}} + +Subroutine used to recover an information block (array of elementary type) from an associative table and to copy +this data into memory. + +\begin{verbatim} + +CALL LCMGET(IPLIST,NAMP,DATA) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table. \\ +\hline +{\tt NAMP} & {\it CHARACTER*12} & name of the block to recover. + A call to {\tt XABORT} is performed if the block does't exist. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt DATA} & {\it CLASS(*)} & array of dimension $\ge$ {\tt ILONG} in which the block is copied. \\ +\hline +\end{tabular} + +\vskip 0.4cm + +Subroutine {\tt LCMGET} can be used to recover character-string information available in a block +of the LCM object. It is also possible to use subroutine {\tt LCMGCD} presented in \Sect{LCMGCD}. +In the following example, a block is stored in an associative table located at +address {\tt IPLIST}. The block has a name {\tt NAMP} and a length equivalent to 5 32-bit words. +The information is recovered into the integer array {\tt IDATA} and transformed into a {\tt character*20} variable named {\tt HNAME} using an internal {\tt WRITE} statement: + +\begin{verbatim} + USE GANLIB + ... + CHARACTER NAMP*12,HNAME*20 + INTEGER IDATA(5) + TYPE(C_PTR) IPLIST + ... + IPLIST=... + NAMP=... + CALL LCMGET(IPLIST,NAMP,IDATA) + WRITE(HNAME,'(5A4)') (IDATA(I),I=1,5) +\end{verbatim} + +\subsubsection{LCMPUT\index{LCMPUT}} + +Subroutine used to store a block of data (array of elementary type) into an associative table. +The information is copied from memory towards the LCM object. If the block already exists, it is replaced; +otherwise, it is created. This operation cannot be performed into a LCM object open in {\tt read-only} mode. + +\begin{verbatim} + +CALL LCMPUT(IPLIST,NAMP,ILONG,ITYLCM,DATA) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table. \\ +\hline +{\tt NAMP} & {\it CHARACTER*12} & name of the block. \\ +\hline +{\tt ILONG} & {\it INTEGER} & length of the block. If the array contains $N$ {\tt character*8} words, + {\tt ilong} must be set to $2 \times N$. \\ +\hline +{\tt ITYLCM} & {\it INTEGER} & type of information. =1 32-bit integer; + =2 32-bit real; =3 {\tt character*4} data; + =4 64-bit real; =5 32-bit logical; =6 64-bit complex; =99 undefined. \\ +\hline +{\tt DATA} & {\it CLASS(*)} & array of dimension $\ge$ {\tt ILONG} to be copied into the LCM object. + Array elements {\tt DATA} must be initialized before the call to {\tt LCMPUT}. \\ +\hline +\end{tabular} + +\vskip 0.4cm + +Subroutine {\tt LCMPUT} can be used to store character-string information in an associative table of a LCM object. +It is also possible to use function {\tt LCMPCD} presented in \Sect{LCMPCD}. In the +following example, a character string {\tt HNAME} is first transformed into an integer array {\tt IDATA} +using an internal {\tt READ} statement. This array (block of data) is stored into the LCM object located at +address {\tt IPLIST}, using {\tt LCMPUT}. The block has a name {\tt NAMP}, a length equivalent to 5 32-bit words, and a type +equal to 3. + +\begin{verbatim} + USE GANLIB + ... + CHARACTER NAMP*12,HNAME*20 + INTEGER IDATA(5) + TYPE(C_PTR) IPLIST + ... + IPLIST=... + NAMP=... + READ(HNAME,'(5A4)') (IDATA(I),I=1,5) + CALL LCMPUT(IPLIST,NAMP,5,3,IDATA) +\end{verbatim} + +\subsubsection{LCMGPD\index{LCMGPD}} + +Subroutine used to recover the {\tt TYPE(C\_PTR)} address of an information block (array of elementary type) from an associative table, +{\sl without} making a copy of the information. Use of this subroutine must respect the following rules: +\begin{itemize} +\item If the information is modified after the call to {\tt LCMGPD}, a call to {\tt LCMPPD} +must be performed to acknowledge the modification. +\item The block pointed by {\tt IOFSET} should never be released using a deallocation function such as +{\tt RLSARA}, {\tt deallocate}, etc. +\item The variable {\tt IOFSET} must never be copied into another variable. +\end{itemize} +Non respect of these rules may cause execution failure (core dump, +segmentation fault, etc) without possibility to throw an exception. + +\vskip 0.2cm + +Subroutine {\tt LCMGPD} implements direct {\sl pinning} on LCM data structures. It represents an advanced capability of the {\sc lcm} API and should only be used in situations where +the economy of computer resources is a critical issue. The {\tt C\_PTR} address is the ANSI~C pointer of a block of +information made available into a Fortran program. If {\tt IOFSET} is a {\tt C\_PTR} address, the useful information is +accessed in a Fortran variable {\tt IDATA} set using +\begin{verbatim} + USE GANLIB + ... + TYPE(C_PTR) :: IOFSET + INTEGER, POINTER, DIMENSION(:) :: IDATA + ... + CALL LCMGPD(IPLIST,NAMP,IOFSET) + CALL C_F_POINTER(IOFSET,IDATA, (/ ILONG /)) +\end{verbatim} + +The useful information is therefore accessed in memory locations {\tt IDATA(1)} to {\tt IDATA(ILONG)}. + +\vskip 0.2cm + +A call to {\tt LCMGPD} doesn't cause any modification to the LCM object. + +\vskip 0.5cm + +\begin{verbatim} + +CALL LCMGPD(IPLIST,NAMP,IOFSET) +\end{verbatim} + +\vskip 0.5cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table. \\ +\hline +{\tt NAMP} & {\it CHARACTER*12} & name of the block to recover. +A call to {\tt XABORT} is performed if the block does't exist. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt IOFSET} & {\it TYPE(C\_PTR)} & {\tt C\_PTR} address of the information. \\ +\hline +\end{tabular} + +\subsubsection{LCMPPD\index{LCMPPD}} + +Subroutine used to store a block of data (array of elementary type) into an associative table +{\sl without} making a copy of the information. If the block already exists, it is replaced; +otherwise, it is created. This operation cannot be performed into a LCM object open in {\tt read-only} mode. + +\vskip 0.2cm + +{\sl If a block named {\tt NAMP} already exists in the associative table, the address associated +with {\tt NAMP} is replaced by the new address and the information pointed by the old address +is deallocated.} + +\vskip 0.2cm + +Subroutine {\tt LCMPPD} implements direct {\sl pinning} on LCM data structures. It represents an advanced capability of the {\sc lcm} API and should only be used in situations where +the economy of computer resources is a critical issue. The memory block stored by {\tt LCMPPD} must be previously +allocated by a call to {\tt LCMARA} of the form +\begin{verbatim} +IOFSET=LCMARA(JLONG) +\end{verbatim} + +\noindent where {\tt JLONG} is the number of 32-bit words required to store the memory block. {\tt JLONG} is generally equal to {\tt ILONG} except if +{\tt ITYLCM}=4 or {\tt ITYLCM}=6 where {\tt JLONG}={\tt 2*ILONG}. + +\vskip 0.2cm + +If {\tt ITYLCM}=1, the useful information is accessed in a Fortran variable {\tt IDATA} set using a {\tt C\_F\_POINTER} function: +\begin{verbatim} + USE GANLIB + ... + TYPE(C_PTR) :: IOFSET + INTEGER, POINTER, DIMENSION(:) :: IDATA + ... + IOFSET = LCMARA(ILONG) + CALL C_F_POINTER(IOFSET,IDATA, (/ ILONG /)) + ... + CALL LCMPPD(IPLIST,NAMP,ILONG,ITYLCM,IOFSET) +\end{verbatim} + +The useful information is therefore accessed in memory locations {\tt IDATA(1)} to {\tt IDATA(ILONG)}. There is no need to +declare {\tt LCMARA} as an external function; this declaration is included in the module set by the {\tt USE GANLIB} statement. + +\begin{verbatim} + +CALL LCMPPD(IPLIST,NAMP,ILONG,ITYLCM,IOFSET) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table. \\ +\hline +{\tt NAMP} & {\it CHARACTER*12} & name of the block. \\ +\hline +{\tt ILONG} & {\it INTEGER} & length of the block. \\ +\hline +{\tt ITYLCM} & {\it INTEGER} & type of information. =1 32-bit integer; + =2 32-bit real; =3 {\tt character*4} data; + =4 64-bit real; =5 32-bit logical; =6 64-bit complex; =99 undefined.\\ +\hline +{\tt IOFSET} & {\it TYPE(C\_PTR)} & {\tt C\_PTR} address of the information. Data elements pointed +by {\tt IOFSET} must be initialized before the call to {\tt LCMPPD}. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt IOFSET} & {\it TYPE(C\_PTR)} & {\tt IOFSET=C\_NULL\_PTR} to indicate that the information previously pointed by + {\tt IOFSET} is now managed by {\tt LCM}. \\ +\hline +\end{tabular} + +\subsubsection{LCMDEL\index{LCMDEL}} + +Subroutine used to erase an information block or a daughter heterogeneous list stored in a memory-resident associative table. +Subroutine {\tt LCMDEL} {\sl cannot} be used with persistent LCM objects. + +\begin{verbatim} + +CALL LCMDEL(IPLIST,NAMP) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table. \\ +\hline +{\tt NAMP} & {\it CHARACTER*12} & name of the block to erase. \\ +\hline +\end{tabular} + +\subsubsection{LCMGDL\index{LCMGDL}} + +Subroutine used to recover an information block (array of elementary type) from an heterogeneous list and to copy +this data into memory. + +\begin{verbatim} + +CALL LCMGDL(IPLIST,ISET,DATA) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the heterogeneous list. \\ +\hline +{\tt ISET} & {\it INTEGER} & index of the block in the heterogeneous list. A call to {\tt XABORT} + is performed if the block does't exist. +The first element of the list is located at index $1$.\\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt DATA} & {\it CLASS(*)} & array of dimension $\ge$ {\tt ILONG} in which the block is copied. \\ +\hline +\end{tabular} + +\vskip 0.4cm + +Subroutine {\tt LCMGDL} can be used to recover character-string information available in a block +of the LCM object. It is also possible to use subroutine {\tt LCMGCL} presented in \Sect{LCMGCL}. +In the following example, a block is stored in an heterogeneous list located at +address {\tt IPLIST}. The block is located at the {\tt ISET}--th position of the heterogeneous list and has a length equivalent to 5 32-bit words. +The information is recovered into the integer array {\tt IDATA} and transformed into a {\tt character*20} variable named {\tt HNAME} using an internal {\tt WRITE} statement: + +\begin{verbatim} + USE GANLIB + ... + CHARACTER HNAME*20 + INTEGER IDATA(5) + TYPE(C_PTR) IPLIST + ... + IPLIST=... + ISET=... + CALL LCMGDL(IPLIST,ISET,IDATA) + WRITE(HNAME,'(5A4)') (IDATA(I),I=1,5) +\end{verbatim} + +\subsubsection{LCMPDL\index{LCMPDL}} + +Subroutine used to store a block of data (array of elementary type) into an heterogeneous list. +The information is copied from memory towards the LCM object. If the block already exists, it is replaced; +otherwise, it is created. This operation cannot be performed into a LCM object open in {\tt read-only} mode. + +\begin{verbatim} + +CALL LCMPDL(IPLIST,ISET,ILONG,ITYLCM,DATA) +\end{verbatim} + +\vskip 0.2cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the heterogeneous list. \\ +\hline +{\tt ISET} & {\it INTEGER} & index of the block in the list. +The first element of the list is located at index $1$.\\ +\hline +{\tt ILONG} & {\it INTEGER} & length of the block. If the array contains $N$ {\tt character*8} words, + {\tt ILONG} must be set to $2 \times N$ \\ +\hline +{\tt ITYLCM} & {\it INTEGER} & type of information. =1 32-bit integer; + =2 32-bit real; =3 {\tt character*4} data; + =4 64-bit real; =5 32-bit logical; =6 64-bit complex; =99 undefined. \\ +\hline +{\tt DATA} & {\it CLASS(*)} & array of dimension $\ge$ {\tt ILONG} to be copied into the LCM object. + Array elements {\tt DATA} must be initialized before the call to {\tt LCMPDL}. \\ +\hline +\end{tabular} + +\vskip 0.4cm + +Subroutine {\tt LCMPDL} can be used to store character-string information into an heterogeneous list of a LCM object. In the +following example, a character string {\tt HNAME} is first transformed into an integer array {\tt IDATA} +using an internal {\tt READ} statement. This array (block of data) is stored into the LCM object located at +address {\tt IPLIST}, using {\tt LCMPDL} . The block is located at the {\tt ISET}--th position of the heterogeneous list, has a length equivalent to 5 32-bit words, and a type +equal to 3. + +\begin{verbatim} + USE GANLIB + ... + CHARACTER HNAME*20 + INTEGER IDATA(5) + TYPE(C_PTR) IPLIST + ... + IPLIST=... + ISET=... + READ(HNAME,'(5A4)') (IDATA(I),I=1,5) + CALL LCMPDL(IPLIST,ISET,5,3,IDATA) +\end{verbatim} + +\subsubsection{LCMGPL\index{LCMGPL}} + +Subroutine used to recover the {\tt TYPE(C\_PTR)} address of an information block (array of elementary type) from an heterogeneous list, +{\sl without} making a copy of the information. Use of this subroutine must respect the following rules: +\begin{itemize} +\item If the information is modified after the call to {\tt LCMGPL}, a call to {\tt LCMPPL} +must be performed to acknowledge the modification. +\item The block pointed by {\tt IOFSET} should never be released using a deallocation function such as +{\tt RLSARA}, {\tt deallocate}, etc. +\item The variable {\tt IOFSET} must never be copied into another variable. +\end{itemize} +Non respect of these rules may cause execution failure (core dump, +segmentation fault, etc) without possibility to throw an exception. + +\vskip 0.2cm + +Subroutine {\tt LCMGPL} implements direct {\sl pinning} on LCM data structures. It represents an advanced capability of the {\sc lcm} API and should only be used in situations where +the economy of computer resources is a critical issue. The {\tt C\_PTR} address is the ANSI~C pointer of a block of +information made available into a Fortran program. If {\tt IOFSET} is a {\tt C\_PTR} address, the useful information is +accessed in a Fortran variable {\tt IDATA} set using +\begin{verbatim} + USE GANLIB + ... + TYPE(C_PTR) :: IOFSET + INTEGER, POINTER, DIMENSION(:) :: IDATA + ... + CALL LCMGPL(IPLIST,ISET,IOFSET) + CALL C_F_POINTER(IOFSET,IDATA, (/ ILONG /)) +\end{verbatim} + +The useful information is therefore accessed in memory locations {\tt IDATA(1)} to {\tt IDATA(ILONG)}. + +\vskip 0.2cm + +A call to {\tt LCMGPL} doesn't cause any modification to the LCM object. + +\begin{verbatim} + +CALL LCMGPL(IPLIST,ISET,IOFSET) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the heterogeneous list. \\ +\hline +{\tt ISET} & {\it INTEGER} & index of the block in the list. +A call to {\tt XABORT} is performed if the block does't exist. +The first element of the list is located at index $1$. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt IOFSET} & {\it TYPE(C\_PTR)} & {\tt C\_PTR} address of the information. \\ +\hline +\end{tabular} + +\subsubsection{LCMPPL\index{LCMPPL}} + +Subroutine used to store a block of data (array of elementary type) into an heterogeneous list +{\sl without} making a copy of the information. If the block already exists, it is replaced; +otherwise, it is created. This operation cannot be performed into a LCM object open in {\tt read-only} mode. + +\vskip 0.2cm + +{\sl If the {\tt ISET}-th component of the heterogeneous list already exists, the address associated +with this component is replaced by the new address and the information pointed by the old address +is deallocated.} + +\vskip 0.2cm + +Subroutine {\tt LCMPPL} implements direct {\sl pinning} on LCM data structures. It represents an advanced capability of the {\sc lcm} API and +should only be used in situations where the economy of computer resources is a critical issue. The memory block stored by {\tt LCMPPL} must be previously +allocated by a call to {\tt LCMARA} of the form +\begin{verbatim} +IOFSET=LCMARA(JLONG) +\end{verbatim} + +\noindent where {\tt JLONG} is the number of 32-bit words required to store the memory block. {\tt JLONG} is generally equal to {\tt ILONG} except if +{\tt ITYLCM}=4 or {\tt ITYLCM}=6 where {\tt JLONG}={\tt 2*ILONG}. + +\vskip 0.2cm + +If {\tt ITYLCM}=1, the useful information is accessed in a Fortran variable {\tt IDATA} set using a {\tt C\_F\_POINTER} function: +\begin{verbatim} + USE GANLIB + ... + TYPE(C_PTR) :: IOFSET + INTEGER, POINTER, DIMENSION(:) :: IDATA + ... + IOFSET = LCMARA(ILONG) + CALL C_F_POINTER(IOFSET,IDATA, (/ ILONG /)) + ... + CALL LCMPPL(IPLIST,ISET,ILONG,ITYLCM,IOFSET) +\end{verbatim} + +The useful information is therefore accessed in memory locations {\tt IDATA(1)} to {\tt IDATA(ILONG)}. There is no need to +declare {\tt LCMARA} as an external function; this declaration is included in the module set by the {\tt USE GANLIB} statement. + +\begin{verbatim} + +CALL LCMPPL(IPLIST,ISET,ILONG,ITYLCM,IOFSET) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the heterogeneous list. \\ +\hline +{\tt ISET} & {\it INTEGER} & index of the block in the list. +The first element of the list is located at index $1$. \\ +\hline +{\tt ILONG} & {\it INTEGER} & length of the block. \\ +\hline +{\tt ITYLCM} & {\it INTEGER} & type of information. =1 32-bit integer; + =2 32-bit real; =3 {\tt character*4} data; + =4 64-bit real; =5 32-bit logical; =6 64-bit complex; + =99 undefined. \\ +\hline +{\tt IOFSET} & {\it TYPE(C\_PTR)} & {\tt C\_PTR} address of the information. Data elements pointed +by {\tt IOFSET} must be initialized before the call to {\tt LCMPPL}. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt IOFSET} & {\it INTEGER} & {\tt IOFSET=C\_NULL\_PTR} to indicate that the information previously pointed by + {\tt IOFSET} is now managed by {\tt LCM}. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsection{Management of the associative tables and of the heterogeneous lists} + +These functions permit to create ({\tt LCMSIX}, {\tt LCMDID}, {\tt LCMDIL}, +{\tt LCMLID}, {\tt LCMLIL}) or to access ({\tt LCMSIX}, {\tt LCMGID}, {\tt LCMGIL}) +daughter associative tables or daughter heterogeneous lists. There is no need to +declare these functions as external functions; this declaration is included in the module set by the {\tt USE GANLIB} statement. Use of these functions is summarized in the following table: + +\begin{center} +\begin{tabular}{|c|l|l|l|} +\cline{3-4} +\multicolumn{2}{c|}{} & \multicolumn{2}{c|}{daughter} \\ +\cline{3-4} +\multicolumn{2}{c|}{} & associative table & heterogeneous list \\ +\hline +father & associative table & {\tt LCMDID} & {\tt LCMLID} \\ + & & {\tt LCMGID} & {\tt LCMGID} \\ +\cline{2-4} + & heterogeneous list & {\tt LCMDIL} & {\tt LCMLIL} \\ + & & {\tt LCMGIL} & {\tt LCMGIL} \\ +\hline +\end{tabular} +\end{center} + +\subsubsection{LCMDID\index{LCMDID}} + +Function used to create or access a daughter associative table included into a father associative table. This operation cannot be +performed in a LCM object open in {\tt read-only} mode. + +\vskip 0.2cm + +The daughter associative table is created if it doesn't already exist. Otherwise, the +existing daughter associative table is accessed. In the latter case, it is recommended +to use function {\tt LCMGID} which is faster for a simple access and which can be used +with LCM object open in {\tt read-only} mode. + +\begin{verbatim} + +JPLIST=LCMDID(IPLIST,NAMP) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the father associative table. \\ +\hline +{\tt NAMP} & {\it CHARACTER*12} & name of the daughter associative table. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt JPLIST} & {\it TYPE(C\_PTR)} & address of the daughter associative table. \\ +\hline +\end{tabular} + +\subsubsection{LCMLID\index{LCMLID}} + +Function used to create or access a daughter heterogeneous list included into a father associative table. This operation cannot be +performed in a LCM object open in {\tt read-only} mode. + +\vskip 0.2cm + +In the following example, a daughter heterogeneous list is created as a block {\tt LIST} +into a father associative table. The heterogeneous list contains 5~components. A block of data +is stored in each component of the heterogeneous list using {\tt LCMPDL}: + +\begin{verbatim} + USE GANLIB + ... + TYPE(C_PTR) :: IPLIST, JPLIST + ... + JPLIST=LCMLID(IPLIST,'LIST',5) + DO I=1,5 + CALL LCMPDL(JPLIST,I,... + ... + ENDDO +\end{verbatim} + +\vskip 0.2cm + +The heterogeneous list capability is implemented through calls to function {\tt LCMLID}. Such a +call permit the following possibilities: +\begin{itemize} +\item the heterogeneous list is created if it doesn't already exist. +\item the heterogeneous list is accessed if it already exists {\sl and} if its length is unchanged. In this case, +it is recommended to use function {\tt LCMGID} which is faster for a simple access and which can be used +with LCM object open in {\tt read-only} mode. +\item the heterogeneous list is enlarged (components are added) if it already exists {\sl and} if the new length is larger than the preceding one. +\end{itemize} + +\begin{verbatim} + +JPLIST=LCMLID(IPLIST,NAMP,ILONG) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the father associative table. \\ +\hline +{\tt NAMP} & {\it CHARACTER*12} & name of the daughter heterogeneous list. \\ +\hline +{\tt ILONG} & {\it INTEGER} & number of components in the daughter heterogeneous list. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt JPLIST} & {\it INTEGER} & address of the daughter heterogeneous list named {\tt NAMP}. \\ +\hline +\end{tabular} + +\subsubsection{LCMLIL\index{LCMLIL}} + +Function used to create or access a daughter heterogeneous list included into a father heterogeneous list. This operation cannot be +performed in a LCM object open in {\tt read-only} mode. + +\vskip 0.2cm + +In the following example, a daughter heterogeneous list is created as {\tt 77}-th component +of a father heterogeneous list. The heterogeneous list contains 5~components. A block of data +is stored in each component of the heterogeneous list using {\tt LCMPDL}: + +\begin{verbatim} + USE GANLIB + ... + TYPE(C_PTR) :: IPLIST, JPLIST + ... + JPLIST=LCMLIL(IPLIST,77,5) + DO I=1,5 + CALL LCMPDL(JPLIST,I,... + ... + ENDDO +\end{verbatim} + +\vskip 0.2cm + +The heterogeneous list capability is implemented through calls to function {\tt LCMLIL}. Such a +call permit the following possibilities: +\begin{itemize} +\item the heterogeneous list is created if it doesn't already exist. +\item the heterogeneous list is accessed if it already exists {\sl and} if its length is unchanged. In this case, +it is recommended to use function {\tt LCMGIL} which is faster for a simple access and which can be used +with LCM object open in {\tt read-only} mode. +\item the heterogeneous list is enlarged (components are added) if it already exists {\sl and} if the new length is larger than the preceding one. +\end{itemize} + +\begin{verbatim} + +JPLIST=LCMLIL(IPLIST,ISET,ILONG) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the father heterogeneous list. \\ +\hline +{\tt ISET} & {\it INTEGER} & index of the daughter heterogeneous list in the father heterogeneous list. +The first element of the list is located at index $1$. \\ +\hline +{\tt ILONG} & {\it INTEGER} & number of components in the daughter heterogeneous list. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt JPLIST} & {\it TYPE(C\_PTR)} & address of the daughter heterogeneous list. \\ +\hline +\end{tabular} + +\subsubsection{LCMDIL\index{LCMDIL}} + +Function used to create or access a daughter associative table included into a father heterogeneous list. This operation cannot be +performed in a LCM object open in {\tt read-only} mode. + +\vskip 0.2cm + +The daughter associative table is created if it doesn't already exist. Otherwise, the +existing daughter associative table is accessed. In the latter case, it is recommended +to use function {\tt LCMGIL} which is faster for a simple access and which can be used +with LCM object open in {\tt read-only} mode. + +\vskip 0.2cm + +It is a good programming practice to replace a set of $N$ distinct associative tables by a +list made of $N$ associative tables, as depicted in \Fig{f1}. + +\vskip 0.2cm + +\begin{figure}[htbp] +\begin{center} +\epsfxsize=9cm +\centerline{ \epsffile{vect.eps}} +\parbox{12cm}{\caption{A list of associative tables.}\label{fig:f2}} +\end{center} +\end{figure} +\goodbreak + +In the example of \Fig{f2}, a set of 5~associative tables, created by {\tt LCMDID}: + +\begin{verbatim} + USE GANLIB + ... + TYPE(C_PTR) :: IPLIST, JPLIST + CHARACTER HDIR*12 + ... + DO I=1,5 + WRITE(HDIR,'(5HGROUP,I3,4H/ 5)') I + JPLIST=LCMDID(IPLIST,HDIR) + CALL LCMPUT(JPLIST,... + ... + ENDDO +\end{verbatim} + +\noindent are replaced by a list of 5~associative tables, created by {\tt LCMLID} and {\tt LCMDIL}: + +\begin{verbatim} + USE GANLIB + ... + TYPE(C_PTR) :: IPLIST, JPLIST, KPLIST + ... + JPLIST=LCMLID(IPLIST,'GROUP',5) + DO I=1,5 + KPLIST=LCMDIL(JPLIST,I) + CALL LCMPUT(KPLIST,... + ... + ENDDO +\end{verbatim} + +\vskip 0.2cm + +The capability to include associative tables into an heterogeneous list is implemented using +the {\tt LCMDIL} function: + +\begin{verbatim} + +JPLIST=LCMDIL(IPLIST,ISET) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the father heterogeneous list. \\ +\hline +{\tt ISET} & {\it INTEGER} & index of the daughter associative table in the father heterogeneous list. +The first element of the list is located at index $1$. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt JPLIST} & {\it TYPE(C\_PTR)} & address of the daughter associative table. \\ +\hline +\end{tabular} + +\subsubsection{LCMGID\index{LCMGID}} + +Function used to access a daughter associative table {\sl or} heterogeneous list included into a father associative table. + +\begin{verbatim} + +JPLIST=LCMGID(IPLIST,NAMP) +\end{verbatim} + +\vskip 0.5cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the father associative table. \\ +\hline +{\tt NAMP} & {\it CHARACTER*12} & name of the daughter associative table or heterogeneous list. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt JPLIST} & {\it TYPE(C\_PTR)} & address of the daughter associative table or heterogeneous list. A call to {\tt XABORT} is performed if this daughter doesn't extst. \\ +\hline +\end{tabular} + +\subsubsection{LCMGIL\index{LCMGIL}} + +Function used to access a daughter associative table {\sl or} heterogeneous list included into a father heterogeneous list. + +\begin{verbatim} + +JPLIST=LCMGIL(IPLIST,ISET) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the father heterogeneous list. \\ +\hline +{\tt ISET} & {\it INTEGER} & index of the daughter associative table or heterogeneous list in the father heterogeneous list. +The first element of the list is located at index $1$. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt JPLIST} & {\it TYPE(C\_PTR)} & address of the daughter associative table or heterogeneous list. A call to {\tt XABORT} is performed if this daughter doesn't extst. \\ +\hline +\end{tabular} + +\subsubsection{LCMSIX\index{LCMSIX}} + +Function used to move across the hierarchical structure of a LCM object made of +associative tables. Using this function, there is no need to remember the names of +the father (grand-father, etc.) associative tables. If a daughter associative table doesn't +exist and if the LCM object is open on creation or modification mode, the daughter +associative table is created. A daughter associative table cannot be created if the +LCM object is open in {\tt read-only} mode. + +\vskip 0.4cm + +Function {\tt LCMSIX} is deprecated, as {\tt LCMDID} offers a more elegant way to perform the same operation. +However, {\tt LCMSIX} is kept available in the {\sc lcm} API for historical reasons. + +\begin{verbatim} + +CALL LCMSIX(IPLIST,NAMP,IACT) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table before the call to {\tt LCMSIX}. \\ +\hline +{\tt NAMP} & {\it CHARACTER*12} & name of the daughter associative table if {\tt iact=1}. + This parameter is not used if {\tt iact=0} or {\tt iact=2}. \\ +\hline +{\tt IACT} & {\it INTEGER} & type of move: =0 return towards the root directory of the LCM object; + =1 move towards the daughter associative table (create it if it doesn't exist); + =2 return towards the father associative table. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table after the call to {\tt LCMSIX}. \\ +\hline +\\ +\end{tabular} + +\vspace{0.8cm} + +\subsection{LCM utility functions} + +\subsubsection{LCMLIB\index{LCMLIB}} + +Function used to print (towards {\tt stdout}) the content of the active directory of an associative table or heterogeneous list. + +\begin{verbatim} + +CALL LCMLIB(IPLIST) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameter:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table or of the heterogeneous list. \\ +\hline +\end{tabular} + +\subsubsection{LCMEQU\index{LCMEQU}} + +Function used to perform a deep-copy of the information contained in an associative table (address {\tt IPLIS1}) +towards another associative table (address {\tt IPLIS2}). Note that the second associative table (address {\tt IPLIS2}) is modified +but not created by {\tt LCMEQU}. + +\begin{verbatim} + +CALL LCMEQU(IPLIS1,IPLIS2) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameter:} \\ +\hline +{\tt IPLIS1} & {\it TYPE(C\_PTR)} & address of the existing associative table or of the heterogeneous list + (accessed in {\tt read-only} mode). \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt IPLIS2} & {\it TYPE(C\_PTR)} & address of the associative table or of the heterogeneous list, modified by {\tt LCMEQU}. \\ +\hline +\end{tabular} + +\subsubsection{LCMEXP\index{LCMEXP}} + +Function used to export (or import) the content of an associative table towards (or from) a sequential file. The sequential file +can be in binary or {\tt ascii} format. + +\vskip 0.4cm + +The export of information starts from the active directoty. Note that {LCMEQU} is basically a serialization algorithm +based on the contour algorithm. + +\begin{verbatim} + +CALL LCMEXP(IPLIST,IMPX,NUNIT,IMODE,IDIR) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table or of the heterogeneous list to be exported (or imported). \\ +\hline +{\tt IMPX} & {\it INTEGER} & print parameter (equal to 0 for no print). \\ +\hline +{\tt NUNIT} & {\it INTEGER} & unit number of the sequential file. \\ +\hline +{\tt IMODE} & {\it INTEGER} & =1 binary sequential file; + =2 {\sc ascii} sequential file. \\ +\hline +{\tt IDIR} & {\it INTEGER} & =1 to export; =2 to import. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsection{Using fixed-length character arrays} + +The following subroutines are implemented using the LCM Fortran API of the preceding sections. They +permit the use of fixed-length character arrays. They reproduce an existing capability of the GANLIB4 API. + +\vskip 0.4cm + +\begin{center} +\begin{tabular}{|c|l|l|l|} +\cline{3-4} +\multicolumn{2}{c|}{} & \multicolumn{2}{c|}{type of operation} \\ +\cline{3-4} +\multicolumn{2}{c|}{} & put~~~~~~~~~~~~~ & get~~~~~~~~~~~~~ \\ +\hline +father & associative table & {\tt LCMPTC} & {\tt LCMGTC} \\ +\cline{2-4} + & heterogeneous list & {\tt LCMPLC} & {\tt LCMGLC} \\ +\hline +\end{tabular} +\end{center} + +\subsubsection{LCMGTC\index{LCMGTC}}\label{sect:LCMGTC} + +Subroutine used to recover a character array from a block of data stored in an associative table. + +\begin{verbatim} + +CALL LCMGTC(IPLIST,NAMP,LENG,[NLIN,]HDATA) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table. \\ +\hline +{\tt NAMP} & {\it CHARACTER*12} & name of the character array +to recover. A call to {\tt XABORT} is performed if the block does't exist. \\ +\hline +{\tt LENG} & {\it INTEGER} & length of each character string in the array {\tt HDATA}. \\ +\hline +{\tt NLIN} & {\it INTEGER} & dimension of array {\tt HDATA}. This parameter is omitted if {\tt HDATA} \\ +& & is a single character string. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3.5cm}|p{9.5cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt HDATA} & {\it CHARACTER*(*)(*)} & character array of dimension $\ge$ {\tt NLIN} in which the character information is to be copied \\ +\hline +\end{tabular} + +\subsubsection{LCMPTC\index{LCMPTC}}\label{sect:LCMPTC} + +Subroutine used to store a character array into a block of data stored in an associative table. +If the block of data already exists, it is updated; otherwise, it is created. This operation cannot be performed +in a LCM object open in {\tt read-only} mode. + +\begin{verbatim} + +CALL LCMPTC(IPLIST,NAMP,LENG,[NLIN,]HDATA) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3.5cm}|p{9.5cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table. \\ +\hline +{\tt NAMP} & {\it CHARACTER*12} & name of the character array +to store. \\ +\hline +{\tt LENG} & {\it INTEGER} & length of each character string in the array {\tt HDATA}. \\ +\hline +{\tt NLIN} & {\it INTEGER} & dimension of array {\tt HDATA}. This parameter is omitted if {\tt HDATA} \\ +& & is a single character string. \\ +\hline +{\tt HDATA} & {\it CHARACTER*(*)(*)} & character array of dimension $\ge$ {\tt NLIN} from which the character information is recovered. \\ +\hline +\end{tabular} + +\vskip 0.4cm +\goodbreak + +\noindent Example: +\begin{verbatim} + USE GANLIB + ... + TYPE(C_PTR) :: IPLIST + PARAMETER (ILONG=5) + CHARACTER*8 HDATA1(ILONG),HDATA2(ILONG) +* + CALL LCMOP(IPLIST,'mon_dict',0,1,2) +* +* STORE THE INFORMATION. + HDATA1(1)='string1' + HDATA1(2)='string2' + HDATA1(3)='string3' + HDATA1(4)='string4' + HDATA1(5)='string5' + CALL LCMPTC(IPLIST,'node1',8,ILONG,HDATA1) +* +* RECOVER THE INFORMATION. + CALL LCMGTC(IPLIST,'node1',8,ILONG,HDATA2) + DO I=1,ILONG + PRINT *,'I=',I,' RECOVER HDATA2 -->',HDATA2(I),'<--' + ENDDO +* + CALL LCMCL(IPLIST,2) +\end{verbatim} + +\subsubsection{LCMGLC\index{LCMGLC}}\label{sect:LCMGLC} + +Subroutine used to recover a character array from a block of data stored in an heterogeneous list. + +\begin{verbatim} + +CALL LCMGLC(IPLIST,ISET,LENG,[NLIN,]HDATA) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table. \\ +\hline +{\tt ISET} & {\it INTEGER} & index of the block in the list. +The first element of the list is located at index $1$. \\ +\hline +{\tt LENG} & {\it INTEGER} & length of each character string in the array {\tt HDATA}. \\ +\hline +{\tt NLIN} & {\it INTEGER} & dimension of array {\tt HDATA}. This parameter is omitted if {\tt HDATA} \\ +& & is a single character string. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3.5cm}|p{9.5cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt HDATA} & {\it CHARACTER*(*)(*)} & character array of dimension $\ge$ {\tt NLIN} in which the character information is to be copied \\ +\hline +\end{tabular} + +\subsubsection{LCMPLC\index{LCMPLC}}\label{sect:LCMPLC} + +Subroutine used to store a character array into a block of data stored in an heterogeneous list. +If the block of data already exists, it is updated; otherwise, it is created. This operation cannot be performed +in a LCM object open in {\tt read-only} mode. + +\begin{verbatim} + +CALL LCMPLC(IPLIST,USET,LENG,[NLIN,]HDATA) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3.5cm}|p{9.5cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table. \\ +\hline +{\tt ISET} & {\it INTEGER} & index of the block in the list. +The first element of the list is located at index $1$. \\ +\hline +{\tt LENG} & {\it INTEGER} & length of each character string in the array {\tt HDATA}. \\ +\hline +{\tt NLIN} & {\it INTEGER} & dimension of array {\tt HDATA}. This parameter is omitted if {\tt HDATA} \\ +& & is a single character string. \\ +\hline +{\tt HDATA} & {\it CHARACTER*(*)(*)} & character array of dimension $\ge$ {\tt NLIN} from which the character information is recovered. \\ +\hline +\end{tabular} + +\vskip 0.4cm +\goodbreak + +\noindent Example: +\begin{verbatim} + USE GANLIB + ... + TYPE(C_PTR) :: IPLIST + PARAMETER (ILONG=5) + CHARACTER*8 HDATA1(ILONG),HDATA2(ILONG) +* + CALL LCMOP(IPLIST,'mon_dict',0,1,2) +* +* STORE THE INFORMATION. + HDATA1(1)='string1' + HDATA1(2)='string2' + HDATA1(3)='string3' + HDATA1(4)='string4' + HDATA1(5)='string5' + CALL LCMPLC(IPLIST,1,8,ILONG,HDATA1) +* +* RECOVER THE INFORMATION. + CALL LCMGLC(IPLIST,1,8,ILONG,HDATA2) + DO I=1,ILONG + PRINT *,'I=',I,' RECOVER HDATA2 -->',HDATA2(I),'<--' + ENDDO +* + CALL LCMCL(IPLIST,2) +\end{verbatim} + +\vskip 0.8cm + +\subsection{Using variable-length character arrays} + +The following subroutines are implemented using the LCM Fortran API of the preceding sections. They +permit the use of variable-length character arrays. They represent a {\sl new capability} of the GANLIB5 API. + +\vskip 0.4cm + +\begin{center} +\begin{tabular}{|c|l|l|l|} +\cline{3-4} +\multicolumn{2}{c|}{} & \multicolumn{2}{c|}{type of operation} \\ +\cline{3-4} +\multicolumn{2}{c|}{} & put~~~~~~~~~~~~~ & get~~~~~~~~~~~~~ \\ +\hline +father & associative table & {\tt LCMPCD} & {\tt LCMGCD} \\ +\cline{2-4} + & heterogeneous list & {\tt LCMPCL} & {\tt LCMGCL} \\ +\hline +\end{tabular} +\end{center} + +\subsubsection{LCMGCD\index{LCMGCD}}\label{sect:LCMGCD} + +Function used to recover a character array from a block of data stored in an associative table. + +\begin{verbatim} + +CALL LCMGCD(IPLIST,NAMP,ILONG,HDATA) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table. \\ +\hline +{\tt NAMP} & {\it CHARACTER*12} & name of the character array +to recover. A call to {\tt XABORT} is performed if the block does't exist. \\ +\hline +{\tt ILONG} & {\it INTEGER} & number of components in the character array.\\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3.5cm}|p{9.5cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt HDATA} & {\it CHARACTER*(*)(*)} & character array of dimension $\ge$ {\tt ILONG} in which the character information is to be copied \\ +\hline +\end{tabular} + +\subsubsection{LCMPCD\index{LCMPCD}}\label{sect:LCMPCD} + +Subroutine used to store a character array into a block of data stored in an associative table. +If the block of data already exists, it is updated; otherwise, it is created. This operation cannot be performed +in a LCM object open in {\tt read-only} mode. + +\begin{verbatim} + +CALL LCMPCD(IPLIST,NAMP,ILONG,HDATA) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3.5cm}|p{9.5cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the associative table. \\ +\hline +{\tt NAMP} & {\it CHARACTER*12} & name of the character array +to store. \\ +\hline +{\tt ILONG} & {\it INTEGER} & number of components in the character array.\\ +\hline +{\tt HDATA} & {\it CHARACTER*(*)(*)} & character array of dimension $\ge$ {\tt ILONG} from which the character information is recovered. \\ +\hline +\end{tabular} + +\vskip 0.4cm + +\noindent Example: +\begin{verbatim} + USE GANLIB + ... + TYPE(C_PTR) :: IPLIST + PARAMETER (ILONG=5) + CHARACTER*16 HDATA1(ILONG),HDATA2(ILONG) +* + CALL LCMOP(IPLIST,'mon_dict',0,1,2) +* +* STORE THE INFORMATION. + HDATA1(1)='string1' + HDATA1(2)=' string2' + HDATA1(3)=' string3' + HDATA1(4)=' string4' + HDATA1(5)=' string5' + CALL LCMPCD(IPLIST,'node1',ILONG,HDATA1) +* +* RECOVER THE INFORMATION. + CALL LCMGCD(IPLIST,'node1',ILONG,HDATA2) + DO I=1,ILONG + PRINT *,'I=',I,' RECOVER HDATA2 -->',HDATA2(I),'<--' + ENDDO +* + CALL LCMCL(IPLIST,2) +\end{verbatim} + +\subsubsection{LCMGCL\index{LCMGCL}}\label{sect:LCMGCL} + +Subroutine used to recover a character array from a block of data stored in an heterogeneous list. + +\begin{verbatim} + +CALL LCMGCL(IPLIST,ISET,ILONG,HDATA) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the heterogeneous list. \\ +\hline +{\tt ISET} & {\it INTEGER} & index of the character array in the heterogeneous list. A call to {\tt XABORT} is performed if the component doesn't exist. +The first element of the list is located at index $1$.\\ +\hline +{\tt ILONG} & {\it INTEGER} & number of components in the character array.\\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3.5cm}|p{9.5cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt HDATA} & {\it CHARACTER*(*)(*)} & character array of dimension $\ge$ {\tt ILONG} in which the character information is to be copied \\ +\hline +\end{tabular} + +\subsubsection{LCMPCL\index{LCMPCL}}\label{sect:LCMPCL} + +Subroutine used to store a character array into a block of data stored in an heterogeneous list. +If the block of data already exists, it is updated; otherwise, it is created. This operation cannot be performed +in a LCM object open in {\tt read-only} mode. + +\begin{verbatim} + +CALL LCMPCL(IPLIST,ISET,ILONG,HDATA) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3.5cm}|p{9.5cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IPLIST} & {\it TYPE(C\_PTR)} & address of the heterogeneous list. \\ +\hline +{\tt ISET} & {\it INTEGER} & index of the character array in the heterogeneous list. +The first element of the list is located at index $1$. \\ +\hline +{\tt ILONG} & {\it INTEGER} & number of components in the character array .\\ +\hline +{\tt HDATA} & {\it CHARACTER*(*)(*)} & character array of dimension $\ge$ {\tt ILONG} from which the character information is recovered. \\ +\hline +\end{tabular} + +\vskip 0.4cm + +\noindent Example: +\begin{verbatim} + USE GANLIB + ... + TYPE(C_PTR) :: IPLIST, JPLIST + PARAMETER (ILONG=5) + CHARACTER*16 HDATA1(ILONG),HDATA2(ILONG) +* + CALL LCMOP(IPLIST,'mon_dict',0,1,2) +* +* CREATE THE LIST. + JPLIST=LCMLID(IPLIST,'node2',77) +* +* STORE THE INFORMATION. + HDATA1(1)='string1' + HDATA1(2)=' string2' + HDATA1(3)=' string3' + HDATA1(4)=' string4' + HDATA1(5)=' string5' + CALL LCMPCL(JPLIST,1,ILONG,HDATA1) +* +* RECOVER THE INFORMATION. + CALL LCMGCL(JPLIST,1,ILONG,HDATA2) + DO I=1,ILONG + PRINT *,'I=',I,' RECOVER HDATA2 -->',HDATA2(I),'<--' + ENDDO +* + CALL LCMCL(IPLIST,2) +\end{verbatim} + +\vskip 0.8cm + +\subsection{Dynamic allocation of an elementary blocks of data in ANSI C} + +A function {\tt LCMARA()} and a subroutine {\tt LCMDRD()} are available as wrappers to memory allocator +{\tt setara\_c} and memory deallocator {\tt rlsara\_c} introduced in Sects.~\ref{sect:setara} and~\ref{sect:rlsara}. +{\tt LCLARA()} and {\tt LCMDRD()} offer an alternative to the Fortran-90 {\tt ALLOCATE} and {\tt DEALLOCATE} +capabilities for exceptional situations involving {\sl pinning} towards LCM internal data. Use of {\tt LCLARA()} +and {\tt LCMDRD()} is 64-bit clean and Fortran-2003 compliant, but its use must be avoided as much as possible. A +setara address is a {\tt malloc} pointer, as defined in ANSI-C. + +\subsubsection{LCMARA\index{LCMARA}}\label{sect:LCMARA} + +{\tt LCMARA()} is a Fortran-2003 wrapper for the ANSI-C function {\tt setara\_c} introduced in Sect.~\ref{sect:setara}. This function +perform a memory allocation and returns a {\tt TYPE(C\_PTR)} pointer variable. + +\begin{verbatim} + +IDATA_PTR=LCMARA(ILONG) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameter:} \\ +\hline +{\tt ILONG} & {\it INTEGER} & length of the data array (in single-precision words). \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt IDATA\_PTR} & {\it TYPE(C\_PTR)} & setara address of the data array. \\ +\hline +\end{tabular} + +\subsubsection{LCMDRD\index{LCMDRD}}\label{sect:LCMDRD} + +{\tt LCMDRD()} is a Fortran-2003 wrapper for the ANSI-C function {\tt rlsara\_c} introduced in Sect.~\ref{sect:rlsara}. This subroutine +deallocate the memory corresponding to a {\tt TYPE(C\_PTR)} pointer variable. + +\begin{verbatim} + +CALL LCMDRD(IDATA_PTR) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameter:} \\ +\hline +{\tt IDATA\_PTR} & {\it TYPE(C\_PTR)} & setara address of the data array. \\ +\hline +\end{tabular} + +\vskip 0.4cm + +\noindent Example: +\begin{verbatim} + USE GANLIB + ... + TYPE(C_PTR) :: IDATA_PTR + INTEGER, POINTER, DIMENSION(:) :: IDATA + ... + IDATA_PTR=LCMARA(50) + CALL C_F_POINTER(IDATA_PTR,IDATA,(/ 50 /)) + DO I=1,50 + IDATA(I)=... + ENDDO + ... + CALL LCMDRD(IDATA_PTR) +\end{verbatim} + +\vskip 0.8cm + +\subsection{Abnormal termination of the execution} + +\subsubsection{XABORT} + +Subroutine used to cause the program termination. A message describing the conditions of the +termination is printed. + +\vskip 0.2cm + +It is important to use this subroutine to abort a program instead of using the {\tt STOP} +statement of Fortran. The {\tt XABORT} subroutine can be used to implement {\sl exception +treatment} in situations where the application software is driven by a multi-physics system. + +\vskip 0.2cm + +If an abnormal termination occurs, the {\tt XABORT} subroutine is called as +\begin{verbatim} + CALL XABORT('SUB001: EXECUTION FAILURE.') +\end{verbatim} + +\begin{verbatim} + +CALL XABORT(HSMG) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameter:} \\ +\hline +{\tt HSMG} & {\it CHARACTER*(*)} & message describing the conditions of the abnormal termination. \\ +\hline +\multicolumn{3}{|c|}{\bf value of the function:} \\ +\hline +\multicolumn{2}{|l|}{\it void} & \\ +\hline +\end{tabular} + +\clearpage + +\section {The ISO Fortran {\sc hdf5} API} + +The ISO Fortran {\sc hdf5} API is a set of Fortran-2003 wrapper subroutines or functions programmed around the ANSI-C functions of the {\sc hdf5} API presented in Sect.~\ref{sect:hdf5apiC}. This implementation is using +the C interoperability capabilities normalized by ISO and available in the Fortran-2003 compilers. All the subroutines and functions presented in this section are ISO-standard and 64-bit clean. + +\vskip 0.08cm + +Any subroutines or functions using the Fortran {\sc hdf5} API must include a {\tt USE} statement of the form +\begin{verbatim} +use hdf5_wrap +\end{verbatim} + +The address of a HDF5 file is a {\tt TYPE(C\_PTR)} variable declared as +\begin{verbatim} + type(c_ptr) :: ifile +\end{verbatim} + +\vskip 0.8cm + +\subsection{Opening and closing of HDF5 files} + +\subsubsection{hdf5\_open\_file\index{hdf5OpenFile}} + +Open a HDF5 file. +\begin{verbatim} + +call hdf5_open_file(fname, ifile, rdonly) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt fname} & {\it character*1023} & name of the HDF5 file. \\ +\hline +{\tt rdonly} & {\it logical} & =.true. to access an existing HDF5 file in {\bf read-only} mode. Optional argument. +By default, the HDF5 file is accessed in read-write mode. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt ifile} & {\it type(c\_ptr)} & address of the HDF5 file. \\ +\hline +\end{tabular} + +\subsubsection{hdf5\_close\_file\index{hdf5CloseFile}} + +Close a HDF5 file. + +\begin{verbatim} + +call hdf5_close_file(ifile) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it type(c\_ptr)} & address of the HDF5 file. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsection{Interrogation of HDF5 files} + +The data structures in a HDF5 file are self-described. It is therefore possible to +interrogate them in order to know their characteristics. + +\subsubsection{hdf5\_list\index{hdf5List}} + +List the root table of contents of a group on the standard output. The name of a group can include one or many path separators (character~$\slash$) +to list different hierarchical levels. + +\begin{verbatim} + +call hdf5_list(ifile, name) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it type(c\_ptr)} & address of the HDF5 file. \\ +\hline +{\tt name} & {\it character*1023} & name of a group. \\ +\hline +\end{tabular} + +\subsubsection{hdf5\_info\index{hdf5Info}} + +Find dataset information. + +\begin{verbatim} + +call hdf5_info(ifile, name, rank, type, nbyte, dimsr) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it type(c\_ptr)} & address of the HDF5 file. \\ +\hline +{\tt name} & {\it character*1023} & name of a dataset. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt rank} & {\it integer} & rank (number of dimensions) of dataset. \\ +\hline +{\tt type} & {\it integer} & type of dataset: =1 32-bit integer; + =2 32-bit real; =3 character data; + =4 64-bit real. \\ +\hline +{\tt nbyte} & {\it integer} & number of bytes in each component of the dataset. \\ +\hline +{\tt dimsr} & {\it integer(*)} & integer array containing the dimension of dataset. {\tt rank} values are provided. \\ +\hline +\end{tabular} + +\subsubsection{hdf5\_get\_dimensions\index{hdf5GetDimensions}} + +Find the rank (number of dimensions) of a dataset. + +\begin{verbatim} + +rank=hdf5_get_dimensions(ifile, name) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it type(c\_ptr)} & address of the HDF5 file. \\ +\hline +{\tt name} & {\it character*1023} & name of a dataset. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt rank} & {\it integer} & rank of the dataset. \\ +\hline +\end{tabular} + +\subsubsection{hdf5\_get\_shape\index{hdf5GetShape}} + +Find the shape (dimension array) of a dataset. + +\begin{verbatim} + +call hdf5_get_shape(ifile, name, dimsr) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it type(c\_ptr)} & address of the HDF5 file. \\ +\hline +{\tt name} & {\it character*1023} & name of a dataset. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt dimsr} & {\it integer(*)} & integer array containing the dimension of dataset. {\tt rank} values are provided. \\ +\hline +\end{tabular} + +\subsubsection{hdf5\_list\_datasets\index{hdf5ListDatasets}} + +Allocate a character array of the correct size and recover character daughter dataset names in a group. + +\begin{verbatim} + +call hdf5_list_datasets(ifile, name, dsets) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it type(c\_ptr)} & address of the HDF5 file. \\ +\hline +{\tt name} & {\it character*1023} & name of a dataset. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{4.5cm}|p{8.5cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt idata} & {\it character*1023(:),allocatable} & list of character names of each daughter dataset.\\ +\hline +\end{tabular} + +\vskip 0.5cm + +\noindent Example: +\begin{verbatim} + use hdf5_wrap + type(c_ptr) :: ifile + character(len=100), allocatable :: list(:) + ... + call hdf5_list_datasets(ifile, '/', list) + write(*,*) 'dataset table of contents:' + do i = 1, size(list) + write(*,*) trim(list(i)) + enddo + deallocate(list) +\end{verbatim} + +\subsubsection{hdf5\_list\_groups\index{hdf5ListGroups}} + +Allocate a character array of the correct size and recover character daughter group names in a group. + +\begin{verbatim} + +call hdf5_list_groups(ifile, name, dsets) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it type(c\_ptr)} & address of the HDF5 file. \\ +\hline +{\tt name} & {\it character*1023} & name of a dataset. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{4.5cm}|p{8.5cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt idata} & {\it character*1023(:),allocatable} & list of character names of each daughter group.\\ +\hline +\end{tabular} + +\vskip 0.5cm + +\noindent Example: +\begin{verbatim} + use hdf5_wrap + type(c_ptr) :: ifile + character(len=100), allocatable :: list(:) + ... + call hdf5_list_groups(ifile, '/', list) + write(*,*) 'group table of contents:' + do i = 1, size(list) + write(*,*) trim(list(i)) + enddo + deallocate(list) +\end{verbatim} + +\subsubsection{hdf5\_group\_exists\index{hdf5GroupExists}} + +Test for existence of a group. + +\begin{verbatim} + +ierr=hdf5_group_exists(ifile, name) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it type(c\_ptr)} & address of the HDF5 file. \\ +\hline +{\tt name} & {\it character*1023} & name of a group. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt ierr} & {\it logical} & existence flag: =.true. if the group exists. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsection{Management of groups and datatypes} + +\subsubsection{hdf5\_create\_group\index{hdf5CreateGroup}} + +Create a group. + +\begin{verbatim} + +call hdf5_create_group(ifile, name) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it type(c\_ptr)} & address of the HDF5 file. \\ +\hline +{\tt name} & {\it character*1023} & name of the group to create. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsubsection{hdf5\_delete\index{hdf5Delete}} + +Delete a group or a dataset. + +\begin{verbatim} + +call hdf5_delete(ifile, name) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it type(c\_ptr)} & address of the HDF5 file. \\ +\hline +{\tt name} & {\it character*1023} & name of the group or dataset to delete. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsubsection{hdf5\_copy\index{hdf5Copy}} + +Copy a group or a dataset from one location to another. The source and destination need not be in the same file. + +\begin{verbatim} + +call hdf5_copy(ifile_s, name_s, ifile_d, name_d) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile\_s} & {\it type(c\_ptr)} & address of the HDF5 source file. \\ +\hline +{\tt name\_s} & {\it character*1023} & name of the source group or dataset to copy. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt ifile\_d} & {\it type(c\_ptr)} & address of the HDF5 destination file. \\ +\hline +{\tt name\_d} & {\it character*1023} & name of the destination group or dataset to delete. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsubsection{hdf5\_read\_data\index{hdf5ReadData}} + +Allocate an array of the correct type and size and copy a dataset from HDF5 file into memory. + +\begin{verbatim} + +call hdf5_read_data(ifile, name, data) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it type(c\_ptr)} & address of the HDF5 file. \\ +\hline +{\tt name} & {\it character*1023} & name of a dataset. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3.5cm}|p{9.5cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt data} & {\it class(:),allocatable} & array. Note: if the array is replaced by a single integer, real or characcter variable, +this variable has not the allocatable status.\\ +\hline +\end{tabular} + +\vskip 0.5cm + +\noindent The generic {\it class(:),allocatable} data type is selected among the following options: + +\vskip 0.2cm +\begin{tabular}{|p{10.5cm}|} +\hline +{\tt integer :: data} \\ +{\tt integer, allocatable, dimension(:) :: data} \\ +{\tt integer, allocatable, dimension(:,:) :: data} \\ +{\tt real(4) :: data} \\ +{\tt real(4), allocatable, dimension(:) :: data} \\ +{\tt real(4), allocatable, dimension(:,:) :: data} \\ +{\tt real(4), allocatable, dimension(:,:,:) :: data} \\ +{\tt real(4), allocatable, dimension(:,:,:,:) :: data} \\ +{\tt real(8) :: data} \\ +{\tt real(8), allocatable, dimension(:) :: data} \\ +{\tt real(8), allocatable, dimension(:,:) :: data} \\ +{\tt real(8), allocatable, dimension(:,:,:) :: data} \\ +{\tt real(8), allocatable, dimension(:,:,:,:) :: data} \\ +{\tt character(len=*) :: data} \\ +{\tt character(len=*), allocatable, dimension(:) :: data} \\ +\hline +\end{tabular} + +\vskip 0.4cm +\goodbreak + +\noindent Example 1: +\begin{verbatim} + use hdf5_wrap + type(c_ptr) :: ifile + integer :: ncalc + ... + call hdf5_read_data(ifile,"NCALS",ncalc) + write(*,*) 'ncalc=',ncalc +\end{verbatim} + +\vskip 0.3cm + +\noindent Example 2: +\begin{verbatim} + use hdf5_wrap + type(c_ptr) :: ifile + character(len=8), allocatable, dimension(:) :: isoname + ... + call hdf5_read_data(ifile,"/explicit/ISONAME",isoname) + write(*,*) 'isotope names:' + do i = 1, size(isoname) + write(*,*) trim(isoname(i)) + enddo + deallocate(isoname) +\end{verbatim} + +\vskip 0.3cm + +\noindent Example 3: +\begin{verbatim} + use hdf5_wrap + type(c_ptr) :: ifile + real(8), allocatable, dimension(:,:) :: yields_matrix + ... + call hdf5_read_data(ifile,"/physconst/FYIELDS",yields_matrix) + no_fiss=size(yields_matrix,1) + no_fp=size(yields_matrix,2) + write(*,*) 'no_fiss=',no_fiss,' no_fp=',no_fp + deallocate(yields_matrix) +\end{verbatim} + +\subsubsection{hdf5\_write\_data\index{hdf5WriteData}} + +Copy an array from memory into a HDF5 dataset. If dataset {\tt name} exists, it is replaced. + +\begin{verbatim} + +call hdf5_write_data(ifile, name, idata) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ifile} & {\it type(c\_ptr)} & address of the HDF5 file. \\ +\hline +{\tt name} & {\it character*1023} & name of a dataset. \\ +\hline +{\tt data} & {\it class(*)} & array.\\ +\hline +\end{tabular} + +\vskip 0.5cm +\goodbreak + +\noindent The generic {\it class(*)} data type is selected among the following options: + +\vskip 0.2cm +\begin{tabular}{|p{8.5cm}|} +\hline +{\tt integer,intent(in) :: data} \\ +{\tt integer,dimension(:) :: data} \\ +{\tt integer,dimension(:,:) :: data} \\ +{\tt real(4) :: data} \\ +{\tt real(4),dimension(:) :: data} \\ +{\tt real(4),dimension(:,:) :: data} \\ +{\tt real(4),dimension(:,:,:) :: data} \\ +{\tt real(4),dimension(:,:,:,:) :: data} \\ +{\tt real(8) :: data} \\ +{\tt real(8),dimension(:) :: data} \\ +{\tt real(8),dimension(:,:) :: data} \\ +{\tt real(8),dimension(:,:,:) :: data} \\ +{\tt real(8),dimension(:,:,:,:) :: data} \\ +{\tt character(len=*) :: data} \\ +{\tt character(len=*), dimension(:) :: data} \\ +\hline +\end{tabular} + +\vskip 0.4cm + +\noindent Example: +\begin{verbatim} + use hdf5_wrap + type(c_ptr) :: ifile + integer, allocatable, dimension(:) :: nitmaV1 + ... + allocate(nitmaV1(10)) + nitmaV1(:10)=100 + call hdf5_write_data(ifile, 'my_dummy_record', nitmaV1) + deallocate(nitmaV1) +\end{verbatim} + +\clearpage + +\section {The ISO Fortran CLE-2000 API} + +\subsection {Management of Fortran files outside CLE-2000} + +The {\tt KDROPN} utility is a general system for managing Fortran files in a software application. + +\subsubsection{KDROPN\index{KDROPN}} + +Function used to open a file and allocate its unit number. Allocate a unit number to file +name. If unit is already opened, returns its address. Sequential (formatted +or not) and direct access (DA) files are permitted. + +\begin{verbatim} + +IFILE=KDROPN(CUNAME,IACTIO,IUTYPE,LRDA) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt CUNAME} & {\it CHARACTER*(*)} & file name. If {\tt cuname}$=${\tt ' '}, use a default name. \\ +\hline +{\tt IACTIO} & {\it INTEGER} & action on file. +$=0$: to allocate a new file; +$=1$: to access and modify an existing file; +$=2$: to access an existing file in {\tt read-only} mode. \\ +\hline +{\tt IUTYPE} & {\it INTEGER} & file type. +$=1$: (not used); +$=2$: sequential unformatted; +$=3$: sequential formatted; +$=4$: direct access (DA) unformatted file. \\ +\hline +{\tt LRDA} & {\it INTEGER} & number of words in a DA record (used if {\tt IUTYPE} $= 4$). \\ +\hline +\end{tabular} + +\vskip 0.4cm +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt IFILE} & {\it INTEGER} & unit number of the allocated file. Equal to the error code if the allocation failed. \\ +\hline +\end{tabular} + +\subsubsection{KDRCLS\index{KDRCLS}} + +Function used to close a file and release its unit number. + +\begin{verbatim} + +IER=KDRCLS(IFILE,IACTIO) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IFILE} & {\it INTEGER} & unit number of the allocated file (as returned by {\tt KDROPN}). \\ +\hline +{\tt IACTIO} & {\it INTEGER} & action on file. +$=1$: to keep the file; +$=2$: to delete the file. \\ +\hline +\end{tabular} + +\vskip 0.4cm +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt IER} & {\it INTEGER} & error code. Equal to zero if the close is successful. \\ +\hline +\end{tabular} + +\clearpage + +\subsection {Management of word-addressable (KDI) files outside CLE-2000} + +The {\tt KDIOP} utility is a general system for managing word-addressable (KDI) files in a software application. + +\subsubsection{KDIOP\index{KDIOP}} + +Function used to open a KDI file and allocate its header. + +\begin{verbatim} + +MY_FILE=KDIOP(CUNAME,IACTIO) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt CUNAME} & {\it CHARACTER*(*)} & file name. \\ +\hline +{\tt IACTIO} & {\it INTEGER} & action on file. +$=0$: to allocate a new file; +$=1$: to access and modify an existing file; +$=2$: to access an existing file in {\tt read-only} mode. \\ +\hline +\end{tabular} + +\vskip 0.4cm +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt MY\_FILE} & {\it TYPE(C\_PTR)} & address of the allocated file. Equal to {\tt C\_NULL\_PTR} if the allocation failed. \\ +\hline +\end{tabular} + +\subsubsection{KDIGET\index{KDIGET}} + +Subroutine used to read a data array from a KDI file at offset {\tt IOFSET}. + +\begin{verbatim} + +CALL KDIGET(MY_FILE, IDATA, IOFSET, LENGTH) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt MY\_FILE} & {\it TYPE(C\_PTR)} & address of the allocated file (as returned by {\tt KDIOP}). \\ +\hline +{\tt IOFSET} & {\it INTEGER} & offset of the information in the KDI file. \\ +\hline +{\tt LENGTH} & {\it INTEGER} & length of the array of information, in unit of 32-bit words. \\ +\hline +\end{tabular} + +\vskip 0.4cm +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt IDATA} & {\it INTEGER} & array of information. \\ +\hline +\end{tabular} + +\subsubsection{KDIPUT\index{KDIPUT}} + +Subroutine used to store a data array in a KDI file at offset {\tt IOFSET}. + +\begin{verbatim} + +CALL KDIPUT(MY_FILE, IDATA, IOFSET, LENGTH) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt MY\_FILE} & {\it TYPE(C\_PTR)} & address of the allocated file (as returned by {\tt KDIOP}). \\ +\hline +{\tt IDATA} & {\it INTEGER} & array of information. \\ +\hline +{\tt IOFSET} & {\it INTEGER} & offset of the information in the KDI file. \\ +\hline +{\tt LENGTH} & {\it INTEGER} & length of the array of information, in unit of 32-bit words. \\ +\hline +\end{tabular} + +\subsubsection{KDICL\index{KDICL}} + +Function used to close a KDI file. + +\begin{verbatim} + +IER=KDICL(MY_FILE,IACTIO) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt MY\_FILE} & {\it TYPE(C\_PTR)} & address of the allocated file (as returned by {\tt KDIOP}). \\ +\hline +{\tt IACTIO} & {\it INTEGER} & action on file. +$=1$: to keep the file; +$=2$: to delete the file. \\ +\hline +\end{tabular} + +\vskip 0.4cm +\goodbreak +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt IER} & {\it INTEGER} & error code. Equal to zero if the close is successful. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsection {Management of Fortran and KDI files used as CLE-2000 parameters} + +CLE-2000 allows a module of the application software to exchange information using LCM objects and files. If the +application software is programmed in Fortran, the CLE-2000 driver expects all these parameters to be {\tt TYPE(C\_PTR)} +variables. The ISO Fortran CLE-2000 API defines a collection of four functions to wrap the {\tt KDROPN} utility +in such a way that Fortran files are referred by {\tt TYPE(C\_PTR)} variables. + +\subsubsection{FILOPN\index{FILOPN}} + +Function used to open a file and allocate its unit number. Allocate a unit number to file +name. If unit is already opened, returns its address. Word addressable (KDI), sequential (formatted +or not) and direct access (DA) files are permitted. +This function is a GANLIB wrapper for the {\tt KDROPN} and {\tt KDIOP} utilities. + +\begin{verbatim} + +IFILE=FILOPN(CUNAME,IACTIO,IUTYPE,LRDA) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt CUNAME} & {\it CHARACTER*(*)} & file name. If {\tt cuname}$=${\tt ' '}, use a default name. \\ +\hline +{\tt IACTIO} & {\it INTEGER} & action on file. +$=0$: to allocate a new file; +$=1$: to access and modify an existing file; +$=2$: to access an existing file in {\tt read-only} mode. \\ +\hline +{\tt IUTYPE} & {\it INTEGER} & file type. +$=1$: KDI word addressable file; +$=2$: sequential unformatted; +$=3$: sequential formatted; +$=4$: direct access (DA) unformatted file. \\ +\hline +{\tt LRDA} & {\it INTEGER} & number of words in a DA record (used if {\tt IUTYPE} $= 4$). \\ +\hline +\end{tabular} + +\vskip 0.4cm +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt IFILE} & {\it TYPE(FIL\_file)} & handle to the allocated file. Equal to {\tt C\_NULL\_PTR} if the allocation failed. \\ +\hline +\end{tabular} + +\subsubsection{FILCLS\index{FILCLS}} + +Function used to close a file and release its unit number. +This function is a GANLIB wrapper for the {\tt KDRCLS} and {\tt KDICL} utilities. + +\begin{verbatim} + +IER=FILCLS(MY_FILE,IACTIO) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt MY\_FILE} & {\it TYPE(FIL\_file)} & handle to the allocated file (as returned by {\tt FILOPN}). \\ +\hline +{\tt IACTIO} & {\it INTEGER} & action on file. +$=1$: to keep the file; +$=2$: to delete the file. \\ +\hline +\end{tabular} + +\vskip 0.4cm +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt IER} & {\it INTEGER} & error code. Equal to zero if the close is successful. \\ +\hline +\end{tabular} + +\subsubsection{FILUNIT\index{FILUNIT}} + +Function used to recover the Fortran file unit number + +\begin{verbatim} + +IUNIT=FILUNIT(FILE_PT) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameter:} \\ +\hline +{\tt FILE\_PT} & {\it TYPE(C\_PTR)} & address of the allocated file ({\tt c\_loc(MY\_FILE)}, as returned by {\tt FILOPN}). \\ +\hline +\end{tabular} + +\vskip 0.4cm +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt IUNIT} & {\it INTEGER} & file unit number. Equal to $-1$ in case of error. \\ +\hline +\end{tabular} + +\subsubsection{FILKDI\index{FILKDI}} + +Function used to recover the address of the KDI file. + +\begin{verbatim} + +KDI_PT=FILKDI(FILE_PT) +\end{verbatim} + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameter:} \\ +\hline +{\tt FILE\_PT} & {\it TYPE(C\_PTR)} & address of the allocated file ({\tt c\_loc(MY\_FILE)}, as returned by {\tt FILOPN}). \\ +\hline +\end{tabular} + +\vskip 0.4cm +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt KDI\_PT} & {\it TYPE(C\_PTR)} & address of the KDI file. Equal to {\tt C\_NULL\_PTR} if case of error. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsection {The main entry point for CLE-2000} + +Function {\tt KERNEL} is a Fortran wrapper around function {\tt cle2000\_c()} to serve as the main entry point for CLE-2000. +Function {\tt KERNEL} is specialized to the case where the application software is executed in stand-alone mode. It is +therefore limited to the simple case where a CLE-2000 procedure has no parameters and no in-out CLE-2000 variables. +Moreover, the main CLE-2000 procedure is recovered from the standard unit (i.e., from unit 5) and is assumed to have a {\tt .x2m} +suffix. This limitation is making sense as no multi-physics system is currently programmed in Fortran. + +\subsubsection{KERNEL\index{KERNEL}} + +The general specification of function {\tt KERNEL} is + +\begin{verbatim} + +IER=KERNEL(DUMMOD,IPRINT) +\end{verbatim} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt DUMMOD} & {\it EXTERNAL} & external C-interoperable Fortran-2003 function responsible for dispatching the execution among calculation modules. \\ +\hline +{\tt IPRINT} & {\it INTEGER} & print parameter (set to zero for no print). \\ +\hline +\end{tabular} + +\vskip 0.4cm +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameter:} \\ +\hline +{\tt IER} & {\it INTEGER} & error code. Equal to zero if the execution of {\tt KERNEL} is successful. \\ +\hline +\end{tabular} + +\subsubsection{DUMMOD\index{DUMMOD}} + +Function {\tt KERNEL} has one of its arguments that is a developer-defined external function. Function {\tt DUMMOD} is a C-interoperable Fortran-2003 function responsible for dispatching the execution among calculation modules. An instance of function {\tt DUMMOD} is implemented for +each Fortran application software using the GANLIB. + +\vskip 0.08cm + +A stand-alone GANLIB application can be set by using the following implementation of {\tt GANMOD} +\begin{verbatim} +! +!----------------------------------------------------------------------- +! +!Purpose: +! Dispatch to a calculation module in GANLIB. ANSI-C interoperable. +! +!Copyright: +! Copyright (C) 2009 Ecole Polytechnique de Montreal +! This library is free software; you can redistribute it and/or +! modify it under the terms of the GNU Lesser General Public +! License as published by the Free Software Foundation; either +! version 2.1 of the License, or (at your option) any later version. +! +!Author(s): A. Hebert +! +!----------------------------------------------------------------------- +! +integer(c_int) function GANMOD(cmodul, nentry, hentry, ientry, jentry, & + kentry, hparam_c) bind(c) +! + use GANLIB + implicit none +!---- +! subroutine arguments +!---- + character(kind=c_char), dimension(*) :: cmodul + integer(c_int), value :: nentry + character(kind=c_char), dimension(13,*) :: hentry + integer(c_int), dimension(nentry) :: ientry, jentry + type(c_ptr), dimension(nentry) :: kentry + character(kind=c_char), dimension(73,*) :: hparam_c +!---- +! local variables +!---- + integer :: i, ier + character :: hmodul*12, hsmg*131, hparam*72 + character(len=12), allocatable :: hentry_f(:) + type(c_ptr) :: my_file + integer, external :: GANDRV +! + allocate(hentry_f(nentry)) + call STRFIL(hmodul, cmodul) + do i=1,nentry + call STRFIL(hentry_f(i), hentry(1,i)) + if(ientry(i) >= 3) then +! open a Fortran file. + call STRFIL(hparam, hparam_c(1,i)) + my_file=FILOPN(hparam,jentry(i),ientry(i)-1,0) + if(.not.c_associated(my_file)) then + write(hsmg,'(29hGANMOD: unable to open file '',a12,2h''.)') hentry_f(i) + call XABORT(hsmg) + endif + kentry(i)=my_file + endif + enddo +! ---------------------------------------------------------- + GANMOD=GANDRV(hmodul,nentry,hentry_f,ientry,jentry,kentry) +! ---------------------------------------------------------- + do i=1,nentry + if(ientry(i) >= 3) then +! close a Fortran file. + ier=FILCLS(kentry(i),1) + if(ier < 0) then + write(hsmg,'(30hGANMOD: unable to close file '',a12,2h''.)') hentry_f(i) + call XABORT(hsmg) + endif + endif + enddo + deallocate(hentry_f) + flush(6) + return +end function GANMOD +\end{verbatim} + +\noindent with function {\tt GANDRV} implemented as +\begin{verbatim} +integer function GANDRV(hmodul,nentry,hentry,ientry,jentry,kentry) +! +!----------------------------------------------------------------------- +! +!Purpose: +! standard utility operator driver for Ganlib. +! +!Copyright: +! Copyright (C) 2002 Ecole Polytechnique de Montreal +! This library is free software; you can redistribute it and/or +! modify it under the terms of the GNU Lesser General Public +! License as published by the Free Software Foundation; either +! version 2.1 of the License, or (at your option) any later version +! +!Author(s): A. Hebert +! +!Parameters: input/output +! hmodul name of the operator. +! nentry number of LCM objects or files used by the operator. +! hentry name of each LCM object or file. +! ientry type of each LCM object or file: +! =1 LCM memory object; =2 XSM file; =3 sequential binary file; +! =4 sequential ascii file. +! jentry access of each LCM object or file: +! =0 the LCM object or file is created; +! =1 the LCM object or file is open for modifications; +! =2 the LCM object or file is open in read-only mode. +! kentry LCM object address or file unit number. +! +!Parameters: output +! kdrstd completion flag (=0: operator hmodul exists; =1: does not exists). +! +!----------------------------------------------------------------------- +! +!---- +! subroutine arguments +!---- + use GANLIB + integer nentry + character hmodul*(*),hentry(nentry)*12 + integer ientry(nentry),jentry(nentry) + type(c_ptr) kentry(nentry) +! + GANDRV=0 + if(hmodul == 'EQU:' )then +! standard equality module. + call DRVEQU(nentry,hentry,ientry,jentry,kentry) + else if(hmodul == 'GREP:') then +! standard grep module. + call DRVGRP(nentry,hentry,ientry,jentry,kentry) + else if(hmodul == 'UTL:') then +! standard LCM/XSM utility module. + call DRVUTL(nentry,hentry,ientry,jentry,kentry) + else if(hmodul == 'ADD:') then +! standard addition module. + call DRVADD(nentry,hentry,ientry,jentry,kentry) + else if(hmodul == 'MPX:') then +! standard multiplication module. + call DRVMPX(nentry,hentry,ientry,jentry,kentry) + else if(hmodul == 'STAT:') then +! standard compare module. + call DRVSTA(nentry,hentry,ientry,jentry,kentry) + else if(hmodul == 'BACKUP:') then +! standard backup module. + call DRVBAC(nentry,hentry,ientry,jentry,kentry) + else if(hmodul == 'RECOVER:') then +! standard recovery module. + call DRVREC(nentry,hentry,ientry,jentry,kentry) + else if(hmodul == 'FIND0:') then +! standard module to find zero of a continuous function. + call DRV000(nentry,hentry,ientry,jentry,kentry) + else if(hmodul == 'MSTR:') then +! manage user-defined structures. + call MSTR(nentry,hentry,ientry,jentry,kentry) + else if(hmodul == 'MODUL1:') then +! user-defined module. + call DRVMO1(nentry,hentry,ientry,jentry,kentry) + else if(hmodul == 'ABORT:') then +! requested abort. + call XABORT('GANDRV: requested abort.') + else + GANDRV=1 + endif + return +end function GANDRV +\end{verbatim} + +\vskip 0.8cm + +\subsection {The free-format input reader} + +Subroutines {\tt REDOPN}, {\tt REDGET}, {\tt REDPUT} and {\tt REDCLS} are Fortran wrappers around ANSI~C functions {\tt redopn\_c()}, {\tt redget\_c()}, {\tt redput\_c()} and {\tt redcls\_c()}. +Only {\tt REDGET} and {\tt REDPUT} are expected to be used in an application software. + +\subsubsection{REDOPN\index{REDOPN}} + +Subroutine {\tt REDOPN} is called to open the input reader. The general specification of function {\tt REDOPN} is + +\begin{verbatim} + +CALL REDOPN(IINP1,IOUT1,NREC) +\end{verbatim} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2.5cm}|p{10.5cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt IINP1} & {\it TYPE(C\_PTR)} & KDI object containing the CLE-2000 input data.\\ +\hline +{\tt IOUT1} & {\it INTEGER} & unit number of the sequential {\sc ascii} file used to write execution messages. Can be set to 6 for standard output. \\ +\hline +{\tt NREC} & {\it INTEGER} & record index where reading occurs. Can be set to zero at first call. Set to the value returned by {\tt REDCLS} at subsequent calls.\\ +\hline +\end{tabular} + +\subsubsection{REDGET\index{REDGET}} + +Subroutine {\tt REDGET} is called within modules of the application software to recover the module-specific input data. +The general specification of function {\tt REDGET} is + +\begin{verbatim} + +CALL REDGET(ITYP,NITMA,FLOTT,TEXT,DFLOT) +\end{verbatim} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt ITYP} & {\it INTEGER} & type of the CLE-2000 variable. A negative value indicates that the variable is to be computed by the application software and returned towards CLE-2000 using a call to {\tt redput\_c}. $=\pm 1$: integer type; +$=\pm 2$: real (single precision) type; +$=\pm 3$: string type; +$=\pm 4$: double precision type; +$=\pm 5$: logical type.\\ +\hline +{\tt NITMA} & {\it INTEGER} & integer input value when {\tt ITYP} $= 1$ or $= 5$; number of characters when {\tt ITYP} $= 3$. \\ +\hline +{\tt FLOTT} & {\it REAL} & real input value when {\tt ITYP} $= 2$. \\ +\hline +{\tt TEXT} & {\it CHARACTER*(*)} & character string input value when {\tt ITYP} $= 3$. \\ +\hline +{\tt DFLOT} & {\it DOUBLE PRECISION} & double precision input value when {\tt ITYP} $= 4$. \\ +\hline +\end{tabular} + +\subsubsection{REDPUT\index{REDPUT}} + +Subroutine {\tt REDPUT} is called within modules of the application software to make information computed by the module available as CLE-2000 variables to the CLE-2000 procedure. +The application software must first call {\tt REDGET} and obtain a negative value of {\tt ITYP}. A call to {\tt REDPUT} is next performed with its first parameter set to +$-${\tt ITYP} (now, a positive value) and with the corresponding value of the parameter. +The general specification of function {\tt REDPUT} is + +\begin{verbatim} + +CALL REDPUT(ITYP,NITMA,FLOTT,TEXT,DFLOT) +\end{verbatim} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{3cm}|p{10cm}|} +\hline +\multicolumn{3}{|c|}{\bf input parameters:} \\ +\hline +{\tt ITYP} & {\it INTEGER} & type of the CLE-2000 variable. $=1$: integer type; +$=2$: real (single precision) type; +$=3$: string type; +$=4$: double precision type; +$=5$: logical type.\\ +\hline +{\tt NITMA} & {\it INTEGER} & integer output value when {\tt ITYP} $= 1$ or $= 5$; number of characters when {\tt ITYP} $= 3$. \\ +\hline +{\tt FLOTT} & {\it REAL} & real output value when {\tt ITYP} $= 2$. \\ +\hline +{\tt TEXT} & {\it CHARACTER*(*)} & character string output value when {\tt ITYP} $= 3$. \\ +\hline +{\tt DFLOT} & {\it DOUBLE PRECISION} & double precision output value when {\tt ITYP} $= 4$. \\ +\hline +\end{tabular} + +\subsubsection{REDCLS\index{REDCLS}} + +Subroutine {\tt REDCLS} is called to close the input reader. +The general specification of function {\tt REDCLS} is + +\begin{verbatim} + +CALL REDCLS(IINP1,IOUT1,NREC) +\end{verbatim} + +\vskip 0.8cm + +\noindent +\begin{tabular}{|p{1.5cm}|p{2.5cm}|p{10.5cm}|} +\hline +\multicolumn{3}{|c|}{\bf output parameters:} \\ +\hline +{\tt IINP1} & {\it TYPE(C\_PTR)} & KDI object containing the CLE-2000 input data.\\ +\hline +{\tt IOUT1} & {\it INTEGER} & unit number of the sequential {\sc ascii} file used to write execution messages. \\ +\hline +{\tt NREC} & {\it INTEGER} & record index where reading occurs. \\ +\hline +\end{tabular} + +\section{The Python3 {\sc lcm} API} + +The Python3 {\sc lcm} API, or Py{\sc lcm} API, is a component of the PyGan library, available in the Version5 distribution. +PyGan is a Python3 library made of three classes, as depicted in Fig.~\ref{fig:PyGan}, so as to encapsulate Ganlib5 capabilities. +The extension module {\tt lcm} contains a class providing {\sl in-out} support of {\sl hererogeneous lists} and +{\sl associative tables}, as implemented in the {\sc lcm} API of Sect.~\ref{sect:lcmapiC}, to Python3 users. + +\begin{figure}[htbp] +\begin{center} +\epsfxsize=2.4cm +\centerline{ \epsffile{cle2000_hierarchy_uml.eps}} +\parbox{12cm}{\caption{The PyGan class model.}\label{fig:PyGan}} +\end{center} +\end{figure} + +\vskip 0.2cm + +{\sl Associative tables} in Ganlib5 are similar to Python dictionaries and can be handled +as such in the Python3 dataset. Each element of an associative table + is associated with a string. +{\sl Hererogeneous lists} in Ganlib5 are similar to Python lists and therefore are an ordered set +of elements. Each list element is identified by an index and contains +an information block. As for the information blocks, they are either +strings, or NumPy arrays.\opcite {npython} +A PyLCM object can physically be, either in memory or located on a {\sc xsm} file. + +\vskip 0.2cm + +{\sl LCM Python bindings} allow Python to use the API +{\sc lcm} transparently. Associative tables and heterogeneous lists are +represented as Python dictionaries and Python lists, respectively. The +information blocks in integer and floating point {\sc lcm} or {\sc xsm} arrays +are automatically transformed into {\sl numpy} arrays. +Methods of the {\sc lcm} API have been adapted to manage the use of files. + +\vskip 0.2cm + +The compilation and link edition of the API require the definition of a UNIX environment variable {\tt FORTRANPATH} pointing towards the {\tt libgfortran.a} library +compatible with your operating system. On a OSX operating system, this variable may be set as +\begin{verbatim} +export FORTRANPATH=/usr/local/lib/gcc/11/ # contains libgfortran.a +\end{verbatim} +\noindent On a Linux {\tt x86\_64} operating system, the environment variable is set as +\begin{verbatim} +export FORTRANPATH=/usr/lib/gcc/x86\_64-redhat-linux/4.8.5/ # contains libgfortran.so +\end{verbatim} +\noindent On a Linux {\tt aarm} operating system, the environment variable is set as +\begin{verbatim} +export FORTRANPATH="/usr/lib/gcc/aarch64-linux-gnu/9/" # contains libgfortran.so +\end{verbatim} + +\vskip 0.8cm + +\subsection{Structures} + +\begin{description} +\item[Associative tables] An associative table is equivalent to a Python dictionary. +Each element of a table is an association between a string of 12 +characters and an information block (scalar value or vector +of a given type). Associative tables can contain lists or other tables +associative and thus form a tree structure. + +\item[Heterogeneous lists] A list is an ordered set of elements of heterogeneous types. Each element is +accessed by an integer index and contains an information block. +Lists can contain scalar values or elementary information blocks, +as written in the next section. Lists can also contain +child lists or other associative tables. + +\item[Elementary information blocks] An elementary information block constitutes a set of values whose Dragon5/Donjon5 module +needs to perform the calculation. Unlike tables or lists +which only allow you to order information, the elementary information block is the useful data +to be used in a calculation. A block of information is either strings of characters, +either numerical arrays (array) with one dimension (similar to {\sl numpy} arrays). +The elementary blocks of information belong to one of the following types: + +\begin{tabular} {| p {3.0cm} | p {11.5cm} |} +\hline +Int array & An item of the associative table can correspond to an array of +32-bit integers (type~{\tt l} from NumPy).\\ +Float32 array & An item of the associative table can correspond to an array of +32-bit reals (type~{\tt f} from NumPy).\\ +Character array & An item of the associative table can correspond to an array of +of characters (array of type {\tt Char} from Python).\\ +Float64 array & An item of the associative table can correspond to an array of +64-bit reals (type~{\tt d} from NumPy) \\ +Logical32 array & An item of the associative table can correspond to an array of +32-bit integers (type~{\tt i} from NumPy containing 1/0 to denote true/false).\\ +Complex32 array & An associative table item can correspond to an array of of 64-bit complex variables (type~{\tt F} from NumPy).\\ +\hline +\end{tabular} + +\end{description} + +\vskip 0.8cm + +\subsection{LCM object Python API} \label {sect: APIP} + +The {\tt lcm} module, accessible from Python3, is imported by the command +\begin{verbatim} +import lcm +\end{verbatim} +It has one constructor: {\tt lcm.new()}, used to create an {\sl object instance} {\tt o}. + +\subsubsection{Attribute Variables \index {attribute variables}} + +A PyLCM object {\tt o} contains six attribute variables. The first five are read-only; {\tt o.\_impx} has read-write access. + +\begin {description} +\item [{\tt o.\_name}] Python (len=72) name of the PyLCM object containing the root +\item [{\tt o.\_directory}] Name (len=12) of the current directory. $=$ {\tt '/'} for the +root directory. This attribute variable is undefined for +lists and for files created by {\tt lcm.file()}. +\item [{\tt o.\_long}] $ = - 1 $: associative table; $ \ge 1 $: heterogeneous list of length {\tt o.\_long}. +\item [{\tt o.\_type}] Type of the object. $ = 1 $: LCM object in memory +(similar to a Python dictionary); $ = 2 $: persistent LCM object (of type {\sc xsm} file); +$ = 3 $: binary sequential file; $ = 4 $: sequential {\sc ascii} file; $=$ 5: +direct access file; $=$ 6: HDF5 file. +\item [{\tt o.\_access}] Access mode of the object. $ = 0 $: closed object (i.e., not +accessible); $ = 1 $: object in modification mode; $ = 2 $: object in read mode +(read-only). +\item [{\tt o.\_impx}] Edition index for the object ($=0$ for minimum printouts). +\end {description} + +\subsubsection{lcm.new()} + +This method is used to create a PyLCM object made up of an associative table or of a file. A {\sc lcm} object is a {\sl memory-resident} structure +implemented with the {\sc lcm} API of Sect.~\ref{sect:lcmapiC}. A {\sc xsm} object store similar information in a direct access file and is implemented with the same API. This object occupies very little memory space and can be +used to store very large objects whose maximum dimension is not +limited only by the available disk space. In general, we can always replace +a ``memory'' PyLCM object by a persistent PyLCM object (at the cost of a certain +increase in CPU time). A persistent PyLCM object can +also be used as archiving medium for a ``memory'' PyLCM object. + +\vskip 0.2cm + +This {\tt new} constructor is used to perform the following actions: +\begin{itemize} +\item for creating a new empty PyLCM object; +\item for retrieving a file made by a Dragon5/Donjon5 module or to transfer a file to a Dragon5/Donjon5 module. At the end of this call, the variable +attribute {\tt o.\_access} is equal to $1$ or $2$. The PyLCM object thus created does not have +the {\tt \_directory} and {\tt \_long} attributes. It does not own the {\tt keys()}, +{\tt lib()}, {\tt rep()}, {\tt lis()} and {\tt copy()} methods; +\item to create a PyLCM object containing a memory or persistent LCM object from the serialized information contained in a sequential file (import action); +\item to serialize the content of an existing PyLCM object containing a memory or persistent LCM object into a sequential file (export action); +\item to perform a deep copy of an existing PyLCM object containing a memory or persistent LCM object into another. +\end{itemize} + +\begin{verbatim} +o = lcm.new(type, [name], [iact], [pyobj], [lrda], [impx]) +\end{verbatim} + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf input parameter:} \\ +\hline +{\tt type} & {\it string} & type of the PyLCM object that will be created. $=$ {\tt LCM} +object {\sc lcm} in memory; $=$ {\tt XSM} persistent object of type {\sc xsm}; $=$ {\tt BINARY} +sequential binary file; $=$ {\tt ASCII}; sequential {\sc ascii} file ; +$=$ {\tt DA}; direct access file; $=$ {\tt HDF5}; HDF5 file; $=$ {\tt LCM\_IMP} +object {\sc lcm} in memory built from the file "{\tt \_}"$ + $ {\tt name} containing +a serialized PyLCM object or from a deep copy of object {\tt pyobj}; $=$ {\tt XSM\_INP} persistent object of type {\sc xsm} built +from the file "{\tt \_}"$ + $ {\tt name} containing a serialized PyLCM object or from a deep copy of object {\tt pyobj}. The serialized +PyLCM object is assumed to be a sequential binary file if its extension is {\tt .bin}; otherwise, it is assumed to be a sequential {\sc ascii} file.\\ +{\tt name} & {\it string} & name (len=72) of the PyLCM object that will be created. By default, a name is generated automatically +from the address of the PyLCM object or from the name of object {\tt pyobj}. \\ +{\tt iact} & {\it int} &access mode. $=0$: a new object is created (default); $=1$: existing object content open in read/write mode + $=$2: existing object content open in read-only mode. \\ +{\tt pyobj} & {\it LCM} & existing PyLCM object containing a memory or persistent LCM object. \\ +{\tt lrda} & {\it int} & number of words in a direct-access record +(only used if {\tt type} $ = $ {\tt DA}). By default, {\tt lrda} $= 128$. \\ +{\tt impx} & {\it int} & edition index for the object ($=0$ for minimum printouts). \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf output parameter:} \\ +\hline +{\tt o} & {\it LCM} & PyLCM object created. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsubsection{o.keys()} + +This method allows you to create a Python list containing the key names of the associative table +(memory or {\sc xsm} file). This method is not available for FILE objects. + +\begin{verbatim} +o2 = o.keys() +\end{verbatim} + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf output parameter:} \\ +\hline +{\tt o2} & {\it list} & Python list containing the keys of the associative table. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsubsection{o.lib()} + +This method allows you to print the table-of-contents of a PyLCM object (memory or {\sc xsm} file). This method is not available for +FILE objects. + +\vskip 0.8cm + +\subsubsection{o.val()} + +This method allows you to validate the content of a PyLCM object (memory or {\sc xsm} file). This method is not available for +FILE objects. + +\vskip 0.8cm + +\subsubsection{o.close()} + +This method allows you to close a PyLCM object (memory or {\sc xsm} file) without erasing its contents. This method is not available for +FILE objects. + +\vskip 0.8cm + +\subsubsection{o.erase()} + +This method allows you to erase the contents of a PyLCM object (memory or {\sc xsm} file). + +\vskip 0.8cm + +\subsubsection{o.len()} + +This method returns the lenght of the active directory in a PyLCM object (memory or {\sc xsm} file). This method is not available for FILE objects. + +\begin{verbatim} +length = o.len() +\end{verbatim} + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf output parameter:} \\ +\hline +{\tt lenght} & {\it int} & length of the heterogeneous list; equal to $-1$ if the active directory is an associative table. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsubsection{o.rep()} + +This method allows you to create an daughter associative table in the associative table (dictionary) or the list {\tt o}. This method is not available for +FILE objects. + +\begin{verbatim} +[o2 =] o.rep({key | iset}) +\end{verbatim} + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf input parameters:} \\ +\hline +{\tt key} & {\it string} & if {\tt o} is a table; compulsory string (len $=12$) corresponding to the key of the daughter associative table \\ +\hline +{\tt iset} & {\it int} & if {\tt o} is a list; index in the list {\tt o} where we find +the daughter associative table. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf output parameter:} \\ +\hline +{\tt o2} & {\it LCM} & daughter associative table. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsubsection{o.lis()} + +This method allows you to create a nested child list in the associative table (dictionary) or +the {\tt o} list. The first element of the child list is located at index [0]. +This method is not available for FILE objects. + +\begin{verbatim} +[o2 =] o.lis({key | iset}, ilong) +\end{verbatim} + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf input parameters:} \\ +\hline +{\tt key} & {\it string} & if {\tt o} is a table; compulsory string (len $=12$) corresponding to the key +from the daughter list. \\ +\hline +{\tt iset} & {\it int} & if {\tt o} is a list; index in the list {\tt o} where we find the list daughter list. \\ +\hline +{\tt ilong} & {\it int} & positive integer (required) which gives the length of the list daughter list. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf output parameter:} \\ +\hline +{\tt o2} & {\it LCM} & daughter list. \\ +\hline +\end{tabular} + +\section{The Python3 CLE-2000 API} + +The Python3 CLE-2000 API is a component of the PyGAN library, available in the Version5 distribution. It contains two extension modules, each of them containing a class: {\sc lifo} and {\sc cle2000}, both implemented using the CLE-2000 API of Sect.~\ref{sect:cle2000apiC}. + +\vskip 0.8cm + +\subsection{The lifo class} + +The {\sc lifo} extension module allows {\sl in-out} access to the {\sc lifo} objects ("last in first out" stack) used by CLE-2000. + +The {\tt lifo} module, accessible from Python3, is imported by the command +\begin{verbatim} +import lifo +\end{verbatim} +It has one constructor: {\tt lifo.new()}, used to create an {\sl object instance} {\tt o}. + +\subsubsection{Attribute Variables \index {attribute variables}} + +A {\sc lifo} object {\tt o} contains one read-write attribute variable: + +\begin {description} +\item [{\tt o.\_impx}] Edition index for the object ($=0$ for minimum printouts). +\end {description} + +\subsubsection{lifo.new()} + +This method is used to create a {\sc lifo} object made up of an empty stack. A {\sc lifo} stack is a memory-resident structure +implemented with the CLE-2000 API of Sect.~\ref{sect:cle2000apiC}. + +\begin{verbatim} +o = lifo.new([impx]) +\end{verbatim} + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf input parameter:} \\ +\hline +{\tt impx} & {\it int} & edition index for the object ($=0$ for minimum printouts). \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf output parameter:} \\ +\hline +{\tt o} & {\it LIFO} & {\sc lifo} object created. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsubsection{o.lib()} + +This method allows you to print the table-of-contents of a {\sc lifo} object. + +\begin{verbatim} +o.lib() +\end{verbatim} + +\vskip 0.8cm + +\subsubsection{o.push()} + +This method is used to push a new node into the {\sc lifo} object. The new node is a Python3 object of specific type. Empty nodes have defined names and types but no assigned value. The number of nodes stored in the {\sc lifo} object is increased by one. + +\begin{verbatim} +o.push(data) +\end{verbatim} + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf input parameter:} \\ +\hline +{\tt data} & {\it object} & Python3 object to push in the stack. The following Python3 types are allowed: integer variable (int), character string (str), double-precision variable (float), +logical variable (bool), PyLCM object, empty variable of type int, str, float or bool.\\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsubsection{o.pushEmpty()} + +This method is used to push an empty node into the {\sc lifo} object. Empty nodes have defined names and types but no assigned value. The number of nodes stored in the {\sc lifo} object is increased by one. + +\begin{verbatim} +o.pushEmpty(name, [type]) +\end{verbatim} + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf input parameter:} \\ +\hline +{\tt name} & {\it string} & character (len=72) name of the empty node. Used to name the PyLCM object. \\ +{\tt type} & {\it string} & character type of the empty object to push in the stack. The following character types are allowed: ``{\tt I}'': integer variable, ``{\tt S}'': character string, ``{\tt D}'': double precision variable, ``{\tt B}'': +logical variable, ``{\tt LCM}'': PyLCM object of type {\sc lcm}, ``{\tt XSM}'': PyLCM object of type {\sc xsm}, ``{\tt BINARY}'': PyLCM object containing a sequential binary file, ``{\tt ASCII}'': PyLCM object containing a sqquential {\sc ascii} file, +``{\tt DA}'': PyLCM object containing a direct access file, ``{\tt HDF5}'': PyLCM object containing a HDF5 file. By default, {\tt type} $=$ ``{\tt LCM}''.\\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsubsection{o.pop()} + +This method is used to pop a node from the {\sc lifo} object. The number of nodes stored in the {\sc lifo} object is decreased by one. + +\begin{verbatim} +[obj =] o.pop() +\end{verbatim} + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf output parameter:} \\ +\hline +{\tt obj} & {\it object} & Python3 object contained in the node. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsubsection{o.node()} + +This method is used to recover a node from the {\sc lifo} object without changing its content. The number of nodes stored in the {\sc lifo} object is left unchanged. + +\begin{verbatim} +obj = o.node({ ipos | name }) +\end{verbatim} + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf input parameter:} \\ +\hline +{\tt ipos} & {\it int} & position of the node in the stack (the first node is at position 0). \\ +{\tt name} & {\it string} & name (len=72) of the node in the stack. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf output parameter:} \\ +\hline +{\tt obj} & {\it object} & Python3 object contained in the node. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsubsection{o.getMax()} + +This method returns the number of nodes in a {\sc lifo} object. + +\begin{verbatim} +length = o.getMax() +\end{verbatim} + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf output parameter:} \\ +\hline +{\tt lenght} & {\it int} & number of nodes in the {\sc lifo} object.\\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsubsection{o.OSname()} + +This method returns the name of a node. + +\begin{verbatim} +name = o.OSname(ipos) +\end{verbatim} + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf input parameter:} \\ +\hline +{\tt ipos} & {\it int} & position of the node in the stack (the first node is at position 0). \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf output parameter:} \\ +\hline +{\tt name} & {\it string} & name (len=72) of the node.\\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsection{The cle2000 class} + +The {\sc cle2000} extension module allows to encapsulate Ganlib5, Trivac5, Dragon5 or Donjon5 {\sl and} to execute a CLE-2000 procedure, itself calling modules of these codes or sub-CLE-2000 procedures. This extension module is based on the CLE-2000 API of Sect.~\ref{sect:cle2000apiC}. + +The {\tt cle2000} module, accessible from Python3, is imported by the command +\begin{verbatim} +import cle2000 +\end{verbatim} +It has one constructor: {\tt cle2000.new()}, used to create an {\sl object instance} {\tt o}. + +\subsubsection{Attribute Variables} + +A {\sc cle2000} object {\tt o} contains one read-write attribute variable: + +\begin {description} +\item [{\tt o.\_impx}] Edition index for the object ($=0$ for minimum printouts). +\end {description} + +\subsubsection{cle2000.new()} + +This method is used to create a {\sc cle2000} object including an {\tt exec()} method for executing a CLE-2000 specific procedure. + +\begin{verbatim} +o = cle2000.new(procname, olifo, [impx]) +\end{verbatim} + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf input parameter:} \\ +\hline +{\tt procname} & {\it string} & name (len=12) of the CLE-2000 procedure. The OS filename of the procedure is {\tt procname} $+$ ``{\tt .c2m}'' \\ +{\tt olifo} & {\it LIFO} &{\sc lifo} object containing the procedure parameters. The {\sc lifo} object can be empty at construction time and can be filled before the call to the {\tt exec()} method.\\ +{\tt impx} & {\it int} & edition index for the object ($=0$ for minimum printouts). \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf output parameter:} \\ +\hline +{\tt o} & {\it CLE2000} & {\sc cle2000} object created. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsubsection{o.exec()} + +This method execute the procedure. + +\begin{verbatim} +o.exec() +\end{verbatim} + +\vskip 0.8cm + +\subsubsection{o.getLifo()} + +This method returns the {\sl lifo} stack containing the procedure parameters. + +\begin{verbatim} +olifo = o.getLifo() +\end{verbatim} + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf output parameter:} \\ +\hline +{\tt olifo} & {\it LIFO} & {\sc lifo} object. \\ +\hline +\end{tabular} + +\vskip 0.8cm + +\subsubsection{o.putLifo()} + +This method put a new {\sc lifo} stack in the procedure. + +\begin{verbatim} +o.putLifo(olifo) +\end{verbatim} + +\noindent +\begin{tabular} {| p {1.5cm} | p {1.5cm} | p {11.5cm} |} +\hline +\multicolumn {3} {| c |} {\bf input parameter:} \\ +\hline +{\tt olifo} & {\it LIFO} & {\sc lifo} object. \\ +\hline +\end{tabular} diff --git a/doc/IGE332/cle2000_hierarchy_uml.eps b/doc/IGE332/cle2000_hierarchy_uml.eps new file mode 100644 index 0000000..0b099bc Binary files /dev/null and b/doc/IGE332/cle2000_hierarchy_uml.eps differ diff --git a/doc/IGE332/install b/doc/IGE332/install new file mode 100755 index 0000000..57e899e --- /dev/null +++ b/doc/IGE332/install @@ -0,0 +1,45 @@ +#!/bin/csh +# +# author : A. Hebert +# use : install +# +chmod 755 . +if (-e /usr/local/common/TeX.csh) then + source /usr/local/common/TeX.csh +endif +# +if (-e $1.tex) then + set nom_fich = $1 +else + set nom_fich = `basename $PWD` +endif +echo "begin typesetting file" $nom_fich.tex +latex $nom_fich.tex +echo "first typesetting completed" +if ( -f $nom_fich.idx ) then + set header = $nom_fich + set core = ` echo $nom_fich | sed -e's/header_//' ` + cp $header.idx header_tmp.idx + makeindex header_tmp.idx + if ( -f header_tmp.tex ) /bin/rm header_tmp.tex + if ( -f tmp.tex ) /bin/rm tmp.tex + cp $header.tex header_tmp.tex + cp $core.tex tmp.tex + latex header_tmp.tex > /dev/null + latex header_tmp.tex > /dev/null + latex header_tmp.tex > /dev/null + dvips -f header_tmp.dvi -o header_tmp.ps + mv header_tmp.ps $nom_fich.ps +else + dvips -f $nom_fich.dvi -o $nom_fich.ps +endif +/bin/rm header_tmp.* tmp.tex +/bin/rm *.aux +echo "create pdf file" $nom_fich.pdf +ps2pdf $nom_fich.ps +echo "pdf file produced" +open $nom_fich.pdf +/bin/rm $nom_fich.dvi $nom_fich.ps $nom_fich.idx $nom_fich.log +/bin/rm $nom_fich.toc $nom_fich.out +/bin/rm *.[cx]2m +exit diff --git a/doc/IGE332/multiphysics.eps b/doc/IGE332/multiphysics.eps new file mode 100644 index 0000000..abad562 --- /dev/null +++ b/doc/IGE332/multiphysics.eps @@ -0,0 +1,5487 @@ +%!PS-Adobe-3.1 EPSF-3.0 +%ADO_DSC_Encoding: MacOS Roman +%%Title: multiphysics.eps +%%Creator: Adobe Illustrator(R) 13.0 +%%For: Alain Hebert +%%CreationDate: 6/16/09 +%%BoundingBox: 0 0 424 275 +%%HiResBoundingBox: 0 0 424 275 +%%CropBox: 0 0 424 275 +%%LanguageLevel: 2 +%%DocumentData: Clean7Bit +%ADOBeginClientInjection: DocumentHeader "AI11EPS" +%%AI8_CreatorVersion: 13.0.2 %AI9_PrintingDataBegin %ADO_BuildNumber: Adobe Illustrator(R) 13.0.2 x434 R agm 4.4379 ct 5.1039 %ADO_ContainsXMP: MainFirst %AI7_Thumbnail: 128 84 8 %%BeginData: 8044 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C457DA8A884A8A8A884A8A8A884A8A8A884A8A8A884A8A8A884A8A8A8 %84A8A8A884A8A8A884A8A8A884A8A8A884A8A8A884A8A8A884A8A8A884A8 %A8A884A8A8A884A8A8A884A8A8A884A8A8A884A8A8A884A8A8A884A8A8A8 %84A8A8A884A8A8A884A8A8A884A8A8A884A8A8A884A8A8A884A8A8A884A8 %A8A884A8A8A884A8A8A87D7EFD7EFFA8A8FD7EFFA87DFD7EFFA8A8FD7EFF %A87DFD57FFA8FFA8A884A884A8A8FD1EFFA8A8FD54FFA8A87DFD04A8FFA8 %FFA8A884A87DFD1BFF7D7DFD51FFA8847DA8A8FD0BFFA8A87DA87DFD18FF %A8A8FD50FF7DA8A8FD12FFA97DA8FD16FF847DFD4EFFA87DFD17FFA884A8 %FD14FFA8A8FD4CFFA884A8FD1AFFA87DFD13FFA87DFD0DFF52FF527DA87D %A8A8527D7EFF527D7DA87DA87D7D52A87D7D7DA852A8FF7DA87D537D527D %7DFF7D7D52FF7D7E527D7D7D527D7DA8A8FD09FFA87DA8FD1CFFA87DFD12 %FFA8A8FD0DFF527D2752A82EA8FF7D84537D527D52527D7D527D7D7D527D %FF7D537DFF277D527D525252A8FF5253FF7D527D7DA8527DFF275252FD09 %FFA8A8FD20FF7DFD11FFA87DFD0DFF5252527D527D52A87DA852A852FF53 %7D53A87DA8527D527D7D7D527D7D7D5259FF7D7DA852A8527D7D7D527D52 %A852FD047D52A8FD07FF84A8FD0EFFA8FFA8A8A8FFAFFD0DFF59FD10FFA8 %A8FD13FFA8A8FD0CFFAFFFFFA8FD09FFA9FFFFA8A8FD09FFA8AFFD0AFFA8 %7EFD0CFF7EA8A8A884FFA8A87DA87EA8FD0CFF7DFD0FFF7D7DFD47FFA87D %FD0AFFA8A87DA8A8FD09FF7E7E7DFD0AFFA87DFD0EFFA8A8FD47FFA8A8FD %09FFA8A8A8FD0EFFA87DFD0AFFA8A8FD0DFF847DFD46FFA87DFD09FF7DA8 %FD12FF7DA8FD09FF7EA8FD0CFFA8A8FD46FF7DFD09FF7DFD15FF7EA8FD08 %FFA8A8FD0CFFA87DFD45FF7DA8FD08FF7DA8FD16FF7DA8FD08FF7DA9FD0B %FFA8A8FD45FFA8FD08FF7DA8FD18FF7DFD09FFA8FD0BFFA87DFD44FFA87D %FD07FFA8A8FD1AFF7DFD08FFA8A8FD0AFFA8A8FD44FF7EFD08FF84FD1BFF %A87DFD07FFA8A8FD0AFF7D7DFD43FFA8A8FD07FFA8A8FD1CFF7DA8FD07FF %7DFD0AFFA8A8FD44FFA8FD07FF7DFD06FFA8A8FF7DFFFFFFA8A8A8FFA8FF %7DA8FFA8A8FFA8FFFFFFA8A8FD07FFA8FD0AFF847DFD43FF7DFD07FFA8A8 %FD04FF277D527D525227A8A8527DA8A8527D527D527D7D275252FFFFFF7D %FD07FF7DFD0AFFA8A8FD43FFA8A8FD06FFA8A8FFFFFF7D525252A8FD047D %A827A8A87D277D7DA827A87D525252FFFFFFA8A8FD06FFA8A8FD09FFA87D %FD43FF7DFD07FF7DFD04FFA8A87DA8FF7DFFA87D7DA87D7D7DA87DA8A8A8 %7D7D7DA87DFFFFFF7DA8FD06FFA8A8FD09FFA8A8FD43FFA8FD07FFA8A8FD %1FFFA8FD07FFA8FD09FFA87DFD23FFA8FFA8FFA8FD1BFF7EFD07FF7EFD04 %FF7D7DFF53FD047D527DA87DA87DA8FD057DFFFFA8FD04FFA8A8FD06FFA8 %A8FD09FFA8A8FD1EFFA8FFA8A884FD07A87DFD17FFA8A8FD07FFA8FD04FF %7D7D52A87D5252FF52A8FD05527D52535284FFFF52FD05FFA8FD07FFA8FD %09FF7D7DFD1BFFA8A87D847DFFA8FD07FFA8A87DA87DA8A8FD13FF7DFD07 %FF7DFFFFFFA87D527D537D52A8A87DFF7D5252527D277E525252FFFF7DA8 %FFFFFFA8A8FD06FFA8A8FD09FFA8A8FD1AFFA8A8A8FD11FFA8A8A8FD12FF %A8FD07FFA8A8FFFFFFA9FFFFFFA9FD0DFFA8A9FD07FFA9A8FD07FFA8FD09 %FF847DFD18FFA87DA8FD15FFA87DA8FD10FF7DFD07FF7DFD1FFF7DFD07FF %A8A8FD09FFA8A8FD17FFA87DFD19FF7EA8FD0FFFA8A8FD07FFA8FD1EFFA8 %A8FD06FFA8A8FD09FFA87DFD15FFA87DA8FD1BFFA87DA8FD0DFFA8A8FD06 %FFA8A8FD1EFF7DFD07FF7DFD0AFFA8A8FD14FFA8A8FD1FFFA8A8FD0DFF84 %FD07FF7DFD1DFFA8A9FD07FFA8FD0AFFA87DFD13FFA87DFD10FFA8FD10FF %A8A8FD0BFFAFA8FD07FFA87DFD1CFFA8FD08FF7DFD0AFFA8A8FD12FFA8A8 %FD0CFFA8A87DA8A8A87EFD04A8FD0CFFA8A8FD0BFF7EFD08FFA8A8FD1AFF %A8A8FD07FF84FD0BFF7D7DFD11FFA87DA8FD0AFFA87DA8A8FFA8FFFFFFA8 %FFA8A87DA8FD0AFFA87DA8FD0AFFA87DFD07FFA87DFD1AFF7DFD08FF7DA8 %FD0AFFA8A8FD11FFA8A8FD09FFA8A87EFD0DFFA8A8A8FD09FFA87EFD0BFF %A8FD08FFA8A8FD18FF7DFD08FFA8A8FD0BFF847DFD10FFA87EFD09FF7DA8 %A8FD0FFFA8847DFD09FF7EA8FD0AFFA8A8FD08FF7DA8FD16FF7DFD09FF7D %FD0CFFA8A8FD10FF7DFD09FF7DA8FD13FFA87DFD09FF7DFD0BFF7DFD09FF %7DA8FD14FF7DA8FD08FFA8A8FD0CFFA87DFD0FFF7DA8FD08FF7DA8FD15FF %A87DFD08FFA87DFD0AFFA87DFD09FF7D7DA8FD10FFA87DFD09FFA87DFD0D %FFA8A8FD0FFFA8FD08FF7DA8FD17FFA87DFD08FFA8A8FD0AFFA8A8FD09FF %A8A8A8FD0DFFA8A87DFD0AFFA8A8FD0DFFA87DFD0EFFA8A8FD07FFA8A8FD %19FFA8A8FD07FFA8A8FD0BFF7DA8FD0AFFA87DA8A8FFA8FD05FFA8A87DA8 %A8FD0AFFA87DFD0EFFA8A8FD0EFF7DFD08FFA8FD1BFFA8FD08FF7DFD0CFF %7DA8FD0BFFA8A87EA884A8A8A87EA8A8FD0CFFA87DFD0FFF7D7DFD0DFFA8 %A8FD07FFA8A8FD1BFF7DA8FD07FFA8A8FD0BFFA87DA8FD0FFFA8FFA8FD0E %FFA87DFD10FFA8A8FD0DFFA8A8FD07FF7DFD1DFF7DFD07FFA8A8FD0CFFA8 %84FD1FFFA87DFD11FF847DFD0DFF7DFD07FFA8A8FFFFFFAFFFA8A8A87DFF %A8FFA8A8A8FFA8AF7DFD04A8FFA8FD04FFA8A8FD07FF7DFD0DFFA87DA8FD %07FFA87D7DFF7DA87DA859FFA87D52A8FD07FF7E7DFD12FFA8A8FD0CFFA8 %A8FD07FFA8A8FFFFFF52A8527D525252A8A8527DA8A85284537D527D7E52 %5252FFFFFFA8A8FD07FFA8FD0FFFA87DFD06FFFD047D527D525252A8A827 %5959FD05FFA8A8A8FD13FFA87DFD0CFFAF7DFD07FF7DFFFFFF7D5252527D %52597D59A827A8A859277D52A827A87D522852A8FFFFFF7DFD07FF7DFD10 %FFA87DA8A8FFFFFF7D7DFD04527D52527D7D52527DFD04FF7D7DA8FD14FF %A8A8FD0CFFA8A8FD06FFA8A8FFFFFFA8A884A8FFA8FFA87D7DA87DA87EFF %7DA8A8A87DA8A8A87DFD04FFA8A9FD06FFA8A9FD11FFA8A8A8FFFFFFA8FD %07FFA8FD05FFA8A87DFD17FFA87DFD0CFFA87EFD07FF7DFD1FFF7DFD07FF %7DFD14FFA87DA87EFFAFFD09FFA8A87DA8A8FD18FFA8A8FD0CFFA8A8FD06 %FFA8A8FFFFFF7E7DA97D84FD057DA87DA87DA8A8FD047DFFA87DA8FD04FF %A8A8FD06FFA8A8FD16FFA87DFD07A87EA884A8A8FD1BFF7D7DFD0CFFA8A8 %FD07FF7DFFFFFF535227A87D2752A852A8FD0452277D5252527DFFA8527D %FD04FF7DFD07FFA8A8FD1AFFA8FFA8FFA8FFA8FD1EFFA8A8FD0CFFA8A8FD %06FFA8A8FFFFFF7D527D7D7D52A8FF7DFF7D5252527D52A859597DFF8452 %A8FD04FFA8A8FD06FFA8A8FD3FFF847DFD0DFF7DFD07FF7DFFFFFFA8A8FF %A8A8FFFFFFA8FFA8FFA8FD05FFA8A8FFFFA8FD05FF7DFD07FF7DFD40FFA8 %A8FD0CFFA8A8FD07FFA8FD1EFFA8A8FD07FFA8A8FD3FFFA87DFD0DFF7DFD %07FF7DA8FD1DFFA87DFD07FF7DFD40FFA8A8FD0DFFA8A8FD07FFA8FD1DFF %7DFD07FFA8A8FD40FFA87DFD0DFFA8A8FD07FFA8A8FD1BFFA8A8FD07FFA8 %A8FD40FFA8A8FD0EFF7DFD07FFA8A8FD1BFFA8A8FD07FF7DFD41FF7D7DFD %0EFF7EA8FD07FF7DFD1AFFA87DFD07FFA8A8FD41FFA8A8FD0EFFA8A8FD08 %FF7DFD19FF7DFD08FFA8A8FD41FF847DFD0FFF7DFD08FFA87DFD17FF7DA8 %FD08FF7DFD42FFA8A8FD0FFFA884FD08FFA87DFD15FF7DA8FD08FFA8A8FD %42FFA87DFD10FF7DA8FD08FFA87DFD13FF7DA8FD08FFA87DFD43FFA8A8FD %10FFA8A8FD0AFF7DA8FD0FFFA87DFD0AFFA8A8FD43FFA87DFD11FF7DA8FD %0AFF7EA8A8FD0BFFA87D7EFD0AFFA87DFD44FFA8A8FD12FF7DAFFD0BFFA8 %7DA87EA8A8FFFD04A87DA8FD0BFFA97DFD45FF7D7DFD13FF7DFD0DFFA8FF %A8A87DA8A8FFA8FD0CFFA87DFD46FFA8A8FD14FF7DAFFD1FFFA87DFD47FF %847DFD15FF7DA8FD08FF7D7DA8A87DA87D7D7DFF7D7D52FD08FFA87DFD48 %FFA8A8FD16FF7DA8FD07FF7D7D7D53FD04527DFF7D52527DFD06FFA87DFD %49FFA87DFD17FFA87D84FD05FF7D7D277D53FD04527E525252A8FD04FF7E %7DA8FD4AFFA8A8FD19FFA87DA8FD04FFA8FFFFFFA8FFFFFFA8FFA8FD04FF %A87DA8FD4CFFA87DFD1BFF7D7E7DFD0EFFA87DA87DFD4EFFA8A8FD1DFFA8 %7DFD04A8FFA8FFA8FFA8A87DA87EA8FD50FF7D7DFD1FFFA8FFA8A87DA87D %A87DA8A8FFA8FD52FFA8A8FD7EFF847DFD7EFFA87DFD7EA87DA8FFA8FFA8 %FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8 %FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8 %FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8 %FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8 %FFA8FF %%EndData +%ADOEndClientInjection: DocumentHeader "AI11EPS" +%%Pages: 1 +%%DocumentNeededResources: +%%DocumentSuppliedResources: procset Adobe_AGM_Image 1.0 0 +%%+ procset Adobe_CoolType_Utility_T42 1.0 0 +%%+ procset Adobe_CoolType_Utility_MAKEOCF 1.23 0 +%%+ procset Adobe_CoolType_Core 2.31 0 +%%+ procset Adobe_AGM_Core 2.0 0 +%%+ procset Adobe_AGM_Utils 1.0 0 +%%DocumentFonts: +%%DocumentNeededFonts: +%%DocumentNeededFeatures: +%%DocumentSuppliedFeatures: +%%DocumentProcessColors: Magenta Black +%%DocumentCustomColors: +%%CMYKCustomColor: +%%RGBCustomColor: +%%EndComments + + + + + + +%%BeginDefaults +%%ViewingOrientation: 1 0 0 1 +%%EndDefaults +%%BeginProlog +%%BeginResource: procset Adobe_AGM_Utils 1.0 0 +%%Version: 1.0 0 +%%Copyright: Copyright(C)2000-2006 Adobe Systems, Inc. All Rights Reserved. +systemdict/setpacking known +{currentpacking true setpacking}if +userdict/Adobe_AGM_Utils 73 dict dup begin put +/bdf +{bind def}bind def +/nd{null def}bdf +/xdf +{exch def}bdf +/ldf +{load def}bdf +/ddf +{put}bdf +/xddf +{3 -1 roll put}bdf +/xpt +{exch put}bdf +/ndf +{ + exch dup where{ + pop pop pop + }{ + xdf + }ifelse +}def +/cdndf +{ + exch dup currentdict exch known{ + pop pop + }{ + exch def + }ifelse +}def +/gx +{get exec}bdf +/ps_level + /languagelevel where{ + pop systemdict/languagelevel gx + }{ + 1 + }ifelse +def +/level2 + ps_level 2 ge +def +/level3 + ps_level 3 ge +def +/ps_version + {version cvr}stopped{-1}if +def +/set_gvm +{currentglobal exch setglobal}bdf +/reset_gvm +{setglobal}bdf +/makereadonlyarray +{ + /packedarray where{pop packedarray + }{ + array astore readonly}ifelse +}bdf +/map_reserved_ink_name +{ + dup type/stringtype eq{ + dup/Red eq{ + pop(_Red_) + }{ + dup/Green eq{ + pop(_Green_) + }{ + dup/Blue eq{ + pop(_Blue_) + }{ + dup()cvn eq{ + pop(Process) + }if + }ifelse + }ifelse + }ifelse + }if +}bdf +/AGMUTIL_GSTATE 22 dict def +/get_gstate +{ + AGMUTIL_GSTATE begin + /AGMUTIL_GSTATE_clr_spc currentcolorspace def + /AGMUTIL_GSTATE_clr_indx 0 def + /AGMUTIL_GSTATE_clr_comps 12 array def + mark currentcolor counttomark + {AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 3 -1 roll put + /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 add def}repeat pop + /AGMUTIL_GSTATE_fnt rootfont def + /AGMUTIL_GSTATE_lw currentlinewidth def + /AGMUTIL_GSTATE_lc currentlinecap def + /AGMUTIL_GSTATE_lj currentlinejoin def + /AGMUTIL_GSTATE_ml currentmiterlimit def + currentdash/AGMUTIL_GSTATE_do xdf/AGMUTIL_GSTATE_da xdf + /AGMUTIL_GSTATE_sa currentstrokeadjust def + /AGMUTIL_GSTATE_clr_rnd currentcolorrendering def + /AGMUTIL_GSTATE_op currentoverprint def + /AGMUTIL_GSTATE_bg currentblackgeneration cvlit def + /AGMUTIL_GSTATE_ucr currentundercolorremoval cvlit def + currentcolortransfer cvlit/AGMUTIL_GSTATE_gy_xfer xdf cvlit/AGMUTIL_GSTATE_b_xfer xdf + cvlit/AGMUTIL_GSTATE_g_xfer xdf cvlit/AGMUTIL_GSTATE_r_xfer xdf + /AGMUTIL_GSTATE_ht currenthalftone def + /AGMUTIL_GSTATE_flt currentflat def + end +}def +/set_gstate +{ + AGMUTIL_GSTATE begin + AGMUTIL_GSTATE_clr_spc setcolorspace + AGMUTIL_GSTATE_clr_indx{AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 1 sub get + /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 sub def}repeat setcolor + AGMUTIL_GSTATE_fnt setfont + AGMUTIL_GSTATE_lw setlinewidth + AGMUTIL_GSTATE_lc setlinecap + AGMUTIL_GSTATE_lj setlinejoin + AGMUTIL_GSTATE_ml setmiterlimit + AGMUTIL_GSTATE_da AGMUTIL_GSTATE_do setdash + AGMUTIL_GSTATE_sa setstrokeadjust + AGMUTIL_GSTATE_clr_rnd setcolorrendering + AGMUTIL_GSTATE_op setoverprint + AGMUTIL_GSTATE_bg cvx setblackgeneration + AGMUTIL_GSTATE_ucr cvx setundercolorremoval + AGMUTIL_GSTATE_r_xfer cvx AGMUTIL_GSTATE_g_xfer cvx AGMUTIL_GSTATE_b_xfer cvx + AGMUTIL_GSTATE_gy_xfer cvx setcolortransfer + AGMUTIL_GSTATE_ht/HalftoneType get dup 9 eq exch 100 eq or + { + currenthalftone/HalftoneType get AGMUTIL_GSTATE_ht/HalftoneType get ne + { + mark AGMUTIL_GSTATE_ht{sethalftone}stopped cleartomark + }if + }{ + AGMUTIL_GSTATE_ht sethalftone + }ifelse + AGMUTIL_GSTATE_flt setflat + end +}def +/get_gstate_and_matrix +{ + AGMUTIL_GSTATE begin + /AGMUTIL_GSTATE_ctm matrix currentmatrix def + end + get_gstate +}def +/set_gstate_and_matrix +{ + set_gstate + AGMUTIL_GSTATE begin + AGMUTIL_GSTATE_ctm setmatrix + end +}def +/AGMUTIL_str256 256 string def +/AGMUTIL_src256 256 string def +/AGMUTIL_dst64 64 string def +/AGMUTIL_srcLen nd +/AGMUTIL_ndx nd +/AGMUTIL_cpd nd +/capture_cpd{ + //Adobe_AGM_Utils/AGMUTIL_cpd currentpagedevice ddf +}def +/thold_halftone +{ + level3 + {sethalftone currenthalftone} + { + dup/HalftoneType get 3 eq + { + sethalftone currenthalftone + }{ + begin + Width Height mul{ + Thresholds read{pop}if + }repeat + end + currenthalftone + }ifelse + }ifelse +}def +/rdcmntline +{ + currentfile AGMUTIL_str256 readline pop + (%)anchorsearch{pop}if +}bdf +/filter_cmyk +{ + dup type/filetype ne{ + exch()/SubFileDecode filter + }{ + exch pop + } + ifelse + [ + exch + { + AGMUTIL_src256 readstring pop + dup length/AGMUTIL_srcLen exch def + /AGMUTIL_ndx 0 def + AGMCORE_plate_ndx 4 AGMUTIL_srcLen 1 sub{ + 1 index exch get + AGMUTIL_dst64 AGMUTIL_ndx 3 -1 roll put + /AGMUTIL_ndx AGMUTIL_ndx 1 add def + }for + pop + AGMUTIL_dst64 0 AGMUTIL_ndx getinterval + } + bind + /exec cvx + ]cvx +}bdf +/filter_indexed_devn +{ + cvi Names length mul names_index add Lookup exch get +}bdf +/filter_devn +{ + 4 dict begin + /srcStr xdf + /dstStr xdf + dup type/filetype ne{ + 0()/SubFileDecode filter + }if + [ + exch + [ + /devicen_colorspace_dict/AGMCORE_gget cvx/begin cvx + currentdict/srcStr get/readstring cvx/pop cvx + /dup cvx/length cvx 0/gt cvx[ + Adobe_AGM_Utils/AGMUTIL_ndx 0/ddf cvx + names_index Names length currentdict/srcStr get length 1 sub{ + 1/index cvx/exch cvx/get cvx + currentdict/dstStr get/AGMUTIL_ndx/load cvx 3 -1/roll cvx/put cvx + Adobe_AGM_Utils/AGMUTIL_ndx/AGMUTIL_ndx/load cvx 1/add cvx/ddf cvx + }for + currentdict/dstStr get 0/AGMUTIL_ndx/load cvx/getinterval cvx + ]cvx/if cvx + /end cvx + ]cvx + bind + /exec cvx + ]cvx + end +}bdf +/AGMUTIL_imagefile nd +/read_image_file +{ + AGMUTIL_imagefile 0 setfileposition + 10 dict begin + /imageDict xdf + /imbufLen Width BitsPerComponent mul 7 add 8 idiv def + /imbufIdx 0 def + /origDataSource imageDict/DataSource get def + /origMultipleDataSources imageDict/MultipleDataSources get def + /origDecode imageDict/Decode get def + /dstDataStr imageDict/Width get colorSpaceElemCnt mul string def + imageDict/MultipleDataSources known{MultipleDataSources}{false}ifelse + { + /imbufCnt imageDict/DataSource get length def + /imbufs imbufCnt array def + 0 1 imbufCnt 1 sub{ + /imbufIdx xdf + imbufs imbufIdx imbufLen string put + imageDict/DataSource get imbufIdx[AGMUTIL_imagefile imbufs imbufIdx get/readstring cvx/pop cvx]cvx put + }for + DeviceN_PS2{ + imageDict begin + /DataSource[DataSource/devn_sep_datasource cvx]cvx def + /MultipleDataSources false def + /Decode[0 1]def + end + }if + }{ + /imbuf imbufLen string def + Indexed_DeviceN level3 not and DeviceN_NoneName or{ + /srcDataStrs[imageDict begin + currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse + { + Width Decode length 2 div mul cvi string + }repeat + end]def + imageDict begin + /DataSource[AGMUTIL_imagefile Decode BitsPerComponent false 1/filter_indexed_devn load dstDataStr srcDataStrs devn_alt_datasource/exec cvx]cvx def + /Decode[0 1]def + end + }{ + imageDict/DataSource[1 string dup 0 AGMUTIL_imagefile Decode length 2 idiv string/readstring cvx/pop cvx names_index/get cvx/put cvx]cvx put + imageDict/Decode[0 1]put + }ifelse + }ifelse + imageDict exch + load exec + imageDict/DataSource origDataSource put + imageDict/MultipleDataSources origMultipleDataSources put + imageDict/Decode origDecode put + end +}bdf +/write_image_file +{ + begin + {(AGMUTIL_imagefile)(w+)file}stopped{ + false + }{ + Adobe_AGM_Utils/AGMUTIL_imagefile xddf + 2 dict begin + /imbufLen Width BitsPerComponent mul 7 add 8 idiv def + MultipleDataSources{DataSource 0 get}{DataSource}ifelse type/filetype eq{ + /imbuf imbufLen string def + }if + 1 1 Height MultipleDataSources not{Decode length 2 idiv mul}if{ + pop + MultipleDataSources{ + 0 1 DataSource length 1 sub{ + DataSource type dup + /arraytype eq{ + pop DataSource exch gx + }{ + /filetype eq{ + DataSource exch get imbuf readstring pop + }{ + DataSource exch get + }ifelse + }ifelse + AGMUTIL_imagefile exch writestring + }for + }{ + DataSource type dup + /arraytype eq{ + pop DataSource exec + }{ + /filetype eq{ + DataSource imbuf readstring pop + }{ + DataSource + }ifelse + }ifelse + AGMUTIL_imagefile exch writestring + }ifelse + }for + end + true + }ifelse + end +}bdf +/close_image_file +{ + AGMUTIL_imagefile closefile(AGMUTIL_imagefile)deletefile +}def +statusdict/product known userdict/AGMP_current_show known not and{ + /pstr statusdict/product get def + pstr(HP LaserJet 2200)eq + pstr(HP LaserJet 4000 Series)eq or + pstr(HP LaserJet 4050 Series )eq or + pstr(HP LaserJet 8000 Series)eq or + pstr(HP LaserJet 8100 Series)eq or + pstr(HP LaserJet 8150 Series)eq or + pstr(HP LaserJet 5000 Series)eq or + pstr(HP LaserJet 5100 Series)eq or + pstr(HP Color LaserJet 4500)eq or + pstr(HP Color LaserJet 4600)eq or + pstr(HP LaserJet 5Si)eq or + pstr(HP LaserJet 1200 Series)eq or + pstr(HP LaserJet 1300 Series)eq or + pstr(HP LaserJet 4100 Series)eq or + { + userdict/AGMP_current_show/show load put + userdict/show{ + currentcolorspace 0 get + /Pattern eq + {false charpath f} + {AGMP_current_show}ifelse + }put + }if + currentdict/pstr undef +}if +/consumeimagedata +{ + begin + AGMIMG_init_common + currentdict/MultipleDataSources known not + {/MultipleDataSources false def}if + MultipleDataSources + { + DataSource 0 get type + dup/filetype eq + { + 1 dict begin + /flushbuffer Width cvi string def + 1 1 Height cvi + { + pop + 0 1 DataSource length 1 sub + { + DataSource exch get + flushbuffer readstring pop pop + }for + }for + end + }if + dup/arraytype eq exch/packedarraytype eq or DataSource 0 get xcheck and + { + Width Height mul cvi + { + 0 1 DataSource length 1 sub + {dup DataSource exch gx length exch 0 ne{pop}if}for + dup 0 eq + {pop exit}if + sub dup 0 le + {exit}if + }loop + pop + }if + } + { + /DataSource load type + dup/filetype eq + { + 1 dict begin + /flushbuffer Width Decode length 2 idiv mul cvi string def + 1 1 Height{pop DataSource flushbuffer readstring pop pop}for + end + }if + dup/arraytype eq exch/packedarraytype eq or/DataSource load xcheck and + { + Height Width BitsPerComponent mul 8 BitsPerComponent sub add 8 idiv Decode length 2 idiv mul mul + { + DataSource length dup 0 eq + {pop exit}if + sub dup 0 le + {exit}if + }loop + pop + }if + }ifelse + end +}bdf +/addprocs +{ + 2{/exec load}repeat + 3 1 roll + [5 1 roll]bind cvx +}def +/modify_halftone_xfer +{ + currenthalftone dup length dict copy begin + currentdict 2 index known{ + 1 index load dup length dict copy begin + currentdict/TransferFunction known{ + /TransferFunction load + }{ + currenttransfer + }ifelse + addprocs/TransferFunction xdf + currentdict end def + currentdict end sethalftone + }{ + currentdict/TransferFunction known{ + /TransferFunction load + }{ + currenttransfer + }ifelse + addprocs/TransferFunction xdf + currentdict end sethalftone + pop + }ifelse +}def +/clonearray +{ + dup xcheck exch + dup length array exch + Adobe_AGM_Core/AGMCORE_tmp -1 ddf + { + Adobe_AGM_Core/AGMCORE_tmp 2 copy get 1 add ddf + dup type/dicttype eq + { + Adobe_AGM_Core/AGMCORE_tmp get + exch + clonedict + Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf + }if + dup type/arraytype eq + { + Adobe_AGM_Core/AGMCORE_tmp get exch + clonearray + Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf + }if + exch dup + Adobe_AGM_Core/AGMCORE_tmp get 4 -1 roll put + }forall + exch{cvx}if +}bdf +/clonedict +{ + dup length dict + begin + { + dup type/dicttype eq + {clonedict}if + dup type/arraytype eq + {clonearray}if + def + }forall + currentdict + end +}bdf +/DeviceN_PS2 +{ + /currentcolorspace AGMCORE_gget 0 get/DeviceN eq level3 not and +}bdf +/Indexed_DeviceN +{ + /indexed_colorspace_dict AGMCORE_gget dup null ne{ + dup/CSDBase known{ + /CSDBase get/CSD get_res/Names known + }{ + pop false + }ifelse + }{ + pop false + }ifelse +}bdf +/DeviceN_NoneName +{ + /Names where{ + pop + false Names + { + (None)eq or + }forall + }{ + false + }ifelse +}bdf +/DeviceN_PS2_inRip_seps +{ + /AGMCORE_in_rip_sep where + { + pop dup type dup/arraytype eq exch/packedarraytype eq or + { + dup 0 get/DeviceN eq level3 not and AGMCORE_in_rip_sep and + { + /currentcolorspace exch AGMCORE_gput + false + }{ + true + }ifelse + }{ + true + }ifelse + }{ + true + }ifelse +}bdf +/base_colorspace_type +{ + dup type/arraytype eq{0 get}if +}bdf +/currentdistillerparams where{pop currentdistillerparams/CoreDistVersion get 5000 lt}{true}ifelse +{ + /pdfmark_5{cleartomark}bind def +}{ + /pdfmark_5{pdfmark}bind def +}ifelse +/ReadBypdfmark_5 +{ + currentfile exch 0 exch/SubFileDecode filter + /currentdistillerparams where + {pop currentdistillerparams/CoreDistVersion get 5000 lt}{true}ifelse + {flushfile cleartomark} + {/PUT pdfmark}ifelse +}bdf +/xpdfm +{ + { + dup 0 get/Label eq + { + aload length[exch 1 add 1 roll/PAGELABEL + }{ + aload pop + [{ThisPage}<<5 -2 roll>>/PUT + }ifelse + pdfmark_5 + }forall +}bdf +/ds{ + Adobe_AGM_Utils begin +}bdf +/dt{ + currentdict Adobe_AGM_Utils eq{ + end + }if +}bdf +systemdict/setpacking known +{setpacking}if +%%EndResource +%%BeginResource: procset Adobe_AGM_Core 2.0 0 +%%Version: 2.0 0 +%%Copyright: Copyright(C)1997-2007 Adobe Systems, Inc. All Rights Reserved. +systemdict/setpacking known +{ + currentpacking + true setpacking +}if +userdict/Adobe_AGM_Core 209 dict dup begin put +/Adobe_AGM_Core_Id/Adobe_AGM_Core_2.0_0 def +/AGMCORE_str256 256 string def +/AGMCORE_save nd +/AGMCORE_graphicsave nd +/AGMCORE_c 0 def +/AGMCORE_m 0 def +/AGMCORE_y 0 def +/AGMCORE_k 0 def +/AGMCORE_cmykbuf 4 array def +/AGMCORE_screen[currentscreen]cvx def +/AGMCORE_tmp 0 def +/AGMCORE_&setgray nd +/AGMCORE_&setcolor nd +/AGMCORE_&setcolorspace nd +/AGMCORE_&setcmykcolor nd +/AGMCORE_cyan_plate nd +/AGMCORE_magenta_plate nd +/AGMCORE_yellow_plate nd +/AGMCORE_black_plate nd +/AGMCORE_plate_ndx nd +/AGMCORE_get_ink_data nd +/AGMCORE_is_cmyk_sep nd +/AGMCORE_host_sep nd +/AGMCORE_avoid_L2_sep_space nd +/AGMCORE_distilling nd +/AGMCORE_composite_job nd +/AGMCORE_producing_seps nd +/AGMCORE_ps_level -1 def +/AGMCORE_ps_version -1 def +/AGMCORE_environ_ok nd +/AGMCORE_CSD_cache 0 dict def +/AGMCORE_currentoverprint false def +/AGMCORE_deltaX nd +/AGMCORE_deltaY nd +/AGMCORE_name nd +/AGMCORE_sep_special nd +/AGMCORE_err_strings 4 dict def +/AGMCORE_cur_err nd +/AGMCORE_current_spot_alias false def +/AGMCORE_inverting false def +/AGMCORE_feature_dictCount nd +/AGMCORE_feature_opCount nd +/AGMCORE_feature_ctm nd +/AGMCORE_ConvertToProcess false def +/AGMCORE_Default_CTM matrix def +/AGMCORE_Default_PageSize nd +/AGMCORE_Default_flatness nd +/AGMCORE_currentbg nd +/AGMCORE_currentucr nd +/AGMCORE_pattern_paint_type 0 def +/knockout_unitsq nd +currentglobal true setglobal +[/CSA/Gradient/Procedure] +{ + /Generic/Category findresource dup length dict copy/Category defineresource pop +}forall +setglobal +/AGMCORE_key_known +{ + where{ + /Adobe_AGM_Core_Id known + }{ + false + }ifelse +}ndf +/flushinput +{ + save + 2 dict begin + /CompareBuffer 3 -1 roll def + /readbuffer 256 string def + mark + { + currentfile readbuffer{readline}stopped + {cleartomark mark} + { + not + {pop exit} + if + CompareBuffer eq + {exit} + if + }ifelse + }loop + cleartomark + end + restore +}bdf +/getspotfunction +{ + AGMCORE_screen exch pop exch pop + dup type/dicttype eq{ + dup/HalftoneType get 1 eq{ + /SpotFunction get + }{ + dup/HalftoneType get 2 eq{ + /GraySpotFunction get + }{ + pop + { + abs exch abs 2 copy add 1 gt{ + 1 sub dup mul exch 1 sub dup mul add 1 sub + }{ + dup mul exch dup mul add 1 exch sub + }ifelse + }bind + }ifelse + }ifelse + }if +}def +/np +{newpath}bdf +/clp_npth +{clip np}def +/eoclp_npth +{eoclip np}def +/npth_clp +{np clip}def +/graphic_setup +{ + /AGMCORE_graphicsave save store + concat + 0 setgray + 0 setlinecap + 0 setlinejoin + 1 setlinewidth + []0 setdash + 10 setmiterlimit + np + false setoverprint + false setstrokeadjust + //Adobe_AGM_Core/spot_alias gx + /Adobe_AGM_Image where{ + pop + Adobe_AGM_Image/spot_alias 2 copy known{ + gx + }{ + pop pop + }ifelse + }if + /sep_colorspace_dict null AGMCORE_gput + 100 dict begin + /dictstackcount countdictstack def + /showpage{}def + mark +}def +/graphic_cleanup +{ + cleartomark + dictstackcount 1 countdictstack 1 sub{end}for + end + AGMCORE_graphicsave restore +}def +/compose_error_msg +{ + grestoreall initgraphics + /Helvetica findfont 10 scalefont setfont + /AGMCORE_deltaY 100 def + /AGMCORE_deltaX 310 def + clippath pathbbox np pop pop 36 add exch 36 add exch moveto + 0 AGMCORE_deltaY rlineto AGMCORE_deltaX 0 rlineto + 0 AGMCORE_deltaY neg rlineto AGMCORE_deltaX neg 0 rlineto closepath + 0 AGMCORE_&setgray + gsave 1 AGMCORE_&setgray fill grestore + 1 setlinewidth gsave stroke grestore + currentpoint AGMCORE_deltaY 15 sub add exch 8 add exch moveto + /AGMCORE_deltaY 12 def + /AGMCORE_tmp 0 def + AGMCORE_err_strings exch get + { + dup 32 eq + { + pop + AGMCORE_str256 0 AGMCORE_tmp getinterval + stringwidth pop currentpoint pop add AGMCORE_deltaX 28 add gt + { + currentpoint AGMCORE_deltaY sub exch pop + clippath pathbbox pop pop pop 44 add exch moveto + }if + AGMCORE_str256 0 AGMCORE_tmp getinterval show( )show + 0 1 AGMCORE_str256 length 1 sub + { + AGMCORE_str256 exch 0 put + }for + /AGMCORE_tmp 0 def + }{ + AGMCORE_str256 exch AGMCORE_tmp xpt + /AGMCORE_tmp AGMCORE_tmp 1 add def + }ifelse + }forall +}bdf +/AGMCORE_CMYKDeviceNColorspaces[ + [/Separation/None/DeviceCMYK{0 0 0}] + [/Separation(Black)/DeviceCMYK{0 0 0 4 -1 roll}bind] + [/Separation(Yellow)/DeviceCMYK{0 0 3 -1 roll 0}bind] + [/DeviceN[(Yellow)(Black)]/DeviceCMYK{0 0 4 2 roll}bind] + [/Separation(Magenta)/DeviceCMYK{0 exch 0 0}bind] + [/DeviceN[(Magenta)(Black)]/DeviceCMYK{0 3 1 roll 0 exch}bind] + [/DeviceN[(Magenta)(Yellow)]/DeviceCMYK{0 3 1 roll 0}bind] + [/DeviceN[(Magenta)(Yellow)(Black)]/DeviceCMYK{0 4 1 roll}bind] + [/Separation(Cyan)/DeviceCMYK{0 0 0}] + [/DeviceN[(Cyan)(Black)]/DeviceCMYK{0 0 3 -1 roll}bind] + [/DeviceN[(Cyan)(Yellow)]/DeviceCMYK{0 exch 0}bind] + [/DeviceN[(Cyan)(Yellow)(Black)]/DeviceCMYK{0 3 1 roll}bind] + [/DeviceN[(Cyan)(Magenta)]/DeviceCMYK{0 0}] + [/DeviceN[(Cyan)(Magenta)(Black)]/DeviceCMYK{0 exch}bind] + [/DeviceN[(Cyan)(Magenta)(Yellow)]/DeviceCMYK{0}] + [/DeviceCMYK] +]def +/ds{ + Adobe_AGM_Core begin + /currentdistillerparams where + { + pop currentdistillerparams/CoreDistVersion get 5000 lt + {<>setdistillerparams}if + }if + /AGMCORE_ps_version xdf + /AGMCORE_ps_level xdf + errordict/AGM_handleerror known not{ + errordict/AGM_handleerror errordict/handleerror get put + errordict/handleerror{ + Adobe_AGM_Core begin + $error/newerror get AGMCORE_cur_err null ne and{ + $error/newerror false put + AGMCORE_cur_err compose_error_msg + }if + $error/newerror true put + end + errordict/AGM_handleerror get exec + }bind put + }if + /AGMCORE_environ_ok + ps_level AGMCORE_ps_level ge + ps_version AGMCORE_ps_version ge and + AGMCORE_ps_level -1 eq or + def + AGMCORE_environ_ok not + {/AGMCORE_cur_err/AGMCORE_bad_environ def}if + /AGMCORE_&setgray systemdict/setgray get def + level2{ + /AGMCORE_&setcolor systemdict/setcolor get def + /AGMCORE_&setcolorspace systemdict/setcolorspace get def + }if + /AGMCORE_currentbg currentblackgeneration def + /AGMCORE_currentucr currentundercolorremoval def + /AGMCORE_Default_flatness currentflat def + /AGMCORE_distilling + /product where{ + pop systemdict/setdistillerparams known product(Adobe PostScript Parser)ne and + }{ + false + }ifelse + def + /AGMCORE_GSTATE AGMCORE_key_known not{ + /AGMCORE_GSTATE 21 dict def + /AGMCORE_tmpmatrix matrix def + /AGMCORE_gstack 32 array def + /AGMCORE_gstackptr 0 def + /AGMCORE_gstacksaveptr 0 def + /AGMCORE_gstackframekeys 14 def + /AGMCORE_&gsave/gsave ldf + /AGMCORE_&grestore/grestore ldf + /AGMCORE_&grestoreall/grestoreall ldf + /AGMCORE_&save/save ldf + /AGMCORE_&setoverprint/setoverprint ldf + /AGMCORE_gdictcopy{ + begin + {def}forall + end + }def + /AGMCORE_gput{ + AGMCORE_gstack AGMCORE_gstackptr get + 3 1 roll + put + }def + /AGMCORE_gget{ + AGMCORE_gstack AGMCORE_gstackptr get + exch + get + }def + /gsave{ + AGMCORE_&gsave + AGMCORE_gstack AGMCORE_gstackptr get + AGMCORE_gstackptr 1 add + dup 32 ge{limitcheck}if + /AGMCORE_gstackptr exch store + AGMCORE_gstack AGMCORE_gstackptr get + AGMCORE_gdictcopy + }def + /grestore{ + AGMCORE_&grestore + AGMCORE_gstackptr 1 sub + dup AGMCORE_gstacksaveptr lt{1 add}if + dup AGMCORE_gstack exch get dup/AGMCORE_currentoverprint known + {/AGMCORE_currentoverprint get setoverprint}{pop}ifelse + /AGMCORE_gstackptr exch store + }def + /grestoreall{ + AGMCORE_&grestoreall + /AGMCORE_gstackptr AGMCORE_gstacksaveptr store + }def + /save{ + AGMCORE_&save + AGMCORE_gstack AGMCORE_gstackptr get + AGMCORE_gstackptr 1 add + dup 32 ge{limitcheck}if + /AGMCORE_gstackptr exch store + /AGMCORE_gstacksaveptr AGMCORE_gstackptr store + AGMCORE_gstack AGMCORE_gstackptr get + AGMCORE_gdictcopy + }def + /setoverprint{ + dup/AGMCORE_currentoverprint exch AGMCORE_gput AGMCORE_&setoverprint + }def + 0 1 AGMCORE_gstack length 1 sub{ + AGMCORE_gstack exch AGMCORE_gstackframekeys dict put + }for + }if + level3/AGMCORE_&sysshfill AGMCORE_key_known not and + { + /AGMCORE_&sysshfill systemdict/shfill get def + /AGMCORE_&sysmakepattern systemdict/makepattern get def + /AGMCORE_&usrmakepattern/makepattern load def + }if + /currentcmykcolor[0 0 0 0]AGMCORE_gput + /currentstrokeadjust false AGMCORE_gput + /currentcolorspace[/DeviceGray]AGMCORE_gput + /sep_tint 0 AGMCORE_gput + /devicen_tints[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]AGMCORE_gput + /sep_colorspace_dict null AGMCORE_gput + /devicen_colorspace_dict null AGMCORE_gput + /indexed_colorspace_dict null AGMCORE_gput + /currentcolor_intent()AGMCORE_gput + /customcolor_tint 1 AGMCORE_gput + /absolute_colorimetric_crd null AGMCORE_gput + /relative_colorimetric_crd null AGMCORE_gput + /saturation_crd null AGMCORE_gput + /perceptual_crd null AGMCORE_gput + currentcolortransfer cvlit/AGMCore_gray_xfer xdf cvlit/AGMCore_b_xfer xdf + cvlit/AGMCore_g_xfer xdf cvlit/AGMCore_r_xfer xdf + << + /MaxPatternItem currentsystemparams/MaxPatternCache get + >> + setuserparams + end +}def +/ps +{ + /setcmykcolor where{ + pop + Adobe_AGM_Core/AGMCORE_&setcmykcolor/setcmykcolor load put + }if + Adobe_AGM_Core begin + /setcmykcolor + { + 4 copy AGMCORE_cmykbuf astore/currentcmykcolor exch AGMCORE_gput + 1 sub 4 1 roll + 3{ + 3 index add neg dup 0 lt{ + pop 0 + }if + 3 1 roll + }repeat + setrgbcolor pop + }ndf + /currentcmykcolor + { + /currentcmykcolor AGMCORE_gget aload pop + }ndf + /setoverprint + {pop}ndf + /currentoverprint + {false}ndf + /AGMCORE_cyan_plate 1 0 0 0 test_cmyk_color_plate def + /AGMCORE_magenta_plate 0 1 0 0 test_cmyk_color_plate def + /AGMCORE_yellow_plate 0 0 1 0 test_cmyk_color_plate def + /AGMCORE_black_plate 0 0 0 1 test_cmyk_color_plate def + /AGMCORE_plate_ndx + AGMCORE_cyan_plate{ + 0 + }{ + AGMCORE_magenta_plate{ + 1 + }{ + AGMCORE_yellow_plate{ + 2 + }{ + AGMCORE_black_plate{ + 3 + }{ + 4 + }ifelse + }ifelse + }ifelse + }ifelse + def + /AGMCORE_have_reported_unsupported_color_space false def + /AGMCORE_report_unsupported_color_space + { + AGMCORE_have_reported_unsupported_color_space false eq + { + (Warning: Job contains content that cannot be separated with on-host methods. This content appears on the black plate, and knocks out all other plates.)== + Adobe_AGM_Core/AGMCORE_have_reported_unsupported_color_space true ddf + }if + }def + /AGMCORE_composite_job + AGMCORE_cyan_plate AGMCORE_magenta_plate and AGMCORE_yellow_plate and AGMCORE_black_plate and def + /AGMCORE_in_rip_sep + /AGMCORE_in_rip_sep where{ + pop AGMCORE_in_rip_sep + }{ + AGMCORE_distilling + { + false + }{ + userdict/Adobe_AGM_OnHost_Seps known{ + false + }{ + level2{ + currentpagedevice/Separations 2 copy known{ + get + }{ + pop pop false + }ifelse + }{ + false + }ifelse + }ifelse + }ifelse + }ifelse + def + /AGMCORE_producing_seps AGMCORE_composite_job not AGMCORE_in_rip_sep or def + /AGMCORE_host_sep AGMCORE_producing_seps AGMCORE_in_rip_sep not and def + /AGM_preserve_spots + /AGM_preserve_spots where{ + pop AGM_preserve_spots + }{ + AGMCORE_distilling AGMCORE_producing_seps or + }ifelse + def + /AGM_is_distiller_preserving_spotimages + { + currentdistillerparams/PreserveOverprintSettings known + { + currentdistillerparams/PreserveOverprintSettings get + { + currentdistillerparams/ColorConversionStrategy known + { + currentdistillerparams/ColorConversionStrategy get + /sRGB ne + }{ + true + }ifelse + }{ + false + }ifelse + }{ + false + }ifelse + }def + /convert_spot_to_process where{pop}{ + /convert_spot_to_process + { + //Adobe_AGM_Core begin + dup map_alias{ + /Name get exch pop + }if + dup dup(None)eq exch(All)eq or + { + pop false + }{ + AGMCORE_host_sep + { + gsave + 1 0 0 0 setcmykcolor currentgray 1 exch sub + 0 1 0 0 setcmykcolor currentgray 1 exch sub + 0 0 1 0 setcmykcolor currentgray 1 exch sub + 0 0 0 1 setcmykcolor currentgray 1 exch sub + add add add 0 eq + { + pop false + }{ + false setoverprint + current_spot_alias false set_spot_alias + 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor + set_spot_alias + currentgray 1 ne + }ifelse + grestore + }{ + AGMCORE_distilling + { + pop AGM_is_distiller_preserving_spotimages not + }{ + //Adobe_AGM_Core/AGMCORE_name xddf + false + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 0 eq + AGMUTIL_cpd/OverrideSeparations known and + { + AGMUTIL_cpd/OverrideSeparations get + { + /HqnSpots/ProcSet resourcestatus + { + pop pop pop true + }if + }if + }if + { + AGMCORE_name/HqnSpots/ProcSet findresource/TestSpot gx not + }{ + gsave + [/Separation AGMCORE_name/DeviceGray{}]AGMCORE_&setcolorspace + false + AGMUTIL_cpd/SeparationColorNames 2 copy known + { + get + {AGMCORE_name eq or}forall + not + }{ + pop pop pop true + }ifelse + grestore + }ifelse + }ifelse + }ifelse + }ifelse + end + }def + }ifelse + /convert_to_process where{pop}{ + /convert_to_process + { + dup length 0 eq + { + pop false + }{ + AGMCORE_host_sep + { + dup true exch + { + dup(Cyan)eq exch + dup(Magenta)eq 3 -1 roll or exch + dup(Yellow)eq 3 -1 roll or exch + dup(Black)eq 3 -1 roll or + {pop} + {convert_spot_to_process and}ifelse + } + forall + { + true exch + { + dup(Cyan)eq exch + dup(Magenta)eq 3 -1 roll or exch + dup(Yellow)eq 3 -1 roll or exch + (Black)eq or and + }forall + not + }{pop false}ifelse + }{ + false exch + { + /PhotoshopDuotoneList where{pop false}{true}ifelse + { + dup(Cyan)eq exch + dup(Magenta)eq 3 -1 roll or exch + dup(Yellow)eq 3 -1 roll or exch + dup(Black)eq 3 -1 roll or + {pop} + {convert_spot_to_process or}ifelse + } + { + convert_spot_to_process or + } + ifelse + } + forall + }ifelse + }ifelse + }def + }ifelse + /AGMCORE_avoid_L2_sep_space + version cvr 2012 lt + level2 and + AGMCORE_producing_seps not and + def + /AGMCORE_is_cmyk_sep + AGMCORE_cyan_plate AGMCORE_magenta_plate or AGMCORE_yellow_plate or AGMCORE_black_plate or + def + /AGM_avoid_0_cmyk where{ + pop AGM_avoid_0_cmyk + }{ + AGM_preserve_spots + userdict/Adobe_AGM_OnHost_Seps known + userdict/Adobe_AGM_InRip_Seps known or + not and + }ifelse + { + /setcmykcolor[ + { + 4 copy add add add 0 eq currentoverprint and{ + pop 0.0005 + }if + }/exec cvx + /AGMCORE_&setcmykcolor load dup type/operatortype ne{ + /exec cvx + }if + ]cvx def + }if + /AGMCORE_IsSeparationAProcessColor + { + dup(Cyan)eq exch dup(Magenta)eq exch dup(Yellow)eq exch(Black)eq or or or + }def + AGMCORE_host_sep{ + /setcolortransfer + { + AGMCORE_cyan_plate{ + pop pop pop + }{ + AGMCORE_magenta_plate{ + 4 3 roll pop pop pop + }{ + AGMCORE_yellow_plate{ + 4 2 roll pop pop pop + }{ + 4 1 roll pop pop pop + }ifelse + }ifelse + }ifelse + settransfer + } + def + /AGMCORE_get_ink_data + AGMCORE_cyan_plate{ + {pop pop pop} + }{ + AGMCORE_magenta_plate{ + {4 3 roll pop pop pop} + }{ + AGMCORE_yellow_plate{ + {4 2 roll pop pop pop} + }{ + {4 1 roll pop pop pop} + }ifelse + }ifelse + }ifelse + def + /AGMCORE_RemoveProcessColorNames + { + 1 dict begin + /filtername + { + dup/Cyan eq 1 index(Cyan)eq or + {pop(_cyan_)}if + dup/Magenta eq 1 index(Magenta)eq or + {pop(_magenta_)}if + dup/Yellow eq 1 index(Yellow)eq or + {pop(_yellow_)}if + dup/Black eq 1 index(Black)eq or + {pop(_black_)}if + }def + dup type/arraytype eq + {[exch{filtername}forall]} + {filtername}ifelse + end + }def + level3{ + /AGMCORE_IsCurrentColor + { + dup AGMCORE_IsSeparationAProcessColor + { + AGMCORE_plate_ndx 0 eq + {dup(Cyan)eq exch/Cyan eq or}if + AGMCORE_plate_ndx 1 eq + {dup(Magenta)eq exch/Magenta eq or}if + AGMCORE_plate_ndx 2 eq + {dup(Yellow)eq exch/Yellow eq or}if + AGMCORE_plate_ndx 3 eq + {dup(Black)eq exch/Black eq or}if + AGMCORE_plate_ndx 4 eq + {pop false}if + }{ + gsave + false setoverprint + current_spot_alias false set_spot_alias + 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor + set_spot_alias + currentgray 1 ne + grestore + }ifelse + }def + /AGMCORE_filter_functiondatasource + { + 5 dict begin + /data_in xdf + data_in type/stringtype eq + { + /ncomp xdf + /comp xdf + /string_out data_in length ncomp idiv string def + 0 ncomp data_in length 1 sub + { + string_out exch dup ncomp idiv exch data_in exch ncomp getinterval comp get 255 exch sub put + }for + string_out + }{ + string/string_in xdf + /string_out 1 string def + /component xdf + [ + data_in string_in/readstring cvx + [component/get cvx 255/exch cvx/sub cvx string_out/exch cvx 0/exch cvx/put cvx string_out]cvx + [/pop cvx()]cvx/ifelse cvx + ]cvx/ReusableStreamDecode filter + }ifelse + end + }def + /AGMCORE_separateShadingFunction + { + 2 dict begin + /paint? xdf + /channel xdf + dup type/dicttype eq + { + begin + FunctionType 0 eq + { + /DataSource channel Range length 2 idiv DataSource AGMCORE_filter_functiondatasource def + currentdict/Decode known + {/Decode Decode channel 2 mul 2 getinterval def}if + paint? not + {/Decode[1 1]def}if + }if + FunctionType 2 eq + { + paint? + { + /C0[C0 channel get 1 exch sub]def + /C1[C1 channel get 1 exch sub]def + }{ + /C0[1]def + /C1[1]def + }ifelse + }if + FunctionType 3 eq + { + /Functions[Functions{channel paint? AGMCORE_separateShadingFunction}forall]def + }if + currentdict/Range known + {/Range[0 1]def}if + currentdict + end}{ + channel get 0 paint? AGMCORE_separateShadingFunction + }ifelse + end + }def + /AGMCORE_separateShading + { + 3 -1 roll begin + currentdict/Function known + { + currentdict/Background known + {[1 index{Background 3 index get 1 exch sub}{1}ifelse]/Background xdf}if + Function 3 1 roll AGMCORE_separateShadingFunction/Function xdf + /ColorSpace[/DeviceGray]def + }{ + ColorSpace dup type/arraytype eq{0 get}if/DeviceCMYK eq + { + /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def + }{ + ColorSpace dup 1 get AGMCORE_RemoveProcessColorNames 1 exch put + }ifelse + ColorSpace 0 get/Separation eq + { + { + [1/exch cvx/sub cvx]cvx + }{ + [/pop cvx 1]cvx + }ifelse + ColorSpace 3 3 -1 roll put + pop + }{ + { + [exch ColorSpace 1 get length 1 sub exch sub/index cvx 1/exch cvx/sub cvx ColorSpace 1 get length 1 add 1/roll cvx ColorSpace 1 get length{/pop cvx}repeat]cvx + }{ + pop[ColorSpace 1 get length{/pop cvx}repeat cvx 1]cvx + }ifelse + ColorSpace 3 3 -1 roll bind put + }ifelse + ColorSpace 2/DeviceGray put + }ifelse + end + }def + /AGMCORE_separateShadingDict + { + dup/ColorSpace get + dup type/arraytype ne + {[exch]}if + dup 0 get/DeviceCMYK eq + { + exch begin + currentdict + AGMCORE_cyan_plate + {0 true}if + AGMCORE_magenta_plate + {1 true}if + AGMCORE_yellow_plate + {2 true}if + AGMCORE_black_plate + {3 true}if + AGMCORE_plate_ndx 4 eq + {0 false}if + dup not currentoverprint and + {/AGMCORE_ignoreshade true def}if + AGMCORE_separateShading + currentdict + end exch + }if + dup 0 get/Separation eq + { + exch begin + ColorSpace 1 get dup/None ne exch/All ne and + { + ColorSpace 1 get AGMCORE_IsCurrentColor AGMCORE_plate_ndx 4 lt and ColorSpace 1 get AGMCORE_IsSeparationAProcessColor not and + { + ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq + { + /ColorSpace + [ + /Separation + ColorSpace 1 get + /DeviceGray + [ + ColorSpace 3 get/exec cvx + 4 AGMCORE_plate_ndx sub -1/roll cvx + 4 1/roll cvx + 3[/pop cvx]cvx/repeat cvx + 1/exch cvx/sub cvx + ]cvx + ]def + }{ + AGMCORE_report_unsupported_color_space + AGMCORE_black_plate not + { + currentdict 0 false AGMCORE_separateShading + }if + }ifelse + }{ + currentdict ColorSpace 1 get AGMCORE_IsCurrentColor + 0 exch + dup not currentoverprint and + {/AGMCORE_ignoreshade true def}if + AGMCORE_separateShading + }ifelse + }if + currentdict + end exch + }if + dup 0 get/DeviceN eq + { + exch begin + ColorSpace 1 get convert_to_process + { + ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq + { + /ColorSpace + [ + /DeviceN + ColorSpace 1 get + /DeviceGray + [ + ColorSpace 3 get/exec cvx + 4 AGMCORE_plate_ndx sub -1/roll cvx + 4 1/roll cvx + 3[/pop cvx]cvx/repeat cvx + 1/exch cvx/sub cvx + ]cvx + ]def + }{ + AGMCORE_report_unsupported_color_space + AGMCORE_black_plate not + { + currentdict 0 false AGMCORE_separateShading + /ColorSpace[/DeviceGray]def + }if + }ifelse + }{ + currentdict + false -1 ColorSpace 1 get + { + AGMCORE_IsCurrentColor + { + 1 add + exch pop true exch exit + }if + 1 add + }forall + exch + dup not currentoverprint and + {/AGMCORE_ignoreshade true def}if + AGMCORE_separateShading + }ifelse + currentdict + end exch + }if + dup 0 get dup/DeviceCMYK eq exch dup/Separation eq exch/DeviceN eq or or not + { + exch begin + ColorSpace dup type/arraytype eq + {0 get}if + /DeviceGray ne + { + AGMCORE_report_unsupported_color_space + AGMCORE_black_plate not + { + ColorSpace 0 get/CIEBasedA eq + { + /ColorSpace[/Separation/_ciebaseda_/DeviceGray{}]def + }if + ColorSpace 0 get dup/CIEBasedABC eq exch dup/CIEBasedDEF eq exch/DeviceRGB eq or or + { + /ColorSpace[/DeviceN[/_red_/_green_/_blue_]/DeviceRGB{}]def + }if + ColorSpace 0 get/CIEBasedDEFG eq + { + /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def + }if + currentdict 0 false AGMCORE_separateShading + }if + }if + currentdict + end exch + }if + pop + dup/AGMCORE_ignoreshade known + { + begin + /ColorSpace[/Separation(None)/DeviceGray{}]def + currentdict end + }if + }def + /shfill + { + AGMCORE_separateShadingDict + dup/AGMCORE_ignoreshade known + {pop} + {AGMCORE_&sysshfill}ifelse + }def + /makepattern + { + exch + dup/PatternType get 2 eq + { + clonedict + begin + /Shading Shading AGMCORE_separateShadingDict def + Shading/AGMCORE_ignoreshade known + currentdict end exch + {pop<>}if + exch AGMCORE_&sysmakepattern + }{ + exch AGMCORE_&usrmakepattern + }ifelse + }def + }if + }if + AGMCORE_in_rip_sep{ + /setcustomcolor + { + exch aload pop + dup 7 1 roll inRip_spot_has_ink not { + 4{4 index mul 4 1 roll} + repeat + /DeviceCMYK setcolorspace + 6 -2 roll pop pop + }{ + //Adobe_AGM_Core begin + /AGMCORE_k xdf/AGMCORE_y xdf/AGMCORE_m xdf/AGMCORE_c xdf + end + [/Separation 4 -1 roll/DeviceCMYK + {dup AGMCORE_c mul exch dup AGMCORE_m mul exch dup AGMCORE_y mul exch AGMCORE_k mul} + ] + setcolorspace + }ifelse + setcolor + }ndf + /setseparationgray + { + [/Separation(All)/DeviceGray{}]setcolorspace_opt + 1 exch sub setcolor + }ndf + }{ + /setseparationgray + { + AGMCORE_&setgray + }ndf + }ifelse + /findcmykcustomcolor + { + 5 makereadonlyarray + }ndf + /setcustomcolor + { + exch aload pop pop + 4{4 index mul 4 1 roll}repeat + setcmykcolor pop + }ndf + /has_color + /colorimage where{ + AGMCORE_producing_seps{ + pop true + }{ + systemdict eq + }ifelse + }{ + false + }ifelse + def + /map_index + { + 1 index mul exch getinterval{255 div}forall + }bdf + /map_indexed_devn + { + Lookup Names length 3 -1 roll cvi map_index + }bdf + /n_color_components + { + base_colorspace_type + dup/DeviceGray eq{ + pop 1 + }{ + /DeviceCMYK eq{ + 4 + }{ + 3 + }ifelse + }ifelse + }bdf + level2{ + /mo/moveto ldf + /li/lineto ldf + /cv/curveto ldf + /knockout_unitsq + { + 1 setgray + 0 0 1 1 rectfill + }def + level2/setcolorspace AGMCORE_key_known not and{ + /AGMCORE_&&&setcolorspace/setcolorspace ldf + /AGMCORE_ReplaceMappedColor + { + dup type dup/arraytype eq exch/packedarraytype eq or + { + /AGMCORE_SpotAliasAry2 where{ + begin + dup 0 get dup/Separation eq + { + pop + dup length array copy + dup dup 1 get + current_spot_alias + { + dup map_alias + { + false set_spot_alias + dup 1 exch setsepcolorspace + true set_spot_alias + begin + /sep_colorspace_dict currentdict AGMCORE_gput + pop pop pop + [ + /Separation Name + CSA map_csa + MappedCSA + /sep_colorspace_proc load + ] + dup Name + end + }if + }if + map_reserved_ink_name 1 xpt + }{ + /DeviceN eq + { + dup length array copy + dup dup 1 get[ + exch{ + current_spot_alias{ + dup map_alias{ + /Name get exch pop + }if + }if + map_reserved_ink_name + }forall + ]1 xpt + }if + }ifelse + end + }if + }if + }def + /setcolorspace + { + dup type dup/arraytype eq exch/packedarraytype eq or + { + dup 0 get/Indexed eq + { + AGMCORE_distilling + { + /PhotoshopDuotoneList where + { + pop false + }{ + true + }ifelse + }{ + true + }ifelse + { + aload pop 3 -1 roll + AGMCORE_ReplaceMappedColor + 3 1 roll 4 array astore + }if + }{ + AGMCORE_ReplaceMappedColor + }ifelse + }if + DeviceN_PS2_inRip_seps{AGMCORE_&&&setcolorspace}if + }def + }if + }{ + /adj + { + currentstrokeadjust{ + transform + 0.25 sub round 0.25 add exch + 0.25 sub round 0.25 add exch + itransform + }if + }def + /mo{ + adj moveto + }def + /li{ + adj lineto + }def + /cv{ + 6 2 roll adj + 6 2 roll adj + 6 2 roll adj curveto + }def + /knockout_unitsq + { + 1 setgray + 8 8 1[8 0 0 8 0 0]{}image + }def + /currentstrokeadjust{ + /currentstrokeadjust AGMCORE_gget + }def + /setstrokeadjust{ + /currentstrokeadjust exch AGMCORE_gput + }def + /setcolorspace + { + /currentcolorspace exch AGMCORE_gput + }def + /currentcolorspace + { + /currentcolorspace AGMCORE_gget + }def + /setcolor_devicecolor + { + base_colorspace_type + dup/DeviceGray eq{ + pop setgray + }{ + /DeviceCMYK eq{ + setcmykcolor + }{ + setrgbcolor + }ifelse + }ifelse + }def + /setcolor + { + currentcolorspace 0 get + dup/DeviceGray ne{ + dup/DeviceCMYK ne{ + dup/DeviceRGB ne{ + dup/Separation eq{ + pop + currentcolorspace 3 gx + currentcolorspace 2 get + }{ + dup/Indexed eq{ + pop + currentcolorspace 3 get dup type/stringtype eq{ + currentcolorspace 1 get n_color_components + 3 -1 roll map_index + }{ + exec + }ifelse + currentcolorspace 1 get + }{ + /AGMCORE_cur_err/AGMCORE_invalid_color_space def + AGMCORE_invalid_color_space + }ifelse + }ifelse + }if + }if + }if + setcolor_devicecolor + }def + }ifelse + /sop/setoverprint ldf + /lw/setlinewidth ldf + /lc/setlinecap ldf + /lj/setlinejoin ldf + /ml/setmiterlimit ldf + /dsh/setdash ldf + /sadj/setstrokeadjust ldf + /gry/setgray ldf + /rgb/setrgbcolor ldf + /cmyk[ + /currentcolorspace[/DeviceCMYK]/AGMCORE_gput cvx + /setcmykcolor load dup type/operatortype ne{/exec cvx}if + ]cvx bdf + level3 AGMCORE_host_sep not and{ + /nzopmsc{ + 6 dict begin + /kk exch def + /yy exch def + /mm exch def + /cc exch def + /sum 0 def + cc 0 ne{/sum sum 2#1000 or def cc}if + mm 0 ne{/sum sum 2#0100 or def mm}if + yy 0 ne{/sum sum 2#0010 or def yy}if + kk 0 ne{/sum sum 2#0001 or def kk}if + AGMCORE_CMYKDeviceNColorspaces sum get setcolorspace + sum 0 eq{0}if + end + setcolor + }bdf + }{ + /nzopmsc/cmyk ldf + }ifelse + /sep/setsepcolor ldf + /devn/setdevicencolor ldf + /idx/setindexedcolor ldf + /colr/setcolor ldf + /csacrd/set_csa_crd ldf + /sepcs/setsepcolorspace ldf + /devncs/setdevicencolorspace ldf + /idxcs/setindexedcolorspace ldf + /cp/closepath ldf + /clp/clp_npth ldf + /eclp/eoclp_npth ldf + /f/fill ldf + /ef/eofill ldf + /@/stroke ldf + /nclp/npth_clp ldf + /gset/graphic_setup ldf + /gcln/graphic_cleanup ldf + /ct/concat ldf + /cf/currentfile ldf + /fl/filter ldf + /rs/readstring ldf + /AGMCORE_def_ht currenthalftone def + /clonedict Adobe_AGM_Utils begin/clonedict load end def + /clonearray Adobe_AGM_Utils begin/clonearray load end def + currentdict{ + dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{ + bind + }if + def + }forall + /getrampcolor + { + /indx exch def + 0 1 NumComp 1 sub + { + dup + Samples exch get + dup type/stringtype eq{indx get}if + exch + Scaling exch get aload pop + 3 1 roll + mul add + }for + ColorSpaceFamily/Separation eq + {sep} + { + ColorSpaceFamily/DeviceN eq + {devn}{setcolor}ifelse + }ifelse + }bdf + /sssetbackground{ + aload pop + ColorSpaceFamily/Separation eq + {sep} + { + ColorSpaceFamily/DeviceN eq + {devn}{setcolor}ifelse + }ifelse + }bdf + /RadialShade + { + 40 dict begin + /ColorSpaceFamily xdf + /background xdf + /ext1 xdf + /ext0 xdf + /BBox xdf + /r2 xdf + /c2y xdf + /c2x xdf + /r1 xdf + /c1y xdf + /c1x xdf + /rampdict xdf + /setinkoverprint where{pop/setinkoverprint{pop}def}if + gsave + BBox length 0 gt + { + np + BBox 0 get BBox 1 get moveto + BBox 2 get BBox 0 get sub 0 rlineto + 0 BBox 3 get BBox 1 get sub rlineto + BBox 2 get BBox 0 get sub neg 0 rlineto + closepath + clip + np + }if + c1x c2x eq + { + c1y c2y lt{/theta 90 def}{/theta 270 def}ifelse + }{ + /slope c2y c1y sub c2x c1x sub div def + /theta slope 1 atan def + c2x c1x lt c2y c1y ge and{/theta theta 180 sub def}if + c2x c1x lt c2y c1y lt and{/theta theta 180 add def}if + }ifelse + gsave + clippath + c1x c1y translate + theta rotate + -90 rotate + {pathbbox}stopped + {0 0 0 0}if + /yMax xdf + /xMax xdf + /yMin xdf + /xMin xdf + grestore + xMax xMin eq yMax yMin eq or + { + grestore + end + }{ + /max{2 copy gt{pop}{exch pop}ifelse}bdf + /min{2 copy lt{pop}{exch pop}ifelse}bdf + rampdict begin + 40 dict begin + background length 0 gt{background sssetbackground gsave clippath fill grestore}if + gsave + c1x c1y translate + theta rotate + -90 rotate + /c2y c1x c2x sub dup mul c1y c2y sub dup mul add sqrt def + /c1y 0 def + /c1x 0 def + /c2x 0 def + ext0 + { + 0 getrampcolor + c2y r2 add r1 sub 0.0001 lt + { + c1x c1y r1 360 0 arcn + pathbbox + /aymax exch def + /axmax exch def + /aymin exch def + /axmin exch def + /bxMin xMin axmin min def + /byMin yMin aymin min def + /bxMax xMax axmax max def + /byMax yMax aymax max def + bxMin byMin moveto + bxMax byMin lineto + bxMax byMax lineto + bxMin byMax lineto + bxMin byMin lineto + eofill + }{ + c2y r1 add r2 le + { + c1x c1y r1 0 360 arc + fill + } + { + c2x c2y r2 0 360 arc fill + r1 r2 eq + { + /p1x r1 neg def + /p1y c1y def + /p2x r1 def + /p2y c1y def + p1x p1y moveto p2x p2y lineto p2x yMin lineto p1x yMin lineto + fill + }{ + /AA r2 r1 sub c2y div def + AA -1 eq + {/theta 89.99 def} + {/theta AA 1 AA dup mul sub sqrt div 1 atan def} + ifelse + /SS1 90 theta add dup sin exch cos div def + /p1x r1 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def + /p1y p1x SS1 div neg def + /SS2 90 theta sub dup sin exch cos div def + /p2x r1 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def + /p2y p2x SS2 div neg def + r1 r2 gt + { + /L1maxX p1x yMin p1y sub SS1 div add def + /L2maxX p2x yMin p2y sub SS2 div add def + }{ + /L1maxX 0 def + /L2maxX 0 def + }ifelse + p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto + L1maxX L1maxX p1x sub SS1 mul p1y add lineto + fill + }ifelse + }ifelse + }ifelse + }if + c1x c2x sub dup mul + c1y c2y sub dup mul + add 0.5 exp + 0 dtransform + dup mul exch dup mul add 0.5 exp 72 div + 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt + 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt + 1 index 1 index lt{exch}if pop + /hires xdf + hires mul + /numpix xdf + /numsteps NumSamples def + /rampIndxInc 1 def + /subsampling false def + numpix 0 ne + { + NumSamples numpix div 0.5 gt + { + /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def + /rampIndxInc NumSamples 1 sub numsteps div def + /subsampling true def + }if + }if + /xInc c2x c1x sub numsteps div def + /yInc c2y c1y sub numsteps div def + /rInc r2 r1 sub numsteps div def + /cx c1x def + /cy c1y def + /radius r1 def + np + xInc 0 eq yInc 0 eq rInc 0 eq and and + { + 0 getrampcolor + cx cy radius 0 360 arc + stroke + NumSamples 1 sub getrampcolor + cx cy radius 72 hires div add 0 360 arc + 0 setlinewidth + stroke + }{ + 0 + numsteps + { + dup + subsampling{round cvi}if + getrampcolor + cx cy radius 0 360 arc + /cx cx xInc add def + /cy cy yInc add def + /radius radius rInc add def + cx cy radius 360 0 arcn + eofill + rampIndxInc add + }repeat + pop + }ifelse + ext1 + { + c2y r2 add r1 lt + { + c2x c2y r2 0 360 arc + fill + }{ + c2y r1 add r2 sub 0.0001 le + { + c2x c2y r2 360 0 arcn + pathbbox + /aymax exch def + /axmax exch def + /aymin exch def + /axmin exch def + /bxMin xMin axmin min def + /byMin yMin aymin min def + /bxMax xMax axmax max def + /byMax yMax aymax max def + bxMin byMin moveto + bxMax byMin lineto + bxMax byMax lineto + bxMin byMax lineto + bxMin byMin lineto + eofill + }{ + c2x c2y r2 0 360 arc fill + r1 r2 eq + { + /p1x r2 neg def + /p1y c2y def + /p2x r2 def + /p2y c2y def + p1x p1y moveto p2x p2y lineto p2x yMax lineto p1x yMax lineto + fill + }{ + /AA r2 r1 sub c2y div def + AA -1 eq + {/theta 89.99 def} + {/theta AA 1 AA dup mul sub sqrt div 1 atan def} + ifelse + /SS1 90 theta add dup sin exch cos div def + /p1x r2 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def + /p1y c2y p1x SS1 div sub def + /SS2 90 theta sub dup sin exch cos div def + /p2x r2 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def + /p2y c2y p2x SS2 div sub def + r1 r2 lt + { + /L1maxX p1x yMax p1y sub SS1 div add def + /L2maxX p2x yMax p2y sub SS2 div add def + }{ + /L1maxX 0 def + /L2maxX 0 def + }ifelse + p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto + L1maxX L1maxX p1x sub SS1 mul p1y add lineto + fill + }ifelse + }ifelse + }ifelse + }if + grestore + grestore + end + end + end + }ifelse + }bdf + /GenStrips + { + 40 dict begin + /ColorSpaceFamily xdf + /background xdf + /ext1 xdf + /ext0 xdf + /BBox xdf + /y2 xdf + /x2 xdf + /y1 xdf + /x1 xdf + /rampdict xdf + /setinkoverprint where{pop/setinkoverprint{pop}def}if + gsave + BBox length 0 gt + { + np + BBox 0 get BBox 1 get moveto + BBox 2 get BBox 0 get sub 0 rlineto + 0 BBox 3 get BBox 1 get sub rlineto + BBox 2 get BBox 0 get sub neg 0 rlineto + closepath + clip + np + }if + x1 x2 eq + { + y1 y2 lt{/theta 90 def}{/theta 270 def}ifelse + }{ + /slope y2 y1 sub x2 x1 sub div def + /theta slope 1 atan def + x2 x1 lt y2 y1 ge and{/theta theta 180 sub def}if + x2 x1 lt y2 y1 lt and{/theta theta 180 add def}if + } + ifelse + gsave + clippath + x1 y1 translate + theta rotate + {pathbbox}stopped + {0 0 0 0}if + /yMax exch def + /xMax exch def + /yMin exch def + /xMin exch def + grestore + xMax xMin eq yMax yMin eq or + { + grestore + end + }{ + rampdict begin + 20 dict begin + background length 0 gt{background sssetbackground gsave clippath fill grestore}if + gsave + x1 y1 translate + theta rotate + /xStart 0 def + /xEnd x2 x1 sub dup mul y2 y1 sub dup mul add 0.5 exp def + /ySpan yMax yMin sub def + /numsteps NumSamples def + /rampIndxInc 1 def + /subsampling false def + xStart 0 transform + xEnd 0 transform + 3 -1 roll + sub dup mul + 3 1 roll + sub dup mul + add 0.5 exp 72 div + 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt + 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt + 1 index 1 index lt{exch}if pop + mul + /numpix xdf + numpix 0 ne + { + NumSamples numpix div 0.5 gt + { + /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def + /rampIndxInc NumSamples 1 sub numsteps div def + /subsampling true def + }if + }if + ext0 + { + 0 getrampcolor + xMin xStart lt + { + xMin yMin xMin neg ySpan rectfill + }if + }if + /xInc xEnd xStart sub numsteps div def + /x xStart def + 0 + numsteps + { + dup + subsampling{round cvi}if + getrampcolor + x yMin xInc ySpan rectfill + /x x xInc add def + rampIndxInc add + }repeat + pop + ext1{ + xMax xEnd gt + { + xEnd yMin xMax xEnd sub ySpan rectfill + }if + }if + grestore + grestore + end + end + end + }ifelse + }bdf +}def +/pt +{ + end +}def +/dt{ +}def +/pgsv{ + //Adobe_AGM_Core/AGMCORE_save save put +}def +/pgrs{ + //Adobe_AGM_Core/AGMCORE_save get restore +}def +systemdict/findcolorrendering known{ + /findcolorrendering systemdict/findcolorrendering get def +}if +systemdict/setcolorrendering known{ + /setcolorrendering systemdict/setcolorrendering get def +}if +/test_cmyk_color_plate +{ + gsave + setcmykcolor currentgray 1 ne + grestore +}def +/inRip_spot_has_ink +{ + dup//Adobe_AGM_Core/AGMCORE_name xddf + convert_spot_to_process not +}def +/map255_to_range +{ + 1 index sub + 3 -1 roll 255 div mul add +}def +/set_csa_crd +{ + /sep_colorspace_dict null AGMCORE_gput + begin + CSA get_csa_by_name setcolorspace_opt + set_crd + end +} +def +/map_csa +{ + currentdict/MappedCSA known{MappedCSA null ne}{false}ifelse + {pop}{get_csa_by_name/MappedCSA xdf}ifelse +}def +/setsepcolor +{ + /sep_colorspace_dict AGMCORE_gget begin + dup/sep_tint exch AGMCORE_gput + TintProc + end +}def +/setdevicencolor +{ + /devicen_colorspace_dict AGMCORE_gget begin + Names length copy + Names length 1 sub -1 0 + { + /devicen_tints AGMCORE_gget 3 1 roll xpt + }for + TintProc + end +}def +/sep_colorspace_proc +{ + /AGMCORE_tmp exch store + /sep_colorspace_dict AGMCORE_gget begin + currentdict/Components known{ + Components aload pop + TintMethod/Lab eq{ + 2{AGMCORE_tmp mul NComponents 1 roll}repeat + LMax sub AGMCORE_tmp mul LMax add NComponents 1 roll + }{ + TintMethod/Subtractive eq{ + NComponents{ + AGMCORE_tmp mul NComponents 1 roll + }repeat + }{ + NComponents{ + 1 sub AGMCORE_tmp mul 1 add NComponents 1 roll + }repeat + }ifelse + }ifelse + }{ + ColorLookup AGMCORE_tmp ColorLookup length 1 sub mul round cvi get + aload pop + }ifelse + end +}def +/sep_colorspace_gray_proc +{ + /AGMCORE_tmp exch store + /sep_colorspace_dict AGMCORE_gget begin + GrayLookup AGMCORE_tmp GrayLookup length 1 sub mul round cvi get + end +}def +/sep_proc_name +{ + dup 0 get + dup/DeviceRGB eq exch/DeviceCMYK eq or level2 not and has_color not and{ + pop[/DeviceGray] + /sep_colorspace_gray_proc + }{ + /sep_colorspace_proc + }ifelse +}def +/setsepcolorspace +{ + current_spot_alias{ + dup begin + Name map_alias{ + exch pop + }if + end + }if + dup/sep_colorspace_dict exch AGMCORE_gput + begin + CSA map_csa + /AGMCORE_sep_special Name dup()eq exch(All)eq or store + AGMCORE_avoid_L2_sep_space{ + [/Indexed MappedCSA sep_proc_name 255 exch + {255 div}/exec cvx 3 -1 roll[4 1 roll load/exec cvx]cvx + ]setcolorspace_opt + /TintProc{ + 255 mul round cvi setcolor + }bdf + }{ + MappedCSA 0 get/DeviceCMYK eq + currentdict/Components known and + AGMCORE_sep_special not and{ + /TintProc[ + Components aload pop Name findcmykcustomcolor + /exch cvx/setcustomcolor cvx + ]cvx bdf + }{ + AGMCORE_host_sep Name(All)eq and{ + /TintProc{ + 1 exch sub setseparationgray + }bdf + }{ + AGMCORE_in_rip_sep MappedCSA 0 get/DeviceCMYK eq and + AGMCORE_host_sep or + Name()eq and{ + /TintProc[ + MappedCSA sep_proc_name exch 0 get/DeviceCMYK eq{ + cvx/setcmykcolor cvx + }{ + cvx/setgray cvx + }ifelse + ]cvx bdf + }{ + AGMCORE_producing_seps MappedCSA 0 get dup/DeviceCMYK eq exch/DeviceGray eq or and AGMCORE_sep_special not and{ + /TintProc[ + /dup cvx + MappedCSA sep_proc_name cvx exch + 0 get/DeviceGray eq{ + 1/exch cvx/sub cvx 0 0 0 4 -1/roll cvx + }if + /Name cvx/findcmykcustomcolor cvx/exch cvx + AGMCORE_host_sep{ + AGMCORE_is_cmyk_sep + /Name cvx + /AGMCORE_IsSeparationAProcessColor load/exec cvx + /not cvx/and cvx + }{ + Name inRip_spot_has_ink not + }ifelse + [ + /pop cvx 1 + ]cvx/if cvx + /setcustomcolor cvx + ]cvx bdf + }{ + /TintProc{setcolor}bdf + [/Separation Name MappedCSA sep_proc_name load]setcolorspace_opt + }ifelse + }ifelse + }ifelse + }ifelse + }ifelse + set_crd + setsepcolor + end +}def +/additive_blend +{ + 3 dict begin + /numarrays xdf + /numcolors xdf + 0 1 numcolors 1 sub + { + /c1 xdf + 1 + 0 1 numarrays 1 sub + { + 1 exch add/index cvx + c1/get cvx/mul cvx + }for + numarrays 1 add 1/roll cvx + }for + numarrays[/pop cvx]cvx/repeat cvx + end +}def +/subtractive_blend +{ + 3 dict begin + /numarrays xdf + /numcolors xdf + 0 1 numcolors 1 sub + { + /c1 xdf + 1 1 + 0 1 numarrays 1 sub + { + 1 3 3 -1 roll add/index cvx + c1/get cvx/sub cvx/mul cvx + }for + /sub cvx + numarrays 1 add 1/roll cvx + }for + numarrays[/pop cvx]cvx/repeat cvx + end +}def +/exec_tint_transform +{ + /TintProc[ + /TintTransform cvx/setcolor cvx + ]cvx bdf + MappedCSA setcolorspace_opt +}bdf +/devn_makecustomcolor +{ + 2 dict begin + /names_index xdf + /Names xdf + 1 1 1 1 Names names_index get findcmykcustomcolor + /devicen_tints AGMCORE_gget names_index get setcustomcolor + Names length{pop}repeat + end +}bdf +/setdevicencolorspace +{ + dup/AliasedColorants known{false}{true}ifelse + current_spot_alias and{ + 7 dict begin + /names_index 0 def + dup/names_len exch/Names get length def + /new_names names_len array def + /new_LookupTables names_len array def + /alias_cnt 0 def + dup/Names get + { + dup map_alias{ + exch pop + dup/ColorLookup known{ + dup begin + new_LookupTables names_index ColorLookup put + end + }{ + dup/Components known{ + dup begin + new_LookupTables names_index Components put + end + }{ + dup begin + new_LookupTables names_index[null null null null]put + end + }ifelse + }ifelse + new_names names_index 3 -1 roll/Name get put + /alias_cnt alias_cnt 1 add def + }{ + /name xdf + new_names names_index name put + dup/LookupTables known{ + dup begin + new_LookupTables names_index LookupTables names_index get put + end + }{ + dup begin + new_LookupTables names_index[null null null null]put + end + }ifelse + }ifelse + /names_index names_index 1 add def + }forall + alias_cnt 0 gt{ + /AliasedColorants true def + /lut_entry_len new_LookupTables 0 get dup length 256 ge{0 get length}{length}ifelse def + 0 1 names_len 1 sub{ + /names_index xdf + new_LookupTables names_index get dup length 256 ge{0 get length}{length}ifelse lut_entry_len ne{ + /AliasedColorants false def + exit + }{ + new_LookupTables names_index get 0 get null eq{ + dup/Names get names_index get/name xdf + name(Cyan)eq name(Magenta)eq name(Yellow)eq name(Black)eq + or or or not{ + /AliasedColorants false def + exit + }if + }if + }ifelse + }for + lut_entry_len 1 eq{ + /AliasedColorants false def + }if + AliasedColorants{ + dup begin + /Names new_names def + /LookupTables new_LookupTables def + /AliasedColorants true def + /NComponents lut_entry_len def + /TintMethod NComponents 4 eq{/Subtractive}{/Additive}ifelse def + /MappedCSA TintMethod/Additive eq{/DeviceRGB}{/DeviceCMYK}ifelse def + currentdict/TTTablesIdx known not{ + /TTTablesIdx -1 def + }if + end + }if + }if + end + }if + dup/devicen_colorspace_dict exch AGMCORE_gput + begin + currentdict/AliasedColorants known{ + AliasedColorants + }{ + false + }ifelse + dup not{ + CSA map_csa + }if + /TintTransform load type/nulltype eq or{ + /TintTransform[ + 0 1 Names length 1 sub + { + /TTTablesIdx TTTablesIdx 1 add def + dup LookupTables exch get dup 0 get null eq + { + 1 index + Names exch get + dup(Cyan)eq + { + pop exch + LookupTables length exch sub + /index cvx + 0 0 0 + } + { + dup(Magenta)eq + { + pop exch + LookupTables length exch sub + /index cvx + 0/exch cvx 0 0 + }{ + (Yellow)eq + { + exch + LookupTables length exch sub + /index cvx + 0 0 3 -1/roll cvx 0 + }{ + exch + LookupTables length exch sub + /index cvx + 0 0 0 4 -1/roll cvx + }ifelse + }ifelse + }ifelse + 5 -1/roll cvx/astore cvx + }{ + dup length 1 sub + LookupTables length 4 -1 roll sub 1 add + /index cvx/mul cvx/round cvx/cvi cvx/get cvx + }ifelse + Names length TTTablesIdx add 1 add 1/roll cvx + }for + Names length[/pop cvx]cvx/repeat cvx + NComponents Names length + TintMethod/Subtractive eq + { + subtractive_blend + }{ + additive_blend + }ifelse + ]cvx bdf + }if + AGMCORE_host_sep{ + Names convert_to_process{ + exec_tint_transform + } + { + currentdict/AliasedColorants known{ + AliasedColorants not + }{ + false + }ifelse + 5 dict begin + /AvoidAliasedColorants xdf + /painted? false def + /names_index 0 def + /names_len Names length def + AvoidAliasedColorants{ + /currentspotalias current_spot_alias def + false set_spot_alias + }if + Names{ + AGMCORE_is_cmyk_sep{ + dup(Cyan)eq AGMCORE_cyan_plate and exch + dup(Magenta)eq AGMCORE_magenta_plate and exch + dup(Yellow)eq AGMCORE_yellow_plate and exch + (Black)eq AGMCORE_black_plate and or or or{ + /devicen_colorspace_dict AGMCORE_gget/TintProc[ + Names names_index/devn_makecustomcolor cvx + ]cvx ddf + /painted? true def + }if + painted?{exit}if + }{ + 0 0 0 0 5 -1 roll findcmykcustomcolor 1 setcustomcolor currentgray 0 eq{ + /devicen_colorspace_dict AGMCORE_gget/TintProc[ + Names names_index/devn_makecustomcolor cvx + ]cvx ddf + /painted? true def + exit + }if + }ifelse + /names_index names_index 1 add def + }forall + AvoidAliasedColorants{ + currentspotalias set_spot_alias + }if + painted?{ + /devicen_colorspace_dict AGMCORE_gget/names_index names_index put + }{ + /devicen_colorspace_dict AGMCORE_gget/TintProc[ + names_len[/pop cvx]cvx/repeat cvx 1/setseparationgray cvx + 0 0 0 0/setcmykcolor cvx + ]cvx ddf + }ifelse + end + }ifelse + } + { + AGMCORE_in_rip_sep{ + Names convert_to_process not + }{ + level3 + }ifelse + { + [/DeviceN Names MappedCSA/TintTransform load]setcolorspace_opt + /TintProc level3 not AGMCORE_in_rip_sep and{ + [ + Names/length cvx[/pop cvx]cvx/repeat cvx + ]cvx bdf + }{ + {setcolor}bdf + }ifelse + }{ + exec_tint_transform + }ifelse + }ifelse + set_crd + /AliasedColorants false def + end +}def +/setindexedcolorspace +{ + dup/indexed_colorspace_dict exch AGMCORE_gput + begin + currentdict/CSDBase known{ + CSDBase/CSD get_res begin + currentdict/Names known{ + currentdict devncs + }{ + 1 currentdict sepcs + }ifelse + AGMCORE_host_sep{ + 4 dict begin + /compCnt/Names where{pop Names length}{1}ifelse def + /NewLookup HiVal 1 add string def + 0 1 HiVal{ + /tableIndex xdf + Lookup dup type/stringtype eq{ + compCnt tableIndex map_index + }{ + exec + }ifelse + /Names where{ + pop setdevicencolor + }{ + setsepcolor + }ifelse + currentgray + tableIndex exch + 255 mul cvi + NewLookup 3 1 roll put + }for + [/Indexed currentcolorspace HiVal NewLookup]setcolorspace_opt + end + }{ + level3 + { + currentdict/Names known{ + [/Indexed[/DeviceN Names MappedCSA/TintTransform load]HiVal Lookup]setcolorspace_opt + }{ + [/Indexed[/Separation Name MappedCSA sep_proc_name load]HiVal Lookup]setcolorspace_opt + }ifelse + }{ + [/Indexed MappedCSA HiVal + [ + currentdict/Names known{ + Lookup dup type/stringtype eq + {/exch cvx CSDBase/CSD get_res/Names get length dup/mul cvx exch/getinterval cvx{255 div}/forall cvx} + {/exec cvx}ifelse + /TintTransform load/exec cvx + }{ + Lookup dup type/stringtype eq + {/exch cvx/get cvx 255/div cvx} + {/exec cvx}ifelse + CSDBase/CSD get_res/MappedCSA get sep_proc_name exch pop/load cvx/exec cvx + }ifelse + ]cvx + ]setcolorspace_opt + }ifelse + }ifelse + end + set_crd + } + { + CSA map_csa + AGMCORE_host_sep level2 not and{ + 0 0 0 0 setcmykcolor + }{ + [/Indexed MappedCSA + level2 not has_color not and{ + dup 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or{ + pop[/DeviceGray] + }if + HiVal GrayLookup + }{ + HiVal + currentdict/RangeArray known{ + { + /indexed_colorspace_dict AGMCORE_gget begin + Lookup exch + dup HiVal gt{ + pop HiVal + }if + NComponents mul NComponents getinterval{}forall + NComponents 1 sub -1 0{ + RangeArray exch 2 mul 2 getinterval aload pop map255_to_range + NComponents 1 roll + }for + end + }bind + }{ + Lookup + }ifelse + }ifelse + ]setcolorspace_opt + set_crd + }ifelse + }ifelse + end +}def +/setindexedcolor +{ + AGMCORE_host_sep{ + /indexed_colorspace_dict AGMCORE_gget + begin + currentdict/CSDBase known{ + CSDBase/CSD get_res begin + currentdict/Names known{ + map_indexed_devn + devn + } + { + Lookup 1 3 -1 roll map_index + sep + }ifelse + end + }{ + Lookup MappedCSA/DeviceCMYK eq{4}{1}ifelse 3 -1 roll + map_index + MappedCSA/DeviceCMYK eq{setcmykcolor}{setgray}ifelse + }ifelse + end + }{ + level3 not AGMCORE_in_rip_sep and/indexed_colorspace_dict AGMCORE_gget/CSDBase known and{ + /indexed_colorspace_dict AGMCORE_gget/CSDBase get/CSD get_res begin + map_indexed_devn + devn + end + } + { + setcolor + }ifelse + }ifelse +}def +/ignoreimagedata +{ + currentoverprint not{ + gsave + dup clonedict begin + 1 setgray + /Decode[0 1]def + /DataSourcedef + /MultipleDataSources false def + /BitsPerComponent 8 def + currentdict end + systemdict/image gx + grestore + }if + consumeimagedata +}def +/add_res +{ + dup/CSD eq{ + pop + //Adobe_AGM_Core begin + /AGMCORE_CSD_cache load 3 1 roll put + end + }{ + defineresource pop + }ifelse +}def +/del_res +{ + { + aload pop exch + dup/CSD eq{ + pop + {//Adobe_AGM_Core/AGMCORE_CSD_cache get exch undef}forall + }{ + exch + {1 index undefineresource}forall + pop + }ifelse + }forall +}def +/get_res +{ + dup/CSD eq{ + pop + dup type dup/nametype eq exch/stringtype eq or{ + AGMCORE_CSD_cache exch get + }if + }{ + findresource + }ifelse +}def +/get_csa_by_name +{ + dup type dup/nametype eq exch/stringtype eq or{ + /CSA get_res + }if +}def +/paintproc_buf_init +{ + /count get 0 0 put +}def +/paintproc_buf_next +{ + dup/count get dup 0 get + dup 3 1 roll + 1 add 0 xpt + get +}def +/cachepaintproc_compress +{ + 5 dict begin + currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def + /ppdict 20 dict def + /string_size 16000 def + /readbuffer string_size string def + currentglobal true setglobal + ppdict 1 array dup 0 1 put/count xpt + setglobal + /LZWFilter + { + exch + dup length 0 eq{ + pop + }{ + ppdict dup length 1 sub 3 -1 roll put + }ifelse + {string_size}{0}ifelse string + }/LZWEncode filter def + { + ReadFilter readbuffer readstring + exch LZWFilter exch writestring + not{exit}if + }loop + LZWFilter closefile + ppdict + end +}def +/cachepaintproc +{ + 2 dict begin + currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def + /ppdict 20 dict def + currentglobal true setglobal + ppdict 1 array dup 0 1 put/count xpt + setglobal + { + ReadFilter 16000 string readstring exch + ppdict dup length 1 sub 3 -1 roll put + not{exit}if + }loop + ppdict dup dup length 1 sub()put + end +}def +/make_pattern +{ + exch clonedict exch + dup matrix currentmatrix matrix concatmatrix 0 0 3 2 roll itransform + exch 3 index/XStep get 1 index exch 2 copy div cvi mul sub sub + exch 3 index/YStep get 1 index exch 2 copy div cvi mul sub sub + matrix translate exch matrix concatmatrix + 1 index begin + BBox 0 get XStep div cvi XStep mul/xshift exch neg def + BBox 1 get YStep div cvi YStep mul/yshift exch neg def + BBox 0 get xshift add + BBox 1 get yshift add + BBox 2 get xshift add + BBox 3 get yshift add + 4 array astore + /BBox exch def + [xshift yshift/translate load null/exec load]dup + 3/PaintProc load put cvx/PaintProc exch def + end + gsave 0 setgray + makepattern + grestore +}def +/set_pattern +{ + dup/PatternType get 1 eq{ + dup/PaintType get 1 eq{ + currentoverprint sop[/DeviceGray]setcolorspace 0 setgray + }if + }if + setpattern +}def +/setcolorspace_opt +{ + dup currentcolorspace eq{pop}{setcolorspace}ifelse +}def +/updatecolorrendering +{ + currentcolorrendering/RenderingIntent known{ + currentcolorrendering/RenderingIntent get + } + { + Intent/AbsoluteColorimetric eq + { + /absolute_colorimetric_crd AGMCORE_gget dup null eq + } + { + Intent/RelativeColorimetric eq + { + /relative_colorimetric_crd AGMCORE_gget dup null eq + } + { + Intent/Saturation eq + { + /saturation_crd AGMCORE_gget dup null eq + } + { + /perceptual_crd AGMCORE_gget dup null eq + }ifelse + }ifelse + }ifelse + { + pop null + } + { + /RenderingIntent known{null}{Intent}ifelse + }ifelse + }ifelse + Intent ne{ + Intent/ColorRendering{findresource}stopped + { + pop pop systemdict/findcolorrendering known + { + Intent findcolorrendering + { + /ColorRendering findresource true exch + } + { + /ColorRendering findresource + product(Xerox Phaser 5400)ne + exch + }ifelse + dup Intent/AbsoluteColorimetric eq + { + /absolute_colorimetric_crd exch AGMCORE_gput + } + { + Intent/RelativeColorimetric eq + { + /relative_colorimetric_crd exch AGMCORE_gput + } + { + Intent/Saturation eq + { + /saturation_crd exch AGMCORE_gput + } + { + Intent/Perceptual eq + { + /perceptual_crd exch AGMCORE_gput + } + { + pop + }ifelse + }ifelse + }ifelse + }ifelse + 1 index{exch}{pop}ifelse + } + {false}ifelse + } + {true}ifelse + { + dup begin + currentdict/TransformPQR known{ + currentdict/TransformPQR get aload pop + 3{{}eq 3 1 roll}repeat or or + } + {true}ifelse + currentdict/MatrixPQR known{ + currentdict/MatrixPQR get aload pop + 1.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll + 0.0 eq 9 1 roll 1.0 eq 9 1 roll 0.0 eq 9 1 roll + 0.0 eq 9 1 roll 0.0 eq 9 1 roll 1.0 eq + and and and and and and and and + } + {true}ifelse + end + or + { + clonedict begin + /TransformPQR[ + {4 -1 roll 3 get dup 3 1 roll sub 5 -1 roll 3 get 3 -1 roll sub div + 3 -1 roll 3 get 3 -1 roll 3 get dup 4 1 roll sub mul add}bind + {4 -1 roll 4 get dup 3 1 roll sub 5 -1 roll 4 get 3 -1 roll sub div + 3 -1 roll 4 get 3 -1 roll 4 get dup 4 1 roll sub mul add}bind + {4 -1 roll 5 get dup 3 1 roll sub 5 -1 roll 5 get 3 -1 roll sub div + 3 -1 roll 5 get 3 -1 roll 5 get dup 4 1 roll sub mul add}bind + ]def + /MatrixPQR[0.8951 -0.7502 0.0389 0.2664 1.7135 -0.0685 -0.1614 0.0367 1.0296]def + /RangePQR[-0.3227950745 2.3229645538 -1.5003771057 3.5003465881 -0.1369979095 2.136967392]def + currentdict end + }if + setcolorrendering_opt + }if + }if +}def +/set_crd +{ + AGMCORE_host_sep not level2 and{ + currentdict/ColorRendering known{ + ColorRendering/ColorRendering{findresource}stopped not{setcolorrendering_opt}if + }{ + currentdict/Intent known{ + updatecolorrendering + }if + }ifelse + currentcolorspace dup type/arraytype eq + {0 get}if + /DeviceRGB eq + { + currentdict/UCR known + {/UCR}{/AGMCORE_currentucr}ifelse + load setundercolorremoval + currentdict/BG known + {/BG}{/AGMCORE_currentbg}ifelse + load setblackgeneration + }if + }if +}def +/set_ucrbg +{ + dup null eq{pop/AGMCORE_currentbg load}{/Procedure get_res}ifelse setblackgeneration + dup null eq{pop/AGMCORE_currentucr load}{/Procedure get_res}ifelse setundercolorremoval +}def +/setcolorrendering_opt +{ + dup currentcolorrendering eq{ + pop + }{ + clonedict + begin + /Intent Intent def + currentdict + end + setcolorrendering + }ifelse +}def +/cpaint_gcomp +{ + convert_to_process//Adobe_AGM_Core/AGMCORE_ConvertToProcess xddf + //Adobe_AGM_Core/AGMCORE_ConvertToProcess get not + { + (%end_cpaint_gcomp)flushinput + }if +}def +/cpaint_gsep +{ + //Adobe_AGM_Core/AGMCORE_ConvertToProcess get + { + (%end_cpaint_gsep)flushinput + }if +}def +/cpaint_gend +{np}def +/T1_path +{ + currentfile token pop currentfile token pop mo + { + currentfile token pop dup type/stringtype eq + {pop exit}if + 0 exch rlineto + currentfile token pop dup type/stringtype eq + {pop exit}if + 0 rlineto + }loop +}def +/T1_gsave + level3 + {/clipsave} + {/gsave}ifelse + load def +/T1_grestore + level3 + {/cliprestore} + {/grestore}ifelse + load def +/set_spot_alias_ary +{ + dup inherit_aliases + //Adobe_AGM_Core/AGMCORE_SpotAliasAry xddf +}def +/set_spot_normalization_ary +{ + dup inherit_aliases + dup length + /AGMCORE_SpotAliasAry where{pop AGMCORE_SpotAliasAry length add}if + array + //Adobe_AGM_Core/AGMCORE_SpotAliasAry2 xddf + /AGMCORE_SpotAliasAry where{ + pop + AGMCORE_SpotAliasAry2 0 AGMCORE_SpotAliasAry putinterval + AGMCORE_SpotAliasAry length + }{0}ifelse + AGMCORE_SpotAliasAry2 3 1 roll exch putinterval + true set_spot_alias +}def +/inherit_aliases +{ + {dup/Name get map_alias{/CSD put}{pop}ifelse}forall +}def +/set_spot_alias +{ + /AGMCORE_SpotAliasAry2 where{ + /AGMCORE_current_spot_alias 3 -1 roll put + }{ + pop + }ifelse +}def +/current_spot_alias +{ + /AGMCORE_SpotAliasAry2 where{ + /AGMCORE_current_spot_alias get + }{ + false + }ifelse +}def +/map_alias +{ + /AGMCORE_SpotAliasAry2 where{ + begin + /AGMCORE_name xdf + false + AGMCORE_SpotAliasAry2{ + dup/Name get AGMCORE_name eq{ + /CSD get/CSD get_res + exch pop true + exit + }{ + pop + }ifelse + }forall + end + }{ + pop false + }ifelse +}bdf +/spot_alias +{ + true set_spot_alias + /AGMCORE_&setcustomcolor AGMCORE_key_known not{ + //Adobe_AGM_Core/AGMCORE_&setcustomcolor/setcustomcolor load put + }if + /customcolor_tint 1 AGMCORE_gput + //Adobe_AGM_Core begin + /setcustomcolor + { + //Adobe_AGM_Core begin + dup/customcolor_tint exch AGMCORE_gput + 1 index aload pop pop 1 eq exch 1 eq and exch 1 eq and exch 1 eq and not + current_spot_alias and{1 index 4 get map_alias}{false}ifelse + { + false set_spot_alias + /sep_colorspace_dict AGMCORE_gget null ne + 3 1 roll 2 index{ + exch pop/sep_tint AGMCORE_gget exch + }if + mark 3 1 roll + setsepcolorspace + counttomark 0 ne{ + setsepcolor + }if + pop + not{/sep_tint 1.0 AGMCORE_gput}if + pop + true set_spot_alias + }{ + AGMCORE_&setcustomcolor + }ifelse + end + }bdf + end +}def +/begin_feature +{ + Adobe_AGM_Core/AGMCORE_feature_dictCount countdictstack put + count Adobe_AGM_Core/AGMCORE_feature_opCount 3 -1 roll put + {Adobe_AGM_Core/AGMCORE_feature_ctm matrix currentmatrix put}if +}def +/end_feature +{ + 2 dict begin + /spd/setpagedevice load def + /setpagedevice{get_gstate spd set_gstate}def + stopped{$error/newerror false put}if + end + count Adobe_AGM_Core/AGMCORE_feature_opCount get sub dup 0 gt{{pop}repeat}{pop}ifelse + countdictstack Adobe_AGM_Core/AGMCORE_feature_dictCount get sub dup 0 gt{{end}repeat}{pop}ifelse + {Adobe_AGM_Core/AGMCORE_feature_ctm get setmatrix}if +}def +/set_negative +{ + //Adobe_AGM_Core begin + /AGMCORE_inverting exch def + level2{ + currentpagedevice/NegativePrint known AGMCORE_distilling not and{ + currentpagedevice/NegativePrint get//Adobe_AGM_Core/AGMCORE_inverting get ne{ + true begin_feature true{ + <>setpagedevice + }end_feature + }if + /AGMCORE_inverting false def + }if + }if + AGMCORE_inverting{ + [{1 exch sub}/exec load dup currenttransfer exch]cvx bind settransfer + AGMCORE_distilling{ + erasepage + }{ + gsave np clippath 1/setseparationgray where{pop setseparationgray}{setgray}ifelse + /AGMIRS_&fill where{pop AGMIRS_&fill}{fill}ifelse grestore + }ifelse + }if + end +}def +/lw_save_restore_override{ + /md where{ + pop + md begin + initializepage + /initializepage{}def + /pmSVsetup{}def + /endp{}def + /pse{}def + /psb{}def + /orig_showpage where + {pop} + {/orig_showpage/showpage load def} + ifelse + /showpage{orig_showpage gR}def + end + }if +}def +/pscript_showpage_override{ + /NTPSOct95 where + { + begin + showpage + save + /showpage/restore load def + /restore{exch pop}def + end + }if +}def +/driver_media_override +{ + /md where{ + pop + md/initializepage known{ + md/initializepage{}put + }if + md/rC known{ + md/rC{4{pop}repeat}put + }if + }if + /mysetup where{ + /mysetup[1 0 0 1 0 0]put + }if + Adobe_AGM_Core/AGMCORE_Default_CTM matrix currentmatrix put + level2 + {Adobe_AGM_Core/AGMCORE_Default_PageSize currentpagedevice/PageSize get put}if +}def +/driver_check_media_override +{ + /PrepsDict where + {pop} + { + Adobe_AGM_Core/AGMCORE_Default_CTM get matrix currentmatrix ne + Adobe_AGM_Core/AGMCORE_Default_PageSize get type/arraytype eq + { + Adobe_AGM_Core/AGMCORE_Default_PageSize get 0 get currentpagedevice/PageSize get 0 get eq and + Adobe_AGM_Core/AGMCORE_Default_PageSize get 1 get currentpagedevice/PageSize get 1 get eq and + }if + { + Adobe_AGM_Core/AGMCORE_Default_CTM get setmatrix + }if + }ifelse +}def +AGMCORE_err_strings begin + /AGMCORE_bad_environ(Environment not satisfactory for this job. Ensure that the PPD is correct or that the PostScript level requested is supported by this printer. )def + /AGMCORE_color_space_onhost_seps(This job contains colors that will not separate with on-host methods. )def + /AGMCORE_invalid_color_space(This job contains an invalid color space. )def +end +/set_def_ht +{AGMCORE_def_ht sethalftone}def +/set_def_flat +{AGMCORE_Default_flatness setflat}def +end +systemdict/setpacking known +{setpacking}if +%%EndResource +%%BeginResource: procset Adobe_CoolType_Core 2.31 0 %%Copyright: Copyright 1997-2006 Adobe Systems Incorporated. All Rights Reserved. %%Version: 2.31 0 10 dict begin /Adobe_CoolType_Passthru currentdict def /Adobe_CoolType_Core_Defined userdict/Adobe_CoolType_Core known def Adobe_CoolType_Core_Defined {/Adobe_CoolType_Core userdict/Adobe_CoolType_Core get def} if userdict/Adobe_CoolType_Core 70 dict dup begin put /Adobe_CoolType_Version 2.31 def /Level2? systemdict/languagelevel known dup {pop systemdict/languagelevel get 2 ge} if def Level2? not { /currentglobal false def /setglobal/pop load def /gcheck{pop false}bind def /currentpacking false def /setpacking/pop load def /SharedFontDirectory 0 dict def } if currentpacking true setpacking currentglobal false setglobal userdict/Adobe_CoolType_Data 2 copy known not {2 copy 10 dict put} if get begin /@opStackCountByLevel 32 dict def /@opStackLevel 0 def /@dictStackCountByLevel 32 dict def /@dictStackLevel 0 def end setglobal currentglobal true setglobal userdict/Adobe_CoolType_GVMFonts known not {userdict/Adobe_CoolType_GVMFonts 10 dict put} if setglobal currentglobal false setglobal userdict/Adobe_CoolType_LVMFonts known not {userdict/Adobe_CoolType_LVMFonts 10 dict put} if setglobal /ct_VMDictPut { dup gcheck{Adobe_CoolType_GVMFonts}{Adobe_CoolType_LVMFonts}ifelse 3 1 roll put }bind def /ct_VMDictUndef { dup Adobe_CoolType_GVMFonts exch known {Adobe_CoolType_GVMFonts exch undef} { dup Adobe_CoolType_LVMFonts exch known {Adobe_CoolType_LVMFonts exch undef} {pop} ifelse }ifelse }bind def /ct_str1 1 string def /ct_xshow { /_ct_na exch def /_ct_i 0 def currentpoint /_ct_y exch def /_ct_x exch def { pop pop ct_str1 exch 0 exch put ct_str1 show {_ct_na _ct_i get}stopped {pop pop} { _ct_x _ct_y moveto 0 rmoveto } ifelse /_ct_i _ct_i 1 add def currentpoint /_ct_y exch def /_ct_x exch def } exch @cshow }bind def /ct_yshow { /_ct_na exch def /_ct_i 0 def currentpoint /_ct_y exch def /_ct_x exch def { pop pop ct_str1 exch 0 exch put ct_str1 show {_ct_na _ct_i get}stopped {pop pop} { _ct_x _ct_y moveto 0 exch rmoveto } ifelse /_ct_i _ct_i 1 add def currentpoint /_ct_y exch def /_ct_x exch def } exch @cshow }bind def /ct_xyshow { /_ct_na exch def /_ct_i 0 def currentpoint /_ct_y exch def /_ct_x exch def { pop pop ct_str1 exch 0 exch put ct_str1 show {_ct_na _ct_i get}stopped {pop pop} { {_ct_na _ct_i 1 add get}stopped {pop pop pop} { _ct_x _ct_y moveto rmoveto } ifelse } ifelse /_ct_i _ct_i 2 add def currentpoint /_ct_y exch def /_ct_x exch def } exch @cshow }bind def /xsh{{@xshow}stopped{Adobe_CoolType_Data begin ct_xshow end}if}bind def /ysh{{@yshow}stopped{Adobe_CoolType_Data begin ct_yshow end}if}bind def /xysh{{@xyshow}stopped{Adobe_CoolType_Data begin ct_xyshow end}if}bind def currentglobal true setglobal /ct_T3Defs { /BuildChar { 1 index/Encoding get exch get 1 index/BuildGlyph get exec }bind def /BuildGlyph { exch begin GlyphProcs exch get exec end }bind def }bind def setglobal /@_SaveStackLevels { Adobe_CoolType_Data begin /@vmState currentglobal def false setglobal @opStackCountByLevel @opStackLevel 2 copy known not { 2 copy 3 dict dup/args 7 index 5 add array put put get } { get dup/args get dup length 3 index lt { dup length 5 add array exch 1 index exch 0 exch putinterval 1 index exch/args exch put } {pop} ifelse } ifelse begin count 1 sub 1 index lt {pop count} if dup/argCount exch def dup 0 gt { args exch 0 exch getinterval astore pop } {pop} ifelse count /restCount exch def end /@opStackLevel @opStackLevel 1 add def countdictstack 1 sub @dictStackCountByLevel exch @dictStackLevel exch put /@dictStackLevel @dictStackLevel 1 add def @vmState setglobal end }bind def /@_RestoreStackLevels { Adobe_CoolType_Data begin /@opStackLevel @opStackLevel 1 sub def @opStackCountByLevel @opStackLevel get begin count restCount sub dup 0 gt {{pop}repeat} {pop} ifelse args 0 argCount getinterval{}forall end /@dictStackLevel @dictStackLevel 1 sub def @dictStackCountByLevel @dictStackLevel get end countdictstack exch sub dup 0 gt {{end}repeat} {pop} ifelse }bind def /@_PopStackLevels { Adobe_CoolType_Data begin /@opStackLevel @opStackLevel 1 sub def /@dictStackLevel @dictStackLevel 1 sub def end }bind def /@Raise { exch cvx exch errordict exch get exec stop }bind def /@ReRaise { cvx $error/errorname get errordict exch get exec stop }bind def /@Stopped { 0 @#Stopped }bind def /@#Stopped { @_SaveStackLevels stopped {@_RestoreStackLevels true} {@_PopStackLevels false} ifelse }bind def /@Arg { Adobe_CoolType_Data begin @opStackCountByLevel @opStackLevel 1 sub get begin args exch argCount 1 sub exch sub get end end }bind def currentglobal true setglobal /CTHasResourceForAllBug Level2? { 1 dict dup /@shouldNotDisappearDictValue true def Adobe_CoolType_Data exch/@shouldNotDisappearDict exch put begin count @_SaveStackLevels {(*){pop stop}128 string/Category resourceforall} stopped pop @_RestoreStackLevels currentdict Adobe_CoolType_Data/@shouldNotDisappearDict get dup 3 1 roll ne dup 3 1 roll { /@shouldNotDisappearDictValue known { { end currentdict 1 index eq {pop exit} if } loop } if } { pop end } ifelse } {false} ifelse def true setglobal /CTHasResourceStatusBug Level2? { mark {/steveamerige/Category resourcestatus} stopped {cleartomark true} {cleartomark currentglobal not} ifelse } {false} ifelse def setglobal /CTResourceStatus { mark 3 1 roll /Category findresource begin ({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec {cleartomark false} {{3 2 roll pop true}{cleartomark false}ifelse} ifelse end }bind def /CTWorkAroundBugs { Level2? { /cid_PreLoad/ProcSet resourcestatus { pop pop currentglobal mark { (*) { dup/CMap CTHasResourceStatusBug {CTResourceStatus} {resourcestatus} ifelse { pop dup 0 eq exch 1 eq or { dup/CMap findresource gcheck setglobal /CMap undefineresource } { pop CTHasResourceForAllBug {exit} {stop} ifelse } ifelse } {pop} ifelse } 128 string/CMap resourceforall } stopped {cleartomark} stopped pop setglobal } if } if }bind def /ds { Adobe_CoolType_Core begin CTWorkAroundBugs /mo/moveto load def /nf/newencodedfont load def /msf{makefont setfont}bind def /uf{dup undefinefont ct_VMDictUndef}bind def /ur/undefineresource load def /chp/charpath load def /awsh/awidthshow load def /wsh/widthshow load def /ash/ashow load def /@xshow/xshow load def /@yshow/yshow load def /@xyshow/xyshow load def /@cshow/cshow load def /sh/show load def /rp/repeat load def /.n/.notdef def end currentglobal false setglobal userdict/Adobe_CoolType_Data 2 copy known not {2 copy 10 dict put} if get begin /AddWidths? false def /CC 0 def /charcode 2 string def /@opStackCountByLevel 32 dict def /@opStackLevel 0 def /@dictStackCountByLevel 32 dict def /@dictStackLevel 0 def /InVMFontsByCMap 10 dict def /InVMDeepCopiedFonts 10 dict def end setglobal }bind def /dt { currentdict Adobe_CoolType_Core eq {end} if }bind def /ps { Adobe_CoolType_Core begin Adobe_CoolType_GVMFonts begin Adobe_CoolType_LVMFonts begin SharedFontDirectory begin }bind def /pt { end end end end }bind def /unload { systemdict/languagelevel known { systemdict/languagelevel get 2 ge { userdict/Adobe_CoolType_Core 2 copy known {undef} {pop pop} ifelse } if } if }bind def /ndf { 1 index where {pop pop pop} {dup xcheck{bind}if def} ifelse }def /findfont systemdict begin userdict begin /globaldict where{/globaldict get begin}if dup where pop exch get /globaldict where{pop end}if end end Adobe_CoolType_Core_Defined {/systemfindfont exch def} { /findfont 1 index def /systemfindfont exch def } ifelse /undefinefont {pop}ndf /copyfont { currentglobal 3 1 roll 1 index gcheck setglobal dup null eq{0}{dup length}ifelse 2 index length add 1 add dict begin exch { 1 index/FID eq {pop pop} {def} ifelse } forall dup null eq {pop} {{def}forall} ifelse currentdict end exch setglobal }bind def /copyarray { currentglobal exch dup gcheck setglobal dup length array copy exch setglobal }bind def /newencodedfont { currentglobal { SharedFontDirectory 3 index known {SharedFontDirectory 3 index get/FontReferenced known} {false} ifelse } { FontDirectory 3 index known {FontDirectory 3 index get/FontReferenced known} { SharedFontDirectory 3 index known {SharedFontDirectory 3 index get/FontReferenced known} {false} ifelse } ifelse } ifelse dup { 3 index findfont/FontReferenced get 2 index dup type/nametype eq {findfont} if ne {pop false} if } if dup { 1 index dup type/nametype eq {findfont} if dup/CharStrings known { /CharStrings get length 4 index findfont/CharStrings get length ne { pop false } if } {pop} ifelse } if { pop 1 index findfont /Encoding get exch 0 1 255 {2 copy get 3 index 3 1 roll put} for pop pop pop } { currentglobal 4 1 roll dup type/nametype eq {findfont} if dup gcheck setglobal dup dup maxlength 2 add dict begin exch { 1 index/FID ne 2 index/Encoding ne and {def} {pop pop} ifelse } forall /FontReferenced exch def /Encoding exch dup length array copy def /FontName 1 index dup type/stringtype eq{cvn}if def dup currentdict end definefont ct_VMDictPut setglobal } ifelse }bind def /SetSubstituteStrategy { $SubstituteFont begin dup type/dicttype ne {0 dict} if currentdict/$Strategies known { exch $Strategies exch 2 copy known { get 2 copy maxlength exch maxlength add dict begin {def}forall {def}forall currentdict dup/$Init known {dup/$Init get exec} if end /$Strategy exch def } {pop pop pop} ifelse } {pop pop} ifelse end }bind def /scff { $SubstituteFont begin dup type/stringtype eq {dup length exch} {null} ifelse /$sname exch def /$slen exch def /$inVMIndex $sname null eq { 1 index $str cvs dup length $slen sub $slen getinterval cvn } {$sname} ifelse def end {findfont} @Stopped { dup length 8 add string exch 1 index 0(BadFont:)putinterval 1 index exch 8 exch dup length string cvs putinterval cvn {findfont} @Stopped {pop/Courier findfont} if } if $SubstituteFont begin /$sname null def /$slen 0 def /$inVMIndex null def end }bind def /isWidthsOnlyFont { dup/WidthsOnly known {pop pop true} { dup/FDepVector known {/FDepVector get{isWidthsOnlyFont dup{exit}if}forall} { dup/FDArray known {/FDArray get{isWidthsOnlyFont dup{exit}if}forall} {pop} ifelse } ifelse } ifelse }bind def /ct_StyleDicts 4 dict dup begin /Adobe-Japan1 4 dict dup begin Level2? { /Serif /HeiseiMin-W3-83pv-RKSJ-H/Font resourcestatus {pop pop/HeiseiMin-W3} { /CIDFont/Category resourcestatus { pop pop /HeiseiMin-W3/CIDFont resourcestatus {pop pop/HeiseiMin-W3} {/Ryumin-Light} ifelse } {/Ryumin-Light} ifelse } ifelse def /SansSerif /HeiseiKakuGo-W5-83pv-RKSJ-H/Font resourcestatus {pop pop/HeiseiKakuGo-W5} { /CIDFont/Category resourcestatus { pop pop /HeiseiKakuGo-W5/CIDFont resourcestatus {pop pop/HeiseiKakuGo-W5} {/GothicBBB-Medium} ifelse } {/GothicBBB-Medium} ifelse } ifelse def /HeiseiMaruGo-W4-83pv-RKSJ-H/Font resourcestatus {pop pop/HeiseiMaruGo-W4} { /CIDFont/Category resourcestatus { pop pop /HeiseiMaruGo-W4/CIDFont resourcestatus {pop pop/HeiseiMaruGo-W4} { /Jun101-Light-RKSJ-H/Font resourcestatus {pop pop/Jun101-Light} {SansSerif} ifelse } ifelse } { /Jun101-Light-RKSJ-H/Font resourcestatus {pop pop/Jun101-Light} {SansSerif} ifelse } ifelse } ifelse /RoundSansSerif exch def /Default Serif def } { /Serif/Ryumin-Light def /SansSerif/GothicBBB-Medium def { (fonts/Jun101-Light-83pv-RKSJ-H)status }stopped {pop}{ {pop pop pop pop/Jun101-Light} {SansSerif} ifelse /RoundSansSerif exch def }ifelse /Default Serif def } ifelse end def /Adobe-Korea1 4 dict dup begin /Serif/HYSMyeongJo-Medium def /SansSerif/HYGoThic-Medium def /RoundSansSerif SansSerif def /Default Serif def end def /Adobe-GB1 4 dict dup begin /Serif/STSong-Light def /SansSerif/STHeiti-Regular def /RoundSansSerif SansSerif def /Default Serif def end def /Adobe-CNS1 4 dict dup begin /Serif/MKai-Medium def /SansSerif/MHei-Medium def /RoundSansSerif SansSerif def /Default Serif def end def end def Level2?{currentglobal true setglobal}if /ct_BoldRomanWidthProc { stringwidth 1 index 0 ne{exch .03 add exch}if setcharwidth 0 0 }bind def /ct_Type0WidthProc { dup stringwidth 0 0 moveto 2 index true charpath pathbbox 0 -1 7 index 2 div .88 setcachedevice2 pop 0 0 }bind def /ct_Type0WMode1WidthProc { dup stringwidth pop 2 div neg -0.88 2 copy moveto 0 -1 5 -1 roll true charpath pathbbox setcachedevice }bind def /cHexEncoding [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12 /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25 /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38 /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71 /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84 /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97 /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0 /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3 /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6 /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def /ct_BoldBaseFont 11 dict begin /FontType 3 def /FontMatrix[1 0 0 1 0 0]def /FontBBox[0 0 1 1]def /Encoding cHexEncoding def /_setwidthProc/ct_BoldRomanWidthProc load def /_bcstr1 1 string def /BuildChar { exch begin _basefont setfont _bcstr1 dup 0 4 -1 roll put dup _setwidthProc 3 copy moveto show _basefonto setfont moveto show end }bind def currentdict end def systemdict/composefont known { /ct_DefineIdentity-H { /Identity-H/CMap resourcestatus { pop pop } { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering(Identity)def /Supplement 0 def end def /CMapName/Identity-H def /CMapVersion 1.000 def /CMapType 1 def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } ifelse } def /ct_BoldBaseCIDFont 11 dict begin /CIDFontType 1 def /CIDFontName/ct_BoldBaseCIDFont def /FontMatrix[1 0 0 1 0 0]def /FontBBox[0 0 1 1]def /_setwidthProc/ct_Type0WidthProc load def /_bcstr2 2 string def /BuildGlyph { exch begin _basefont setfont _bcstr2 1 2 index 256 mod put _bcstr2 0 3 -1 roll 256 idiv put _bcstr2 dup _setwidthProc 3 copy moveto show _basefonto setfont moveto show end }bind def currentdict end def }if Level2?{setglobal}if /ct_CopyFont{ { 1 index/FID ne 2 index/UniqueID ne and {def}{pop pop}ifelse }forall }bind def /ct_Type0CopyFont { exch dup length dict begin ct_CopyFont [ exch FDepVector { dup/FontType get 0 eq { 1 index ct_Type0CopyFont /_ctType0 exch definefont } { /_ctBaseFont exch 2 index exec } ifelse exch } forall pop ] /FDepVector exch def currentdict end }bind def /ct_MakeBoldFont { dup/ct_SyntheticBold known { dup length 3 add dict begin ct_CopyFont /ct_StrokeWidth .03 0 FontMatrix idtransform pop def /ct_SyntheticBold true def currentdict end definefont } { dup dup length 3 add dict begin ct_CopyFont /PaintType 2 def /StrokeWidth .03 0 FontMatrix idtransform pop def /dummybold currentdict end definefont dup/FontType get dup 9 ge exch 11 le and { ct_BoldBaseCIDFont dup length 3 add dict copy begin dup/CIDSystemInfo get/CIDSystemInfo exch def ct_DefineIdentity-H /_Type0Identity/Identity-H 3 -1 roll[exch]composefont /_basefont exch def /_Type0Identity/Identity-H 3 -1 roll[exch]composefont /_basefonto exch def currentdict end /CIDFont defineresource } { ct_BoldBaseFont dup length 3 add dict copy begin /_basefont exch def /_basefonto exch def currentdict end definefont } ifelse } ifelse }bind def /ct_MakeBold{ 1 index 1 index findfont currentglobal 5 1 roll dup gcheck setglobal dup /FontType get 0 eq { dup/WMode known{dup/WMode get 1 eq}{false}ifelse version length 4 ge and {version 0 4 getinterval cvi 2015 ge} {true} ifelse {/ct_Type0WidthProc} {/ct_Type0WMode1WidthProc} ifelse ct_BoldBaseFont/_setwidthProc 3 -1 roll load put {ct_MakeBoldFont}ct_Type0CopyFont definefont } { dup/_fauxfont known not 1 index/SubstMaster known not and { ct_BoldBaseFont/_setwidthProc /ct_BoldRomanWidthProc load put ct_MakeBoldFont } { 2 index 2 index eq {exch pop } { dup length dict begin ct_CopyFont currentdict end definefont } ifelse } ifelse } ifelse pop pop pop setglobal }bind def /?str1 256 string def /?set { $SubstituteFont begin /$substituteFound false def /$fontname 1 index def /$doSmartSub false def end dup findfont $SubstituteFont begin $substituteFound {false} { dup/FontName known { dup/FontName get $fontname eq 1 index/DistillerFauxFont known not and /currentdistillerparams where {pop false 2 index isWidthsOnlyFont not and} if } {false} ifelse } ifelse exch pop /$doSmartSub true def end { 5 1 roll pop pop pop pop findfont } { 1 index findfont dup/FontType get 3 eq { 6 1 roll pop pop pop pop pop false } {pop true} ifelse { $SubstituteFont begin pop pop /$styleArray 1 index def /$regOrdering 2 index def pop pop 0 1 $styleArray length 1 sub { $styleArray exch get ct_StyleDicts $regOrdering 2 copy known { get exch 2 copy known not {pop/Default} if get dup type/nametype eq { ?str1 cvs length dup 1 add exch ?str1 exch(-)putinterval exch dup length exch ?str1 exch 3 index exch putinterval add ?str1 exch 0 exch getinterval cvn } { pop pop/Unknown } ifelse } { pop pop pop pop/Unknown } ifelse } for end findfont }if } ifelse currentglobal false setglobal 3 1 roll null copyfont definefont pop setglobal }bind def setpacking userdict/$SubstituteFont 25 dict put 1 dict begin /SubstituteFont dup $error exch 2 copy known {get} {pop pop{pop/Courier}bind} ifelse def /currentdistillerparams where dup { pop pop currentdistillerparams/CannotEmbedFontPolicy 2 copy known {get/Error eq} {pop pop false} ifelse } if not { countdictstack array dictstack 0 get begin userdict begin $SubstituteFont begin /$str 128 string def /$fontpat 128 string def /$slen 0 def /$sname null def /$match false def /$fontname null def /$substituteFound false def /$inVMIndex null def /$doSmartSub true def /$depth 0 def /$fontname null def /$italicangle 26.5 def /$dstack null def /$Strategies 10 dict dup begin /$Type3Underprint { currentglobal exch false setglobal 11 dict begin /UseFont exch $WMode 0 ne { dup length dict copy dup/WMode $WMode put /UseFont exch definefont } if def /FontName $fontname dup type/stringtype eq{cvn}if def /FontType 3 def /FontMatrix[.001 0 0 .001 0 0]def /Encoding 256 array dup 0 1 255{/.notdef put dup}for pop def /FontBBox[0 0 0 0]def /CCInfo 7 dict dup begin /cc null def /x 0 def /y 0 def end def /BuildChar { exch begin CCInfo begin 1 string dup 0 3 index put exch pop /cc exch def UseFont 1000 scalefont setfont cc stringwidth/y exch def/x exch def x y setcharwidth $SubstituteFont/$Strategy get/$Underprint get exec 0 0 moveto cc show x y moveto end end }bind def currentdict end exch setglobal }bind def /$GetaTint 2 dict dup begin /$BuildFont { dup/WMode known {dup/WMode get} {0} ifelse /$WMode exch def $fontname exch dup/FontName known { dup/FontName get dup type/stringtype eq{cvn}if } {/unnamedfont} ifelse exch Adobe_CoolType_Data/InVMDeepCopiedFonts get 1 index/FontName get known { pop Adobe_CoolType_Data/InVMDeepCopiedFonts get 1 index get null copyfont } {$deepcopyfont} ifelse exch 1 index exch/FontBasedOn exch put dup/FontName $fontname dup type/stringtype eq{cvn}if put definefont Adobe_CoolType_Data/InVMDeepCopiedFonts get begin dup/FontBasedOn get 1 index def end }bind def /$Underprint { gsave x abs y abs gt {/y 1000 def} {/x -1000 def 500 120 translate} ifelse Level2? { [/Separation(All)/DeviceCMYK{0 0 0 1 pop}] setcolorspace } {0 setgray} ifelse 10 setlinewidth x .8 mul [7 3] { y mul 8 div 120 sub x 10 div exch moveto 0 y 4 div neg rlineto dup 0 rlineto 0 y 4 div rlineto closepath gsave Level2? {.2 setcolor} {.8 setgray} ifelse fill grestore stroke } forall pop grestore }bind def end def /$Oblique 1 dict dup begin /$BuildFont { currentglobal exch dup gcheck setglobal null copyfont begin /FontBasedOn currentdict/FontName known { FontName dup type/stringtype eq{cvn}if } {/unnamedfont} ifelse def /FontName $fontname dup type/stringtype eq{cvn}if def /currentdistillerparams where {pop} { /FontInfo currentdict/FontInfo known {FontInfo null copyfont} {2 dict} ifelse dup begin /ItalicAngle $italicangle def /FontMatrix FontMatrix [1 0 ItalicAngle dup sin exch cos div 1 0 0] matrix concatmatrix readonly end 4 2 roll def def } ifelse FontName currentdict end definefont exch setglobal }bind def end def /$None 1 dict dup begin /$BuildFont{}bind def end def end def /$Oblique SetSubstituteStrategy /$findfontByEnum { dup type/stringtype eq{cvn}if dup/$fontname exch def $sname null eq {$str cvs dup length $slen sub $slen getinterval} {pop $sname} ifelse $fontpat dup 0(fonts/*)putinterval exch 7 exch putinterval /$match false def $SubstituteFont/$dstack countdictstack array dictstack put mark { $fontpat 0 $slen 7 add getinterval {/$match exch def exit} $str filenameforall } stopped { cleardictstack currentdict true $SubstituteFont/$dstack get { exch { 1 index eq {pop false} {true} ifelse } {begin false} ifelse } forall pop } if cleartomark /$slen 0 def $match false ne {$match(fonts/)anchorsearch pop pop cvn} {/Courier} ifelse }bind def /$ROS 1 dict dup begin /Adobe 4 dict dup begin /Japan1 [/Ryumin-Light/HeiseiMin-W3 /GothicBBB-Medium/HeiseiKakuGo-W5 /HeiseiMaruGo-W4/Jun101-Light]def /Korea1 [/HYSMyeongJo-Medium/HYGoThic-Medium]def /GB1 [/STSong-Light/STHeiti-Regular]def /CNS1 [/MKai-Medium/MHei-Medium]def end def end def /$cmapname null def /$deepcopyfont { dup/FontType get 0 eq { 1 dict dup/FontName/copied put copyfont begin /FDepVector FDepVector copyarray 0 1 2 index length 1 sub { 2 copy get $deepcopyfont dup/FontName/copied put /copied exch definefont 3 copy put pop pop } for def currentdict end } {$Strategies/$Type3Underprint get exec} ifelse }bind def /$buildfontname { dup/CIDFont findresource/CIDSystemInfo get begin Registry length Ordering length Supplement 8 string cvs 3 copy length 2 add add add string dup 5 1 roll dup 0 Registry putinterval dup 4 index(-)putinterval dup 4 index 1 add Ordering putinterval 4 2 roll add 1 add 2 copy(-)putinterval end 1 add 2 copy 0 exch getinterval $cmapname $fontpat cvs exch anchorsearch {pop pop 3 2 roll putinterval cvn/$cmapname exch def} {pop pop pop pop pop} ifelse length $str 1 index(-)putinterval 1 add $str 1 index $cmapname $fontpat cvs putinterval $cmapname length add $str exch 0 exch getinterval cvn }bind def /$findfontByROS { /$fontname exch def $ROS Registry 2 copy known { get Ordering 2 copy known {get} {pop pop[]} ifelse } {pop pop[]} ifelse false exch { dup/CIDFont resourcestatus { pop pop save 1 index/CIDFont findresource dup/WidthsOnly known {dup/WidthsOnly get} {false} ifelse exch pop exch restore {pop} {exch pop true exit} ifelse } {pop} ifelse } forall {$str cvs $buildfontname} { false(*) { save exch dup/CIDFont findresource dup/WidthsOnly known {dup/WidthsOnly get not} {true} ifelse exch/CIDSystemInfo get dup/Registry get Registry eq exch/Ordering get Ordering eq and and {exch restore exch pop true exit} {pop restore} ifelse } $str/CIDFont resourceforall {$buildfontname} {$fontname $findfontByEnum} ifelse } ifelse }bind def end end currentdict/$error known currentdict/languagelevel known and dup {pop $error/SubstituteFont known} if dup {$error} {Adobe_CoolType_Core} ifelse begin { /SubstituteFont /CMap/Category resourcestatus { pop pop { $SubstituteFont begin /$substituteFound true def dup length $slen gt $sname null ne or $slen 0 gt and { $sname null eq {dup $str cvs dup length $slen sub $slen getinterval cvn} {$sname} ifelse Adobe_CoolType_Data/InVMFontsByCMap get 1 index 2 copy known { get false exch { pop currentglobal { GlobalFontDirectory 1 index known {exch pop true exit} {pop} ifelse } { FontDirectory 1 index known {exch pop true exit} { GlobalFontDirectory 1 index known {exch pop true exit} {pop} ifelse } ifelse } ifelse } forall } {pop pop false} ifelse { exch pop exch pop } { dup/CMap resourcestatus { pop pop dup/$cmapname exch def /CMap findresource/CIDSystemInfo get{def}forall $findfontByROS } { 128 string cvs dup(-)search { 3 1 roll search { 3 1 roll pop {dup cvi} stopped {pop pop pop pop pop $findfontByEnum} { 4 2 roll pop pop exch length exch 2 index length 2 index sub exch 1 sub -1 0 { $str cvs dup length 4 index 0 4 index 4 3 roll add getinterval exch 1 index exch 3 index exch putinterval dup/CMap resourcestatus { pop pop 4 1 roll pop pop pop dup/$cmapname exch def /CMap findresource/CIDSystemInfo get{def}forall $findfontByROS true exit } {pop} ifelse } for dup type/booleantype eq {pop} {pop pop pop $findfontByEnum} ifelse } ifelse } {pop pop pop $findfontByEnum} ifelse } {pop pop $findfontByEnum} ifelse } ifelse } ifelse } {//SubstituteFont exec} ifelse /$slen 0 def end } } { { $SubstituteFont begin /$substituteFound true def dup length $slen gt $sname null ne or $slen 0 gt and {$findfontByEnum} {//SubstituteFont exec} ifelse end } } ifelse bind readonly def Adobe_CoolType_Core/scfindfont/systemfindfont load put } { /scfindfont { $SubstituteFont begin dup systemfindfont dup/FontName known {dup/FontName get dup 3 index ne} {/noname true} ifelse dup { /$origfontnamefound 2 index def /$origfontname 4 index def/$substituteFound true def } if exch pop { $slen 0 gt $sname null ne 3 index length $slen gt or and { pop dup $findfontByEnum findfont dup maxlength 1 add dict begin {1 index/FID eq{pop pop}{def}ifelse} forall currentdict end definefont dup/FontName known{dup/FontName get}{null}ifelse $origfontnamefound ne { $origfontname $str cvs print ( substitution revised, using )print dup/FontName known {dup/FontName get}{(unspecified font)} ifelse $str cvs print(.\n)print } if } {exch pop} ifelse } {exch pop} ifelse end }bind def } ifelse end end Adobe_CoolType_Core_Defined not { Adobe_CoolType_Core/findfont { $SubstituteFont begin $depth 0 eq { /$fontname 1 index dup type/stringtype ne{$str cvs}if def /$substituteFound false def } if /$depth $depth 1 add def end scfindfont $SubstituteFont begin /$depth $depth 1 sub def $substituteFound $depth 0 eq and { $inVMIndex null ne {dup $inVMIndex $AddInVMFont} if $doSmartSub { currentdict/$Strategy known {$Strategy/$BuildFont get exec} if } if } if end }bind put } if } if end /$AddInVMFont { exch/FontName 2 copy known { get 1 dict dup begin exch 1 index gcheck def end exch Adobe_CoolType_Data/InVMFontsByCMap get exch $DictAdd } {pop pop pop} ifelse }bind def /$DictAdd { 2 copy known not {2 copy 4 index length dict put} if Level2? not { 2 copy get dup maxlength exch length 4 index length add lt 2 copy get dup length 4 index length add exch maxlength 1 index lt { 2 mul dict begin 2 copy get{forall}def 2 copy currentdict put end } {pop} ifelse } if get begin {def} forall end }bind def end end %%EndResource currentglobal true setglobal %%BeginResource: procset Adobe_CoolType_Utility_MAKEOCF 1.23 0 %%Copyright: Copyright 1987-2006 Adobe Systems Incorporated. %%Version: 1.23 0 systemdict/languagelevel known dup {currentglobal false setglobal} {false} ifelse exch userdict/Adobe_CoolType_Utility 2 copy known {2 copy get dup maxlength 27 add dict copy} {27 dict} ifelse put Adobe_CoolType_Utility begin /@eexecStartData def /@recognizeCIDFont null def /ct_Level2? exch def /ct_Clone? 1183615869 internaldict dup /CCRun known not exch/eCCRun known not ct_Level2? and or def ct_Level2? {globaldict begin currentglobal true setglobal} if /ct_AddStdCIDMap ct_Level2? {{ mark Adobe_CoolType_Utility/@recognizeCIDFont currentdict put { ((Hex)57 StartData 0615 1e27 2c39 1c60 d8a8 cc31 fe2b f6e0 7aa3 e541 e21c 60d8 a8c9 c3d0 6d9e 1c60 d8a8 c9c2 02d7 9a1c 60d8 a849 1c60 d8a8 cc36 74f4 1144 b13b 77)0()/SubFileDecode filter cvx exec } stopped { cleartomark Adobe_CoolType_Utility/@recognizeCIDFont get countdictstack dup array dictstack exch 1 sub -1 0 { 2 copy get 3 index eq {1 index length exch sub 1 sub{end}repeat exit} {pop} ifelse } for pop pop Adobe_CoolType_Utility/@eexecStartData get eexec } {cleartomark} ifelse }} {{ Adobe_CoolType_Utility/@eexecStartData get eexec }} ifelse bind def userdict/cid_extensions known dup{cid_extensions/cid_UpdateDB known and}if { cid_extensions begin /cid_GetCIDSystemInfo { 1 index type/stringtype eq {exch cvn exch} if cid_extensions begin dup load 2 index known { 2 copy cid_GetStatusInfo dup null ne { 1 index load 3 index get dup null eq {pop pop cid_UpdateDB} { exch 1 index/Created get eq {exch pop exch pop} {pop cid_UpdateDB} ifelse } ifelse } {pop cid_UpdateDB} ifelse } {cid_UpdateDB} ifelse end }bind def end } if ct_Level2? {end setglobal} if /ct_UseNativeCapability? systemdict/composefont known def /ct_MakeOCF 35 dict def /ct_Vars 25 dict def /ct_GlyphDirProcs 6 dict def /ct_BuildCharDict 15 dict dup begin /charcode 2 string def /dst_string 1500 string def /nullstring()def /usewidths? true def end def ct_Level2?{setglobal}{pop}ifelse ct_GlyphDirProcs begin /GetGlyphDirectory { systemdict/languagelevel known {pop/CIDFont findresource/GlyphDirectory get} { 1 index/CIDFont findresource/GlyphDirectory get dup type/dicttype eq { dup dup maxlength exch length sub 2 index lt { dup length 2 index add dict copy 2 index /CIDFont findresource/GlyphDirectory 2 index put } if } if exch pop exch pop } ifelse + }def /+ { systemdict/languagelevel known { currentglobal false setglobal 3 dict begin /vm exch def } {1 dict begin} ifelse /$ exch def systemdict/languagelevel known { vm setglobal /gvm currentglobal def $ gcheck setglobal } if ?{$ begin}if }def /?{$ type/dicttype eq}def /|{ userdict/Adobe_CoolType_Data known { Adobe_CoolType_Data/AddWidths? known { currentdict Adobe_CoolType_Data begin begin AddWidths? { Adobe_CoolType_Data/CC 3 index put ?{def}{$ 3 1 roll put}ifelse CC charcode exch 1 index 0 2 index 256 idiv put 1 index exch 1 exch 256 mod put stringwidth 2 array astore currentfont/Widths get exch CC exch put } {?{def}{$ 3 1 roll put}ifelse} ifelse end end } {?{def}{$ 3 1 roll put}ifelse} ifelse } {?{def}{$ 3 1 roll put}ifelse} ifelse }def /! { ?{end}if systemdict/languagelevel known {gvm setglobal} if end }def /:{string currentfile exch readstring pop}executeonly def end ct_MakeOCF begin /ct_cHexEncoding [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12 /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25 /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38 /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71 /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84 /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97 /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0 /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3 /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6 /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def /ct_CID_STR_SIZE 8000 def /ct_mkocfStr100 100 string def /ct_defaultFontMtx[.001 0 0 .001 0 0]def /ct_1000Mtx[1000 0 0 1000 0 0]def /ct_raise{exch cvx exch errordict exch get exec stop}bind def /ct_reraise {cvx $error/errorname get(Error: )print dup( )cvs print errordict exch get exec stop }bind def /ct_cvnsi { 1 index add 1 sub 1 exch 0 4 1 roll { 2 index exch get exch 8 bitshift add } for exch pop }bind def /ct_GetInterval { Adobe_CoolType_Utility/ct_BuildCharDict get begin /dst_index 0 def dup dst_string length gt {dup string/dst_string exch def} if 1 index ct_CID_STR_SIZE idiv /arrayIndex exch def 2 index arrayIndex get 2 index arrayIndex ct_CID_STR_SIZE mul sub { dup 3 index add 2 index length le { 2 index getinterval dst_string dst_index 2 index putinterval length dst_index add/dst_index exch def exit } { 1 index length 1 index sub dup 4 1 roll getinterval dst_string dst_index 2 index putinterval pop dup dst_index add/dst_index exch def sub /arrayIndex arrayIndex 1 add def 2 index dup length arrayIndex gt {arrayIndex get} { pop exit } ifelse 0 } ifelse } loop pop pop pop dst_string 0 dst_index getinterval end }bind def ct_Level2? { /ct_resourcestatus currentglobal mark true setglobal {/unknowninstancename/Category resourcestatus} stopped {cleartomark setglobal true} {cleartomark currentglobal not exch setglobal} ifelse { { mark 3 1 roll/Category findresource begin ct_Vars/vm currentglobal put ({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec {cleartomark false} {{3 2 roll pop true}{cleartomark false}ifelse} ifelse ct_Vars/vm get setglobal end } } {{resourcestatus}} ifelse bind def /CIDFont/Category ct_resourcestatus {pop pop} { currentglobal true setglobal /Generic/Category findresource dup length dict copy dup/InstanceType/dicttype put /CIDFont exch/Category defineresource pop setglobal } ifelse ct_UseNativeCapability? { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering(Identity)def /Supplement 0 def end def /CMapName/Identity-H def /CMapVersion 1.000 def /CMapType 1 def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } if } { /ct_Category 2 dict begin /CIDFont 10 dict def /ProcSet 2 dict def currentdict end def /defineresource { ct_Category 1 index 2 copy known { get dup dup maxlength exch length eq { dup length 10 add dict copy ct_Category 2 index 2 index put } if 3 index 3 index put pop exch pop } {pop pop/defineresource/undefined ct_raise} ifelse }bind def /findresource { ct_Category 1 index 2 copy known { get 2 index 2 copy known {get 3 1 roll pop pop} {pop pop/findresource/undefinedresource ct_raise} ifelse } {pop pop/findresource/undefined ct_raise} ifelse }bind def /resourcestatus { ct_Category 1 index 2 copy known { get 2 index known exch pop exch pop { 0 -1 true } { false } ifelse } {pop pop/findresource/undefined ct_raise} ifelse }bind def /ct_resourcestatus/resourcestatus load def } ifelse /ct_CIDInit 2 dict begin /ct_cidfont_stream_init { { dup(Binary)eq { pop null currentfile ct_Level2? { {cid_BYTE_COUNT()/SubFileDecode filter} stopped {pop pop pop} if } if /readstring load exit } if dup(Hex)eq { pop currentfile ct_Level2? { {null exch/ASCIIHexDecode filter/readstring} stopped {pop exch pop(>)exch/readhexstring} if } {(>)exch/readhexstring} ifelse load exit } if /StartData/typecheck ct_raise } loop cid_BYTE_COUNT ct_CID_STR_SIZE le { 2 copy cid_BYTE_COUNT string exch exec pop 1 array dup 3 -1 roll 0 exch put } { cid_BYTE_COUNT ct_CID_STR_SIZE div ceiling cvi dup array exch 2 sub 0 exch 1 exch { 2 copy 5 index ct_CID_STR_SIZE string 6 index exec pop put pop } for 2 index cid_BYTE_COUNT ct_CID_STR_SIZE mod string 3 index exec pop 1 index exch 1 index length 1 sub exch put } ifelse cid_CIDFONT exch/GlyphData exch put 2 index null eq { pop pop pop } { pop/readstring load 1 string exch { 3 copy exec pop dup length 0 eq { pop pop pop pop pop true exit } if 4 index eq { pop pop pop pop false exit } if } loop pop } ifelse }bind def /StartData { mark { currentdict dup/FDArray get 0 get/FontMatrix get 0 get 0.001 eq { dup/CDevProc known not { /CDevProc 1183615869 internaldict/stdCDevProc 2 copy known {get} { pop pop {pop pop pop pop pop 0 -1000 7 index 2 div 880} } ifelse def } if } { /CDevProc { pop pop pop pop pop 0 1 cid_temp/cid_CIDFONT get /FDArray get 0 get /FontMatrix get 0 get div 7 index 2 div 1 index 0.88 mul }def } ifelse /cid_temp 15 dict def cid_temp begin /cid_CIDFONT exch def 3 copy pop dup/cid_BYTE_COUNT exch def 0 gt { ct_cidfont_stream_init FDArray { /Private get dup/SubrMapOffset known { begin /Subrs SubrCount array def Subrs SubrMapOffset SubrCount SDBytes ct_Level2? { currentdict dup/SubrMapOffset undef dup/SubrCount undef /SDBytes undef } if end /cid_SD_BYTES exch def /cid_SUBR_COUNT exch def /cid_SUBR_MAP_OFFSET exch def /cid_SUBRS exch def cid_SUBR_COUNT 0 gt { GlyphData cid_SUBR_MAP_OFFSET cid_SD_BYTES ct_GetInterval 0 cid_SD_BYTES ct_cvnsi 0 1 cid_SUBR_COUNT 1 sub { exch 1 index 1 add cid_SD_BYTES mul cid_SUBR_MAP_OFFSET add GlyphData exch cid_SD_BYTES ct_GetInterval 0 cid_SD_BYTES ct_cvnsi cid_SUBRS 4 2 roll GlyphData exch 4 index 1 index sub ct_GetInterval dup length string copy put } for pop } if } {pop} ifelse } forall } if cleartomark pop pop end CIDFontName currentdict/CIDFont defineresource pop end end } stopped {cleartomark/StartData ct_reraise} if }bind def currentdict end def /ct_saveCIDInit { /CIDInit/ProcSet ct_resourcestatus {true} {/CIDInitC/ProcSet ct_resourcestatus} ifelse { pop pop /CIDInit/ProcSet findresource ct_UseNativeCapability? {pop null} {/CIDInit ct_CIDInit/ProcSet defineresource pop} ifelse } {/CIDInit ct_CIDInit/ProcSet defineresource pop null} ifelse ct_Vars exch/ct_oldCIDInit exch put }bind def /ct_restoreCIDInit { ct_Vars/ct_oldCIDInit get dup null ne {/CIDInit exch/ProcSet defineresource pop} {pop} ifelse }bind def /ct_BuildCharSetUp { 1 index begin CIDFont begin Adobe_CoolType_Utility/ct_BuildCharDict get begin /ct_dfCharCode exch def /ct_dfDict exch def CIDFirstByte ct_dfCharCode add dup CIDCount ge {pop 0} if /cid exch def { GlyphDirectory cid 2 copy known {get} {pop pop nullstring} ifelse dup length FDBytes sub 0 gt { dup FDBytes 0 ne {0 FDBytes ct_cvnsi} {pop 0} ifelse /fdIndex exch def dup length FDBytes sub FDBytes exch getinterval /charstring exch def exit } { pop cid 0 eq {/charstring nullstring def exit} if /cid 0 def } ifelse } loop }def /ct_SetCacheDevice { 0 0 moveto dup stringwidth 3 -1 roll true charpath pathbbox 0 -1000 7 index 2 div 880 setcachedevice2 0 0 moveto }def /ct_CloneSetCacheProc { 1 eq { stringwidth pop -2 div -880 0 -1000 setcharwidth moveto } { usewidths? { currentfont/Widths get cid 2 copy known {get exch pop aload pop} {pop pop stringwidth} ifelse } {stringwidth} ifelse setcharwidth 0 0 moveto } ifelse }def /ct_Type3ShowCharString { ct_FDDict fdIndex 2 copy known {get} { currentglobal 3 1 roll 1 index gcheck setglobal ct_Type1FontTemplate dup maxlength dict copy begin FDArray fdIndex get dup/FontMatrix 2 copy known {get} {pop pop ct_defaultFontMtx} ifelse /FontMatrix exch dup length array copy def /Private get /Private exch def /Widths rootfont/Widths get def /CharStrings 1 dict dup/.notdef dup length string copy put def currentdict end /ct_Type1Font exch definefont dup 5 1 roll put setglobal } ifelse dup/CharStrings get 1 index/Encoding get ct_dfCharCode get charstring put rootfont/WMode 2 copy known {get} {pop pop 0} ifelse exch 1000 scalefont setfont ct_str1 0 ct_dfCharCode put ct_str1 exch ct_dfSetCacheProc ct_SyntheticBold { currentpoint ct_str1 show newpath moveto ct_str1 true charpath ct_StrokeWidth setlinewidth stroke } {ct_str1 show} ifelse }def /ct_Type4ShowCharString { ct_dfDict ct_dfCharCode charstring FDArray fdIndex get dup/FontMatrix get dup ct_defaultFontMtx ct_matrixeq not {ct_1000Mtx matrix concatmatrix concat} {pop} ifelse /Private get Adobe_CoolType_Utility/ct_Level2? get not { ct_dfDict/Private 3 -1 roll {put} 1183615869 internaldict/superexec get exec } if 1183615869 internaldict Adobe_CoolType_Utility/ct_Level2? get {1 index} {3 index/Private get mark 6 1 roll} ifelse dup/RunInt known {/RunInt get} {pop/CCRun} ifelse get exec Adobe_CoolType_Utility/ct_Level2? get not {cleartomark} if }bind def /ct_BuildCharIncremental { { Adobe_CoolType_Utility/ct_MakeOCF get begin ct_BuildCharSetUp ct_ShowCharString } stopped {stop} if end end end end }bind def /BaseFontNameStr(BF00)def /ct_Type1FontTemplate 14 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0]def /FontBBox [-250 -250 1250 1250]def /Encoding ct_cHexEncoding def /PaintType 0 def currentdict end def /BaseFontTemplate 11 dict begin /FontMatrix [0.001 0 0 0.001 0 0]def /FontBBox [-250 -250 1250 1250]def /Encoding ct_cHexEncoding def /BuildChar/ct_BuildCharIncremental load def ct_Clone? { /FontType 3 def /ct_ShowCharString/ct_Type3ShowCharString load def /ct_dfSetCacheProc/ct_CloneSetCacheProc load def /ct_SyntheticBold false def /ct_StrokeWidth 1 def } { /FontType 4 def /Private 1 dict dup/lenIV 4 put def /CharStrings 1 dict dup/.notdefput def /PaintType 0 def /ct_ShowCharString/ct_Type4ShowCharString load def } ifelse /ct_str1 1 string def currentdict end def /BaseFontDictSize BaseFontTemplate length 5 add def /ct_matrixeq { true 0 1 5 { dup 4 index exch get exch 3 index exch get eq and dup not {exit} if } for exch pop exch pop }bind def /ct_makeocf { 15 dict begin exch/WMode exch def exch/FontName exch def /FontType 0 def /FMapType 2 def dup/FontMatrix known {dup/FontMatrix get/FontMatrix exch def} {/FontMatrix matrix def} ifelse /bfCount 1 index/CIDCount get 256 idiv 1 add dup 256 gt{pop 256}if def /Encoding 256 array 0 1 bfCount 1 sub{2 copy dup put pop}for bfCount 1 255{2 copy bfCount put pop}for def /FDepVector bfCount dup 256 lt{1 add}if array def BaseFontTemplate BaseFontDictSize dict copy begin /CIDFont exch def CIDFont/FontBBox known {CIDFont/FontBBox get/FontBBox exch def} if CIDFont/CDevProc known {CIDFont/CDevProc get/CDevProc exch def} if currentdict end BaseFontNameStr 3(0)putinterval 0 1 bfCount dup 256 eq{1 sub}if { FDepVector exch 2 index BaseFontDictSize dict copy begin dup/CIDFirstByte exch 256 mul def FontType 3 eq {/ct_FDDict 2 dict def} if currentdict end 1 index 16 BaseFontNameStr 2 2 getinterval cvrs pop BaseFontNameStr exch definefont put } for ct_Clone? {/Widths 1 index/CIDFont get/GlyphDirectory get length dict def} if FontName currentdict end definefont ct_Clone? { gsave dup 1000 scalefont setfont ct_BuildCharDict begin /usewidths? false def currentfont/Widths get begin exch/CIDFont get/GlyphDirectory get { pop dup charcode exch 1 index 0 2 index 256 idiv put 1 index exch 1 exch 256 mod put stringwidth 2 array astore def } forall end /usewidths? true def end grestore } {exch pop} ifelse }bind def currentglobal true setglobal /ct_ComposeFont { ct_UseNativeCapability? { 2 index/CMap ct_resourcestatus {pop pop exch pop} { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CMapName 3 index def /CMapVersion 1.000 def /CMapType 1 def exch/WMode exch def /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering CMapName ct_mkocfStr100 cvs (Adobe-)search { pop pop (-)search { dup length string copy exch pop exch pop } {pop(Identity)} ifelse } {pop (Identity)} ifelse def /Supplement 0 def end def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } ifelse composefont } { 3 2 roll pop 0 get/CIDFont findresource ct_makeocf } ifelse }bind def setglobal /ct_MakeIdentity { ct_UseNativeCapability? { 1 index/CMap ct_resourcestatus {pop pop} { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CMapName 2 index def /CMapVersion 1.000 def /CMapType 1 def /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering CMapName ct_mkocfStr100 cvs (Adobe-)search { pop pop (-)search {dup length string copy exch pop exch pop} {pop(Identity)} ifelse } {pop(Identity)} ifelse def /Supplement 0 def end def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } ifelse composefont } { exch pop 0 get/CIDFont findresource ct_makeocf } ifelse }bind def currentdict readonly pop end end %%EndResource setglobal %%BeginResource: procset Adobe_CoolType_Utility_T42 1.0 0 %%Copyright: Copyright 1987-2004 Adobe Systems Incorporated. %%Version: 1.0 0 userdict/ct_T42Dict 15 dict put ct_T42Dict begin /Is2015? { version cvi 2015 ge }bind def /AllocGlyphStorage { Is2015? { pop } { {string}forall }ifelse }bind def /Type42DictBegin { 25 dict begin /FontName exch def /CharStrings 256 dict begin /.notdef 0 def currentdict end def /Encoding exch def /PaintType 0 def /FontType 42 def /FontMatrix[1 0 0 1 0 0]def 4 array astore cvx/FontBBox exch def /sfnts }bind def /Type42DictEnd { currentdict dup/FontName get exch definefont end ct_T42Dict exch dup/FontName get exch put }bind def /RD{string currentfile exch readstring pop}executeonly def /PrepFor2015 { Is2015? { /GlyphDirectory 16 dict def sfnts 0 get dup 2 index (glyx) putinterval 2 index (locx) putinterval pop pop } { pop pop }ifelse }bind def /AddT42Char { Is2015? { /GlyphDirectory get begin def end pop pop } { /sfnts get 4 index get 3 index 2 index putinterval pop pop pop pop }ifelse }bind def /T0AddT42Mtx2 { /CIDFont findresource/Metrics2 get begin def end }bind def end %%EndResource currentglobal true setglobal %%BeginFile: MMFauxFont.prc %%Copyright: Copyright 1987-2001 Adobe Systems Incorporated. %%All Rights Reserved. userdict /ct_EuroDict 10 dict put ct_EuroDict begin /ct_CopyFont { { 1 index /FID ne {def} {pop pop} ifelse} forall } def /ct_GetGlyphOutline { gsave initmatrix newpath exch findfont dup length 1 add dict begin ct_CopyFont /Encoding Encoding dup length array copy dup 4 -1 roll 0 exch put def currentdict end /ct_EuroFont exch definefont 1000 scalefont setfont 0 0 moveto [ <00> stringwidth <00> false charpath pathbbox [ {/m cvx} {/l cvx} {/c cvx} {/cp cvx} pathforall grestore counttomark 8 add } def /ct_MakeGlyphProc { ] cvx /ct_PSBuildGlyph cvx ] cvx } def /ct_PSBuildGlyph { gsave 8 -1 roll pop 7 1 roll 6 -2 roll ct_FontMatrix transform 6 2 roll 4 -2 roll ct_FontMatrix transform 4 2 roll ct_FontMatrix transform currentdict /PaintType 2 copy known {get 2 eq}{pop pop false} ifelse dup 9 1 roll { currentdict /StrokeWidth 2 copy known { get 2 div 0 ct_FontMatrix dtransform pop 5 1 roll 4 -1 roll 4 index sub 4 1 roll 3 -1 roll 4 index sub 3 1 roll exch 4 index add exch 4 index add 5 -1 roll pop } { pop pop } ifelse } if setcachedevice ct_FontMatrix concat ct_PSPathOps begin exec end { currentdict /StrokeWidth 2 copy known { get } { pop pop 0 } ifelse setlinewidth stroke } { fill } ifelse grestore } def /ct_PSPathOps 4 dict dup begin /m {moveto} def /l {lineto} def /c {curveto} def /cp {closepath} def end def /ct_matrix1000 [1000 0 0 1000 0 0] def /ct_AddGlyphProc { 2 index findfont dup length 4 add dict begin ct_CopyFont /CharStrings CharStrings dup length 1 add dict copy begin 3 1 roll def currentdict end def /ct_FontMatrix ct_matrix1000 FontMatrix matrix concatmatrix def /ct_PSBuildGlyph /ct_PSBuildGlyph load def /ct_PSPathOps /ct_PSPathOps load def currentdict end definefont pop } def systemdict /languagelevel known { /ct_AddGlyphToPrinterFont { 2 copy ct_GetGlyphOutline 3 add -1 roll restore ct_MakeGlyphProc ct_AddGlyphProc } def } { /ct_AddGlyphToPrinterFont { pop pop restore Adobe_CTFauxDict /$$$FONTNAME get /Euro Adobe_CTFauxDict /$$$SUBSTITUTEBASE get ct_EuroDict exch get ct_AddGlyphProc } def } ifelse /AdobeSansMM { 556 0 24 -19 541 703 { 541 628 m 510 669 442 703 354 703 c 201 703 117 607 101 444 c 50 444 l 25 372 l 97 372 l 97 301 l 49 301 l 24 229 l 103 229 l 124 67 209 -19 350 -19 c 435 -19 501 25 509 32 c 509 131 l 492 105 417 60 343 60 c 267 60 204 127 197 229 c 406 229 l 430 301 l 191 301 l 191 372 l 455 372 l 479 444 l 194 444 l 201 531 245 624 348 624 c 433 624 484 583 509 534 c cp 556 0 m } ct_PSBuildGlyph } def /AdobeSerifMM { 500 0 10 -12 484 692 { 347 298 m 171 298 l 170 310 170 322 170 335 c 170 362 l 362 362 l 374 403 l 172 403 l 184 580 244 642 308 642 c 380 642 434 574 457 457 c 481 462 l 474 691 l 449 691 l 433 670 429 657 410 657 c 394 657 360 692 299 692 c 204 692 94 604 73 403 c 22 403 l 10 362 l 70 362 l 69 352 69 341 69 330 c 69 319 69 308 70 298 c 22 298 l 10 257 l 73 257 l 97 57 216 -12 295 -12 c 364 -12 427 25 484 123 c 458 142 l 425 101 384 37 316 37 c 256 37 189 84 173 257 c 335 257 l cp 500 0 m } ct_PSBuildGlyph } def end %%EndFile setglobal Adobe_CoolType_Core begin /$Oblique SetSubstituteStrategy end %%BeginResource: procset Adobe_AGM_Image 1.0 0 +%%Version: 1.0 0 +%%Copyright: Copyright(C)2000-2006 Adobe Systems, Inc. All Rights Reserved. +systemdict/setpacking known +{ + currentpacking + true setpacking +}if +userdict/Adobe_AGM_Image 71 dict dup begin put +/Adobe_AGM_Image_Id/Adobe_AGM_Image_1.0_0 def +/nd{ + null def +}bind def +/AGMIMG_&image nd +/AGMIMG_&colorimage nd +/AGMIMG_&imagemask nd +/AGMIMG_mbuf()def +/AGMIMG_ybuf()def +/AGMIMG_kbuf()def +/AGMIMG_c 0 def +/AGMIMG_m 0 def +/AGMIMG_y 0 def +/AGMIMG_k 0 def +/AGMIMG_tmp nd +/AGMIMG_imagestring0 nd +/AGMIMG_imagestring1 nd +/AGMIMG_imagestring2 nd +/AGMIMG_imagestring3 nd +/AGMIMG_imagestring4 nd +/AGMIMG_imagestring5 nd +/AGMIMG_cnt nd +/AGMIMG_fsave nd +/AGMIMG_colorAry nd +/AGMIMG_override nd +/AGMIMG_name nd +/AGMIMG_maskSource nd +/AGMIMG_flushfilters nd +/invert_image_samples nd +/knockout_image_samples nd +/img nd +/sepimg nd +/devnimg nd +/idximg nd +/ds +{ + Adobe_AGM_Core begin + Adobe_AGM_Image begin + /AGMIMG_&image systemdict/image get def + /AGMIMG_&imagemask systemdict/imagemask get def + /colorimage where{ + pop + /AGMIMG_&colorimage/colorimage ldf + }if + end + end +}def +/ps +{ + Adobe_AGM_Image begin + /AGMIMG_ccimage_exists{/customcolorimage where + { + pop + /Adobe_AGM_OnHost_Seps where + { + pop false + }{ + /Adobe_AGM_InRip_Seps where + { + pop false + }{ + true + }ifelse + }ifelse + }{ + false + }ifelse + }bdf + level2{ + /invert_image_samples + { + Adobe_AGM_Image/AGMIMG_tmp Decode length ddf + /Decode[Decode 1 get Decode 0 get]def + }def + /knockout_image_samples + { + Operator/imagemask ne{ + /Decode[1 1]def + }if + }def + }{ + /invert_image_samples + { + {1 exch sub}currenttransfer addprocs settransfer + }def + /knockout_image_samples + { + {pop 1}currenttransfer addprocs settransfer + }def + }ifelse + /img/imageormask ldf + /sepimg/sep_imageormask ldf + /devnimg/devn_imageormask ldf + /idximg/indexed_imageormask ldf + /_ctype 7 def + currentdict{ + dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{ + bind + }if + def + }forall +}def +/pt +{ + end +}def +/dt +{ +}def +/AGMIMG_flushfilters +{ + dup type/arraytype ne + {1 array astore}if + dup 0 get currentfile ne + {dup 0 get flushfile}if + { + dup type/filetype eq + { + dup status 1 index currentfile ne and + {closefile} + {pop} + ifelse + }{pop}ifelse + }forall +}def +/AGMIMG_init_common +{ + currentdict/T known{/ImageType/T ldf currentdict/T undef}if + currentdict/W known{/Width/W ldf currentdict/W undef}if + currentdict/H known{/Height/H ldf currentdict/H undef}if + currentdict/M known{/ImageMatrix/M ldf currentdict/M undef}if + currentdict/BC known{/BitsPerComponent/BC ldf currentdict/BC undef}if + currentdict/D known{/Decode/D ldf currentdict/D undef}if + currentdict/DS known{/DataSource/DS ldf currentdict/DS undef}if + currentdict/O known{ + /Operator/O load 1 eq{ + /imagemask + }{ + /O load 2 eq{ + /image + }{ + /colorimage + }ifelse + }ifelse + def + currentdict/O undef + }if + currentdict/HSCI known{/HostSepColorImage/HSCI ldf currentdict/HSCI undef}if + currentdict/MD known{/MultipleDataSources/MD ldf currentdict/MD undef}if + currentdict/I known{/Interpolate/I ldf currentdict/I undef}if + currentdict/SI known{/SkipImageProc/SI ldf currentdict/SI undef}if + /DataSource load xcheck not{ + DataSource type/arraytype eq{ + DataSource 0 get type/filetype eq{ + /_Filters DataSource def + currentdict/MultipleDataSources known not{ + /DataSource DataSource dup length 1 sub get def + }if + }if + }if + currentdict/MultipleDataSources known not{ + /MultipleDataSources DataSource type/arraytype eq{ + DataSource length 1 gt + } + {false}ifelse def + }if + }if + /NComponents Decode length 2 div def + currentdict/SkipImageProc known not{/SkipImageProc{false}def}if +}bdf +/imageormask_sys +{ + begin + AGMIMG_init_common + save mark + level2{ + currentdict + Operator/imagemask eq{ + AGMIMG_&imagemask + }{ + use_mask{ + process_mask AGMIMG_&image + }{ + AGMIMG_&image + }ifelse + }ifelse + }{ + Width Height + Operator/imagemask eq{ + Decode 0 get 1 eq Decode 1 get 0 eq and + ImageMatrix/DataSource load + AGMIMG_&imagemask + }{ + BitsPerComponent ImageMatrix/DataSource load + AGMIMG_&image + }ifelse + }ifelse + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + cleartomark restore + end +}def +/overprint_plate +{ + currentoverprint{ + 0 get dup type/nametype eq{ + dup/DeviceGray eq{ + pop AGMCORE_black_plate not + }{ + /DeviceCMYK eq{ + AGMCORE_is_cmyk_sep not + }if + }ifelse + }{ + false exch + { + AGMOHS_sepink eq or + }forall + not + }ifelse + }{ + pop false + }ifelse +}def +/process_mask +{ + level3{ + dup begin + /ImageType 1 def + end + 4 dict begin + /DataDict exch def + /ImageType 3 def + /InterleaveType 3 def + /MaskDict 9 dict begin + /ImageType 1 def + /Width DataDict dup/MaskWidth known{/MaskWidth}{/Width}ifelse get def + /Height DataDict dup/MaskHeight known{/MaskHeight}{/Height}ifelse get def + /ImageMatrix[Width 0 0 Height neg 0 Height]def + /NComponents 1 def + /BitsPerComponent 1 def + /Decode DataDict dup/MaskD known{/MaskD}{[1 0]}ifelse get def + /DataSource Adobe_AGM_Core/AGMIMG_maskSource get def + currentdict end def + currentdict end + }if +}def +/use_mask +{ + dup/Mask known {dup/Mask get}{false}ifelse +}def +/imageormask +{ + begin + AGMIMG_init_common + SkipImageProc{ + currentdict consumeimagedata + } + { + save mark + level2 AGMCORE_host_sep not and{ + currentdict + Operator/imagemask eq DeviceN_PS2 not and{ + imagemask + }{ + AGMCORE_in_rip_sep currentoverprint and currentcolorspace 0 get/DeviceGray eq and{ + [/Separation/Black/DeviceGray{}]setcolorspace + /Decode[Decode 1 get Decode 0 get]def + }if + use_mask{ + process_mask image + }{ + DeviceN_NoneName DeviceN_PS2 Indexed_DeviceN level3 not and or or AGMCORE_in_rip_sep and + { + Names convert_to_process not{ + 2 dict begin + /imageDict xdf + /names_index 0 def + gsave + imageDict write_image_file{ + Names{ + dup(None)ne{ + [/Separation 3 -1 roll/DeviceGray{1 exch sub}]setcolorspace + Operator imageDict read_image_file + names_index 0 eq{true setoverprint}if + /names_index names_index 1 add def + }{ + pop + }ifelse + }forall + close_image_file + }if + grestore + end + }{ + Operator/imagemask eq{ + imagemask + }{ + image + }ifelse + }ifelse + }{ + Operator/imagemask eq{ + imagemask + }{ + image + }ifelse + }ifelse + }ifelse + }ifelse + }{ + Width Height + Operator/imagemask eq{ + Decode 0 get 1 eq Decode 1 get 0 eq and + ImageMatrix/DataSource load + /Adobe_AGM_OnHost_Seps where{ + pop imagemask + }{ + currentgray 1 ne{ + currentdict imageormask_sys + }{ + currentoverprint not{ + 1 AGMCORE_&setgray + currentdict imageormask_sys + }{ + currentdict ignoreimagedata + }ifelse + }ifelse + }ifelse + }{ + BitsPerComponent ImageMatrix + MultipleDataSources{ + 0 1 NComponents 1 sub{ + DataSource exch get + }for + }{ + /DataSource load + }ifelse + Operator/colorimage eq{ + AGMCORE_host_sep{ + MultipleDataSources level2 or NComponents 4 eq and{ + AGMCORE_is_cmyk_sep{ + MultipleDataSources{ + /DataSource DataSource 0 get xcheck + { + [ + DataSource 0 get/exec cvx + DataSource 1 get/exec cvx + DataSource 2 get/exec cvx + DataSource 3 get/exec cvx + /AGMCORE_get_ink_data cvx + ]cvx + }{ + DataSource aload pop AGMCORE_get_ink_data + }ifelse def + }{ + /DataSource + Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul + /DataSource load + filter_cmyk 0()/SubFileDecode filter def + }ifelse + /Decode[Decode 0 get Decode 1 get]def + /MultipleDataSources false def + /NComponents 1 def + /Operator/image def + invert_image_samples + 1 AGMCORE_&setgray + currentdict imageormask_sys + }{ + currentoverprint not Operator/imagemask eq and{ + 1 AGMCORE_&setgray + currentdict imageormask_sys + }{ + currentdict ignoreimagedata + }ifelse + }ifelse + }{ + MultipleDataSources NComponents AGMIMG_&colorimage + }ifelse + }{ + true NComponents colorimage + }ifelse + }{ + Operator/image eq{ + AGMCORE_host_sep{ + /DoImage true def + currentdict/HostSepColorImage known{HostSepColorImage not}{false}ifelse + { + AGMCORE_black_plate not Operator/imagemask ne and{ + /DoImage false def + currentdict ignoreimagedata + }if + }if + 1 AGMCORE_&setgray + DoImage + {currentdict imageormask_sys}if + }{ + use_mask{ + process_mask image + }{ + image + }ifelse + }ifelse + }{ + Operator/knockout eq{ + pop pop pop pop pop + currentcolorspace overprint_plate not{ + knockout_unitsq + }if + }if + }ifelse + }ifelse + }ifelse + }ifelse + cleartomark restore + }ifelse + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + end +}def +/sep_imageormask +{ + /sep_colorspace_dict AGMCORE_gget begin + CSA map_csa + begin + AGMIMG_init_common + SkipImageProc{ + currentdict consumeimagedata + }{ + save mark + AGMCORE_avoid_L2_sep_space{ + /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def + }if + AGMIMG_ccimage_exists + MappedCSA 0 get/DeviceCMYK eq and + currentdict/Components known and + Name()ne and + Name(All)ne and + Operator/image eq and + AGMCORE_producing_seps not and + level2 not and + { + Width Height BitsPerComponent ImageMatrix + [ + /DataSource load/exec cvx + { + 0 1 2 index length 1 sub{ + 1 index exch + 2 copy get 255 xor put + }for + }/exec cvx + ]cvx bind + MappedCSA 0 get/DeviceCMYK eq{ + Components aload pop + }{ + 0 0 0 Components aload pop 1 exch sub + }ifelse + Name findcmykcustomcolor + customcolorimage + }{ + AGMCORE_producing_seps not{ + level2{ + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne AGMCORE_avoid_L2_sep_space not and currentcolorspace 0 get/Separation ne and{ + [/Separation Name MappedCSA sep_proc_name exch dup 0 get 15 string cvs(/Device)anchorsearch{pop pop 0 get}{pop}ifelse exch load]setcolorspace_opt + /sep_tint AGMCORE_gget setcolor + }if + currentdict imageormask + }{ + currentdict + Operator/imagemask eq{ + imageormask + }{ + sep_imageormask_lev1 + }ifelse + }ifelse + }{ + AGMCORE_host_sep{ + Operator/knockout eq{ + currentdict/ImageMatrix get concat + knockout_unitsq + }{ + currentgray 1 ne{ + AGMCORE_is_cmyk_sep Name(All)ne and{ + level2{ + Name AGMCORE_IsSeparationAProcessColor + { + Operator/imagemask eq{ + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ + /sep_tint AGMCORE_gget 1 exch sub AGMCORE_&setcolor + }if + }{ + invert_image_samples + }ifelse + }{ + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ + [/Separation Name[/DeviceGray] + { + sep_colorspace_proc AGMCORE_get_ink_data + 1 exch sub + }bind + ]AGMCORE_&setcolorspace + /sep_tint AGMCORE_gget AGMCORE_&setcolor + }if + }ifelse + currentdict imageormask_sys + }{ + currentdict + Operator/imagemask eq{ + imageormask_sys + }{ + sep_image_lev1_sep + }ifelse + }ifelse + }{ + Operator/imagemask ne{ + invert_image_samples + }if + currentdict imageormask_sys + }ifelse + }{ + currentoverprint not Name(All)eq or Operator/imagemask eq and{ + currentdict imageormask_sys + }{ + currentoverprint not + { + gsave + knockout_unitsq + grestore + }if + currentdict consumeimagedata + }ifelse + }ifelse + }ifelse + }{ + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ + currentcolorspace 0 get/Separation ne{ + [/Separation Name MappedCSA sep_proc_name exch 0 get exch load]setcolorspace_opt + /sep_tint AGMCORE_gget setcolor + }if + }if + currentoverprint + MappedCSA 0 get/DeviceCMYK eq and + Name AGMCORE_IsSeparationAProcessColor not and + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{Name inRip_spot_has_ink not and}{false}ifelse + Name(All)ne and{ + imageormask_l2_overprint + }{ + currentdict imageormask + }ifelse + }ifelse + }ifelse + }ifelse + cleartomark restore + }ifelse + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + end + end +}def +/colorSpaceElemCnt +{ + mark currentcolor counttomark dup 2 add 1 roll cleartomark +}bdf +/devn_sep_datasource +{ + 1 dict begin + /dataSource xdf + [ + 0 1 dataSource length 1 sub{ + dup currentdict/dataSource get/exch cvx/get cvx/exec cvx + /exch cvx names_index/ne cvx[/pop cvx]cvx/if cvx + }for + ]cvx bind + end +}bdf +/devn_alt_datasource +{ + 11 dict begin + /convProc xdf + /origcolorSpaceElemCnt xdf + /origMultipleDataSources xdf + /origBitsPerComponent xdf + /origDecode xdf + /origDataSource xdf + /dsCnt origMultipleDataSources{origDataSource length}{1}ifelse def + /DataSource origMultipleDataSources + { + [ + BitsPerComponent 8 idiv origDecode length 2 idiv mul string + 0 1 origDecode length 2 idiv 1 sub + { + dup 7 mul 1 add index exch dup BitsPerComponent 8 idiv mul exch + origDataSource exch get 0()/SubFileDecode filter + BitsPerComponent 8 idiv string/readstring cvx/pop cvx/putinterval cvx + }for + ]bind cvx + }{origDataSource}ifelse 0()/SubFileDecode filter def + [ + origcolorSpaceElemCnt string + 0 2 origDecode length 2 sub + { + dup origDecode exch get dup 3 -1 roll 1 add origDecode exch get exch sub 2 BitsPerComponent exp 1 sub div + 1 BitsPerComponent 8 idiv{DataSource/read cvx/not cvx{0}/if cvx/mul cvx}repeat/mul cvx/add cvx + }for + /convProc load/exec cvx + origcolorSpaceElemCnt 1 sub -1 0 + { + /dup cvx 2/add cvx/index cvx + 3 1/roll cvx/exch cvx 255/mul cvx/cvi cvx/put cvx + }for + ]bind cvx 0()/SubFileDecode filter + end +}bdf +/devn_imageormask +{ + /devicen_colorspace_dict AGMCORE_gget begin + CSA map_csa + 2 dict begin + dup + /srcDataStrs[3 -1 roll begin + AGMIMG_init_common + currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse + { + Width Decode length 2 div mul cvi + { + dup 65535 gt{1 add 2 div cvi}{exit}ifelse + }loop + string + }repeat + end]def + /dstDataStr srcDataStrs 0 get length string def + begin + AGMIMG_init_common + SkipImageProc{ + currentdict consumeimagedata + }{ + save mark + AGMCORE_producing_seps not{ + level3 not{ + Operator/imagemask ne{ + /DataSource[[ + DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse + colorSpaceElemCnt/devicen_colorspace_dict AGMCORE_gget/TintTransform get + devn_alt_datasource 1/string cvx/readstring cvx/pop cvx]cvx colorSpaceElemCnt 1 sub{dup}repeat]def + /MultipleDataSources true def + /Decode colorSpaceElemCnt[exch{0 1}repeat]def + }if + }if + currentdict imageormask + }{ + AGMCORE_host_sep{ + Names convert_to_process{ + CSA get_csa_by_name 0 get/DeviceCMYK eq{ + /DataSource + Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul + DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse + 4/devicen_colorspace_dict AGMCORE_gget/TintTransform get + devn_alt_datasource + filter_cmyk 0()/SubFileDecode filter def + /MultipleDataSources false def + /Decode[1 0]def + /DeviceGray setcolorspace + currentdict imageormask_sys + }{ + AGMCORE_report_unsupported_color_space + AGMCORE_black_plate{ + /DataSource + DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse + CSA get_csa_by_name 0 get/DeviceRGB eq{3}{1}ifelse/devicen_colorspace_dict AGMCORE_gget/TintTransform get + devn_alt_datasource + /MultipleDataSources false def + /Decode colorSpaceElemCnt[exch{0 1}repeat]def + currentdict imageormask_sys + }{ + gsave + knockout_unitsq + grestore + currentdict consumeimagedata + }ifelse + }ifelse + } + { + /devicen_colorspace_dict AGMCORE_gget/names_index known{ + Operator/imagemask ne{ + MultipleDataSources{ + /DataSource[DataSource devn_sep_datasource/exec cvx]cvx def + /MultipleDataSources false def + }{ + /DataSource/DataSource load dstDataStr srcDataStrs 0 get filter_devn def + }ifelse + invert_image_samples + }if + currentdict imageormask_sys + }{ + currentoverprint not Operator/imagemask eq and{ + currentdict imageormask_sys + }{ + currentoverprint not + { + gsave + knockout_unitsq + grestore + }if + currentdict consumeimagedata + }ifelse + }ifelse + }ifelse + }{ + currentdict imageormask + }ifelse + }ifelse + cleartomark restore + }ifelse + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + end + end + end +}def +/imageormask_l2_overprint +{ + currentdict + currentcmykcolor add add add 0 eq{ + currentdict consumeimagedata + }{ + level3{ + currentcmykcolor + /AGMIMG_k xdf + /AGMIMG_y xdf + /AGMIMG_m xdf + /AGMIMG_c xdf + Operator/imagemask eq{ + [/DeviceN[ + AGMIMG_c 0 ne{/Cyan}if + AGMIMG_m 0 ne{/Magenta}if + AGMIMG_y 0 ne{/Yellow}if + AGMIMG_k 0 ne{/Black}if + ]/DeviceCMYK{}]setcolorspace + AGMIMG_c 0 ne{AGMIMG_c}if + AGMIMG_m 0 ne{AGMIMG_m}if + AGMIMG_y 0 ne{AGMIMG_y}if + AGMIMG_k 0 ne{AGMIMG_k}if + setcolor + }{ + /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def + [/Indexed + [ + /DeviceN[ + AGMIMG_c 0 ne{/Cyan}if + AGMIMG_m 0 ne{/Magenta}if + AGMIMG_y 0 ne{/Yellow}if + AGMIMG_k 0 ne{/Black}if + ] + /DeviceCMYK{ + AGMIMG_k 0 eq{0}if + AGMIMG_y 0 eq{0 exch}if + AGMIMG_m 0 eq{0 3 1 roll}if + AGMIMG_c 0 eq{0 4 1 roll}if + } + ] + 255 + { + 255 div + mark exch + dup dup dup + AGMIMG_k 0 ne{ + /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 1 roll pop pop pop + counttomark 1 roll + }{ + pop + }ifelse + AGMIMG_y 0 ne{ + /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 2 roll pop pop pop + counttomark 1 roll + }{ + pop + }ifelse + AGMIMG_m 0 ne{ + /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 3 roll pop pop pop + counttomark 1 roll + }{ + pop + }ifelse + AGMIMG_c 0 ne{ + /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec pop pop pop + counttomark 1 roll + }{ + pop + }ifelse + counttomark 1 add -1 roll pop + } + ]setcolorspace + }ifelse + imageormask_sys + }{ + write_image_file{ + currentcmykcolor + 0 ne{ + [/Separation/Black/DeviceGray{}]setcolorspace + gsave + /Black + [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 1 roll pop pop pop 1 exch sub}/exec cvx] + cvx modify_halftone_xfer + Operator currentdict read_image_file + grestore + }if + 0 ne{ + [/Separation/Yellow/DeviceGray{}]setcolorspace + gsave + /Yellow + [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 2 roll pop pop pop 1 exch sub}/exec cvx] + cvx modify_halftone_xfer + Operator currentdict read_image_file + grestore + }if + 0 ne{ + [/Separation/Magenta/DeviceGray{}]setcolorspace + gsave + /Magenta + [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 3 roll pop pop pop 1 exch sub}/exec cvx] + cvx modify_halftone_xfer + Operator currentdict read_image_file + grestore + }if + 0 ne{ + [/Separation/Cyan/DeviceGray{}]setcolorspace + gsave + /Cyan + [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{pop pop pop 1 exch sub}/exec cvx] + cvx modify_halftone_xfer + Operator currentdict read_image_file + grestore + }if + close_image_file + }{ + imageormask + }ifelse + }ifelse + }ifelse +}def +/indexed_imageormask +{ + begin + AGMIMG_init_common + save mark + currentdict + AGMCORE_host_sep{ + Operator/knockout eq{ + /indexed_colorspace_dict AGMCORE_gget dup/CSA known{ + /CSA get get_csa_by_name + }{ + /Names get + }ifelse + overprint_plate not{ + knockout_unitsq + }if + }{ + Indexed_DeviceN{ + /devicen_colorspace_dict AGMCORE_gget dup/names_index known exch/Names get convert_to_process or{ + indexed_image_lev2_sep + }{ + currentoverprint not{ + knockout_unitsq + }if + currentdict consumeimagedata + }ifelse + }{ + AGMCORE_is_cmyk_sep{ + Operator/imagemask eq{ + imageormask_sys + }{ + level2{ + indexed_image_lev2_sep + }{ + indexed_image_lev1_sep + }ifelse + }ifelse + }{ + currentoverprint not{ + knockout_unitsq + }if + currentdict consumeimagedata + }ifelse + }ifelse + }ifelse + }{ + level2{ + Indexed_DeviceN{ + /indexed_colorspace_dict AGMCORE_gget begin + }{ + /indexed_colorspace_dict AGMCORE_gget dup null ne + { + begin + currentdict/CSDBase known{CSDBase/CSD get_res/MappedCSA get}{CSA}ifelse + get_csa_by_name 0 get/DeviceCMYK eq ps_level 3 ge and ps_version 3015.007 lt and + AGMCORE_in_rip_sep and{ + [/Indexed[/DeviceN[/Cyan/Magenta/Yellow/Black]/DeviceCMYK{}]HiVal Lookup] + setcolorspace + }if + end + } + {pop}ifelse + }ifelse + imageormask + Indexed_DeviceN{ + end + }if + }{ + Operator/imagemask eq{ + imageormask + }{ + indexed_imageormask_lev1 + }ifelse + }ifelse + }ifelse + cleartomark restore + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + end +}def +/indexed_image_lev2_sep +{ + /indexed_colorspace_dict AGMCORE_gget begin + begin + Indexed_DeviceN not{ + currentcolorspace + dup 1/DeviceGray put + dup 3 + currentcolorspace 2 get 1 add string + 0 1 2 3 AGMCORE_get_ink_data 4 currentcolorspace 3 get length 1 sub + { + dup 4 idiv exch currentcolorspace 3 get exch get 255 exch sub 2 index 3 1 roll put + }for + put setcolorspace + }if + currentdict + Operator/imagemask eq{ + AGMIMG_&imagemask + }{ + use_mask{ + process_mask AGMIMG_&image + }{ + AGMIMG_&image + }ifelse + }ifelse + end end +}def + /OPIimage + { + dup type/dicttype ne{ + 10 dict begin + /DataSource xdf + /ImageMatrix xdf + /BitsPerComponent xdf + /Height xdf + /Width xdf + /ImageType 1 def + /Decode[0 1 def] + currentdict + end + }if + dup begin + /NComponents 1 cdndf + /MultipleDataSources false cdndf + /SkipImageProc{false}cdndf + /Decode[ + 0 + currentcolorspace 0 get/Indexed eq{ + 2 BitsPerComponent exp 1 sub + }{ + 1 + }ifelse + ]cdndf + /Operator/image cdndf + end + /sep_colorspace_dict AGMCORE_gget null eq{ + imageormask + }{ + gsave + dup begin invert_image_samples end + sep_imageormask + grestore + }ifelse + }def +/cachemask_level2 +{ + 3 dict begin + /LZWEncode filter/WriteFilter xdf + /readBuffer 256 string def + /ReadFilter + currentfile + 0(%EndMask)/SubFileDecode filter + /ASCII85Decode filter + /RunLengthDecode filter + def + { + ReadFilter readBuffer readstring exch + WriteFilter exch writestring + not{exit}if + }loop + WriteFilter closefile + end +}def +/spot_alias +{ + /mapto_sep_imageormask + { + dup type/dicttype ne{ + 12 dict begin + /ImageType 1 def + /DataSource xdf + /ImageMatrix xdf + /BitsPerComponent xdf + /Height xdf + /Width xdf + /MultipleDataSources false def + }{ + begin + }ifelse + /Decode[/customcolor_tint AGMCORE_gget 0]def + /Operator/image def + /SkipImageProc{false}def + currentdict + end + sep_imageormask + }bdf + /customcolorimage + { + Adobe_AGM_Image/AGMIMG_colorAry xddf + /customcolor_tint AGMCORE_gget + << + /Name AGMIMG_colorAry 4 get + /CSA[/DeviceCMYK] + /TintMethod/Subtractive + /TintProc null + /MappedCSA null + /NComponents 4 + /Components[AGMIMG_colorAry aload pop pop] + >> + setsepcolorspace + mapto_sep_imageormask + }ndf + Adobe_AGM_Image/AGMIMG_&customcolorimage/customcolorimage load put + /customcolorimage + { + Adobe_AGM_Image/AGMIMG_override false put + current_spot_alias{dup 4 get map_alias}{false}ifelse + { + false set_spot_alias + /customcolor_tint AGMCORE_gget exch setsepcolorspace + pop + mapto_sep_imageormask + true set_spot_alias + }{ + //Adobe_AGM_Image/AGMIMG_&customcolorimage get exec + }ifelse + }bdf +}def +/snap_to_device +{ + 6 dict begin + matrix currentmatrix + dup 0 get 0 eq 1 index 3 get 0 eq and + 1 index 1 get 0 eq 2 index 2 get 0 eq and or exch pop + { + 1 1 dtransform 0 gt exch 0 gt/AGMIMG_xSign? exch def/AGMIMG_ySign? exch def + 0 0 transform + AGMIMG_ySign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch + AGMIMG_xSign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch + itransform/AGMIMG_llY exch def/AGMIMG_llX exch def + 1 1 transform + AGMIMG_ySign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch + AGMIMG_xSign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch + itransform/AGMIMG_urY exch def/AGMIMG_urX exch def + [AGMIMG_urX AGMIMG_llX sub 0 0 AGMIMG_urY AGMIMG_llY sub AGMIMG_llX AGMIMG_llY]concat + }{ + }ifelse + end +}def +level2 not{ + /colorbuf + { + 0 1 2 index length 1 sub{ + dup 2 index exch get + 255 exch sub + 2 index + 3 1 roll + put + }for + }def + /tint_image_to_color + { + begin + Width Height BitsPerComponent ImageMatrix + /DataSource load + end + Adobe_AGM_Image begin + /AGMIMG_mbuf 0 string def + /AGMIMG_ybuf 0 string def + /AGMIMG_kbuf 0 string def + { + colorbuf dup length AGMIMG_mbuf length ne + { + dup length dup dup + /AGMIMG_mbuf exch string def + /AGMIMG_ybuf exch string def + /AGMIMG_kbuf exch string def + }if + dup AGMIMG_mbuf copy AGMIMG_ybuf copy AGMIMG_kbuf copy pop + } + addprocs + {AGMIMG_mbuf}{AGMIMG_ybuf}{AGMIMG_kbuf}true 4 colorimage + end + }def + /sep_imageormask_lev1 + { + begin + MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{ + { + 255 mul round cvi GrayLookup exch get + }currenttransfer addprocs settransfer + currentdict imageormask + }{ + /sep_colorspace_dict AGMCORE_gget/Components known{ + MappedCSA 0 get/DeviceCMYK eq{ + Components aload pop + }{ + 0 0 0 Components aload pop 1 exch sub + }ifelse + Adobe_AGM_Image/AGMIMG_k xddf + Adobe_AGM_Image/AGMIMG_y xddf + Adobe_AGM_Image/AGMIMG_m xddf + Adobe_AGM_Image/AGMIMG_c xddf + AGMIMG_y 0.0 eq AGMIMG_m 0.0 eq and AGMIMG_c 0.0 eq and{ + {AGMIMG_k mul 1 exch sub}currenttransfer addprocs settransfer + currentdict imageormask + }{ + currentcolortransfer + {AGMIMG_k mul 1 exch sub}exch addprocs 4 1 roll + {AGMIMG_y mul 1 exch sub}exch addprocs 4 1 roll + {AGMIMG_m mul 1 exch sub}exch addprocs 4 1 roll + {AGMIMG_c mul 1 exch sub}exch addprocs 4 1 roll + setcolortransfer + currentdict tint_image_to_color + }ifelse + }{ + MappedCSA 0 get/DeviceGray eq{ + {255 mul round cvi ColorLookup exch get 0 get}currenttransfer addprocs settransfer + currentdict imageormask + }{ + MappedCSA 0 get/DeviceCMYK eq{ + currentcolortransfer + {255 mul round cvi ColorLookup exch get 3 get 1 exch sub}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 2 get 1 exch sub}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 1 get 1 exch sub}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 0 get 1 exch sub}exch addprocs 4 1 roll + setcolortransfer + currentdict tint_image_to_color + }{ + currentcolortransfer + {pop 1}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 2 get}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 1 get}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 0 get}exch addprocs 4 1 roll + setcolortransfer + currentdict tint_image_to_color + }ifelse + }ifelse + }ifelse + }ifelse + end + }def + /sep_image_lev1_sep + { + begin + /sep_colorspace_dict AGMCORE_gget/Components known{ + Components aload pop + Adobe_AGM_Image/AGMIMG_k xddf + Adobe_AGM_Image/AGMIMG_y xddf + Adobe_AGM_Image/AGMIMG_m xddf + Adobe_AGM_Image/AGMIMG_c xddf + {AGMIMG_c mul 1 exch sub} + {AGMIMG_m mul 1 exch sub} + {AGMIMG_y mul 1 exch sub} + {AGMIMG_k mul 1 exch sub} + }{ + {255 mul round cvi ColorLookup exch get 0 get 1 exch sub} + {255 mul round cvi ColorLookup exch get 1 get 1 exch sub} + {255 mul round cvi ColorLookup exch get 2 get 1 exch sub} + {255 mul round cvi ColorLookup exch get 3 get 1 exch sub} + }ifelse + AGMCORE_get_ink_data currenttransfer addprocs settransfer + currentdict imageormask_sys + end + }def + /indexed_imageormask_lev1 + { + /indexed_colorspace_dict AGMCORE_gget begin + begin + currentdict + MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{ + {HiVal mul round cvi GrayLookup exch get HiVal div}currenttransfer addprocs settransfer + imageormask + }{ + MappedCSA 0 get/DeviceGray eq{ + {HiVal mul round cvi Lookup exch get HiVal div}currenttransfer addprocs settransfer + imageormask + }{ + MappedCSA 0 get/DeviceCMYK eq{ + currentcolortransfer + {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll + {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll + {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll + {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll + setcolortransfer + tint_image_to_color + }{ + currentcolortransfer + {pop 1}exch addprocs 4 1 roll + {3 mul HiVal mul round cvi 2 add Lookup exch get HiVal div}exch addprocs 4 1 roll + {3 mul HiVal mul round cvi 1 add Lookup exch get HiVal div}exch addprocs 4 1 roll + {3 mul HiVal mul round cvi Lookup exch get HiVal div}exch addprocs 4 1 roll + setcolortransfer + tint_image_to_color + }ifelse + }ifelse + }ifelse + end end + }def + /indexed_image_lev1_sep + { + /indexed_colorspace_dict AGMCORE_gget begin + begin + {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub} + {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub} + {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub} + {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub} + AGMCORE_get_ink_data currenttransfer addprocs settransfer + currentdict imageormask_sys + end end + }def +}if +end +systemdict/setpacking known +{setpacking}if +%%EndResource +currentdict Adobe_AGM_Utils eq {end} if +%%EndProlog +%%BeginSetup +Adobe_AGM_Utils begin +2 2010 Adobe_AGM_Core/ds gx +Adobe_CoolType_Core/ds get exec Adobe_AGM_Image/ds gx +currentdict Adobe_AGM_Utils eq {end} if +%%EndSetup +%%Page: (Page 1) 1 +%%EndPageComments +%%BeginPageSetup +%ADOBeginClientInjection: PageSetup Start "AI11EPS" +%AI12_RMC_Transparency: Balance=75 RasterRes=300 GradRes=150 Text=0 Stroke=1 Clip=1 OP=0 +%ADOEndClientInjection: PageSetup Start "AI11EPS" +Adobe_AGM_Utils begin +Adobe_AGM_Core/ps gx +Adobe_AGM_Utils/capture_cpd gx +Adobe_CoolType_Core/ps get exec Adobe_AGM_Image/ps gx +%ADOBeginClientInjection: PageSetup End "AI11EPS" +/currentdistillerparams where {pop currentdistillerparams /CoreDistVersion get 5000 lt} {true} ifelse { userdict /AI11_PDFMark5 /cleartomark load put userdict /AI11_ReadMetadata_PDFMark5 {flushfile cleartomark } bind put} { userdict /AI11_PDFMark5 /pdfmark load put userdict /AI11_ReadMetadata_PDFMark5 {/PUT pdfmark} bind put } ifelse [/NamespacePush AI11_PDFMark5 [/_objdef {ai_metadata_stream_123} /type /stream /OBJ AI11_PDFMark5 [{ai_metadata_stream_123} currentfile 0 (% &&end XMP packet marker&&) /SubFileDecode filter AI11_ReadMetadata_PDFMark5 + + + + application/postscript + + + Print + + + + + Adobe Illustrator CS3 + 2009-06-16T09:28:15-04:00 + 2009-06-16T09:28:15-04:00 + 2009-06-16T09:28:15-04:00 + + + + 256 + 168 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAqAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9A+V/K/lmTyzpDvpFkzt ZW7MzW8RJJiUkklcVTT/AAp5W/6s9j/0jQ/804q7/Cnlb/qz2P8A0jQ/804q7/Cnlb/qz2P/AEjQ /wDNOKu/wp5W/wCrPY/9I0P/ADTirv8ACnlb/qz2P/SND/zTirv8KeVv+rPY/wDSND/zTirv8KeV v+rPY/8ASND/AM04q7/Cnlb/AKs9j/0jQ/8ANOKu/wAKeVv+rPY/9I0P/NOKu/wp5W/6s9j/ANI0 P/NOKu/wp5W/6s9j/wBI0P8AzTirv8KeVv8Aqz2P/SND/wA04q7/AAp5W/6s9j/0jQ/804q7/Cnl b/qz2P8A0jQ/804q7/Cnlb/qz2P/AEjQ/wDNOKu/wp5W/wCrPY/9I0P/ADTirv8ACnlb/qz2P/SN D/zTirv8KeVv+rPY/wDSND/zTirv8KeVv+rPY/8ASND/AM04q7/Cnlb/AKs9j/0jQ/8ANOKu/wAK eVv+rPY/9I0P/NOKu/wp5W/6s9j/ANI0P/NOKu/wp5W/6s9j/wBI0P8AzTirv8KeVv8Aqz2P/SND /wA04q7/AAp5W/6s9j/0jQ/804q7/Cnlb/qz2P8A0jQ/804q7/Cnlb/qz2P/AEjQ/wDNOKu/wp5W /wCrPY/9I0P/ADTirv8ACnlb/qz2P/SND/zTirv8KeVv+rPY/wDSND/zTiqV+aPK/lmPyzq7ppFk rrZXDKy28QIIiYgghcVTTyp/yi2j/wDMDbf8mVxVNMVdirsVdirsVdirsVdirsVdirsVdirsVdir sVdirsVdirsVUL6/sbC3a5vriO1t1oGmmdY0BPT4mIGKpaPMU9yP9xelXd2poFnlUWkNff6wUmK/ 5SRMMVXc/Nsu3o2Fn/lerNdfTx9O16eFcVbeLzZHulzYXGx+AwTQb9vi9af/AIjiq1tS8xQEm50Z Z0/Z+oXSSv8A7JblbMfcxxVXsvMOk3dyLRZTDekVFnco9vOQBUlY5QjOo/mWo98VTHFXYq7FXYq7 FUr81/8AKLax/wAwNz/yZbFXeVP+UW0f/mBtv+TK4qmmKuxVC3Oq6dbX1nYXFwkd5fmQWUDGjSmF ecnAd+K7nFUrt/Pnk65tJLuDV7aS1imFtJMr1USsSAlfElD92KtzeefKkN5Z2cuootxqCRy2a8XI kjlpwcMF40PIbk7d8VbvvO/lSxtbC6u9SihttUhNzYzNy4SQgIxlqB8KASoSzUAriqrL5v8ALEKR SS6lAkczTLE7PRWNtcLazUPT93PIqMe1fDFVq+c/KjaoulLqludRaVoBbBxy9VCVKHsG5KygHqQQ NwcVU4fPfk2eWKOPWLUtNALqMmQBfSMfrVLmig+l+84k14/FSmKq8Pm3y1Nos+uR6jAdKtQxubst xSPhQkPWhU7jYipqPEYqh77z55PsLyWzvNVggnhjM0iuSFCCIz1504/3QL0rWmKojSfNnlzV5lg0 2/iuJ2WR/RWokCwmMSFkYBl4+vH1H7QxVStfO/lG7vbexttVt5bu7UNbxK9S1QSBXpyIQkKdyBiq hL+YfkuOWCI6rC7XMjxW/ph5FeSN3jdQyKy1DRN37V6Y0q+Pz/5LklhiTWbVnuIlnho4oUeP1V+L oGMfxhT8VN6YqmGl+YNF1an6NvIrusEN1+6bl+5uefov8n9JqfLFUfirsVSW51q8vLmWw0FI5ZoW Md3qE1Ta27A0ZKKVM0o7xqw4/tMpoCqrWHlyxtp1vLhn1DUx0v7vi8i1FCIgAqQqR1WNVB71OKpp irsVdirsVQ9/p1hqFube+t47mAkNwkUMAw6MK9GHYjcYqlMkOt6L+8tGl1bS1qZLOVud5EvWsMzm swH8kh5eDnZcVTbT9QstQtEu7OUTW71AcVFGUlWVgaFWVgQykVB2OKojFXYq7FUr81/8otrH/MDc /wDJlsVd5U/5RbR/+YG2/wCTK4qmmKuxVh35geQLjzVNplza6o2lXmk+s9rcpF6rLLL6YDD40pRY yp9mxVjOl/kUNN06TSbfVlGlzXJvJENuTMJI3mNuqP6oXgqzKHqpJ47EcvhNqyPTfI2rqmhDUtQt 3bQrW4soPq0DoJIpreOBWfnK9GX0yTTY+2KpfYfk5p6RaFb6jqV1qFppWnTafc2zzzok3rRW0RVP TkThARanlCeSty36YFX6f+UOn290Jp7n6yssOswXsUiyNHKurXKzrSNpGSP0lHFuI+M7nFVKw/KN 7O50GSLUkUaTFZC5kWBlmmltJDLKeayqrLcyO7MJlkKliUIJwqpaJ+Ueo6V5dHl1NZgfTWX1Jmew imla4+pCzP8AfNJF6Xwh6cOX7PKhwKih+Vc8vl+TRLrVStnd6lFf3kUCOVEUESKkERupLl6GWGOQ +ozjqoUCmFUJD+StqdI1W0v9Se/u7uyFjYXEglWOD07JrGKZ4BL6U0qxv9tl5daEVwKnFt+X02k6 /YatoN1HEY7ea21EXwuLuSf12tqyiV5+fNUskRQzEAUHbFUs0f8AK3XNG0ufTdO12FIbiQXjTPZK 8q3kdusETIzSELGPSjc0HOoPFhy2Kq/lr8p08vXumGz1SSbTtMvDfRWs0S8+b6c9hIokQoKNyR/s 9jWpNcCpdp35MXlr5ai8strEb6SJbe8mf6qRcG6toI4k4v6vERc4Fcgry6ryodiqefl7+W0fk271 CSC+NzbXttZQR25TgIWtRMZSh5N8Mstw0nH9mpG+BWa4qkl/d3epahJo+nu0NvAB+lr9CVePkAy2 8LDpK6nkzdUUgj4mUhVNrS0tbO2jtbWJYLeEcY4kAVVHsBiqriqV33mLT7adrSISX1+lOVlZoZZF LfZ9QikcVexlZQcVWC+8zy1aLSreGMn4VurwpLSnVlhhuE+6Q4q36vmxKj6rYXFeh+sTQU9qejPX 78VWHzFJa/8AHW0+4sUGzXagXFtt1POIl0Sn7UsaDFU2guILiFJ7eRZoZAGjljYMrKehVhUEYqvx VItU025sb19c0lGedgP0lpyUAu0UUDLUgLcRj7LftD4G/ZZFU2sb60vrOG8tJBNbTqHikWtCp9ju PcHpiqvirsVSvzX/AMotrH/MDc/8mWxV3lT/AJRbR/8AmBtv+TK4qmmKuxV2KuxV2KuxV2KuxV2K uxV2KuxV2KuxV2KuxVLtf1G4srACzRZNRunW2sInrxM0laMwG/CNQ0j0/ZU4qq6RpkGmWEdnEzSc atLM+7yyuS8krkftO5LHFUZiqQG4u/MDlbGdrbQlJWS+hYrNdMDQrbuP7uLqDKPib9igo5VTew0+ y0+2W1soEt7dKlY4wFFSasT4ljuSdycVRGKuxV2KpLd6FLbTvqGhMlreO3O4tGqLW6JPxeoi/YkP aVByrTkHA44qjdI1WHUrYyqjQTxMYrq0lp6sEoAJjkClhWhBBBoykMCQQcVRuKpDHTRtfEANNN1p 3eFf2Yr4KZJFHgs6K0n+urHq+Kp9irsVSvzX/wAotrH/ADA3P/JlsVd5U/5RbR/+YG2/5MriqaYq 7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUljX695plmO8GjwiCMdvrVyBJKTXukIj4kdnbFU 6xVJNeaW/uYNBgcot0pm1OVSQyWamhRSN1advgB/l5kHkoxVOYooookiiRY4o1CxxqAqqqigAA2A AxVdirsVdirsVdiqQ6+v6Kuk8xw1EcQWHWEFaPaFv74gftWxbnX+TmOtKKp9iqX+YNPmv9IuILch bxQJrKRui3MLCSFj7CRRX2xVX0y/h1HTbS/hBEV3DHPGG6hZFDAH33xVE4qlfmv/AJRbWP8AmBuf +TLYq7yp/wAoto//ADA23/JlcVTTFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqlHlgc7K5u 2PKS8vbuUyfzIs7RQn5ehEgGKpviqT6Cvr3eq6mw+K4uWtoSa1WGyrBw+XriZx/rYqxfzzrfni28 06cNBs7mXR7BUbVzHEGWU30ht041+N/qyqZWEQbty2wqxWw0783pNE8urLfXBk1hoZJomuZUkhYa bPJK1zc/VC8Aeb0/3PBgGXjy+KuKo+TX/wAwbfQdQ0tJbm983WusWixyfVZI4ZbT1rVJGV/TWJYX ZnJo2yk9sUKVxqv5gSaGbDy5JrF3rN+LUy3d/arClrcokst56bzLboF5xRxsh+Ac/wB2SagKrHu/ zANrqGraUdVNxPc6K2nafeCT0lS8eCa7jZXVaLGxMbttwWoJxVC3Wq/meLjRv8OTaleqXgm1hdSt 2iH11Le5kmtAWii4xSGJUbj8CNwoRXdV6T5Bm1PUfI+my67HKb66gb63Fdx8JSHZgFkQgU+CmBKO 8qSSHQ4IJXMkti0ti8rEln+qStbiRq71cRhz88VTbFUo8tVit72zI4tZ31ylB0CzSG5jA8AIp1FB iqb4qlfmv/lFtY/5gbn/AJMtirvKn/KLaP8A8wNt/wAmVxVNMVdirsVdirsVdiqA1DX9H0+VILq6 RbqUVitErJcOPFIYw0jf7FcVQw169m3tNFvZIz/dzTejbofcpLIs6/TFiq8XXmggH9HWQrvRr2Wo +dLUj8cVWnV9ahqLjQ5pCP2rOa3lTau/757Z/wDhcVbt/NOiSzx20szWd1NtFbXsclrI7dxGJlT1 Kf5FcVTbFXYq7FXYq7FUq8pqB5X0kjq9nA7E7ks8YZiSe5Yk4qmuKpR5VNdFRjX1HnunmBFCJWuZ GkFO1HJGJVhPmv8AMXzBo/nO5sLRYb61ghYQ6XCnK5km+pS3KhgWWb4nRAHjR4wtQxD9CqUTef8A zrNqOlaTo2p2utNqRglkvrGGBWjeW1u5ntQs0vpfD9VV/iYOBseq4oTXUPM/nLSbnzNcz6gLuz8u pp93Lam2iVzbzyCW6BaMt8UdtG4FK774qxb/AJXT59Cel+jlbUbZElvbRbeR29NDJdzFAm4AtHtY +RFA0nKopiqrqH5t+cIYr2/gmX9GT3GoxaZcyQwCMpZ38cEZgYSFy3ouS/roq+BxVm9x5u1ux/LS fzBDNb6jqMBPJ5GhaMAzBP8AjyeWNiFOwDj3xSzzAqU6HxF7raJ/drf/AAitQC1rA7/8OzYqm2Kp VowH6R133vk/6gbbFU1xVK/Nf/KLax/zA3P/ACZbFXeVP+UW0f8A5gbb/kyuKppirsVdirsVQ2o6 nY6batdXsoihBCjYszOxoqIihnd2OyqoJJ6DFUqSHXtZ+O6d9H01h8FpEwF7IP8Ai6ZaiEEfsxHl /ljdcVTTTtK03TYmisbdIFc8pSo+KR+7yOfidj3ZiScVRWKuxV2KqdxbW9zA8FzEk8Eg4yRSKHRh 4FWqDiqTnQr7TQG0C4EcKf8ASqumZrUj+WN6PJb7bDjyQfyYqi9J1uC/aS3eN7TUbcA3Wnz0EqBv ssKEq8bUPF0JU7jqCAqmOKuxV2KpR5WATSmgH/HtdXcAXaoWO5kWOtO5j4nFU3xVKPLlYv0lYMav aX1w3L+Zbtvrikew+scPmpxVNuCcw/EcwOIam9DvSv0Yq0sUS/ZRR8RbYD7RrU/M1xVsqrAhgCGF GBHUeBxVwRA3IKOR6tTfen9Biq0wQMnBo1Kb/CVFN+u3virccMUcYjjRUjFaIoAXfrsMVXYqk/lM +rpAvaEDUJ57yMmtTFPMzwEjsfQKbYqnGKpR5drL+k700/0vUJ6KKin1XjZb18fq1cVTfFUr81/8 otrH/MDc/wDJlsVd5U/5RbR/+YG2/wCTK4qmmKuxV2KoXU9StdNsZLy5J9OOgCqOTu7EKkaL+07s QqjuTiqX6XpN1NdDWNZAfUPi+p2uzR2UbihRCPtSFf7yTvuFou2Kp1iq2WWKKNpZXWONAWd2IVQB 1JJ6YqlC+abO4FdLtrnVVrtLaxgQkfzJcTtDA4/1HOKrzqmumrJorheyyXECv9IRpF/4bFWj5hlh +K90m/tYv9++nHciv+raSXEn0lcVR9hqNhqEH1ixuI7mHkUMkTBwGXqpp0YdwdxiqIxVAato8GoC KUMbe/tSXsr1B+8iZhQ/6yNSjodm+4hVT0bV5Ltp7O8iFvqtkQt1ADVWVq+nNEe8UnE8fAgqd1OK pnirsVSaxY2nmbULNj8GoxpqFuT3eNVtrhR7IEhb5viqc4qkWrN+itYg1onjZXCLY6o38g5k205P ZUkkdG9n5HZcVT3FXYq7FXYq7FXYqkvmSd50i0O2Yi71QMkjKSGitFoLiao+yQrcEP8AOy9q4qnE cccUaxxqEjQBURQAqqBQAAdAMVQusaium6XdXzL6hgjLRxDrJJ0SNf8AKdyFHucVa0TT207SLOyd g8sESrNIooHlpWR9/wCd6t9OKo3FUr81/wDKLax/zA3P/JlsVd5U/wCUW0f/AJgbb/kyuKppirsV diqQ2Q/TOtSag/xadpUklvp6dnulrHcXBH/FZrCnh8Z7iiqfYqgdW1aOwiQLG1ze3BKWdmhAeVwK 9Tsqr1ZjsoxVBQeXWvJEu/MDpf3KsJIbOhNnbsPs+nG3946/79kBav2eAPHFU7xV2KuxVLNR8v2V 3cfXYS1lqgUKmoW9FloOiybcZU/yJAR4UO+KqemareLdfozV0SLUKE288dRBdIoBZ4gxJVl/bjJJ HYsN8VTfFUm8w2NxSLV9PjL6pp1WSJTQ3EDUM1sfHmq1SvSQKelcVTOyvLa9tILy1kEttcxrLBKO jI45Kd/EHFVbFUp8x2l01vDqFihkv9Mk+sQxLTlMnErNBU/78jJ49ufEnpiqYWV7a31nDeWkgltr hFkhkFQGVhUGhoR9OKr5oYZ4ZIJ41lhlUpLE4DKysKMrKdiCOoxVIILufy4RaanIZNEqFsdTYljA vRYbxmrsvRJifi6PRvidVkQIIqNwehxV2KuxV2KpZq+uQ2LraQRm81adS1rp8ZAdh05yNv6UQP2p G27CrUUqtaJpE9oJbu/lW51e84m8uFXigC14QxKd1ij5HiDualjuTiqaYqkV236V1+KwUcrLSWS6 vm7NckcraHw+AH1m7g+n4nFU9xV2KpX5r/5RbWP+YG5/5MtirvKn/KLaP/zA23/JlcVTTFXYqlvm O+uLPR5pLQ0vZiltZEgMBPcOsMTMp6qruGb2BxVFabp9tp2n29haqVt7WNYogTU8VFKk9ye57nFV S5uYLW2lubhxFbwI0k0jdFRByZj8gMVSrQLKeV5Nb1CIx6jeqBFC4+K2ta1jt+9G/al8X2rxVaKp zirsVdirsVdiqB1nSYdUsjbu7QzIwltLpKepBOn2JY6918DswqpqpIxVZoOpyX9kxuFWO/tZGttQ hWvFZ46cuNd+DqQ6V/YYYqmOKpLoS/UtQ1LSOkMTi9s17LDdliydvs3CS7dlKjFU6xV2KscuJB5Z vJbpyR5evJDJcnqLK4kNXmPhbytvIf2HPI/CzFVWRggio3B6HFXMoYFWAKkUIPQjFUkXy5JYkfoK 8OnRA/7wOnr2e5qeMRZHi9likVf8k4qvW+8zw0+s6XDcL0LWVzVz7+nOkCivh6hxVcdV1h6LBosy Of2rqa2jjHzMMlw//CYqsa18z3lRcXcGmQnrHZAzzUp2uJ1RBXw9CvviqN03R9O01JFtIuLzNznm dmkllbpyklcs7mmw5HptiqMxVKta1W4gaPT9NRZtXuh+5Rt44U6NcTgEH008AaufhFNyFUTpGl2+ mWKWsLNIQWeaeQgySyueUkshAA5OxJNBTsABQYqjMVdiqV+a/wDlFtY/5gbn/ky2Ku8qf8oto/8A zA23/JlcVTTFXYqk+qBp9f0a12CxG5v3Jrv6MYtwvh1vA30YqnGKpN5jAuW07SzThf3S/WB1/cW6 m4cEd1do1javZsVQf5hecf8ACflt9USBbq7eWO3s7Z3EaySyHernoFjVnPyxVhupfnLqitq95pOl rfaPp9sLmOcpcLRJNLXUIpZZgrW4BeRYvT589wRtXCqeeWfP2uX+q3Gm6ppX1RoLO4vI5ys9v66Q yIissFykc0anmy/GK1WvQjFUv8t/mzealolv5kv7S1s9CaNluF9ci7E0Ngb6Z443Cq6UVlVA3Lj8 fSoCqjo/5qeYNYTRJbWzsoVv5LqDUIHeSR4ZbFGnk4OlFYPBwZPdt8UKFr+cusTeVYfNP6Mtxpsv C1NuJX+si8azFyXpx4+kHPGleXD46/s4qyT8ufzDfze9+j2Ys5NOjtRcRFuTLPMrmVD/AJKmP4D+ 0pB74Ep3x+qebBwFIdVtWaXsBPZsoUjsWkinIPekY8MVTnFUn1EGDzHo90NxOtzYMB4yILlWP+r9 UYD/AFsVTjFXYq0yq6lWAZWFGU7gg9jiqQLZajoB/wBxsTXuiAf8cxSBPbD/AJdSxCvGP99MQVH2 DTjHiqa6bq2nanCZrGdZlRuEq7q8b9SkkbAPG47qwBxVJPP2v3+jaZZyWciW31y8jtbjUJVDx2sT o7eqwdo0qzIsal2C8nFcVYHp/wCcetXFzpAjgFzYI0tvrd6IaqJJrmWzsDygeeBC0sK8qSlW51Ta mFUF5Y/ObzNc6loNrrv1Wwini006nNIAkTC+tL65WZJGYBQ6QwE/yvyXArcv5ueZ/wDGl1ZQ3FvJ pdteW8MUSLCTNBPqMtsxWriWVhEoKeiDvuRTCr27AqQyeYJ9Rdrby4qXLA8ZdVkBayhpseJUr9Yc fyRmldmdcVR+kaNb6bHIVd7i7uWEl7ezEGWaQCnJiAAABsqqAqjZQBiqPxV2KuxVK/Nf/KLax/zA 3P8AyZbFXeVP+UW0f/mBtv8AkyuKppirsVSiRg/m23UkAwWExQdz600XL7vRH34qm+KpVc/8pTp/ /MDe/wDJ60xVKfP/AJq0vyxb2Gp32mm+dJnFvP8Au0W3b0X5t60pCxs8fJF3HImmKsYu/PHkvS9B 1WePyyq+VZjc2ss8aW6xXV1aWzc4XgHxcSts0IdhTkPDfCqp/inTvMGs6FNP5Vtb+4u5ZIbC/F1b zGL0AJ5QWC1HBQG4nvihKIfzE/Kdwsr+XIVeO1tI5VNvAWSEWMl08QDAcvqsVsI2HjxUdsVR9z+a Xk+K606/bRIvrWpRLeTvK9ul0kryHTZokV/inmT0fTZUNSop0xVF+U9X8l65+kb228sWqLplpJAq wiC4u3ggV7YQrbxrzHKJCir/AC/D0xVk/krUtD1WC+v9O0waZcJOLK/QpCGZ7WNQi+pAzxyCNHCi jHjuuxBGBKP1kD9JaEe4vnof+jG5xVNcVSnXfhvdDcLzZL/Ze552s6EjY/ZVix9gcVTbFXYq7FXY qluo+XtLvrgXbxtBfovBL+3Yw3AXqFMiULLXfg1V9sVQ5tPM9uvCO5ttVgI4mO9T6vMwI3LTQK8R +Qtxiq5NR1aMenPoMrMCDW0mtpIiRvUGZ7Z+o/kxVbJfTuvF/Ll260UcSbAii1p1ue1Tiq0/4luH R4tOsbEjZbieRriVAeo9GJI13r2nxVcPLX1qja3eSanX7VqQIbPrWn1dP7xem0zSYqnKIiIqIoVF ACqBQADYAAYq3irsVdirsVSvzX/yi2sf8wNz/wAmWxV3lT/lFtH/AOYG2/5MriqaYq7FUpvG4ead LZjRHtL2JfeQvbOF/wCAjc/RiqbYqk+qM1vr2jXW3CY3Fg9a7etGJ1bw+1aBf9liq/XvLGj66kK6 jHIxg5iKSGaWBwsq8JU5wsjFXT4WGKpXL+WPkuSGa3Niy2c6SK1ks8y2ytNA1tJIkIf00kaJyvMC u9epJxVO5dE0yW70+7eGtxpfP6i/Jhw9SP0n2rRqpt8VcVY/L+U3kCV1d9KQsJZ5zR5AGa6nS4mD AN8Ss8QHE7carShOKq4/LTyUqX0cWnCGPUYzDcxxSSxpwMnrFY0Vgsf7z4vhAxVX07yPomnWd5ZW r3a2V7HNE9qbu4aONZ2ZpPRUv+7JLn4l3HjiqO8v+X9P0DTI9N08y/VIj+6SaV5eAoBxUuTxUU2U bYqpag/r+YtJtAR/o63F+9DuOCfVkU+zfWmP+xxVN8VSnWGB1fQoVP7wXUsxXv6aWkyM30PKg+nF U2xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVK/Nf/ACi2sf8AMDc/8mWxV3lT/lFtH/5gbb/k yuKppirsVSbzQRBaW2qE0Gk3KXcp2oISrQXDn2SCZ3+jFU5xVAa7p0uoaVNbQOsV2OMtnK4qqXEL CWB2A6qsiKWHcbYqv0fU01LTobsIYXYFZ7dvtRTIeMsTe6OCteh6jbFUZirsVdirsVdirTMqKWYh VUVZjsAB3OKpL5crfSXWvspC6jwSyB2IsoOXosdh/eM7y/6rAdsVTvFUmt2+uearqUf3WlW4tAw/ 39dFZ5lP+rHHAf8AZYqnOKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KpX5r/5RbWP+YG5/5Mti rvKn/KLaP/zA23/JlcVTTFXYqtmiimieGVBJFIpSRGFVZWFCCD2IxVJ/LM80UM2jXbl7zSisQkat ZbZq/Vpqn7RZF4Of9+K+Kp1iqR6jbXumX0msadE1xBNQ6tp0YrJLxUKtxAKgeqigKy/tqAB8SqCq mlhqFlqFpHd2Uyz28oqkiGo2NCD3BB2IO4OxxVEYq7FXYq4kAVOwHU4qxuWaTzPKba328tKf9Lu/ +W4g/wBxD4wbfvH6OPhWoLHFWSAACg2A6DFUJq2pw6Zp817KrSCMARwpQvLI5CxxIDSryOQqjxOK qWhadLY6cqXBV72ZmuL2RfstPKecnGu/FSeKV/ZAGKphirsVdirsVdirsVdirsVdirsVdirsVdir sVdiqV+a/wDlFtY/5gbn/ky2Ku8qf8oto/8AzA23/JlcVTTFXYq7FUp1zTrp5INU01QdVsgwSMtx W4hehkt3PQcqAo37LgHpyBVRmmana6lZJd2xYI9Q8bgpJG6mjxyId1dG2YHocVRWKpTd+XozdPf6 bO2m6hJvLJGA0MxAoPrEBosnhyHF6bBgMVWrf+ZLY8LvS1vV6LPp8qAnxZ4blofT+SySYq3/AIkt wp9Sxv45e0P1SZyf9nGrx/e+KrW1nWZhxstEn5EnjLeyw28NB4+m1xOK9v3OKrToF5qDcteuhcwV qumW6mK17bS1LPP8nIQ/yVxVO1UKAqgBQKADoBirTMqKWYhVUVZjsAB3OKpBp3LX7+HWXBGkWtW0 iJgVMzsCpvGBoePElYR/KS+/JeKrIMVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqV+a/wDl FtY/5gbn/ky2Ku8qf8oto/8AzA23/JlcVTTFXYq7FXYqk+paReJeHVdHkWK/IAubWUkW92ooAJeI YpIAOKygEgbEMAAFVfS9dtL+R7Yq1rqMIrcafOAsyCtOQAJDpXpIhKnxxVMcVeOSfnFqthPI136c 9zc2t48OjLHGHtryGf0bW1k4zG45uzKr84hyLAoeq4VS2b85vOcDLHJbRk29raW2qMYHjeDUZNQn t/UeNqMsU0VuKKfss6++KozXPzf1mHyfoV/Y3lo2pXZmTVVQRu0RRqJVGakZI3+PFbZ/+W3mLUde 8vyXWoMklxb3dxa+tHw4yJE9EflE0kTHiRUxsVrgVkGo6nYabbi4vZhDGWCJWpZ3b7KRooLO7dlU EntiqUiyv/MDxy6nE1noykPFpTf3twRuGu6bBPCEdf2z+wFWQYq7FXYq7FXYq7FXYq7FXYq7FXYq 7FXYq7FXYq7FXYqlfmv/AJRbWP8AmBuf+TLYq7yp/wAoto//ADA23/JlcVTTFXYq7FXYq7FUHqmj abqkSR30Al9JucEoLRyxP05xSoVkjb/KRgcVQK2XmWwotpeRanbigEGoVimHb/eqFWBA8GhLHu2K tDWLmGr3uhXUJYj1poRDcoSvQgROZmApsTEMVVP8QaUSW+r3tTSpOnXtTxO3+6e3bFVEatavzSy0 W8ulf4paWy2wPz+uNbcjviraL5quVWOOO10a1pTYm6uACaUCgRQxsB3rIPbFUTp/l7T7O6N65kvN SYFWv7pvUmCnqsewSJT3SJVX2xVM8VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqV+a /wDlFtY/5gbn/ky2KoHQr3V7LRNPs59CvfWtraGGXjJYkco4wrUP1nxGKo79Maj/ANWK+/4Ox/7K cVd+mNR/6sV9/wAHY/8AZTirv0xqP/Vivv8Ag7H/ALKcVd+mNR/6sV9/wdj/ANlOKu/TGo/9WK+/ 4Ox/7KcVd+mNR/6sV9/wdj/2U4q79Maj/wBWK+/4Ox/7KcVd+mNR/wCrFff8HY/9lOKu/TGo/wDV ivv+Dsf+ynFXfpjUf+rFff8AB2P/AGU4q79Maj/1Yr7/AIOx/wCynFXfpjUf+rFff8HY/wDZTirv 0xqP/Vivv+Dsf+ynFXfpjUf+rFff8HY/9lOKu/TGo/8AVivv+Dsf+ynFXfpjUf8AqxX3/B2P/ZTi rv0xqP8A1Yr7/g7H/spxV36Y1H/qxX3/AAdj/wBlOKu/TGo/9WK+/wCDsf8AspxV36Y1H/qxX3/B 2P8A2U4q79Maj/1Yr7/g7H/spxV36Y1H/qxX3/B2P/ZTirv0xqP/AFYr7/g7H/spxV36Y1H/AKsV 9/wdj/2U4q79Maj/ANWK+/4Ox/7KcVd+mNR/6sV9/wAHY/8AZTirv0xqP/Vivv8Ag7H/ALKcVd+m NR/6sV9/wdj/ANlOKu/TGo/9WK+/4Ox/7KcVd+mNR/6sV9/wdj/2U4qgddvdXvdE1Czg0K99a5tp oYuUliBykjKrU/WfE4q//9k= + + + + + + uuid:09218459EA5BDE11B2C6D5E8056E1B71 + uuid:0A218459EA5BDE11B2C6D5E8056E1B71 + + uuid:b1ac9fe8-11a3-4422-b8f3-ae4b8085b7a8 + uuid:5D20892493BFDB11914A8590D31508C8 + + + + Print + + + + 792.000000 + 612.000000 + Points + + 1 + False + False + + + + Helvetica + Helvetica + Regular + TrueType + 6.0d7e1 + False + Helvetica.dfont + + + + + + Magenta + Black + + + + + + Default Swatch Group + 0 + + + + White + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 0.000000 + + + Black + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 100.000000 + + + CMYK Red + CMYK + PROCESS + 0.000000 + 100.000000 + 100.000000 + 0.000000 + + + CMYK Yellow + CMYK + PROCESS + 0.000000 + 0.000000 + 100.000000 + 0.000000 + + + CMYK Green + CMYK + PROCESS + 100.000000 + 0.000000 + 100.000000 + 0.000000 + + + CMYK Cyan + CMYK + PROCESS + 100.000000 + 0.000000 + 0.000000 + 0.000000 + + + CMYK Blue + CMYK + PROCESS + 100.000000 + 100.000000 + 0.000000 + 0.000000 + + + CMYK Magenta + CMYK + PROCESS + 0.000000 + 100.000000 + 0.000000 + 0.000000 + + + C=15 M=100 Y=90 K=10 + CMYK + PROCESS + 14.999998 + 100.000000 + 90.000000 + 10.000002 + + + C=0 M=90 Y=85 K=0 + CMYK + PROCESS + 0.000000 + 90.000000 + 85.000000 + 0.000000 + + + C=0 M=80 Y=95 K=0 + CMYK + PROCESS + 0.000000 + 80.000000 + 95.000000 + 0.000000 + + + C=0 M=50 Y=100 K=0 + CMYK + PROCESS + 0.000000 + 50.000000 + 100.000000 + 0.000000 + + + C=0 M=35 Y=85 K=0 + CMYK + PROCESS + 0.000000 + 35.000004 + 85.000000 + 0.000000 + + + C=5 M=0 Y=90 K=0 + CMYK + PROCESS + 5.000001 + 0.000000 + 90.000000 + 0.000000 + + + C=20 M=0 Y=100 K=0 + CMYK + PROCESS + 19.999998 + 0.000000 + 100.000000 + 0.000000 + + + C=50 M=0 Y=100 K=0 + CMYK + PROCESS + 50.000000 + 0.000000 + 100.000000 + 0.000000 + + + C=75 M=0 Y=100 K=0 + CMYK + PROCESS + 75.000000 + 0.000000 + 100.000000 + 0.000000 + + + C=85 M=10 Y=100 K=10 + CMYK + PROCESS + 85.000000 + 10.000002 + 100.000000 + 10.000002 + + + C=90 M=30 Y=95 K=30 + CMYK + PROCESS + 90.000000 + 30.000002 + 95.000000 + 30.000002 + + + C=75 M=0 Y=75 K=0 + CMYK + PROCESS + 75.000000 + 0.000000 + 75.000000 + 0.000000 + + + C=80 M=10 Y=45 K=0 + CMYK + PROCESS + 80.000000 + 10.000002 + 45.000000 + 0.000000 + + + C=70 M=15 Y=0 K=0 + CMYK + PROCESS + 70.000000 + 14.999998 + 0.000000 + 0.000000 + + + C=85 M=50 Y=0 K=0 + CMYK + PROCESS + 85.000000 + 50.000000 + 0.000000 + 0.000000 + + + C=100 M=95 Y=5 K=0 + CMYK + PROCESS + 100.000000 + 95.000000 + 5.000001 + 0.000000 + + + C=100 M=100 Y=25 K=25 + CMYK + PROCESS + 100.000000 + 100.000000 + 25.000000 + 25.000000 + + + C=75 M=100 Y=0 K=0 + CMYK + PROCESS + 75.000000 + 100.000000 + 0.000000 + 0.000000 + + + C=50 M=100 Y=0 K=0 + CMYK + PROCESS + 50.000000 + 100.000000 + 0.000000 + 0.000000 + + + C=35 M=100 Y=35 K=10 + CMYK + PROCESS + 35.000004 + 100.000000 + 35.000004 + 10.000002 + + + C=10 M=100 Y=50 K=0 + CMYK + PROCESS + 10.000002 + 100.000000 + 50.000000 + 0.000000 + + + C=0 M=95 Y=20 K=0 + CMYK + PROCESS + 0.000000 + 95.000000 + 19.999998 + 0.000000 + + + C=25 M=25 Y=40 K=0 + CMYK + PROCESS + 25.000000 + 25.000000 + 39.999996 + 0.000000 + + + C=40 M=45 Y=50 K=5 + CMYK + PROCESS + 39.999996 + 45.000000 + 50.000000 + 5.000001 + + + C=50 M=50 Y=60 K=25 + CMYK + PROCESS + 50.000000 + 50.000000 + 60.000004 + 25.000000 + + + C=55 M=60 Y=65 K=40 + CMYK + PROCESS + 55.000000 + 60.000004 + 65.000000 + 39.999996 + + + C=25 M=40 Y=65 K=0 + CMYK + PROCESS + 25.000000 + 39.999996 + 65.000000 + 0.000000 + + + C=30 M=50 Y=75 K=10 + CMYK + PROCESS + 30.000002 + 50.000000 + 75.000000 + 10.000002 + + + C=35 M=60 Y=80 K=25 + CMYK + PROCESS + 35.000004 + 60.000004 + 80.000000 + 25.000000 + + + C=40 M=65 Y=90 K=35 + CMYK + PROCESS + 39.999996 + 65.000000 + 90.000000 + 35.000004 + + + C=40 M=70 Y=100 K=50 + CMYK + PROCESS + 39.999996 + 70.000000 + 100.000000 + 50.000000 + + + C=50 M=70 Y=80 K=70 + CMYK + PROCESS + 50.000000 + 70.000000 + 80.000000 + 70.000000 + + + + + + Print Color Group + 1 + + + + C=0 M=30 Y=70 K=0 + CMYK + PROCESS + 0.000000 + 30.000002 + 70.000000 + 0.000000 + + + C=5 M=70 Y=90 K=0 + CMYK + PROCESS + 5.000001 + 70.000000 + 90.000000 + 0.000000 + + + C=5 M=90 Y=75 K=0 + CMYK + PROCESS + 5.000001 + 90.000000 + 75.000000 + 0.000000 + + + C=30 M=0 Y=95 K=0 + CMYK + PROCESS + 30.000002 + 0.000000 + 95.000000 + 0.000000 + + + C=60 M=5 Y=95 K=0 + CMYK + PROCESS + 60.000004 + 5.000001 + 95.000000 + 0.000000 + + + C=30 M=0 Y=10 K=0 + CMYK + PROCESS + 30.000002 + 0.000000 + 10.000002 + 0.000000 + + + C=60 M=10 Y=5 K=0 + CMYK + PROCESS + 60.000004 + 10.000002 + 5.000001 + 0.000000 + + + C=80 M=5 Y=10 K=0 + CMYK + PROCESS + 80.000000 + 5.000001 + 10.000002 + 0.000000 + + + + + + Grayscale + 1 + + + + K=100 + GRAY + PROCESS + 255 + + + K=90 + GRAY + PROCESS + 229 + + + K=80 + GRAY + PROCESS + 203 + + + K=70 + GRAY + PROCESS + 178 + + + K=60 + GRAY + PROCESS + 152 + + + K=50 + GRAY + PROCESS + 127 + + + K=40 + GRAY + PROCESS + 101 + + + K=30 + GRAY + PROCESS + 76 + + + K=20 + GRAY + PROCESS + 50 + + + K=10 + GRAY + PROCESS + 25 + + + K=5 + GRAY + PROCESS + 12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + % &&end XMP packet marker&& [{ai_metadata_stream_123} <> /PUT AI11_PDFMark5 [/Document 1 dict begin /Metadata {ai_metadata_stream_123} def currentdict end /BDC AI11_PDFMark5 +%ADOEndClientInjection: PageSetup End "AI11EPS" +%%EndPageSetup +1 -1 scale 0 -275 translate +pgsv +[1 0 0 1 0 0 ]ct +gsave +np +gsave +0 0 mo +0 275 li +424 275 li +424 0 li +cp +clp +[1 0 0 1 0 0 ]ct +1 lw +0 lc +0 lj +4 ml +[] 0 dsh +true sadj +181.5 181.5 mo +181.5 211.323 157.323 235.5 127.5 235.5 cv +97.6768 235.5 73.5 211.323 73.5 181.5 cv +73.5 151.677 97.6768 127.5 127.5 127.5 cv +157.323 127.5 181.5 151.677 181.5 181.5 cv +cp +false sop +/0 +[/DeviceCMYK] /CSA add_res +0 0 0 1 cmyk +@ +208.5 181.5 mo +208.5 226.235 172.235 262.5 127.5 262.5 cv +82.7646 262.5 46.5 226.235 46.5 181.5 cv +46.5 136.765 82.7646 100.5 127.5 100.5 cv +172.235 100.5 208.5 136.765 208.5 181.5 cv +cp +@ +361.5 100.5 mo +361.5 130.323 337.323 154.5 307.5 154.5 cv +277.677 154.5 253.5 130.323 253.5 100.5 cv +253.5 70.6768 277.677 46.5 307.5 46.5 cv +337.323 46.5 361.5 70.6768 361.5 100.5 cv +cp +@ +388.5 100.5 mo +388.5 145.235 352.235 181.5 307.5 181.5 cv +262.765 181.5 226.5 145.235 226.5 100.5 cv +226.5 55.7646 262.765 19.5 307.5 19.5 cv +352.235 19.5 388.5 55.7646 388.5 100.5 cv +cp +@ +333.5 173.5 mo +282.5 173.5 li +282.5 158.5 li +333.5 158.5 li +333.5 173.5 li +cp +0 0.00392157 0 0 cmyk +f +0 0 0 1 cmyk +%ADOBeginSubsetFont: Helvetica Initial +%ADOt1write: (1.0.24) %%Copyright: Copyright 2009 Adobe System Incorporated. All rights reserved. 12 dict dup begin /FontType 1 def /FontName /Helvetica def /FontInfo 5 dict dup begin /ItalicAngle 0 def /FSType 0 def end def /PaintType 0 def /FontMatrix [0.001 0 0 0.001 0 0] def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 32 /space put dup 45 /hyphen put dup 49 /one put dup 50 /two put dup 65 /A put dup 66 /B put dup 67 /C put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 76 /L put dup 77 /M put dup 78 /N put dup 79 /O put dup 80 /P put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 87 /W put dup 89 /Y put def /FontBBox {-951 -481 1446 1122} def end systemdict begin dup /Private 7 dict dup begin /|- {def} def /| {put} def /BlueValues [0 0] def /password 5839 def /MinFeature {16 16} def /OtherSubrs[{}{}{}{systemdict/internaldict known not{pop 3}{1183615869 systemdict/internaldict get exec dup/startlock known{/startlock get exec}{dup /strtlck known{/strtlck get exec}{pop 3}ifelse}ifelse}ifelse}executeonly]def /Subrs 5 array dup 0 <1C60D8A8CC31FE2BF6E07AA3E541E2> | dup 1 <1C60D8A8C9C3D06D9E> | dup 2 <1C60D8A8C9C202D79A> | dup 3 <1C60D8A849> | dup 4 <1C60D8A8CC3674F41144B13B77> | def put dup /CharStrings 24 dict dup begin /.notdef <1C60D8A8C9B66F631635D26BA635582B3FDE9B3DD75794781396E6 48A7CA97DB1343CA> |- /space <1C60D8A8C9B854D00D> |- /hyphen <1C60D8A8C9B81F2C797F8B2BDB0639171EDAAB309BF7> |- /one <1C60D8A8C9B7EF322B8DEEDAE6F72EF3709E16C7A593AF17F17D72A390 7C7468090579C66DE0263BFE> |- /two <1C60D8A8C9B7EF327699F81B0CD59DC4BD38D48AF11B5B9C1D7787A22B DC09D7BCED9A76C2312055A28AC829584109043EE366AF8632D6D62E9BBD6A43 57093750D4015EA59C9F538C44C55AD0DB14FEE0C7267845EB7EFBD514024AA1 A03530A8941AD7B5F508335B2FDCA37E6B0627146A6F144DB9DD7DCA6BE86290 FB46DD6A2918F4C2C2BDEECA159D78> |- /A <1C60D8A8C9B64EDFF4A769B0E349B0B8A8759517834132408F730D592533 2B160EAFC678A283B12B9F41A37E5CF702EF2D2E718583BF> |- /B <1C60D8A8C9B64EDFF4E8F029E491459914546F05F980240E216037EFFB56 810F73C7B1AD75758AC950CDF0AE7CA5E10B4B98E91DD14CBA33340505432C4E BD036ED5D8912D20451B0A88BD5908DF5F74741DA09743ACC2D69ECC46C5DD00 5482FE9F42B63F3612F31E021BB829EB7CDDF491856FAD0A1D6B2854CE32CAE2 827DAD35AA4DEB8EA2DDAB1E824241122D8E6929DF014B94E2393EF8A13B> |- /C <1C60D8A8C9B6079F6D8209747A86332E73924F1B07F271169856A53C9157 71D7C530ADE68D8CA49F0A6B3478F9E8176949771F40D91B68E1A88C72CE81CC 0A91B3CFB642960E7EB2127A1637D49961A11F5DD40622F39379CDAB7E5B349D F832E4955008C5E3208AB258B012A237635179513D820ACF76E0A17ED392C351 599687E8E7D0> |- /E <1C60D8A8C9B64EDFE336C703EA12FABA68C9F5D15F1A9B67653505BC29F8 D56A4237858E054C3198877A> |- /F <1C60D8A8C9B7D8BE0123FD0A136BA0F480FD4287FFCF97986718886432AF 2C7EB6A3F35B> |- /G <1C60D8A8C9B6FF86FAE761919412E75DCB56A17E0B647886E974BE0CD2DD C55247C89172C0F24B317CED95A1845F91927547B6F787BE4A81523EC6B90B7A F23F6F8A8BDDC51D0AA285D7E086AD8E028BD7D16A89F17742D556071D7D5616 6C6C8A71E0DFC3DA3B4DBE27EC4E6BE207A1EAF47A71BE409951D1C5060119CD D071AF7E9076F56846B6D62E52B2CB6390635FC230> |- /H <1C60D8A8C9B6079F4F4E07EFC7C894BAD912B65087B319FD4C6D4407FA6B DEE59584D043C3070AE38B> |- /I <1C60D8A8C9B854D0EE4B20327A907C36187261> |- /L <1C60D8A8C9B7EF320B5E1B1901757FD427860A5A6931496E07> |- /M <1C60D8A8C9B6B41C9910B30BE12408A0CCE83CFCBF71D6A0AFED0B0C7E6B 8742F00BF38074693AE67B7536DF8025FC27BB7165EE6A43D7B9497E065E42F0 EE8DA1C58C8863D1E0F8290CD2A3925749EE5F186B> |- /N <1C60D8A8C9B6079F42CB3557771D803C706A630DA03929B931F488C01B37 E85FE694B3E25EF7F6332F> |- /O <1C60D8A8C9B6FF86FAE00AF1D2F86EE41080CA4FE58FE601E0C2094F12B2 546E9E38BAEF65733BECF7148D0EA0DA88DD45A55274AD12A1DAB92015F88338 234BE6A027107EEF674C9235BAD46D7DFF766B4165047A7FA440E1670CEEAAB2 425BA29AB4CCAE0C0F708E15BAD5B5B8F2A1708072DEF2F49003A8347C8BC4E8 13779196F3AD613B7571> |- /P <1C60D8A8C9B64EDFE336D280AD0769103D1650D4946BC89E21A88DEC5161 3F3C79BEE823BD11DE4DA6DB5B89497F0D2976B3DEFC67AF28487C3BB530BC49 F1D09A090BACE6D7137C10758B70768799060F36DCE81F308AA18889AF5053DE> |- /R <1C60D8A8C9B6079F62E4AB3BE2637412A7FA2BF1A87387986CC045CAB872 B149BF5CA8B183616945E928E44276850B6ACD583D0202E4733E2391A44F4BCB 738AB089D22707E0F4100F2BC6F35BD460D56FBB8A5713D4AF8760EB8EC1E1AE 6F49A9B2B1066A8DA04011CCA29E2BB62A652880D30D80185E3336BD5BF6EB5D 116E1FAF0793D4F86835A22CB564EFB5339E311318AE2981A0679F359C9E7A1F F6CE964A> |- /S <1C60D8A8C9B64EDFB8831DC7D3DA5352C683CFE7ADDB1F2F7D19136185D1 F816C3BE09EC1E84619F52030DEE9359B5F11BDC142E51FA821DBBAA94D355CD B3194A176F4CAFE2F8762140A61B8DB4801B25EC39CF8CD3F7F21C11EB8BF2FE AA7BF71364CB0E29D9153C5428F8E2556CFDCDFCF7C63E7AA008F518E6EAA3DE B5EC8960FB0234452B3B55FF1BB7B980C85D0DFF1CA34BE144E02D5E8A581ACC 1C4C80D7396F6E85C6E2CC3BAA0E140AF4F656AC7D073077DF7B4E8B5856F92B> |- /T <1C60D8A8C9B7D8BE7B6CE17BCB3B2D4B0FB3E6AF9E6DDADD178189522CE1 F006> |- /U <1C60D8A8C9B6079F4AA924EA43FD5A09DAB441D8FDAD8EE41C906BC5551C AACFEF8B65251D34977BCAD7099CF8F4F9BCA8F32E33DFACED539B0F12BA4E54 491DDBF246C2DFA3D44D729CA7103659C293245DC39AD319> |- /W <1C60D8A8C9B5D6EF2BD09738A41AA6380C9765B88F07D3637E9EE67A95A8 1C558683DE1DD822B8DCC23EEF2BFD04340812EB686C4A78A7861A98B16FC19A> |- /Y <1C60D8A8C9B64EDFF46D2EC9D2AE9B9064B89D1619D7BD915D4A1DC374BD A504CF8C7F69969A9C11B530CF3B> |- end put end dup /FontName get exch definefont pop end %ADOEndSubsetFont +/XLUCMA+Helvetica /Helvetica findfont ct_VMDictPut /XLUCMA+Helvetica*1 [32{/.notdef}rp /space 12{/.notdef}rp /hyphen 3{/.notdef}rp /one /two 14{/.notdef}rp /A /B /C /.notdef /E /F /G /H /I 2{/.notdef}rp /L /M /N /O /P /.notdef /R /S /T /U /.notdef /W /.notdef /Y 166{/.notdef}rp] XLUCMA+Helvetica nf XLUCMA+Helvetica*1 [12 0 0 -12 0 0 ]msf 286.5 171.5 mo (GANLIB) [9.33398 8.00391 8.66602 6.67383 3.33398 0 ]xsh 87.5 174.5 mo (APPLICATION) [8.00391 8.00391 8.00391 6.67383 3.33398 8.66602 7.11914 7.33008 3.33398 9.33398 0 ]xsh 268.5 106.5 mo (SOFTWARE 1) [8.00391 9.33398 7.33008 7.33008 10.8867 8.00391 8.66602 8.00391 3.33398 0 ]xsh 86.5 188.5 mo (SOFTWARE 2) [8.00391 9.33398 7.33008 7.33008 10.8867 8.00391 8.66602 8.00391 3.33398 0 ]xsh 46.5 46.5 mo (MULTI-PHYSICS APPLICATION) [9.99609 8.66602 5.78906 7.33008 3.33398 3.99609 8.00391 8.66602 8.00391 8.00391 3.33398 8.66602 8.00391 2.67773 8.00391 8.00391 8.00391 6.67383 3.33398 8.66602 7.11914 7.33008 3.33398 9.33398 0 ]xsh 153.5 254.5 mo +102.5 254.5 li +102.5 239.5 li +153.5 239.5 li +153.5 254.5 li +cp +0 0.00392157 0 0 cmyk +f +0 0 0 1 cmyk +XLUCMA+Helvetica*1 [12 0 0 -12 0 0 ]msf 106.5 252.5 mo (GANLIB) [9.33398 8.00391 8.66602 6.67383 3.33398 0 ]xsh 269.5 91.5 mo (APPLICATION) [8.00391 8.00391 8.00391 6.67383 3.33398 8.66602 7.11914 7.33008 3.33398 9.33398 0 ]xsh 423.5 274.5 mo +0.5 274.5 li +0.5 0.5 li +423.5 0.5 li +423.5 274.5 li +cp +@ +%ADOBeginClientInjection: EndPageContent "AI11EPS" +userdict /annotatepage 2 copy known {get exec}{pop pop} ifelse +%ADOEndClientInjection: EndPageContent "AI11EPS" +grestore +grestore +pgrs +%%PageTrailer +%ADOBeginClientInjection: PageTrailer Start "AI11EPS" +[/EMC AI11_PDFMark5 [/NamespacePop AI11_PDFMark5 +%ADOEndClientInjection: PageTrailer Start "AI11EPS" +[ +[/CSA [/0 ]] +] del_res +/XLUCMA+Helvetica*1 uf /XLUCMA+Helvetica uf /Helvetica uf Adobe_AGM_Image/pt gx +Adobe_CoolType_Core/pt get exec Adobe_AGM_Core/pt gx +currentdict Adobe_AGM_Utils eq {end} if +%%Trailer +Adobe_AGM_Image/dt get exec +Adobe_CoolType_Core/dt get exec Adobe_AGM_Core/dt get exec +%%EOF +%AI9_PrintingDataEnd userdict /AI9_read_buffer 256 string put userdict begin /ai9_skip_data { mark { currentfile AI9_read_buffer { readline } stopped { } { not { exit } if (%AI9_PrivateDataEnd) eq { exit } if } ifelse } loop cleartomark } def end userdict /ai9_skip_data get exec %AI9_PrivateDataBegin %!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Illustrator(R) 13.0 %%AI8_CreatorVersion: 13.0.2 %%For: (Alain Hebert) () %%Title: (multiphysics.eps) %%CreationDate: 6/16/09 9:28 AM %AI9_DataStream %Gb"-6I;^CQQ(Rp[l9"L-!@6T@1F"+g?ZZ_ZI&j[Ae]pE9\mASp##mNoL0f&0Qd+)Rrq)4lcL5u:7'WX[P+fKk^g/`A,:YK"?Qu(( %-Rt^f0>=rDr:o^)rO_MO+91hgZa=U_o:4*l.A)lR4ace=J%G[Qh1sHj?<(..rEQ51r@Ij:WjZKB+('MFHhZt(X/F"iG99"R4[(tl %IJCe7YAV*nQ+(Cm&%AbB3@o?$I.uEfr_I_K^V>-0Isi9-qYK7LpCI"BDdG&:n]Udrnc%M8q"XLTpA&NS2+_)B^V0Pis7#.m5JI*P %h:"%&8hO#4^X[c-c%i_4^Gs]WXnnCQ?9`gbF8&\hUUrJ"I+t7l+A])rlJGt+4[6END(hF55$e-P^\sLD7'.5cTDeK8GMh;-G^d5P %^41P)5CRM)roWY9qhNqh4$?_L:/1%5Vu&FO'!:cYAj:CH?Z"d%Sc@ID[6o@k %^3bY6D/JG#=+*0Zo]fLbgC&E#6Yf0[DXZ>*9(R57Q*[U[b%839n#gT$Drht'dMh3hc7].l/1kLLs)OEtb9B1F?%-*cYr67jS[1GJ %ZTO_`4aT<6g:#S8-D/W[n:ge)V<"$)V^s.7`$;\QjG;lp/0dY15NTD#->ZsJ-M]):3?n8J>I*j2>F$LsT5r`X>AE8ej>H=@g?Zp[ %Ea806Q8p"_Nn6epgs30q76=05e(1lN\%T8![sbSaQTaLhiY(r\QBL9lT<]cTJp,Z;S6[lF/PF4UnI"#RZ$#1'jJS7'kj8/h:YTri %Oe8qD*2!/9X(\WRcE"Xm]HZ*\loEf2YF4dMSTS)Xc5Y)f*P(RNm()MM]rl4?f?9K<5?UI9N\+1i:=ckK[V+^sjJOP?m9>UscAAYR %5@k]m]#,>#g$CeDk3NhaFgDO`Xg#4TSm+jm[_R@.CMN%gpn8QiZt%IPb@Q`k2Z[5CmOoUl%>.OP(_B7$NU[XY,U\c9*fLG*DMRf;(@ %XfI`aDu7"\u4AXk\E\^V^l>f2g@MgV93s/,.rpDt8CtF1HJbe#oa:=gHrPpuZTsl?[l`?#3`-T7?_+_\[gj %)Y&$`ao-p/rj?'Z]j>W;o)DQZr+iu0Xcp/h[]WMDccA"\43-[J9@mX&ajO+mAYhP2%B3-ia('I-fj9hS[UN=5X`;IjZ/fN#X]qB- %/\KrqQJ87crbakb[W&l3^@u?LmHSIoVo$+t=0->J(VY"R?dn]<=D.Hep:t!=8ob^>pGM\_]rn^?QEpF*qq(,>4==pRD'!OcrI&0[ %Y\3p%GC+JgV^pZ&R:hM+[9h1[]ZPV3YI#%Y:7Z6KEU0p=mE+lXYC/Fcch9Hdo/$-tQBUKCO8jk_Yk?bW<@;AMcOEK+np6S0`HHct^A,%H[5r0fZi/-Mp#EM_>-QmGY%[K>[aa+Tl,'VsDZtRd=+1:QX?E.`gF%>CT3:ZBP`BQ=ecK]*[RR;(/Si=k0)V/L %C_Q]?a'H^A3NqKQJ+rqphPpPO=Zb=:I`/t`[_2?_m8n>Zm'UB9ee=n(jb>!_r3*e@Z$8+FqVLZ-C`+0R+mkZ(O*M3/mSg=%/X/.[?-\tNc@33Y(!O[cpmIhX`cg!UP#u? %jEF14=i2-BBA+bIf>ruAIGoq/UFqd^.c:Ld$ka'NBE %&GC5=4)AQjMdC1#(46%TrL^b%AcE^iU2+m$b1;<]ir-8T-E6Hd;EjgC1nGk'iY];[rQfriEQc(Mp7]Z877If71C#[@`VZ%Xq[h)- %43DZuH/./*^\2E,Sik_:$k\QYPaspPVb7JCc[IG(DS`qm31b6G;KZo]_d1irk`+sUY'3+!mQJ_]TrpFGp9qml+)?]/]+q;Y&jEuHhDGD#j*XdtkU %[PDgPl>X^+&X?'Ln]J2!LH]e0cai3i2^,B9q=M41r9UWCj-%.&_f9qe5PG!.FCXLH\&/mQ"E'aJ7T]<;)Ef*h)i:\C3aKXLV8k`> %VpIS>&!GhjR-P3*:%I_`+%Nr(ThX0F#?ephqi\.,@p.1CT"hq)0SaKKh&>A'$%e/7QMp(41PIJ)7u#Y7:N-h7X8LF1mKr*dOCbF^]14'Ffhp``t8cpI^jl3/'Sjc1Q,ls0"&BXaL]ILE>8^J %>W;hU"b#I.+*fs20;7kD\=?:+?,Y2T6:.+bsfI7-DN>?aJ,n+Vh# %'jd&d9-Y8Fm?]8>s7FhZK,9:Gc\]0E"_X'p/Ba1,76j5(=HH_'>>3W[g*&FZNN!QYi %ffHb^`TJ,2T%)=`%<`lZccE0CL,'f%.tbgOSCJm#a1Ii7kbuis'P,)>048AV]eKUIO_NJHF+rXPZN/NL`!k!orK_ %nMZuAH,W+GEF^';a6%2sR!4\Oq.m]&pSW=AQb/,\O#[-`Z&FSpLAdJi %(B)l%4e.#oA`)9ls8Cd&q4"gFGB`5Rg\F&5n9k!&+@kt\m^:7H3WIpULPNM)oCo^iEX(D#E8K/jHi*6UmiL1cHI?L_D/4(8?U):) %j4!u$5I>1``=gP<4hYP$_hA%T6(GN8R]m8DiTI=-LRqsM"]lqH1t4P[]<,QI94 %p@[8;KjBWF1cG9C3Id8Oo'T6,V=V=.qF_cJ42nd.(2TIDlLe3Rk5P,LdQm`+q)SInrmu?i[rt2Y5!D-pSn_'krRR-LmVr0]I61gn %O7p`Zn([.j^6&Vof=L^_hq`ako,Z=I>P.`Ha,_V&ET9-)A#JIU^tuGrR)JXdMD[7ClcX8V(M3V>N.S] %1V^2mhT1uYnDX@/XDJd5mHs3eC%"iA[b0t_m1@jFX[aJYJ,&g,qqJ$0D]`j]5.?"9q!RRBcX5S1?e_oK61^Gu,2 %p8#t.;G>oZHi5?km=''KXj;;$oA>"DhQ,!"!]GDkS,[@FC@'tmcG"T#Gk]H)hqoH'S!J^[I$W?2hG2&G^O3\BBSGRGrnVe#.m3hd %F>,_&?(g`XmT(s='FnhMda))]J%i[GG]Wo@GN\?QhWbNZoCl%ADa(mQ'Y&'cHkr<]c#UEVKTf(YE^]*9Jh`X/NHZ$TR,Hl7t^MTn@X*-X:@b9Q\hodh1[pM:GCet$.e)SLC^O5e3 %j5FVeD]XCPGP9SSo+,K#&$9&aq"YfmXE\>m[+^#>s8AM=]t1n,s7=QSn!b\mV>'rAQbWEi%?,.8<:mr>rcnHjpX:)XqR+OIHTJcd %qY9$)ZYpm,++4+.VgLF#XgPJ4ho9GZV(94Unsu?9Q`l&G:1*8Fl1o8cJ*I2$n[uW"4niU%f^[qo %l)q4n7K39"R\f`Eq[[UlCCE(-$$fiAgjT.A(/_aCl)e7KIJ*qV@_1K@QKgT-$6o %f9eXl?+t%CoRAj-'W:'(a/e7^n`%&#\)Vd>NqHM7q)BJFYpE=-2`K>I=#ZI)(H;69G-g$V2ta''jI>rlh6^/TqW@YNqWdqJqVlh9 %h@;,Y>-@16\^&fJbILeGHZaCPIM'%N!0DRu?Tj %X,G/Z$[HCR@_Gkrl:&8)(\:),R.fQhZX<0&qrN:3n,'Psqm+hem!55t['uiT]@j?rX6m2=CAYF[[WPf_\s4jco9QhNoh+5R?EKR[ %`O`8-\us4[fa2q/1pJU. %Q;Vak9.Ek(k*pahYOZ8=aEubRH-K!b\`B:DSFSKYkF;9n^7$_B6:[>-6;%IJDgV:ilHkOK@NhHFZ1_H0q`%mHm\bW:MATl7A_ESVZpqD_6je;fJD(u$;$URgjsAnkKZm1_/>7'5iuaeL_YG4O_A>$X4Tnn@F"SQL0EXtWZJODW[cG&>qZ %OG=/DCt':*3ek*c+@^(06jU%S%:^/D=C&4oJbLnYHdtkg&Wh5'C=9^2B;Ic*MR;H.,$C2:7%M4 %4cOJKEGFktgF9neDBk5@T\%,bNa8VQHW&DN<4#/,m8^Ld/:$GjQNj+rlpc?U[J%'&3,!*<7*F9V@I7dJA'mfsLReJ4Z>H.RCpgNC %do!^A;7l.RG$0/siGj^p"Wf`HRm0r'=Dq=Pg=,_gfB=Mhs3C[lp_746&Got!r=ikI%kgHm=KAA@@2j2*Ja:B?BEKT(4*Nc3a^1es %g07!-ZPGHmASIVpTL%sY717gF#*0F$%,8pi2j#,&?G05"IN3Z\&/$q?.Z7MdqNL=`J&:RS2iGSGEjti9bsEA16?lN*?79n![n"F( %XDk;ae4j(l$&7:b4-L:U=Lfh&"c\iR-/so)0IcmV!cM)[>q">.BLbMD$u-*L"9k_/ItMbl5q@>KLXKji-?,8J3J %N)ge!0OeJ7_Ph#b0-"5S9ckl,$Q`:i7'".!_.'cupB>W.BX!>7]?2=>R0o4rHt"ph#SrfM^$1%TDKIh%O3qD\B*j1lVW:HWMYqmc'T %6S+b_Sj*+_r9WJ'i-2M'4nd2c[SK$rT=>cQHn:n %)fbR@TZ]g#l\;BK]-aLc/2sZ\etpt&VS*-BNKF%fU!`UH5IQK=g`r;EX,R[+j4rK.HeE(Z %h5G[:/Ln.AR'4Z+*S]"5[5Coj1h^5RGi)cJgT.;N4h!%J)fF5]c+UC^ZJ>VcgYLf?g2h$'LYTI`D,=CT?2&LY\VpN,=jX3s2SGPk %q6?sfHBJs?f^g[&6N&GNlT4?q-,5o>G.+8L\Y6NOjJNdCXj&q7C7k<"H$Udhmp#YD6FrFNSsNNIW]`S]Oqr*S%dD"Mq/^Sg?amdf %+3$U&QZ[0:s*#%6rshBna<8Fa"rVl)JDr5"W:MATl9$oQceb]$PfLo%n*guLa$9Ik;]GZ4Sba"\_k4]dB-'8M5P3mn01mu`Rps%C %fD\a,;1A-iMd,Q,`BEpmm]`=n^W,$o_="LVn_Nm'o[\?`be5n"8_3$kFST(kaVa!9]'?#jYEiS'NU5/4F^nLa6.r%rNj@Vr[]cM$ %mTK#9)$<<-n)K>&':QCD4hErY[U9\?#U,7ul(F/,dV**uYq/Tb,TBl]UPUGg)CqUhDR-BmoB3pZ2t,VZ^:el7p,u!W/Idc5WZ;*8REkaYU^DT_r*Y0W^Cp:=+"-f=s7;_=D+4d-nrF:MrC,\giC=+I?A:+_@K:Io %0t9/s0L$>kHod4SAW1tpA53BN`aEBeB4=-d+jD/u2*J*NA:rOS#L0F!]Io;;XpB&!MtA0m!aOACPrpB%$s['fM)]mj %kn'-j@N@;JXbs@bUs0hJ-6Lc!C@$9L*nnA%$uoR'S/[3oeq8t,-t3QR]s7ja1LR;t8/Zi.;6XgFS?I;slp=)'*M['^97Tja2L>_6b>PKk%$hY$_"FclrJj"'6&lI(qk'Q(O5p91k-FE"S7\;HXu_\(],2Ds.&h=qh-6= %S7jn^lLEi*DpPR.T/iC8_>Im#g&*>EodmMXE@I?18o^+QZLua$^AY"(pr.T>\J+,or6laqpn-<5s0G`)lWH7Fe_+m@a)q#Eli65$ %m2*4L%DQa[j%K?'fAP2dB&%r>("[f1YOgkR''auGCVTRe3%GZgMEU$CQh5#uAIIbQ;KLD*QF^@:lB]kd0!X_fDD>qSE`j/,Q_c## %YAK81a,%MdB3Ah\,h$>%8_7\2dT=Q$Eg>A*,ZQVl08l'3/lJ9E@&^2#;JqK);=Ekof#b53e0S=1DbmcMgS8;K=L46'-h&Su,"kpA %o;mk7A^b['(G"7@Zn;'hPWUTsf6G!n16(p(DI#R>Y,4ctVT$-9T7Ep6Zt40R4YM!,[OgO:h.EIq[i:!bCK^0gm;cg>bPU/ISR:JJ %l*Fr:7pHiZf:#bmVj4.:CRMl_9U %@k0u3!A;.@l_9lIm9X>hPZMl5dGrKW$ftC3;J'3HPm1+40\Z+IB*?oY[r\EZgXs.bg_Y>3bOn/SSah& %#INf7]9]OnQ.Cc`E*>N#?#uG3%-1=@G$8*!niH/Y[cSUQqgrEi4`!-JF8eBQZ<-Umhj5*E(6V\WbPUm&CCp/i8UD4P*<46`Q2aq@:tWj\aGdRcIL:-'ie3g-X<[p5GFZH-94 %l*NP^UslHKSTLuMfEUTI>Y!46SXqp):?,O&Cf1@:WSXk_pt::f/2Td^GHCK2s@?Cc2?goc,SSNO[S,O&B;*h>9Ug3)C3]Xk("UEQ!M-RNM3k_,a %UJ>"6Q:KH4L:$8.'8F)!PT8(JVsQ*rW0=[#VN/5gDK/0:>q>6P&TuOAAUU:Jfs5eNBmCXpVfd>VSbAQ.;5Yt6#1Nrpp:[4rb?IK- %PdgT;l<;hInii.1Wp3J&F]*+$!Cr]F>FmgIY1;WF.ZQP=:XeI)CZX7/Dj%9RUm>(Dl(m+;YEM`(bI.qW.gmLJcdmMfaD'fjCB-dmZ_]h>V..A`lX@FH$@9mfd`IIY*G?<[XiG#DO[_&);!#X]2:TKMY+p>Zif>l,8!ZPB+t75WPg5/T+P1Kl%+WUq!)VO`LQ#a=Y3`&T;/G)c] %l-!0V;p*3"g!_]Q:Bm7X4 %3UHq0Zn[."migTTrEGae\ER"B=`3iU!`3kkb`3i8l'A$8D,d+73,d+7s %R^eYt9O(eI86fBp7H.M!R(0TqOLUVK13%/R0l_'LR(,cY1i\elR(,aK,d&H,9O(fXOLRnC-E^619jFMI-E^brb.7."E@klu>]lHr %\8(gbERhX^\E_7j`)X6kR^gLcN/=T?cBu+6"$'(\V&b9.2=G&7.a@B2[,a?\@1si\B=E@M/0.2'%^/* %'%^05Ogqj2R(296,d($-9jFMI-E^M^M/+^s'3D/kM/+UPM5uk:'3A]Uesf2d?_\4R^$M6!p.,d(<78R/YU,d,j>6K5!r)A?1\9h\g"*"l=%Ik#H/o8COe %Waas;jd9S!' %jVNbhWuD]'?+@%>;7J-XnX)[D085*3nH*+D<2RjCTABef2`q*f2d?_\@/slEGae\ELiG_MdYOa="/VKED?+;i[T(6ERc@%i[X'=`3n,)M5ukN %inDPQM5sUp`3kkc`)WBn9jCU;&m&3^-Eaq:0lbaDOLRnC-E^N98R/)E-E^7,M6$!rC#UTI*"uC:Bd%J5jVNbh>/nLgQ&!:8/M@ag %MYCN[doNi[dn.lg8]nG[?ZNc[?Y)EY%\ggf2`q*f2d?_\@/u9\@,j?>bu\6\4U%#>brDQf[-$G\4Sb. %Y#7GX>bs&"Y$i9d3@UOHY%\gg='[-uY$+"\>dZ10Y50msEKtC4-E_A1A)\u)1FB9Q5Y_toBh'=d:!8p69!^TR>d\:#`)Xr7EL#[6 %R^f4U-Ec&+6K5$,PJgJe6K0KVR(-mV9O+DD-E^M^M5uk*Q+1^p\!D.:h'RF5eAJgk3W[STW7rS;Xo!X[9bLNc*jnG?P.8fLUMc@8 %[19->-#oIl8):2i.6Hfq9jI"7\ogPK=34YU>=uJ,o@=UI-QE+;2\lJ@Qm%iAm %Dsa@T1iJoid`E@+B!IJ]DNh_U>+Kc)k,h!IfC79.ksEneR^a\7SIF';L,DKW/rAo&39kZ]>\cjcoHJ?np&b!Y;@c_"gPBc8eZ %1l[o=/&0/1dkkU<.1M]G'MgMdWJd1FQ:'f'd`]j7l=/o0b!Y;@jjVFReqof1fS6[a^!'_[)DbH#-=j8_507';/nD+_NgXZT0/HZi %OYLpBlR@Taf'P+(f1kkf7+B:Guf4afNn=`p=t=[;m@qdptB20g!WEAfnA.A@@G,G*:(P %[?&uQ*ZVN8A2]KYG%3:s24*^PCjqeqAkchupOl4_?@.X_:'cHV*od^?XMB#%X)h(*?(L\++J1L9!]hh--;A+8`S!1a2J_?'%R92q %/JKX/5NrNS9T.q,/*(ji!@X4BBfQ2=J/!Quk-UEdP(AfD[2,Gb"=MH//_j52:7BaW$GH]JcS(l]YOD.J4`?tlGkR%ros9RKT:LK1 %/>$0mp+uZ[1B!G)q8BRG?N9ris,fbLbE"8"+"E,$'F_)qL1N"k04)Emq"E=#chbbF[c%2?rbqi8k.mtRWDEJ1J&km`jm6VE5PqAY %HJjbG0+[)rk`[IUdQLB\,c)t#8SScB_?B-%jcH:rBUQ^?BmK/^$5960dih>*j]e'^cY%\l=PcfHr,Uq74+j$g5BGC41[l0H: %/[?F\cS_'=hbn2(;k<8<-A:G3hOEkkmN.P#kOd2JA3NY,=@-O^,>!`Sq)kdf%Kl<67pfn:^=;CX-pfo@H=`(eq.=hs&'S6"YcJtc %jmm!1lPALN3_d6"?,F+!=YWecj79cbZtgni/KIn@p8GV)H5q40:M%CIrBh^@3VH<@m,],r7I %Y9JkDW*G+q:82b;[kK4;l5&5HDcpPS_;#llDoDd%"Qb>i[0XpABeQAM3N"hj-s+.VQs:/EN6,jAQOo<5Q50.UgsXe/,i9pf77Bc( %U'-E=BLj`t-Es+qjO08j#g$;LClJlIH!=q9:."M4cdqUtPLkD2#;J6Ur%TVOp=+`c3MhmK:ql'k:4r,g-C,4.D[XR&Fl9[83ns-B)P&cX)A(0>#6Zm8u+?_p$6V)e]eqiPW2jj.DfJtEgE+bLnhqY>;/fT9mW;irAFl.ind6;M350p %c$#Sa!S[@72Es[Z;P&'h/U_]TeLeC%WY.m]X&U]SejrtTXh=On>9kf&2pFLKQ2oA(%Z@-Z"kMC['rtPsSM,ns3B;bTFR(q[n\EdD %l"!/hN2>Y0LG>M,.cn$`(hKtZ5^SrH/=gTU*_X\)Fc<+b"5Qn:UcJ%#O`]nrM=DT2kuP:Hq]$ACb;+=G6mLqsDEJpal1SAR/8irr %pSC(J:jUOY\VJ-:9$>2hN#E/%V7b=;TsS&d);XYQZjCs\TsKF#HHe2?7m^p42N+c6TsW>6/Y1X0D69*F9.r'jUP13]QI[*4BC(Pp %daEN$Y@D$Lh1ea0H9emc>n*VHI4p$C:g3bXlK`+3h$Is28#c;I0+5;Vj"Oe50=&[,s*/Q9##;PrLlQ2#SU,=eT*Y,QJADV\Ob*0oc$B!AaV6h%&m:b@G4&$![D#[.`-Ab*Mt<&n&k]027Ajr@4K;$;CYD;Dbna;8Q.WT)bu`CM\[p* %9',uS3-hZOlRigHMb`KYN`'`1L/pgDqV!o&6)jRLh+=UeDOUloWij&':/^bm4%Ro@/nkq!\gXGosP8GeQ6&ma/HT$;g"&a3d*-4;6=#6a/H^G>of[iXJ^WDEZ/^c:/R5D(T44cg.NJ@Wj]>j:GKEl %kesDV\l)%W9#E2Td8n])5Y0;`kG;*6fe=Qm$Lc[l.clmbLaH@X6<)+9=bEY0[lcD[+"lL\Q*Pg7JMB"?(e9=\)JNiOKWCKd9>[Y[ %=XsfVB&oHe_F^<4T<3b[D:ufp.Eq*?n4d/#'C$EO^k?\u1*rU;:^fD.:Z=\iJK_d+4?3J2S!Y[AftI$5>O0Cut< %;7)O8&;TuX>-+QaDqabS*r)UldkXF12!nAEMZZ]gm9KAdE72[?fq!*3X%>9&)k*=:>%aHqU4h"didar3c.bKCqoFT[K_%u,!9)H( %"p"hbe:V"A,b.hJGRVG\H*LUT#cCj:=pDj#OM0@:>h,t#aT*lN'8Lk<4.J*%lB4U8$9@da/Z-no,3@(l%QVq7PMJA:Ep?;94X&C^ %Z,J.n0R8YBPHqoX%a(c&]p=4iWcD;K<6D1%?E-q!h/Wng*-6-_TVl6ocWT\+'4`71qME)&7W[B.Y6dBpB^3p2AqV+CdP7+3c2ER'E<4X4bVcA>e2/-0_:M5H9jabH0IHZdk#&]-*ZEPnkW+l(fqK)b;@%18OP[AU(&H5@s"$K`,]3U,$dT6n/<0tWjL'8L_$`cP5:=0#9JM(b@! %K21gfD9Q&2_R5>'8LL8+1A>UmaQ+ot@40ml!LT!EhK7I5k[\_2`W#5d0MS*[;^\l6Y!'OjJ5569et0%%V7ggc!F:&WD&r4JZ*_!: %kGr>DgF.T'/n#_UJkj?eHGZ]D\L4In522'uPHNH$W@+c9p*ln73k6MW)G)=5khK*;hZcZ=A1$]2ZKc40$=orrALtSNd\WP?OE=B# %Hci?A;gQTd>5H=NFs>P;B<6D6ND[hYBcno]GB-FsdU%:?RWk5E:X3[db@APlD:>e%BerZB92A]sHn%T+;c[Vlf`hQnF@qk4kH#Pb %q]k=3c:/6WFBYiRK2,9#E_\Q_HHrPPWTU?tG,H-:CXsrElbL&a#m00mZ7I#`e$mB+&Ta>'$d?^3C0Pi)aV]@FhqZTI:9Yks0IP`K %Z?FI6]3A>(R$/"oG>Z95AF>.]:Gn!O %.Fq6SH$c[SN]H?a@lPh;mVZNk7_.1YVN_`cHbn>Z.@4ZX^Q`a_p$0d'QkN%QgW0\.-,7n&:5QN_QK[V$bIAm]F'7B;hOJY]&l/ek %KQF8so6_eGZ8Aa246K"'f"j4_/i*Y;SBDm\!Tu5e(iW5eC:h:,3N:JQ.,^Utflc^-F&L;.(Q=k?PC%Gtq)6#K.9lCcbiqdp`)W/> %gN1?cW0)+('f&i>D^@F*<'fEb^c=E;P=8'c3PCs]m>Y.?WJp:a841P>,f:UI9?]uFZU)ls3IHW30df]3@Pu&.CHU/,fh4nAt>9m7*a'T85X>$b*oFOkZ"+[5g_kF7^f6N#!+2E$bQUa %+u/-6$O>M3EE[lfjQCCERB&G7/S!omrcDInk%^''G0jq`NL?hb[jS>YD;1_aJkj!u)n:%;8Y)"dTMnoSpU>0Sf91i3%QZW0P^;=M %gJhhkSS5-:*tq^U?h`QQS(eZKATlFW>q>L^,3_M4c'I-7l"5;C*_ALL_2sZ8hcWjJo[LiNDSXRmr3(>9<[E!>lS9sC554sFd;6JC)'3?XOF*>c!Gtm<\&5p!5T"+VT %J2o&SbF#g)93W1-/R+RH'LtHej`O+![Arl;Q$,,QVcNXX-E_A5bMEn6]pqP@-(VE)C2Z['l(fW-V'iFP1>"mj%BTWW^rD0Z+ulo2-%+q22++Y %:27(?_,\HHSU:sh8^YN]ST/+!YGJu;+m$9.R4;)eFe#ETI^X)m&Z:Mq%JhO5Zoj>SjK'QVmcui<70Hl#?HG0H[#JFM\0Rh%Ge]]'CNU'!P]dqK*Ht*mA]F,uN$8c74G>L=f33f?+P0j1>joL,*M9XeND7brekA,pj]7EJYnk?sI.B"3-2Y4Bm:"OAk%_la'TS %jAou7a@SDND(7kIlDCQ,mBbl'jkU@XeJh+cW3nK4SRMYEd2$q8'$O^]kr2+MI+VSG0!5gg$S_?LKp"g %n19"!8g81>3Gj*63*etAk@QM][+WN>HL@/9jXKA4\r*lcC2Y:EjqK@^T<=o"99pT>g/BPdt)n\"'[d` %jlsa+(&bM]FU7/PA2>%bS:&7'!_)(sVI1J`>XC>3BKBBQ&d?LpG&,k3Gf\5P6o:&V4gXrS>Z-OKG`A-h"+Q$[)liIh1S?_&ToFiFk4[qoVH`^:&U%YBAJ4OkTK2%N6_\2N-,G: %NKJ?5552]ibGj[,.:L:RZ;,f5XllhGA?VtUf!TOhlGu$^S?/^QXhG7M:1k?'W0,O&B)_D`J`k_--Tl4ZdciMCD8>@hn=fm'#D)Au3R:DIuR4g151j.P/fXZ0NR5pp2GfD^NjArcB]3rS^1 %eDG4FeC4sh6.(A0P+ZT5Qp[a@g[mXoreBa9GPcF'3VPf@kZe?9l#]C<_8sG2FHFR)eNp325ZSb5c^qe\$PIHW1<=@Ot3#aGr;P*3u=L_BD#.<]uYC%l+RH_$BKR46/7=Z%EQBN7bg!M;Lhi+GBNG %*JBM_`"#+iO4\Fk*3k,.1(;im&JCg#)Bh:V#9tLSfg,o60foXa5%Y$CA/MY*&E9Z?KFj48+G:/#*eY)cnmI,qPQrEY_N..li9*E4 %l/tB(`1ID\jIZc&;]iJi+!^o,ZE#lF!@`_aJ1cOD"M,=7#eCa;$G$smK#,3rU]"7mY@W?nkM0-D^HN9L0uW#_UkZuSoWnQ1ea=d_(T5dm!+&1ONa %]/!:G;tUp`.of&L<`M&E6`)6qe3*>g<>hdTk%/!:$W#.PIR&JU<8:^kbYJWb(s:2TfnYQSaA<_=%8u:do!W8kT2cXc9=0_3q&O(1LC&%Oq3G!DG7/@XHFAYN'Dos"9=@\VgSN/^B0d=X3L0UZEPg_c/B1@,N+7c`fONS1ZeSWRXgW#?nl$uBaJ=f"Ba %lbA!+18#?,Lnb[0Lnb[4aFI/Z,E>Z8,E>ZH,6LTtNAsSiNAsSiNC9(!)f_O>2W?iQ2DXb9g5,>7g5,>7g;q'.BHtf$BHn!dBHmUU %ToD$.ToBV^YXShi_A[Ee_AXRo(K_moW!f[=!d0nm/X,#cm5qHP;&<=Z,jHT)#][Gk)MpFZi/J;G$bR)2FFc@`EOrq)+\ijF7S(u3 %hFOI,!cJ2u>tc1\9UFaGJ)i:hTT'M[$a^M_FFc=_@Ce`#+A1:qFF\+\EPQ,8$a[Zk9$S %JMoiZ/uFUrOtP*N5gfhe#YDVC)MokJ@#Y_o$_^=[_AX:gC=\3)'\\A,'\^Vn;U\)TUsMTJr-Hm_#*;.j+\6%$3(V:4))qt=`&S0? %`&S0?jHQFh7O$sXNKA2Q7S#Os,E[!\7n>X=8'![$,EZtb7u0.9,=EO-OaoEk,=EO%&Maj]844HJ&L*8##SBRL,U/96#SBRLKSY7A %&d_'NKS4t=!l2VlM0sq96G1\c+l6mm7(gne+l6mm&8sBq,2R!n&8sBq83!%_O`5D483"1*,TPX&83"1*,TPPs&I3M*&ruAc#Y0#j %Lk@`$#tK,kKVLRp_GM>1KVS6,_GM6O-"Ol7n>_q,E[/V7n>`*,D7*1OU+&6,D7*1&]0S) %8;&#V&\sG##\ceU,gq_H#\ceUKX@L;E_8FY,E[0A7n>`<,GZ=`P"7YA,buFq'%2dM8Yd@I'%2dM$#)nb,g_PY$#)n`KX@L@&nsji %KX@L@6J>9[M6s$E6J>9[+ml4i7+tK]+ml4iJ9Eb?,40'*OEN&6fP>&6ScFe%LHPKKu@C)Kk,]S'G@;a'G@*Bb%0NZLc&*Bb%@NZJL07unq$NZJL/ %7u`2'UIGl!7u`2'UIIT$;'Uq!UB3d5;'R7MW0'L!;'R7M_D[X$cq#AGTTObHZq*_K=sT5Pe4<+kC*Y&F23Q$AC*[1-/.tGn/48N[>'@8!AV1UIc)4 %8!AV5UIdf+d3ORUK1SD^d3Kn%BTbd9d3Tt&k`QL#F@d\Ck`QL#F@ca"\g.l2F@cHoW[*6<)SI.S3#K2%ZLB.LAsB %PpE)a.LArg[\9Xp8eP8sPm"=d8OD(W,`/b#8j_0-,pDWRP!mr",m!@GP)siD8L!P8P)si@8I.DH,S>2V8I.DV,\.oqP/o\a,\.oq %'!dNI8Rri@&tk73#uO3V,bg;G#uO3VKW(Y;Ef)oX,S>0@8VfF=,Xe3F,S>-_8I.BB,Qo-8P/oZ[,ifqn&os!r8`1S1&n6k^#r+r@ %,[ucp#rtMHKUef4&iiIQKUef46I&FUM4C>96I&FU!U"-[7*a1,+m3O&OE7d#,3NX'OE7WtLcO07&Tbqs"j;`$"a>s)Bj;`R\ %EfN=Tj;`O[@ZEVY0h7i]@ZEVY0Lq[eR%mCh0h7dfS>/hGc;>sGTVDi\cqu/6kbs\5cqu/6ke]4lFOWl+kbs[FFL4UF3nbhkFOWkf %3pIsn*HdMN3pIsj*GlF@N]'H3*GlF@N]%288"1ceN]%288"G=3UJ;G!8"G=3UJ=/*;(%4!UJ:mAd3^%&BTkj8d3^%&BTnO#Zq4"q %8"Cp2N]mbP8"YI9UJMS;8"kUCUJaG4d4'p^UJjM7d4$7,k`c5*5q*uFW0@j;<(\A&W0@j;<(_s..O>[N<(_s..OE"RQ'-qb.OE"R %PnN#87S1N=N=t627L=')UEniZ7L=&>UP-.P;%dk=UP-.P;<#*<;)7&>:5S"KE\\U%i04Y[K2^dBK2^dBS,/Tjc9"!3j;jHtk8feM %JTjp_S9Ie%S9N)q5WeG-K/i=mPW8-)PRP3W;W>@TgG%KP;DR/?8dTKM7Z#SHH.p\\#Go@Q#Go@Q#Gkt(*L%2`N^a=h8#%?X%Rpb5 %8#(aAUJVY48#(aAUJaG2;(7@+UJaG2;(3[TW0B^&;(2P4BTs'O1eJtY@$Haq1ePhM)C;;_F/:/!cCGTrcCGU-cD?]F4-rPF4P*1r %4SMGlo%Y`=o@ti>o\:r'e8qaFgiKTNi,c"GP)icQalch6dH=\)A=mW`KV*$+U`["-83b]uLd0K`^d#;#+ol>BGe=9^`8a!_,t#!4D6%Y %#Tf3A+2NS1iZi]p8qmp?BI,iof=,05GgK';+ZsEa*5dD/ia[5;8qo&_BI,is#Hbqbn=Z$T@sH?mR+B,(nRrG6aUmjU.e.0_BpB6[Y*G*!Y*DBX\lM-%;C`mm>q:aCFKGZ[UfB_g\lB@tkZ/!UkZ/!]kZ5eS$NE8(,r-Q/-A4dh7-`q$<@[qTrF@\!2"`No.h_1aIL1S"rF@fXT,OonZVlKqs&,bjQ0i)G %iKQlYb'k2mPdELMY"1Mu2N=P_Tq>"BaEd\M5FI%p+uGgQ^C^fFM6*rB %re5eVX_6WpE'Pl2e/p.dZHf'<(])8Fnt);Q"/SD_!oZd(F_ZQqkaqVeqT76DM4t*:&tMe&oe5qfa8r9)86H?,>mEuYStr[%;^*U: %^)]V,&in9Yl*-$p,uV4UrG=p"q?[`-U6tY5q`BkeGVaTfbrt5st!ksO^PnKM(,kL`CESG^H*2`3s#+37TEL=Tj %EL9'@).3fF`*j"HKJ96!&n">(">HZI6CLe"M);&(ih++?3XJYUSKsqo3XJYUSV/Df:(gDrSV/DF:/^q$Z`$V38P5P,,_]"qOA[H_ %+Jhh"OA[GL8?%e@OAZ9+8>26/UX2RV7]DR_UL=Q*/1n8$,"?:1&>R`HLf*F_&YmiILf*F_`$f_j85\XtUaUX(;Ns@:`$g$H@$E^/ %@h^uGJ5OceS>+A%S>++ie@SZ/F:s?WF:s?WFHQ[!cq,4On4=Uok*&2f676c-676c-674d)BZ9%e8@T"t"GEh[8P$>uRj8WL_BpGb %bU+LjBTiS55pdc3.$G3\PY!(UBTiF7PY&qTanZ-+/kMiX>nYSfRS,uWHJsrf`VPY,c"Xu8eUAhTotLTFm0J"4,&K0SSiT?Y>qe8Zd5VY2[`;*M0,dp8OteO,et?uP"7O3,buAZ %'%2ah8Yd:_&CQOf$1UKM,k?pE$2G@F_0:-^m@*X+-40K;Q%XO[8eUq(Q%XCW8j^0f-&I#M:eAa;$C?EnX)LWSh^VkDn?##'+l=bK %P/t*>Q%X[g:e:r&$C)k'!=PIM1hp+8P$@+/dVP[iK=>\'!>^/eg]RVP!m/a,lut8L!,,P)sW> %8]Wl[,_9qL8I.>6,_R.+OpF(:,_-k'&jhU&8Y@%d&lO`2#q8B*,Z9XD#q8A6OE0ta,3J*O&9IJ7a>o,'&Te^Y832VR,TT=:5WX-8 %!$*p0JrUa@"mu\j;^#iEfM&0j;^#iEfM%E3Cf&SJrU`U5t?t=TVFsh8I(6.TVFtCcqu$ETVDQTcqu#2kbsV3 %cqu#2ke]5YlcNt)7*s=*+m>ke&9QDm,3YtfOEAuC831K2O`])D832&B,TT%2832&B+<<3_CYC*@)8LNY4n`*?>cSNXCW,%LUuHsO>uHsO:7e76K4Yj6UK-c+W3NMKu?OfKu?OfKk);HoFE;i'G;c6'U"#h:e7*uI2a\9O*MaE=39T4]OE5M7,3S0OJ9+[\a>k^qO`OJma>k^q"/FAJoaaZ#0oLX+m7&lEQl6A)));J`%_LL`%_LL,[q5bM.7"sM.7"saacAg,fCZ*'#tspP))-n,E=eU8"=Vh7g@,P+*#H>+*#H> %*uQI3J&Ec@J&Ee&>[iZLoUlk_ST594*-3Hg7*<=f+m!;`Qr8t@8>I6u&Q4Yc#Veht,[uf1#VehtKUAMu&iiI1KUef$6I&FMM4C>) %6I*t#!U$DB7*\XO+m5ebOE8oA,3PnROE8oAa>rN1O`T#BaLSO7'r&aS%[_l36HW.I+m#Y`7*8@K+m#Y`OE/i@,3PncOE9n]*-:U> %#0an*+m-jM@Li7UJ2ug7!mRRI$h%>7!mKc*KG9hd#mKc*KGD)Wa4;'qMH%_ic4@7Cl %*XSX;3s*i-*?j[GN^V;]*?jXFNY$;37j@/qNY$;37gM/U,8##s7gM/U,6T%;OU+"J,6T%C&V,o,8-Bs_&TWos#WW-4,[uef#;J_k %KUAMq&hun!KUKUAMr6Hmgt$(.JK6Hi:I+m,_`S77ND8AlLu&R^X]#VfuS8;%u-&OMN?#U'Fo,VY8<#T6-PKT)Zc&fCpq"Gig4 %6Gu_@$&G?86H7Cl+lhdG7)mUn+lhdGOE'n^,3.mHOE'n^a>f&%O`;(*a>f&%A/rRN^c6Wb?lZNc,*(AJ6l`TH161&o)+SNh161&o %)+SOsN2&9D)$b#3Lncjp`).J1Lncjp`6fM)ii%i)`).Hsj/@s!ER[H%jJ[G;En!Pa3GKcNEn!Pa\Zh&.HA>TI&TY6J#WZWEKH.C^ %#WZWEKH.B36B9bjKH.B36B9n.+\-Gr68%pS;Logq&Q4YC8>I65&Q4YC#Vehd,[uef#VehdKUAMm&humnKUeer6I*st$(RbK6I&FI %+m5e`S8sYD8E:bu&TEc]#WYCj,a+2=#Y@O%KVYA#&l;)4KW(Y&6I\jNM5Z%a!n:'c+mLJ8"Otg:+mS9M&9W(a,3nBN&9W(aLcRRA %&Tr1bLcRRA6li+dLcS-Q6li*9U5mYm5TQC-TFT*M;+G1CU5mA%;+G39;$UZC5TQ($8);[_XJgb,18#-"LpIT6LpM!aDcA^^TStkr %i/Eb?:dtZ?5oF[n5oF[n5oCPB#Mm:##A(hV#A%FR*L%.K?/NY:E^r0Y;*nd2;.n%-P:lN=`CU;G`(:2F`(:2FA0;nW&X&1"#Y@O! %,a&Y_#XCmkKV5(q&j]$!KV5(q6I8RIM4gV!6I8RI+m>k`7*ndK+mA-K&9N"`!pH;9OE4Aja>k^pVjqg>,_F=,&Wk:t&YdR1OiTRB %7L2(77S#U"7KW!_(a8?Q(a8BR(l?1P@g("s@>*!K@3e[1^'L_$^'M",^.@=Vq]Z08q][:-I?@&apI0m%pI3.e(IfVH.#`D@#@YR2 %4:!/dc@[de33SOj!^5`k6_FZi`04?Q76Hoj/i)LnVMf[K$XL\L=m.%s.VlVOBpSFUFV42*\d8,p\jusslQRSsI1[+=I?B%Ff0os2f0r4rf0rFhq!V)s8SSJ>[Rc;roW(BZMbH1$ %d;9K.J+<@HClrnkC?i)q/*[qm5SfL:CA'O/((kM^e8:>iVV\p:da5J!m'_^H56kI^k.eh":gIV;)>/B6C2_2Y/.q_&;P%\G]_WhS %][b,J977Ct#;2Le+d8,Nbr>N#"P#s5c*ol8??MA]NI.7&(QgZ.(Ah\IeOB%Png+fI8(g>#T=cnmPjGu;Pi^^l%=[8o[(9D-%:MZ] %eWsn`'LnlL'=Y6(hN4NCZA/c3;HA,G_MGq<%O2"gLfA4iEaM5k_NTe2^5*b'V31gc7#lMp`I/>$7RhgiMobLR]-"&28C\&-6?Ef" %M2UUClAK2sH,2Q,Mo`4'lKl6@>]P5*M#&;u[0^3\`qq+8m.<^nGs?*3_MI")]?"EtL]mD'Qdsr& %c^V,5+6+bh'j"7>7,B6FkO+8L)g:Q(I1b_2Rt&nDq'&D-]BAU?ZnjA/KHR*E&j],sKHR*E6BKV3M'/Y^6'/r"+\1LL %7#\]1!fX]D!fX]E&hrUf#VbP\#VbP\8B7\+,/C/S,/>UTO[)e<76j`E76j`E705s7(BI!2(a2?tN'rUk(]d(iMia\*73Y1ZM\)WT %70lce+q^RA70lce,(q@lOYk-g-B+%['Lp/?$6oX?>o2aYF'Ad#F'Z]ikI*o(SD,5W363<%S'*",DmVr`2n)5+2n)3WhV8kIhHUit %hl)G9][7N=hWTk/DtHIBhWTk/DtHJK2s;HJDU_*G2s;H=)g%4`2Wu>Q)g)aeNOhYK)grE7ULgj %UG"sFd2.X]UG"sFq.FgODt$0sh5H6nDU_+22u"SZDY-@g2u4_o)h!i>2nC'+)gr=XNP7sES,4DfS,4DfRgUHlD_@!!D_@!!D_?uj %^_($Zu4\3aCF&?a@q0u=[J,%+ZL/.re$BSuk2Ksh70=(mKpa;*DQJ6\d#!lu,A,(Xb<^'H/hi/<\;"hmO' %>_+Opb5'OLUKi@&&i!I\M\'q5\d1;tTSl4b($Hhe?%FUpdM:siO`\Qi&V@0e*F`a"fWECfFjQE(@kQ&8:go$M.jg2Xc5$*ujBR6h %6I$>@,*?pM^'H`#i/<\
    FjX769\g('3Z)(GX@K/J:V;[YU'kAJ($LAW]5=[m`PC[m`PC[m^A_g_KqT>SdG*>Sd^BUG"s^d2*tjk_hjW %d2*tjk_jt5e3tSGW/HaZe3unhl6;@4e3unhkTU-MFccqjqB@1*Kb5[QKTUh-PK.%;4Xs3[Je#Xg,TV7E-f*iS2U\!H14TkKLk?2O %Lk?2O8-BrT&I0=u&I0>(OTBRn7@\Jh7@\Jh70_2Vol/?q(NIm>(E#b6?\G5M01+)a(l>&`0LF2b(a8-A:KVd)*:lTi3r1$GSbXIl %F7_oB3VjrXSGOL]F7+s:F"WE%F"WCScFGW9m[<[KnTX?%eT?/eTlD?c4[3^5,\t^;rQ"p``Hnp`cLRFHM,pcpaIFcpaIF %ahJ'-I\hZl:3OcG(NIZe/i$65^5,^*mK=3G;&G.SUG,$W;&CJ=.#\;Qd2*tgk_g!noL0tek_kODoL6h]qBCK3e4%G=l6>:/I?DT2 %qBFu?I1^L[^.@<)>n:t9^'H_h?R0[;I1^GDI1^FY_FVH^Kb7/,Kb7/,Koo+jpI.>-pI.>-pI,/Hg_U"Sk_g!noL0tdk_g!nj=N)V %@3fr^e3sX(l66?OI?=drp`ec=I1^K0^.?0^>n:D)^'HG`?R0++I1]l4 %I1]l4Kos/2(IeBc(IeBc(IgILg_U"Tg_U"Tg_U9iF'f'CF'f'GF'g2Sc@$:dNku&ekJBaiSI6YH3r1&YSGOL]F7+s:F7+s:F7+qh %cI!F/k1gaRk1gaZQuc[=Quc[=Quc\H^ms^7*HQ+V!-><$)!54a"N\,*@ZYY6"H]B0&fBf?#T2a5#T2a5873ES&KoAA&KoAAOaoFf %,%M[A&MfB\87W]g&MfB\#T-';,VkCk#T6-+lau0ODtt(!orL&OE'n]a>j#? %O`BkZLcG5T6l^W;J2lg<6l^=],*'B.6l^Ue160'S)+S$Z6B82R+\,mmOJ=HA+m6QF+QpHE+QpU4J=HulJ=HulJ=Hul*HLS+!-7Lc %!-7Lc"N\,,!m%o*!m%o*&g3P;-VZ#M>SmM'>Smd3F(*!8kIq3UkIsL&SGOMGSGOMGSGOK2F7+s:F7+s:F7+qhcFGV1cFGV1cFGVa %E6`Tgc8i@&^cC"8N,rlp"Oah4@\e'J"Jg*A,bWG"&YREd&YREdOaoLH,!_^b,!_^b+ouiY7>O#$,"*H"Obc'p,"*H"&YP/q844J@ %&Yb;s#Z4)t,bg=1#Z4)tKW(Xu&lD/+KW'MW6I\jLM5[1'6I\jLER[8kM5Z%[ii&=db(_tP+p7,gM`C%\M`C%"r^OlfX/IZ1XFi.b %XFi/]YR\C'ZOX^*ZOX^j^cJtHc8t_Ec8t_E"7,0/OEL1aa>sSO&TndWLcPed,[K^2b2*Y@b<9cd?\G5M0+piH?Nd0G?Nd0G?R1_n %^'I!e_?`Ei_FOZt$R5j:pI,'CpI,/Ig_U"Tg_U"Tg_U9iF'f'CF'f'CF'g2CNku&]kJ@KakJGA-hfMN-I*n_MIB\&4U+]CVGV&ZLC:FQ%^kHUpB-@GU+#RKY.#RK(2Oat5"Mu\H8(]afP0_1F6PQ03V&K)l24"0qL;O>to^5.`T %b,TDEWD$],MtmDHH[,=-:p/+`_8o389fAKb8TsU$fm,6%tHShU$4M %A@ArU>SrlGn."]N0J^+#2:Y-L&K-n+QYqai=;n6-0d86h^3=(_2-f`g9Gg>K?f>C83oeYBOi]YC$R;di[l]_+^D'-aq_fi0,BAQU %VpU3\ael%I'tY\bQ:AJ?1>/I$(IfbKNZVP^`lKEh2qMr+8;F4Q)^EeqkqUO%8c!""/r[jj8__[IO]E5elRF_\jdXSB>dXS %Bk0IXU_-*GX:[rOXHA(1YXY.ZYXY.ZYXTg0+cSHX9cA#C65g_d8nir@V)1N1;AtBSV)1N1;Ap]TBoPNRdMa9*BoN+kPXZin.?+n; %PX[!lcd.YWFJ-3%!hd+]!i!7_&r>i$#`*6D#]T(W8AM3/,J^9_,J^9_,6=][N>PD>NI[lYN6CBQ>6 %CF$^FXV&@5ed,AMCF#R;ed,+k[\,dUejr1XXV%4jdKi]BBdBF;ed,,FCP4*i2%iJQCBPoZ1d[@')Mol=1d[F))KD!.)Au@ddYO)$ %eqfM(f#U*SZUPq1YXTV.YXShY_AXRg+cSHP9c=m/$>IF=$>IF=$>JRcUXVaWjlh\cEqDgl3Jo&DEYM#73AX1H31;(SEA0n=31;'[ %*6jUr3/SqK*5rLF%cU#IS;SUWS;SUWS;STmEA!7OEA!7OEAU/eiS5CRiFn5gi$aTg^/5jNhHV%gHof$!,6;^8NW %D(+FXN^Un7*!,(JNf\5p7j?u$NY$1e7u0-n,EZt&8&.*A,@he5OiTM>,@he5&MfC+87W^Z&OMN?#U)]Z,XROR#Ur8bKTr5l&h-=l %"I+Nu6HE"DM3Obp6HW.F+lt,4S5PC48>I6]&Q4YW#Ur8h,Z9Zn#Ur8jKUef#&iiI/KV5)'6I=+$$)"%U6I8RN+m:>87+/V.1Acho %RliJ'k:`;e&kM3V#Y=.L#Y=.P83ia#,=%gS,K;d27fr$^*WbY5*WbY5*XT3K49F0G49F0G4;)&bnd&Xdo#Tm!dA?D)@%H$s@%H$s %@%H$sJTYjk)!bEJ!UEu3$*\Jt"L)ro"L)ro,g_SF#[lih8EugW[9*q)Y]G-oY]G-oY]G.:^lJ*o@2H@\niuK'#Wp`bJ0!_`_N+1X %KH9FldZ4#,Bh*LqdZ4#,BLd?$[%f_rBh*H%[%f`Mg//oJ[%f`Mg;+gRltDGJf[1``ltDFkG-ja`ltDF[G*GKf43Ae1G*GKf43AeD %*T`D^g//rK[%fiPg,bU\9,buFaP"7YA,buF`'#KY18Yd@9'%1[_>i+CmD^Vca5m#\9+3_CYC %*@6ljkP"@Y%-q.B+mEU:R$,`@P!D'p81%.,9d6!Q<5^&FJ@_9LlmV-S/J=^/dio+"bHsg!FdWjK=I1J!"P.-f,[d0I,[d0I,_:)U %OaqRlOaqRlOTa7G70;&N70;&N71r]mMhJ/>gTWtiZUc;*@$,t]PXn>+8gKO@Zq*_K=sP@6/X"2d%#Y7iK1+^tK1%Jf%MFVnNm&g7 %+H[)2K1+^tK14duK1.Pg%Mjnr%Mjnr%Mm0:3`mXq*@)7f*@-f!Fc].aFc].aFie^dJT]I5,4"HTOEL1d#Wmnh&U"j[#WnJ#KH3dM %#WnJ#KH3c"_N#s7J/q&k_N#fH@7QG*_N#fH=Q^k7@-8_*J=VTDJ=VTDJ=W/T!Hr@D!-W7C)!kKQ$*\K5"L)s0AFfQp-B\Mc\OZeU %\OZeU\O[?H8!*qYF--U0F-.``c:nqec:nqec:sH%4#]_>FtSpXFtSp\fXXQTfXXQTfXXQd?q6C`XE0R.XJ8?";!0/3;!0/3;!0/s %5TNQ3U+U7L;+HfqZAp7*,UkS3QNJa*+]alN\X2E %SBE29SBE29SBE1/F"WZ,F"WZ,F)I0EcFHXNcFHYYS9()DE6`#-E6`$Xa_1C<9G0>J1'op1R08muR3Z1cAJ/t-AJ/t-AWjhh[n4@q %[n4@q[n-YaBTj:q>UBL6>UBcEF.3<"F.3<"F.4F_c>=25c>=25c>A^E3k%Z\3k%Z\3k%Z^k\-.kFC?*q3nbhkFL4U>3m&]N*G(B> %3nbh^*GlF@N]'H3*GlF>N\Uo,8!tWSN\Uo,8"#%+UJ):l8"#%+UJ4))d3a^KUJ4))d3^%%BTkj6d3\n[.$Ka8PY!(b.$Ka8PY&qW %as3u:L9cLZff&od##$#iD."LrNH,iHt%'&_&h'&np<8]2X/'&mfoA6.L5.#GI/;$,TO-mA&Vrn`A#N^a># %8#(aMUJVYL8#(aMUJXA7d3sjaUJXA7d3p1,BTtpA_'j<[okbQ7bU=?J#GZs^1SMa$QTT-L[):C&V]C^/V]C_ZJT`_>5W]UNaE+D8b]Bhm.Nnn.Q&pQ7Psbnh<<)A34m@.<+1=.qsrXc,@QMInGlQ.$X=Xq./6j?,V %4P=7j[7XW5Q9I<8XV)McOfK"n6q;.glrJt%goSI*7'2V4Ri4VoUm5.b^UdH$kE@QFYW>B2\uq!nk4d'M@M()'=PF*CQa2!22dj[TuWe8n8h0*GC]$5h4kka,GQuKe88s3Iu9+sMa>i>OZ$:-iif)K[o?Z_Lo?M.X4=Cn %_9?C0*mB$Qd7L.qms/oD7/GAI7ZH[YdO.[H>uW26OiTYemZYjMM8_TQ@Scm)7iN3M %BYu"pD-/&(D-/'V%>t@raWft[_]jYJZ:Ftb1m6-ABd@'qNVOXtF'6s)f!!G_rd*GYp+?k%YiZ6>;p2?XZ6L-X2/L-Pgn %0M"Hu%$F@D$kgX95pE[-+R*E(+G">7,`iIdUlc,\"1$mHJ2[=fc8PS4f[ecTMBHVoFLGV=^c(fsfS2TEK:_%?<;\!XIb2J=F3P:JL3P5r$%W)?kToF0:ToD;tBd5kQD59N/D$7qRN;tuGOUaCY %&Klif!p/o@)Wf=8TH)YkPX?DcU`A)ZV]=CrPX?C@EbH\gEbH[o%W)?kToCnO@?!N4X:Zk92:]C_7me[YPMC>NCJtkoq6F[YPMC>NCJtfcimjfchc5CloOmA;cgoZ:.GHfci)daVHViA;cgoZP0iq %=bf[DDTUJ/M\pH1Ma07i+qSW0oUaLF<5`&4JY>&4Ji(U'QQB'^:QD'S17k+tsL*Ub`KZ"NFl-LiJ4pST0H00Fgq_ %`Z^3r`o20X3'7ciLF:LfLF3/`=rYUl3R/H#A;NQ21_C"K-IN3U-3E/Q6m*J<87rp2#`Orp@`6A%Gp,qS#`+,@@s*YZ:*[n%1sN*E*7^plh%#`r7kpCRkF7@FLD>GR)U\ODrXKA7YD %"NW1#7"F&:9;FpmOX;9n/[@cpg`fCe6Z+>G"NE%!7"F&:9;Fpm_/0eF(0MhHDNQ6n+h,N*!HN\ua=Yh.3oh&j,!K%r#`r8dM(ER4 %7$Ln$Ld8L>Jk2fpZI.o'm`<$a+LalQl&]*pL]Fts2i7.Z=X8fFa=S#mJD;>9"NY#-FN@mH!'(H"5n62V6V`4=N'e/-E=tYXic$tE %*.A0L_[l!f_[ccfXc4e1P'0B/*-MUL6Os3GR%i\4(]LN*E*5FN,o/LOcm'IL(a6f %n-q+Jo*mDW^*/6H2oLg'2i/^9%5S."@>8m:@>9:kbRi_B0r3h=0a,36L;5adO9R\7%KM8#!oWQ73oKKo!*j<7MLVE:dK,+9K=iT[*\OM_;(EqgadEmd6]*'+@a6O3EtS99o'3U7eac8l5uZOYDDB,q-%=U0M"ej15>CkKMa %gE=;W2Fsa:FV+)g2@.+)%FU)g%0H'9K7H)=+J!ed6%GPD&?(?nd]$ju"ROeGJU>s63r%&fgqT$_ir5Kj&GgT+60R2`WauE2,06g; %-P=9!fFgJ4I[(30)S^$>!J[cj5s0O[#kAnJQ3cKtX%X(#dE)N::!q&cnJ%Nf&>nY:K"RuE,_C8u:;[r]kTkcP)*0btStV>QiYae& %+KlYDGp&]P)f9-5O0V#W;fo<14@^b.`,g%K5[JMRdQfob-On"8FOEE\F*,hq4FED!ing4gOB:mG*XKG@Bcuj"8H\586N[@:ej(@M %23b`oC"-J`;GJ!P0PNeK*;l4eu]S,dfOgorVY)-XgC?6OB_EN,Tt(q %V6\YCYJp"mH%YUCPX&[`';I3+O;P^QR7R]1L*j+`%5[YbB1j@%im2@eP!EKJ@DciA#njLFNKab_+,Q*n.L6[qqFJ>XE^F5@XFfMD %_mEVOaXN7Z$'Om*bA7h;cLgAjg'!7NF(6W>"Gm.^'Y;-aM1C9(ABYK#CZJ`@OuM*%6inU^@a>9=dYFA]KiF %UE*hcdZ(-I3`?bGQP>::h5Z4 %bb@U[$keW[4h65;5*@WOO%`M`OSQ&"8!6/I'RsT#8-[1uIbcqsK1$BQY`gt9b_3o*`:rG\mHdh#,\<)4k>VsrariF4ZAn-9.>(%T %H0896M91>Q3FpEbVh(emYf4R$'0!uTnaG]5+G7TIfT5'(K1%9%M:`s@n"WMNAGT9rD##_,K633t"YiR0JcJ]J+>8gK"TbDS5n$YZ %+>8mM"YiTFJs`?36!bh%$=]Nk$Y#RI"aSKp/r43k(W8.q$hC$k>S,@`/dOG%$M)'5<"S(h.Yr'o($('IW?B3[<"O#+$IWpO%g#K< %6Js:Z8EVEg#Wtg)"ILBd1mm9T!)n7V@#>KC@>YQs9]^oB;LFSO;LB$X.N\eX,(t'&,(tJEKFgt;&COF5cN-XLKKrEQ+W[?q+b8&o %#c'F'*MbY(9#qC8;F6=> %.3Z]E.3U@%apBdkjb0"qE^DrSLCjUJ0LE];KTOJ=KFfl@Hk6R=&(1b3+U#S(KE*ubO:F7'&-.It!o[[CFMM=X1L2nT\%LDSAFLDL$NgkH)i):AhH)$8bN6Qd@\80aYC&-.J&!oOVW3oLW;+<4hrKL614 %KL60!E0qd[%Psmo%PpM/6OX!8L`mdYL`nG^0a,K>L31EYL;5d*+Wq7LUb`K:"NFl)^c9Q"&&ocI1reL.^c8t<0b,e21Cc!)N5H!R %E`aKUEbHV(%P7h-TnRU4TnS"W]FZcP(Xb=!(BWdh6Jrhi8EUt!#b8d?&a.M-3p=pW!$,5KUdGOSW'^rDF_Dr&%P=K_:2U?96Oj-> %a<;RHa<@2d3<[i'%V_`V%=rW2+cm0mUlu9I"Oc7`5W[\^N]Pr,:kotklB"@olQh793ogiKLE+`>LY2^nYX:YrG">+DFpP$f)aYQo %84O\L#cPWO!Hn/\%<^kXYRWf!etIk@etIl73qNtcLE=lHLE6N_n3^S(IRn)lIY_)R4Ts9.LNM%>LO_GX&5\-'dSYc@!p\-"?laPa %B,uF,XMYR"Fnd+%X@!M4XMYO!Fk@jH*HF\`*HHsu;("`LW08Cq6CeMs %UJ?Q";("fnKfUY,At9VJZVHD!MfnSPbW7a.At9p(([L.f$,8Dm-Q%.[2,j-,\#?$,k<.M,S?58OpIjN %''Z2Z&qP.,,*3:-Ulu9]7&30_!HgpW*HamsTFONre00Zje00[!3[>;6-V:+t%SHrQ@>R61/]0T@>[<2[is2A($VBT.g"mQ7Go/g8E1\i#b46sJTIb6STLeSOA;g35po[n"ZiV,"s(VcFE0fVTT^l-kbO(QFAbP6TT^j7cq+s, %kbO*K5UTRMTT^j7cq+stO\W'88LITXUmjM@m\E2bBr&W\JTR8'662dk7ie=[:kpD"lL72&l4?BL*MNh<6PSd`6PKQDQm/15;l$0` %V?j!8'EN?D+rtfn,+oEE7&WHel)6r`!HftSHCd[K]ALM-6kN7N-j&ZF769b=7:7.I#cpB0l)^($!p\-$5TRF,6QNT@W5BAOFk@lY %Fk@n2%U0(c@>f6W@>fXsC_9L!0%*TE>m/TLMa0>f+rtd8*e4`-"OQ+cFO9!)!'7S4cs_lTdUA)b3fFYILG@4RLG/ep&4So*_FR0; %_?d)-(kHf8,Frr_,Hsq_#cPWXl);K:&aCX#5WXR\:-+%?8;Al#kn$.;6Ugn;.nH%ca=X.?iEm%fXA44KB&44FjMLH8ns8KI'"P*fm:;6EG10R!0^WD2R!(5T9KT3u0A8u<1$tcsR!)@t?F5pj %@G8gD1%"%^]P&[:`3c9KBNOoK$[/gG%(if8bduJ[QG%\j;NB#5fk\=@3lrU"ek$p6FiYf3%XFkVmM^5E[X%XS?,@?5etcLOLnS_Xl[B6QbJZT?NKB6?VPZT/*UClWVq=WN'<<_#EHeWJ-> %X!:HemKhIO44:Zp3s,0CNW;8T,Fs4*7mN^&&[;jhUpJD4#k5/]!r]3\FSqhm\?@9&`-jeJ,HnhQr"8\r#2?/a-\:@/fon\\+`.N2 %*mmS&kp'A311EL!J&DFmq'3'DD>>CtccR@"e=HN"f@6Ah&Pq6)+7[jO"HqBdSHKR$h.^uKbaem"f?BfP&'s%Q+S![H%$K5dSI?.W %gsH<^GB-5\;g37Q4Ei0.`,g-C8G_,4'GAaJ8KmWZSJ77=gmo,l%qqf$\>L^.jOM_C6K4T.*"r#6376d878)*Oq'c>,[et/#op<>nc?W-.M\,GN1lS*1=`,$*Kn5+g*Dh1hV_-P08X5>#uk+SdBbi/>9m-AL$KspO\@K` %EnMXnK_<%>Mk$;tKi8\Kqj2V5TTIq`6aLW18=hW,S0oh@j>iF%mkGN>k=kGJ6QpaS]m_FVG@i]a-mZ&#]H3i08;rpFC/Z3GLEu9UO@l8?fYl93G1#0@`3jnCH"c%*CUp05)'mVA?FF:(7)sL4L-[R2hL0lkl)*X6Kb]d7;69Xk86S#..jT*ZhYU,?-LK9C68Fh>W6^\p1ArCK %X:17@HH,h98>^9e.7#F)LZK?W8K=N%,+2s6r-Q!RFE+5Y9F=>r.1QY,`?>8X80f4O80i^"MZf,NO`ZaqO[)fI,UTKAP!Mtp,fXOI %,c7OTOr$ihOI2nC85)r2,VPTY+Yc]fO;Om987"9@6NU#ZO;Oln830LWO;OlN8AHYY8]N7a#romHJYs>1SYm;Mn2(Re@#@7u@>[AQ %9Mn?2.1/Y%.1-A8PsPOF;+N`@;+P)o'G=6"6IJ_g639bV83eU28Ok32#Uks)!_K5MFHE5Y!7K7]JJ8u;Ca!o %W>-%s'SW?&e-\cee-:ahC4i=5e-:apC4cYN@ZY\narl81-mWaGKqrch$4.P<+T\>d,TWX.,f1r6#oJpn1;++%1.\&d"pl!_+Sh\/ %'p?Qr4!\:**>1*P&kQT',n_q-(5W<0MkgppMaW*5+ouXb,R,4q$%PAdJT+LX3oEh*!#u=PJ3tLEJ3tI\E$ut3:(BkY)\.`"-A;T8 %8KheiP,eskA"MS<+FM=H1^c)r?pkD,`q6kW7Q/W_i$%S4+deSVa!oHgF!1Xadc8QFMpkD*: %hbZj)hp=UG)[Zn%6Qt]I6Qq#"UQ$H;$:uTb$42AQ+b=S\,`Qak,QaJN&cp8b8L'`?Os6D*&eWCn8L'`7&eWCnM$RaHU_1lVM%Fqm,0XJXJ2o.n %@h+1qbb:,K3>@Y%3><)cLI)(*:e3Y1:e9La$436?+mGZ;+VEp780Ao[8OFL&$*;#eJTVeTSTQ\Y5TL%8W5BbBW5B_YFVlBs:'O9; %*=<+K6Qq#&-mY@*-mXlaK`ohtOEB!GOFTA+&l=?MdTIrO"Os-,J3"C-N]QeC:kq@=l;1#4l;1#:h.WQ[LI0EdLI)(-:e3hl$;!UU %'b[ds$AhktKqu!!$;%MJ#)QGpK;>ct#)QGpK1)fI6./kJK1)e.+VF"@O>PHi+VF"@O9fu08/gcpO;-trOGJ$;8>__Fl!p`ZR?l]_KB,qJ= %=GK3ElVL+jlS(k;SI?--LI'?cLHu"-0M'DK)'gldaWN>(ariG(A<=H+-\]L?S"R&hl_KWT==8g@XE,=iSJ75'l_KW0F](cS]%KFdZOVZletJ2@\l)'[ktjo=3XcX`c3?ibSIH3oc3B+r %B7m"Bc3B+rB8&aPZU3):B8&aPZU,kc=WqLXZU.QgZU#eb@?=/9O6kBk3$26A,U/cgP#'N"OEAq0O?gCFd<^?RM55b6M$216OT7En %Oq'N(&jRh&`1W;_1-d4@`1W;\@aI[iH%A]tM*Y2MM)cr;jMa,.,j(U2&p$eXabt4\8Dp!P&p$eT8`uTP&p$ePM*Y2Iabt3q8BeUJ %L)&l*835of8DkHl$)#0Yl(CBe!H]_8J.@:/P7E9Ld\2af3Y[`P3YW2tLI)(,:e3Y3:e2]L$43Lq+mGdis+#2>,`iLiUlu:B"O`8f %MKD`e3pTX@?:IM'GIZ_n_8L'cH&s:HLM,7iAUnQ'HM,7iC7&[F\dSOS77&\!I!HhKi7NDgBW'_^/FXSLUF](aQ*=<+O6Qt]m %6QlJQ-mYGqLSU[TLIA'[)c%:8:e2Mi0M"GL"pq6G+R,uF+G"YP,d7c2UpEf#$)k`a!Hf5)*H`bUTFQYYe=htGe=htS3YW3'LI0Ed %LI)(-:e3hl$;!aY'G$q08Y[70$'`=MJT;SQST5Pm %:eh3$OM`4*OM`2lEYp&u%YLQU%YY&.To_N"'Tu3O.3q.gK`oJjOEAR;O8q9T&g2rrdNOB4!p*6LTH";1`uOp\QpW"tF!r:SF!r;A %DR<9.6Qt]]6QlJO-mW11Kqr/&$AgHLKg_<76IIQ#KqpD8K1)*56..H"K1)*55pFV-+DI@P5r)TQ.>:0_ZU3)*B8&aHZU,k_=WqLP %ZU.QcZU#e`fcY")ZU#e`fcUmkClj%+c3d,fSK/?*c45\%B8NFhc4Yt9B8]0ZZUN;MB8]0^_]f,)=T`@?:IN)'m!-K;?BpK*9h8O;N-r87&Na6=SSAE*9E/6Lo`!'GAki %$AiIUZ"26q-\]LGP.jQ=s:e2K+LI+lIZp>l?%YLQCE#9k;i%R^?_-rH'/b52,9.2'*eG]D=-s8;] %DKuO799`bOG%Z+c:MHt=+d=O?g3boSHp+4F:8AV$PpCII\uk(X/:'#CM5jMp':7H^T4EfQ\,;:j^`#\_s1Yu/( %gl]q#]NHbQiXq&O;0XDW@XDF.Xtu5Mab3PI`VaG9jH*:Qn!CQIF``d1>0;e4Ulm0$W`GI^]S#INPrsQ^l$\gAP"?/RLi(El=ss %k40e4m&E0GeOa5EiqBq5FC<7`V28/OYH)7sW(unVn:$n](,M76Vh\E\6pfZcMN]SGotHGB47`4$Wa;LNP'C^'cpVV?]Fjnkek>D+ %([36d@CIKhG/a$,glaOE0]+okU]#Hc`"Rf.ZDIr4fe$@Em?uk^8_0o+L0>2t""IB:C.V+YYIbmf<(kf`6*j/rT:%J!%(0V;WR25D %Q!''\G2/':eKr'aM+$gB-b]YbUsSr0+]l9%ED/JY\0XGL6Pf0@B"-ji4cen,%'Rs"m%==RTDeWP?iTg9s5r5=bP78cPYb]UQ%WWA %8jY7[-)&!0.gZCSb!@b0je09M.gO&cQ%NQBb!C=#Pdj[qfT;OKiid-d2#b(` %M>6D*-K;4ERPb#T,)Q(f9p'OY!7b%B:'eYKIqh,XTc;dTW3`e0NlR6O(;!4i*6Cj>TP>4lq$Zr[PbW3$EEt0kb`Atl$a\%FN %LQg.HLQc2m+f-#u==GoQTqrTKGUZ*&@S0!.?A_U8Qt"Xg9R3`SN]f36@1Q!7lsZl8lsZlD4Y.>PLS`G(LSt:J;G>3_PJWo,SM]]DeqpWo=sq1YCRm@ckWB>`OHT4Na7;k#(gTk,I\RaJ8)n7il5;5TXK45TY&D)Y,;'!qPER%-0u`Gp?,=b!;Q2Q,1*G=5M#^\MDi@1%LE, %3qAA5N'+0V1Cn?a`B:dJ1CnKEbem\"cpM%moIs>T4k,`5oPdk?4kDn1oN_El6-o4""?k@$&bK?.Ud<>79*@E05:Pg,r(2O4bF]&d %UPXRDj\HfdjK8c6W%/u$Fep;nG6R'dY(/XiPn#t4'qcq"`QXOYnm\3O'f/YX2=i)s]U1'l"m3p41%XJ/]U1'j`QXOX@ckdi;`QXOYnq*Io'gkdfMP2sbNda>+H)3k=Gm3CTYKc"mY'LFR%hf5X!m;W/&"5WJA1hohnl5[G7LJ/"e`a;#s,4 %Es37TcP97poiqMde8kd-;9pOb#5)4%7FX\31%k$;?IZl#1%e@F9KaA](\Wqm-L32%*r\dPT)9=%%tV^L_dIae%u&!P_dP:mOBE^[*i2[Oo3B:'b]>4t@\,*D2!2=]MO6>k.-A&Q8qS0'Ml;EM!qid"3q^j%TH5!Z %e3da1e3d_sH?^uK&!*Ps&!$n\a^]mJGV#D3GV#S\1_ua>`mUQ9`WGeZ=F_G298B)q(79lt!qYn`3qMiC?lg?sbemrdA0)dbB-&*% %bemqAH0);Qio..uG\AW>:Duk2*Z>F%6Xp.ABIk0K10NO@R4P[ik@,j!G:nUoi40\^JELAi%/-[.Vb6rRi//'@gH&'PjH&'OOi8LsYGfVEhi*ir/Gj$[_*^34!Sobb>%\L_Q6YLc8%\q"UF&`qEc;d^[mp$Sr^iNKi %!RFbC)Y%([AF+_OP"$&078Xun>SKWF)bh%:>SO"H]U+XO81(%Di=3q4n-+GUP-T&#H*9&#BHhTsT>4Pa7=l %PSPDQUBTdgZukG=[(ne_(79m)d[>mnh;)F]$(?(If:tF'TK"&#mP'_eOI:&$Nt-6YnLO0O%l=6Z&6Q>0K.2QHhXp %(3:"gAT1FObF6agK6X&9/g=!MZZXnY_C/RT+$"mf[,FR7+eJU5s#:_117;\-K/e3e,)HH7\/HH7[7&%Ml/+h)RY+h'^" %lkZOTh9r8M]*7D,[fASXQ;?_tDX#ZWh#d:@/I-Wg><;LVDRm(YT&<8NV+0Q.P=+H?FS)EaZK;!qZ-R:qn?^ltl"@[5re94'V1o'0 %W0#F5kR&a_i2D_]"HEgHB_P$Q;F3oBZ$\T?LUB;p`ATRq6\@anRP$FlVB1%\#T_t*W%o@_u)"Q7W %NtJRcPP9mB'ULQ4Q/aV(]TQOrJ@?Mb1#A2V11p>m\\)SNUq&Hr3[YlLm?dskR+2 %5Q7V&J,Aipqk*oMhu)$>qcWsuq`fN,].,n]%a,LC,/*rd11)iC=FNTCGtBmBciaq`o.MD\P[]h %cE+8B<;*`J0ofAK=R27M:OfBeddoS-h_A0_\+B<;gu]Nbo-Lm/n_`B(CL<7D@suJdGo<0\TmqO5D6'JJrZs@YjB2@,1Wf"QGMMls %16H)!^>m]/*RjY.b=^.NQX#Qn4Q9$5W\6B9;1*))IE=KU*67:sq$]$F]lq!50:DQ-,TaEJ))G@k2"N#'>e7&<^LRc/A*'kCa^rWF %%+XVK7IB\N?I@o,>BiUA8pn`:#&]R[IF\]$N/p+$gn2m@T#ofnnGHPUoidV\ %(tkBo-6jP9KWm,;UAt/gNeF9XWYQgZCh#muVDVh-i2F>UnJ!GOfBpcLh[Jl1t)&,P@ApOku@QHIFM?;l2qCT?BXbSP,7j8CM.n9,<^&nYP5/d5?:M^GE5XY$&KWVs&5= %^1K+k+-Tl5ZR%B0fDTj:QKU=sg5)ob&l8.@$='n`3[;s(f!!a>bJ/$;Fj4B-4*"T:B!LE:`,F2/=\ORj"?P-c(0=rQ='`,!K4"*E %FifrM%cs-20opPG^1L#374qZVB[:$l,&;o0Cs`Mj(G/P`QK*9s[('U5&'J59-sO1s?h\egC?*CV#!B8'*fH&@G^a<*s6&LH53f=o %btZ>f-HT*lE/gLOR'2^3p9c$7CM-nZkH`G(@ZS,K- %8Z^\F\nJ.ka@0=N1TD24]P+R9T'dQA[a6e7[[((r:Q(*]?SsI3:;14Mt]5q.lniB*KMYah#B3c[/'1Ng8AHQ541T6G,uFKE)i5MHQTf@rSV*' %A[nnM\sCG7RB$G\]Ni1hn:&^_a&*f8k@ONomso%-Er!!eUQ3NaD4@TNIb>nSE2fDPo_GT9f8h2][EYat(p_.APY %STuUArGL>FWa3%nEZ&Vece@kE-]3(S[d5/K4n!CDU5'H3Q<^lb+iUKbQgM+Lm2j].&[#>]O`D\U\o-1i]'%[f>L_Ki\n)s4dMd8a %U5sE0Y1c,=rINH>s8Ei7ptu#>T0+@,J,]r2^3lo!Nj&;/purn#hsk'VqCd?tDu][krU7,bp\rhfs7e6sql>5>oCDX*RXY7BkPtPW %J,&93TE"X(;#PVuQ%Q%h%ni6]2MsHeK?H,CnR]DnU@)/,KCH@2n.Md)987d<^Ctc8J'?C=T73fhS"DFbGKn-cT9G?ud@6,7m7_t> %:HLJMOp0,Mnok8Yrg'2[4II#fA@eZV0mUGRtS %I`g(@K"3rY$)@/`daSkDWi53d>u!uU4DTgrF]22+YNriEl4YclCk;cV@aoS0j2 %Ik<lMq %j+$8*,h6Pq\sU[B@(p5'GS@\VH`9JE,.0Ua`O/aQ;_7f8n;)a_Mb!6o0o^Uf\EUIi%IBqXf!-r)X'cZ]W8N'5Ja;Amh4oP]\BMd# %dhth<[m2:0<\RHFKTo]-0Lka??LFNZ:#W0D?gV1r&i'7GB?W#+_<3,I#%CcIRLNPeHZ%9F*K?ZR_V^eroIf/TK$1m=Jb3jQI?45/ %OlKjY?cAW#?CthF9F:=Fk)O0+5V/Vm\)"PLF#=l>qW[L#IQXKhKDB@[4W[OuEP?nk-b,KlUdhmRVs$FrU!G=dh1G\iQWT[1I;eI/ %&GlV#k1`6X$g:!Mq!B^g0Y-D6c,EaD];uC14f4EQ=24=7lh<);iULB%qXhc![GCA@Kj2B?jpU7P$TE-;XbZW$XgLXD_=$JramZX^ %jeM+?4nEE,>:&Tpq`(jie])4i#%EI#XrAu_JG%1(]ft#:<`a^U#lDU5oON0+2'VTa<)@^m+ujRda7)$23`*H]p=Q.`lRmp`\io3( %FrH2%p=2E]rKG3)4"nj@&d(\]lLm1]IGM)([2VKQL#h#kkM"[q&Ua#bH0;"@'6)ViKVs_4i`26kG"-n*kjsc- %o"Ml9pAS7iimbBE#ChY[7'bW!e+C02Ynoh3j+l\8Y3IIl;sUq50eCDlhm'f7o^5]7:XA,_U1/?E*YCM`Om3aT&#Z3eJ%,/U*q48S %V^8bjd7NFT<'\P?HRN=5&\)i+r5Hngr[TZ(QRqApVi\Fk:LmJb1$ds[q?,6_(2U4Ju/@=I,>W%GCIQaBeYt];D+(%NdYOi(je=/H9n_?kK!5L5*+/OKo_FQru1:-kO%\Bp)`hH %e[JfU?ti\rq7+(eU=F%dHJPnH:dr41^9KP$"?^%D?*YHDk=iohhsK] %G`Shq6iTlFRbT.MT[rLfPR_Od5lI1m?"C>3caDE4h[]^bu+PD)e@Z'*LllaooMT)YC^K' %B/$fOUOd^H*7gIt[%pX:iuZ$_9XZ_;r9MWIIr&;:Hd't4E %g)&$X7gnudY7C!rUIWpM3OX*A2/ooGiI0%1#dS8*=(.O."Z'RQ^V[PBCGV$B%usqu]JPb4bdeM?P>ks0n^FQK@/%p"3A)?L$jLjb %o+"i@3s`is=:N2\8[H-Ina?L'eKg(eh2YLOl+2!F/FbXZe%,#re6]1X4!0C+s1(RUIS1s3F6'/-AVTB)hg:h&*IIXDc([cN\`h*S %bZ4g#hHLN-GF_#bk0d74(YonTURYt7Q:X%0'Jna(n$m\VT(gCV1X]9K3dDH&+%At0lh/]don7D(]K1Zo?[2;Z1OM"1?o\Ng-liLLM5e\/=mjOT8H;\md$^PM(;;@qppP#gp'mM %`Zn['dWY4Uc[+4f33A_!5r\[)@kU'n?Ou[L5F5p@Pbt;>%.4r;^oV[QbB1dDMQ`JPi,@ncj@1c^.B$XS'C)l.]7NV^3Wj8d$u\6K %aVf^&qdS#^"ij.tK@N5g)D3'0(!LN"oc,D?H$I!P=K*3pmO7hlV"+,=K6*#DFht!+%B)[4I,1j#L$kqKIaIJZ^?"Z!SS2E/gDC\` %bfGY&D[OsgI?(0\Pi6E@Bb"!=_>?'Kl5Zt=h)1VNK"FoRpfMg!aHaKYs-\c9=V6 %(6=K]@0JSr[s+W:emCMpJ+i3g3fc1K;B=$GeaK*s\ikHS@6K[H"!&TdNCLCGE7L)?Irt_)Z,UnAIWk:K4N@kFnGB^1S.D7Ab5=ha %ok%QHdm40#F(s6&_$g$50aU\d/7me$0,DApk[FT?1ULV%FN$QPf?1StEOKSH4/]i$/9] %ihsj4]*c!m`t[?2IK&Jm++2t7+H'W-9[:D5eD<$Km)\\Fgi%PZ6HJSoT=8V=t-11rGIi5AM>iIehAj^?54*T61(WiVa"&hQmGT/\!Krh[cSj,.quJ %1-J^Te\=4&d6F#lrmr'b9_/;EU*'(J@D;qdkb-iCUN7Zb5<\jGgm:nY5)O&KE5p=,@"q#mH)>h?=K6X>\LYe.bI4;hLN]fSVi6(;ZEnU>H7_W!snt-\-e&Wpa]u>J]*cN/>]n5`1Z@uP2 %IY*]&FBmL8T(m2aNN6.&-s7:WSl7i.o'#gsnQZCt^-&QO3bi5f6)AuBGTi93MUqEMDFMr7dp[3mrQDS+ZLJ,$"W6e.sQE)+(/[s]+(/"#W/GtuaZ"k1K4/+[#M.UJ782=%8k %pU0uuQf5P<.WCp8lI99M?@XhhK=V(8#h$#%5f)Y%A4r87?gH0FQ@mL$@X0m]] %?UYs*0o+PaG!nOo"kM3s&JkMBr8P8%lonV/b:Yqhl %S^!M56;(YMo#=jUr:)n/)Xc^r8;Sf,c%19G,=R[V4GU;Yju5J>)YCS0p8Sr@XboPm0BY:n_b]qg1/g(.^tOLL^2ZnQ5JaEmEW04@ %Q0Sq+I2AYf?(8/aPa>g>e_MB=`_HpC?Gd;>,CZ[>#Z$]=DflCYdDEhtn``bi8am^Dr>j:lEbo4?.Nq-K*Bh-K5jrbB[_ %-TZ;!.?7D+;N`Eu6gM[2H_EPui`(>_.`NN:iejo+'ATsnP/3U&H@kG:5/F!p*V7_?dV0Bth-sA=epVWXf6hCU^ZrCg,QLu %)^'VFI%p%0Yj5%1n)kd!R:+WRs7#H64iO]p@;mjL`k71u[Qi%R5^'?'?t:ZmRpH*[#p&Q-.7bF_rM4^QJkhHt<"HiG]pWT8XRNm? %Z4>CuSF;&I?LKQ[lE-/[Y[k3nr^+oa5B"$@U>5L2>8D/*&/BD\\Xr0fO^*bBV7]om*.7]r7<:aZA0Y$k0@N0WtN/p-,eJELq=8n`+:bnbbZ" %8]odG;NL9P[o^jc'`,6VD3V;q.JfSpn"AE$JKBS?qV;_VQ*P5F %T-uu:Fj/iGbS@H+hOg3aQ[PT5*e!I.Zi4k9>dh]R=u(KUmUU- %j4[9h-J;i9K^#E_o$m;VL/YXD&^^&QP3GLqDXICIeN2r9Z:F<1+_4CEZAE:IfYm-WY&8P5V5+[*7%BA$["\ %FXV?W,>!-\(LA_Q9O+"ag'"j\DR\fIk&S"TLXeY'e*^u@Fg'N(4g3jemIg9:lu#o/W@_13P:'h,Apq>f%nXF]MZ?,(G;G %:9sm8m_Mnoo4tCecpO#W8)+bu/_g>oOe?QR^?8ooJ %6-oOMeX/9Rej"&3d8G#,T6?(%OWWGd^Xanf2cIq[+r5AQ^\__pqu,:-]3FD.5Q0I+otqa=qjY%^jmR*W]U+-;2#QjJq7T;bLQCI+ %+5@rDYi!(&5PuB_J$;0-dscK[r2#FubuO@?Vn.U;\e3S9-Lg0B^mHR:Ci55sT+s*FS$ %MstpsRQl29rpWqc40S#n^#FOo)>Ln*_[egH5O=F.kgf0LYE9p@E5$f^IJr!rfT4p7.\i*-ju*5Tbl!oW3jNjg7OCdao!.)mZ0G&b %q;luh1pE#F1?BhNY5(scr];*IrQd<9p`V*aS`^IT,,XX57_ZP\k<.U[or7C)q5HUXoFI<<4DML7ke""Am"?W@jW/<[D`6GNe%'^' %6bBs$5U",S`X)9d8pfqSoC_-;Qf8cfi1)EjDD!L\mJA"+nLoV07B<+1oInUW]qrqkeWYh-'7fcB\\dq/ %m8amo&WBqhK)<)3/bl@bG_#PeZ.C_6hmJng$$?IBaFRZWUk1JSMoZd#FkOIrU@#jPCO9VRrq)gR:gdRE@B27>sE!\8!#1Q86aDbl5);]Bj?h9#]^-GH`kc5gD!`n,)r3![b;"GH %0(q8FX^%--18.gdl)ZW9>4[O)KFaN;$>91i$;Pe&YV8E^5Oa!V,PJ18WRK;\7qV#3\g]I@GR%_tHu>PC,J8;Z4R+mYg&H<"_f[`( %be:1T1%&Fus4Hd]U:599q2UDDmut<;\N0j5alVFQq]Fi.5(C]A=n2^Lb]d*`WSfUO^4EfIG"iNYm(W0p/EX0PVG4>\&&]CQo%fEW %:&]$HO.V8i\+!QpamW_@O1!_"keZ%:RKa$JYH!3?^$0htB7=PdZHb>U,AA9!$o6&l7k>No9R3i9]mU\j[?:_` %GcD(crl:=.4fI<:o^,ke)Gn3?I;HX+FCk38"n'4jgYM;K&rk]R_]KWWb7IXB\lfg@la$r[N^'_'gCCr/.[MR%9S:.sU:3S;_/A;MO:[,5#j:&g).S>i.W?0>#dgkkpSFE=2M@?*JV'S6H?Lp:gr!<[M!V=T`+1m%# %UcRhcT(pjl_iPM^Jq#V@Tq`ADFV1g&Bu/+Kgl@pU5qC^6RGYT<2"6GgF=mFO;ft)U>R:ZRe3^sI>V-,GD/V]YaGI^Y@r'J$Y8qQ= %U"f^t+(esYWhnWYXi\U;Sd16-?bnPHH24teGGGI\a8=Nd:_%8I55O[Snpp[IescP[[sZL)"OE8ZN19T?1AOEo]unY?rb>4gNF%e&l5-Wq#(f>"<6If!fWEe2#n`f'fW3JN^5!6ec;9!?nNbXbr\RJroSCIPiAl]@)#_gKIm,"KsFnbUj$dYP>*g5AW*gD[d4S?:XgZ(@qU/[]/]&*k?Khm:)8A0`2Z&t&^tnPbC-mqWE4?:Smu1(m:g'3EC:?FiidXggQE9p:M9eht*ks\Vj7oA'<8/^M:4IY$'e. %A1eMalGs+b9(n\NNX.s-c(Z2NHT1b1mU_u3M&)X\$a,bDa&nMo4>Jj9hc8c8mDm%F2T6ME4cGW+PTH!k[B(Heju-pB;Z.MD67@r<;o %5#ul3o[m[9p+prEHlPF1U8Lc;f5&hCH49&IGJ%0F`t[DS/^I; %AQq?MCMm?@ma)Qs;I0Km;fF!Zo"-FIaX=gJ^9k'tbBB!cH(!c`TCUY(Yg2s6%mSIP;cY2PC1S_=ZL2!]NnbCO-WZ/`"?eiT %'N3YiCDh[K;Eo;R2r %Ej,HK[XBC2f_6J`p&SMQl4Spj>\V/;l0._J[T)=t44NULXcX!a06_9U\QX8!ak@X)SkP+TF@-nBu):#n>$D(l>X5g%)1FI\.1Kh3]2%k+U %f3c\d<SXFY;9^L%P1KVd+::u?ldPQ::?T!+Q %e?]^mF.;>GQ2VT1W>[@ri6CCcYAbH5`?]CSpr""N^J*Ep1XAr'q$NS[DoY=r@3kt>X_+ukG>PU]9Z":.UorTTqbpHID`q2Ab);e+ %jKr!.Y(IlJ.F*::En;2u1O?lf+R9;9j8SXPc#cB.L@bi(JjBU-Ab<]t9s:tKc)e6OpHEb1L%!S6:R*95eQ!OH$4^%a/Udj^V\Zq^=VgOc7#XK3#Ks*b]7UhZJpcCU4oIS< %XNc,BQl:>uK@IhSbRL[)UW:h^V(2;HQCi%)l.eL`%1R+5O6&PL):Zk@62t?Y %np0TA%!tZ>Bh"s'T+g"HnKSU*Pb=5YXAmW+[-B]lcZRgWXF`:%Z/GN3>8,[e[V08EB@c.-Jfe@YII'!j3qi2d`/*M9&YEuMY2N\+ %UaHb\Du:Kc/h_X3nGZ'lF6AukV*D@ZgagQ-hC[sGYZB--a'P#9GNB=Fo1(K4VWaeh_W2l!]-.*>jpL-u*]IGA?.D4Z2b.*SAY?K< %D:`n5YH`&nU1;dMP*@+G@6G=;k$!^?O9a`ih9I+_hR.-/SH/EH#Tdi9g;82.c./gpJZmU&X)["FUd9<1.m-DYEAQ("EK.D2o$;XZ %6/)((i7u\Y"KW#=gbAZ3;>'bcS]b&L&Q:,=49ns\RGns\fsl8dWp_!3?h6EBGS-HJbdb$6;MLNhhQ%t;Uj(@)@]t`jQqm-F[$3b; %;2rpI=)GNNX4,dM9ObYe]RVlrCraO@^r[i(e*AT1eMM&!0ZMQm>`N8hIt99*/:>$&@,U=\)h45-rL+o\VZ><5Hic6-m2I8qX_ %3K"L+e.\(i>X>JXSp,H!,KO'`>gH8/2AY/W&q-,ArYZ\_i>''a/A'==P?GmBB_.DFeNf>(%E]kXcXd*^iD;3YXF?aMP %%B^_P.iYVUL%#H3?DJ[X6?mHqWJ3rgXa7RGWHeX`hh\Hi'-C:m.9\GXP==JkT>\"1Q;^cSol9=>3HTSY4@.q6r5dVRno7./2VZF5 %?.\Sq`eC&$gj4PV7X3o_fPAZu>0GdY]i?_$(!XJbZ$CHbpQP.4;=gUe4^C$!f>k.;jAg82 %9FcN1.Q-"?J]:UQk>;Oj^F?fpIl^rQ)n3,sX4Tg8\OJlnm,8/emq"VT8,9M(N^Pu5O-O4+b[$-f,KKtQqbY%fNH7>Jmq=m6DVh?@ %XeiJ0qRh&P)jHF20iu-%/`FZaTFr^[3`"bpGD%#sZ!8]^Oej)]AlX(0[CR*J;tb$_*[k,D'V %AYN27e>,opQ$bpEL%X0(3,4Ad$^(X[I,? %5'^1LPqGCGe`W4*]*QQZLgXe9AOaLYN<]+*5B-;GBC-q>"tkMOk=4ljk,Mkm]h/fl6T*8T]BYB822Y^K,aAA_4g_4s%L)9i&rX5*dUTbGU0hJ1uOSn8,7RbsY08iQeF@Roh1?an6^@t5s<5*J]\:\>?gdOj@7UX)7_OQ %k/GftY')[aqks";kp6tYNCW_@+1R?\)0aeZ2^36`a5H %A\lRCO&&]o%5/nJEJ4IJNrANF!`DorIWV.WgDt)]bJq;>9(.i\d):gH`L;!?F)$HmBcLFB]dUg^cee^oVRp_KT%-)B-fhb* %WYK&(;su1U07=jfqDV@(q@gO?T#h[/gc>O[hGg8G1jJ$lj?bZRP%oR1EFLAT.P#5L5V[]1Eb5QShC_6)h\*_`mTUWPfj[s.Se5t;>0]77aW^'MAI9'+f %U]oh`b\pE$a(cI#]/R7Aor?qDs8<7r#7[1YD'N/G7'p.PP=.*KDUVZH %:H+sB[FQFZSMV.7=i[=i\V6ub/=hu!q,DKG>4UQko0"*eZ;.cQo7S)&;iIDK0-k7q2]#Z4@>uVGD6;!Ffs9/Dk0CrkhLnc*<68]A %D3J2?ojhcDeTNG-(M5_hh\=?fmWD\h/`c%]F]sL;/a&?5bClC#p@+0+Dj7ZplU!+U/[k#U\UdM"QSsbcnH18+,R!cQS)S]GC%](p>sT(FG'p8e/o.dI!]^&;@WD5F4VgT-dMW<^'>239/esQm[rsu];:'o!Q\EJo,HZ] %T!;qJG4qt5_+@GH0m]Q+h66etuer?@X`Y6j6MRR3bBOGldGOtH,Pl7-]/g]n%BDndtTAaUNB#F-GDgm]V?(80XE0"?r_/o4W %4g38KI4H1`O[6Zd,R3>S=\C8J^A5:mSQ$&'*YW6$`\4kQLubZ7n45(<)tjqh3hn'G/G9nn5pE`P3NnE,?Ih`+JF*mBW\:hn2johd-F%5Btll,(_iRWZM878,-JTj&0Jk<2na+cL)&%%%CR&4F$bigs=do<"Y?!UEhMs=,tLq-"qf\ %s5LRlFXU1K7r?!?-$NY=_AhMe;4h31hf4)!\dtRMe'8ooO>@UT\W<9th)>0%>5N-rKKU+=$'KSJ>Fs&.R1\/>g.-Kdk*s5u-&Z)/ %ot;Q-B]Y9)m/7uD$0DH_,LrkFo]V!*2eVKtmClmupMdg\-mO-:leWuuSF4:Vb-LK\WjlYI %;d$UM0dDAh[dmV=)$T[<^1ah%?O#fHQjZB4h^)6?+/qj=DQJl[92rniGHQ#b#s]2/f.GqVe53=kjJ)q;Bd%K5\&Eh2@GM:k#^ce15-4ujO*S:7@"0u1c0oee6[i!p6j9uXFagH>p?)t$7+cW,Jpn*j]2=&lV*j[RpHGJ? %8mqE`eD7d\]D"^<]Q8M,Qi$UG&rp[Y]FF[H\",tgH;%>2>!J!EkJtg);,]X2^_-C9)nL^BmBOcu-Ne6hb-AudmE1bS2gs*[+63(/ %Du"!T*c]tl:GCn@3\gG+Z!l4cIO=/;($>1X[g^NeaL7:uEm24XVK#ILp8U]AitoH_@aF@Oietq/$IP:Y_kKjk@rptTUCDDPO2q]a %4#R%[/=s!`6ec,@&4E(%5(7j1_Uir''`ClBkS:`XSq>?'MQlq)#MZb#E8gVa[HI7g\PI_)qI2=de\5dn,Od"'/XMllH=Tb(`jT\e %"ZouH,f@9GR%$3]p86*,=q9Ca.c[YYDLMG]r&,oJ%*:cn4[(H@I0)GF(@PX]V]qcedZA?JD6HD_gN;)0,B&6F9gF()Qs\>u!ahj!?+8f[1.6BI[L551AkOd`WOBU6AVmKJ6Xa5)#c %5!Bt:_m<#Q41p=YFjn$5i1HL`o3-@8daGnt_),n[26)KH>?$k3[a)GZH"YAX7H0gTOeu"sRDk\sh:&CZb2/0Q0mo28^<,?)0QTIf %K-$aCR'cOo\ea/29:M1&#ap_mc:>iA\Zb!'jY2\U:]&>D]m0e1;5'@'t]qk_N;Hs+Bmk:nj %\lCOq1bbNV7J5=ibjsh>85E580@$PpIqEO`Z"qS=T.1:NiCLn[h=^:.gt;Ud#-r-JId`cu %^uP'a+=j(63\-`99Tmlh*W>FD\8!7>UHdSeYt&AYO(X@T:/?5\RSV'h%I'4Lm!b:H,NHeFO6:%$`$#()1+]td1HR'=2_TL.cGBp% %PD$E7,fen`k#pb3l`Tq.%VJ`Gk;&7="+D!nFA/eoqtQn9$GRL/pqH!:jR-jQ5KmZig%te[:?M6>eJn*D5h%I7U]bOT*ERI_'(I#u %oRVX5MN2"(WumJTW[3eF"8N6!DiI2R#gXbD3\+2L?MeY@N(*Q;[M\)sf>KZ1)K3e\j>HmZB!S_Boug-+8R5q[0kR09q`&gRh"7)Q %r`D@.TLjFhn)p[F$=]LRFW@jD\nqp&(!WX9g=GiA%I0gBWaeV\%k"+Yf8?YkZpR$5k2[=7c= %+s[(L*5$E#+bI4n7a=;qH!gL5>2%+$fnebRT22#OD?N\UVrkgrKoo@ll7(SL&PREj^?Jaib7,`],[*C$]Y<$:n.\=$AZXT[Xnur/ %CTb'ioj*Vu#&VR*YMQptRK)]kD=m2/EO8[2kdj4+f>8j>SF9]#>$&ronp6.&:M.c&3&pjhcT9q>m!Ds-ESt%`g:`l"a;PL&]On`R %/@WZ;iU_MXTa %;88^mf\^XW;k`HO:E/7bQ-[1j`?.1]/2'n$XD3+A_(3*:m'1t4'?%/^pU\`LH2K,;l=[=>=PI@9#q`^N3tn%F`eKu+bd?"cmXj(K %c+UT/k'GqNiTZSpNT;lK;D59'TAO71rnc:!FC[/44;J.rl@+@e.rm/gS%E'J&NhtP3(Q-Q(ml=ZH-u!&M`)sE^F?f;OSVe%oaI$& %HdiIjR^h"kqb*B7XK^Njur %fW95oHLh8hq>D*'P/G`t:S]dqDi6"0Rup.X%VB$"ZK:XZVS%ses'rff:S<`@(Dt/DaJEl\KpQTLj^S1Dg5r=eS?YPWXZ$$TYk!^T %h-K$&e/"MLatLAOJK_nqS;l%%BOIViB_q1X9Tpi,='/`T0q84?fY %m9?hWnM__-Y7CCu4t5(rY:.01cM!^@fb!62F8"dW4$ML^@g81r<@WBgClP[CI`6"SV)SKOM=$lIMZtg%6^FN#'oZ,p40>N+fr[t' %BOIq(mRg[)\srFAb0MsRT$[0Km*&b[#G5Y;EMN_BWj#^:`_F0;Cq_U[>FP3*D'1t*!F^"UqlL$9i#)Uk5!1R]&)Wnh:&AWG$gN[P %;pa\S=Ee[ZS'UB#;jI5QOsr-JU$nt_7sf=3Q)A"2T0>4)>p`mS=g?iZaI7(hIJnC!)2$gVc_S6r(`F5Sa95HK>]]40WGYlBg#QmA %n)S(R?AiFX/e1$?d^6,n`50_%RP%baWQQhh8+>G`jZEXiNl3C?k)VZ@]p7^(^:eTUO;T%TCi!24*++STk/JaX2f-*oHUj9,S*At` %^gbneBDYE^Oa36Mo=i_'^^JJt(=-I1QH`]KdkJWh*a-c9I8bCGLH0A6YZ$]>J8RB9QP6t]G\[tap_MYl=acW0[Q:B?pW13F@`t@q %\],t`2Pc5ZSWPf_$YIefF/MRLN@j*OWCDb^ln*QnP@XAB%7'4'Rrl$\3*_D%M)^,.a_k&q^.6'% %``12GG&uAPE`p4gp45b`nTik7\Tjg[@qT"EDq)CDh0j)18*Nm6h9HLY=j*3Inso[:%`M?d2I;&\_X3BnB+,e,*eoND]:D5I;#E'= %.UqT(`B,?ei=DgL-a9Qa40iQB\WLeP>=dT*DsZ3jN0nT>7`K0_CIaIi-P8IcDV8&B+Jj3D9XeBGRn4DOqo1R15tT63**o/k24&Y7L>(O0#:c'_*Q-40b+Iq=^$1Y75L8''\d01Sdl+E/jKZ-/FXMT[obNFQ"hfV$ %_D#E72#69F\D4`/dXK8?PV%KNq]%)5lROQr3Q"H5M5d\"f+sBG*5AJK`\h9rD=J]h3L7`q5u5\cR4gFs\AQF^/`bFF %9"W6PXW3!g[[4\fQllUZ4?LU&0qDApj]f:8A[p<CK>Fp %`lU8"\C&;<).[gHfGd]r#jX.hJ]fh?hPG@+`@^f'ePL@9mI#>+X6lUm,?B)NR:\U+(2M&Sf5X_,KrC='hiXL:XA_nW,+BB/OMGd:sfH@Iq^IVb&/imp#p[KHo]QE-M055-]%^4mFqB[iM?RniSFIXM"%n %"0mR&2KlU5WPJjXj#32'FF37qD08=VbJNL)>a7*'0&eK_Jk^JIj/i0]g:$_-Dq9LOOX"M@hDCoU*Sa&p2_irCqsa.Rf8Fbj[6%F` %F.36=[Rl?.`gSj,*X/leZQf2:6?F/`>Pek)]<,4*o`0!a8XhMcf:hLu2[/^58pbFCfj-#, %Ah4k%[HdH3Xh3?\*pDp.ZP2TX;]hn!ajVtY_D.SrU,P+68Xp6C,4cfiJiiVF8^`q.cs-$HZ[K:_'.u7_7;+ilfp=p:sVaRb:qb>H)5&!r&E,t@VZtFDCnShQm](p %XYj)VP'cLK0su6UG.OUsT@]Bqb2b]&'=?:sR6npp;XE8p2GIB0%boIt("4m(s*iRn^T?gYig;WLY\49Ckg!P,W0ggqmG9PDPq=&#@Du9mPk*\X^-gSRJ]e^A?%jPUS8>1SYaB.NHH]&NRF%FNUo]/Ct@JY84!;Amc3lo,]R*0>!Rd55m_n('VNGkfmJm2o7?uG'`?& %ARi^/MgMe:(j!Z\&cYtTFABh\WlJ,M4ent=qp14b\aKkn4.W5a?lJ#h4hJd %mb1@[V5r?FQ0pEqLmWEgN@3l.O2uphqTsDKfuIMO'j%#f,mO(H)d?OeP)/\Pk#.P\B]6FHd\F1phj._XA$3Q*ZJ>\Yqeg%;@E1b?*CKY@.oKUl;H6;i&YV?Npu$[c==+q?b[+,ZsVN.l%-n@5!P'u %W^,3:1U-'??#\<"C>fUI`=KPd@hd\aA0G);r[X8:j*FrUiB"&dBeML:WmT!`Q_Q;O>lgY/5pX3AL?aM`$ %BKL46Hfj&?IC11^_H$[(a2W;^Cf@L7WPu$mXg`.0I]2,qXUX4CQT\TB1'U!T`=i+!6c#csd#Pd`Mc3^#'b;:C#M\pK>Bk4=.W22U %S4OM[>2"e;]od6u>d\'_5C_f,ZHM_TbjInWd)4WBdH\?Xd:Y.'2*M+t8`e/R9.'OUK^.?S\,soppE:Ti4"kqq0PfY?oDIK$YCI'%'2jeV<)>Y9$+op9'qL3iun'qgR)L^@([r%BlGe3?g>2/C'+NCa*RhFlcf6>@&7O_mY>%k[PE#Hp-:'HIauG_4ALgn13I'5/M%;(\mg?caHong>K:)]%\L-<8GqXn*r2XFV)hlI?r7&JYFnF0S;V*Eff@9iA<$'c_A*Jm)_37&Hn@_$rZ4'_n>OFH;Em>OV'[$);o3>2?;^n2g#8 %EJUiCiX,j-VMGA_[%^mR78ILeC9e>gGK1ckkg8U4[:$2Moa6oU)F5*A3C^uFK6l3RGAA'B04l#b4D'r#i+tp>XVP_q[p!n'h2;,o %I8eK-Hk%\ZJmTC*]&<6Ue\j11SasAkN=P&=0mb^`G3EBaDY(;k9/!I3lrdGGPBL3OASXNi;*O)a=l/2fJs+GKnXD'2Ui %PUS$4:+e__^5g:r"VH\=aOqKd;BDrjS5fkm>p8cE20I$PPG(_!m4Rfl]!r/F8:O3Fi1q:N34.0B&m\=;&il]5,Z>p`>.D"Oe5mjE %WDpsN73$cHQtW+baE9!WNAIF>5U"bJJs"[tmT7KbugA;VJg,e:B;j\Wkfm3`*!^T4qJ1Z4/!j2dDE@bP[Lkm("Q^, %c8c2K@-Z+T$'gGehKdBS,&L7kA+*B?!j$RFSd+V)<\5.7"Y#FOpH5b3%l7KM2mVIU(o-OfDmE0*YQ/7\`abRHro>=)k' %['^N(-(9Rr)0#9V<_$L^,=RK$3J3,> %W:Kl=2StAA2kPDO#GPZER'g;Cl#c3UA2e/^+^7I!Rejk<$Z$[5oYB$^.9cDkhE98tSQJAK=r'o@QFf;XQ&YC-Kq %4VI4F9j4=s`p5L&nYYtoW*Cbr*,UO@,f8K>gMC\!ec<6Yk&.o\>1A/8>'ntHitU/E.R&q3=O29#.*@s_c;i.]3VB1nolRJ'_X*g^ %$=#;DW%2XO%Sqet(Z\`)qh1>K4t'Y=-"&#YR"_+r`'I.4YM-t9[b&^Dt=6o/o*9Mgn#*-G@=^h5L9FTGAm$=AoE83@e5 %io:_-$*:Sc''W)C24_:OdX!g\-Hsp,"4fH)WZ.3]TTm7h`rDa*"O!r&#;I.nK5U?WiTn,:AXL:@"n'U"IPgQPh*D9F;SEoo@.Nj$ %/tKn:rH4Pt9Wtq6MAM_`=^O^AoMJadW\l^jA9WcZL!XhpW?#b#s,E94Bfgg'Tj?4"s.6Q:T;Z%NPOj=_j\(K3?Mq %2W#4f,mSMl9D&XSe)JaUa;qJ#N2\)@Hl&#U8ttAgOb6R";G;-AWp;)TYuDC_J3;Ta=cHgXD=Is2QFif7Ofi3NC)rBYS+'lqZEk8JLGG`j/#+I09LM-X3,\/Ej83ilNP'E]]:Wk"(blk!I"kj*C%?R*)"c[j++Fa_?6s?V5)qJ@;+d3J %Vs4j4c?\=,'Yio/``4hiaHS1&mRnT79/MV@/[>5Y5b5m69caHQ8hY[V]Q*EQ96o0+(3`1r5=H.%4"\:sW&/dhlGJsrQs%S;+HSd9Dk/5R^P0@+dhi %]MTR8!\KUq8C&SDbc_Rh$F8NX@M*$2+V%.m'M6-u->fK38O?OEi8,#W/3Y"EVVc&32NY*H^kJV-o'# %o2`)G9(M`Je>L[85]*2:RrFR\M'a@U@HHL>c"92K29u?'/ZDg,ME)3cF#AeC %.=X.\Xd2q65;@0ZEdiM2p8hk`rY7YCn\B\7oYW\2R_8%hHoA@-ng:^"naIFil6Ks1!`;oooP/HV@[30'4,lZ%:QhnZ>UHLg_e^+O %4<[l3VV*Ak6nbnL0.nUdEu1QD:A5]hM)elqqgjR2f##:6gEPNL%L41(MqF)$XiX-Dqd\BnR"D?[A5fQV,@D<,GUeM'+6&#ZBfh/- %BXLnQ_[q_fOF7Z(RnrFm@KMe4BPOGZ=0pk,%W/7TTaa%e[02j3rJgrnF;K.,O=\Ai'L^IiV*nE'M!.)58ZQ^5\Q4%,CnML`QZf8> %TaaqFKC]I:PJS9W+ho47efKW([#M#m3G@i'<:F7:q[`e`-Bt9_!`R-MKQD+G..D#U^/9c;S7&\eVMO4+.\rmN-a<95/l<)T>Tm-' %+liKQSDc4gNA/!6QaCYS)9D)Lf08BN08KXS'HgjJ2&0V;lckaD:5irJPRo&W"!F3$pLJ]#[B0Q-(DgmZFc@6Y!;TB%p^HOiGssZu %eLi_Z8Idk%(?BhR;Uo[0)5UY6lH%S2PCO\"I7l7%$+;'8=bti_`G1nhoi9UMQHi]W8AYV=!t'iBDs2Nf.YLCo**]^@e8eFM!9@Z* %2<`[o<3/SYFc%_Go16f?c2id$f%+(!Ej*/<&>K67g2\)LhHe:M#SUt(6n?J_1TE/Do8RcOQ(-CZ`b=IaeFc3!2c`F\2E0#[?>F49 %&lD2?KkPIg.o`GBRJg/S!O^IO.M5=8Z^#]">7(O-W*>pNZ3)gR^cbF-aB!Af1Gm7XWYgu,4J[ig3so?"R`*pClZJo8),PKXL`FKo %pHe4?20>i%VM/-qUt_0`P]0PGX1TGg+&JL@fhJV2\OPQurNM3>N8!`BX&hm)EE;st,0VFX#d=_tIasKrK-BGR;SmC,8:JA25prSu %[j'S$e"@Mk"]X3>_Zf&ZWZBek^m@H7;-/t3VunbGJRn+6O?8?8b]mt12,l]i/jmqH9@ABJ*&b7Mi.9BnWd]rKM#\)F3Z0Co7>H`b %3qjSo$V$A'1"BSo(/\96HL(\L3W+1T\5)*_jHr7]UQEaU"-TC4T?fYABk8f!<6t9-8EGO,(0hiiFKU>#pGaa;#_;18fQdod\rIBs8jlr7A8$)6o_h %!]eHj]!Q4/;&BOopb4Ye^-T0UI]`p2.mgiHRhK: %(Ms7NEh@l-Y%_7o?M-F=Qo0j0;[Fj5A(uf)'i$^W]thQc#9qg7RS_&5Aennb>Z`'7o2-H4SO*jG*820!Wt_(TC?h?L%iJ.F\b,IJaUIg!^b/QQ"Hjfo=9`%f1ShIUj8h.3bS'P2!&fhL;ZU*Tn1N^KG@?]'$%Fu3+5W_a^1nhg.I#5OHDkqD)j(=,++GqdtpB; %8'h:X`S`4Z%3k@l%GIsW/)ipP\$O>.g/2F&63tBR\A:O^gR_9C-0hVm$"8jD`hR1Q&S_R@X%d7Wgc!m1s0B7VcDO1b-'cfX;TAF;AT%6=a&%FO8.FZ5S%3]gQ]bHE"ii*.dR4q;\]`Lm985;c(60 %kCY'OS:cP_=a(`Pi)%O6L"NP$$m6)McNl"t\c.U`@J<2Lmg5EPG&;M]nAAf84BJW6p)IS+:HOqo`?F.r2d`mK/""6ao\L5B(f8r%PWZjSikTac\ %f!sWTW>KTqd+2[&#-jZ?8[7^Kuh-Pi[^*N8L9Qg+Qc[@Pd"f&&/f?h*HXEs2JGed##>Wn#kp6W:&4!DLOYYfNeSY_^"<,j91q^"s71M+PN %\3fO?aV?StQPA&AkAL4I+-Of[Y_Q-Onmn.AP%d0j=b>=,\O.a-Rc:Su.qI_B`+&Ngh*`4j!ju+RacpU=?uNRX,'#OLWpn8!a=t%NhI7K!u8dn-JW8MKMU_6Fc!:5H)at5OL*T[Po8m?-jF896h4@M6Una*Jld[D9[XA+rdDak(GNQ##.l1S>8:ZI`8!Q@IoXk1pi5WKm!YZm0^,1FB?P& %s7ZAF_,6^rX^?&tVo_QbFU'b.SVl]gE)dFed20;ZL'rCmeT@usXCgLcV=gXTTd;?B8qsB:Gp'+B,k#r_f\E'ZaV5G\Vq&$rWBK)K %6nkrV"nA\]/2k%AWl"Ms+N&`gMN6>CSID[+6I\n'oLk>OWAOO%NY&"59+3[K<@/jj_CH%kRY\p0i"K6tW[M$e>3\A3P3du75YebC %LCs/tQ$u6)KXSf[^]drsM@rlU^s#%`K51[3&&]Wa&-Ynp+ZhD_(#9qd6V0%ZS+eV0(eqC*!CK#f9Oiue4BnXs$ki-V[$L"hW^McA %fa'a>Bg!i+P"qS/Cf=&lJ?h(L(Os+@G>("loe3mi`JP2i7S5RKMA;\4XB6%.Nma5u=%VUD0;hKM+3CIY>V*"Rg[n.B4mPji[3s.@ %)42JajCo4p8Uss9ZQW98JgtO^YFDm-=?Mu`+)1^ZY`TGa^#_!G:7frO=A1Cjmc-L/Q(*][.&<[0f[aO(Hh>0?X7DB\a@5>pB/o0U %:W83u,.rd`Y9;u-j.K='.LO;rS1VD1!`(]QA>"oLlJuCK %KKp?klAEq!BrRt<7<5j'qqeW6I.]oT=?W;Inq1IG8/ON3+obfcdY6ac=;tsK/X3:J"&)eP_*hl1c\ZjM8R'S.J+0FR.R_Z)U>*>HQ[(54k9Vo%RN\\L8h,0\Y'X21,LF+ie1j# %KsnEGjZ"g\[0P\.'@=i'Qd;JU,9RKj5rL]UQ+J7[3:#5*T::9SXWOG3pXRMZ7/ZV:2qNPn]tD(k]`.'hF!5TbNUaik5CQC(ga%rp %plBq#rT.&Fk1O\>O!ju*lo0Fk_ok:$]Xjb#rq>p\mdfN:m.SJlHLU1@YQ"(glFK-)hM-0"q:463M`8C7q57l?q<[hKCsh8?gWQX! %[hmZggn4N,?a&qp1]#GRO5F4K;XoIXIBCtT1jYu)RD*0+$ %s6+P#lsIO*m-=Idcb=LjcKt+%C\aRd:n*M0Q-DP=NuNS8*tNZ=s4DQ;s*0'>gjJdE0@'#M^Nk2)WX\@eS+hlM:[;e.AZb4QRuJf* %o$0I:0V_!DPBUq`^Nt6LEIE;@l12or)m0Qtk5f2&l$RA%hRpPUS5lD,nb(#%7r@_aB(Y;o]m/'# %m[;-ngH0.s5OU(MI='Oui2]*!>eW5`HO$bCD/9l4SEetNQbZJS40!WtFml9s*S%iu\u3\JHueN/(,L8)lJC\?J%rMiinLe@2a9D* %(Z0<6<7JX!B!S8mpNX%g\N8CfnPh-dYHH`rk:1k,MU9@h_OJ/=^V0F>jV\M@$UK)dl+pn^IlVlQk0<#@p#klH+,_\`n[EeO3>Zu6 %&GDmD-aGaBJ+XACI2`Z8khPOel`]2NgjT/VGhN6?q`jTZ+45Xh9&&ZhjC4!k4MSG<\c(\5^(loL_n5'OX3Jn`gA7SjnBL\DkC7gT %T(DIH,Q]oAr0c7?]Y-ARcJ+9:0EoW7Y2fEWL5!-OSir!V^F1:_gA(")?K%Bq1l/MX0 %`[gVp&#!gND<>lsMK@K\.N_o:r`Ncn5Mo^Phn:7HoMR@'7jJW4A4&=uT>Hn'_kG8!:K.Z^3_9g@)/O[TI.n\'_sf+R %l,SiJfQ\V/&Q6Z+\3lRU^C-N,,TQGE2SWM2HPC\ITjO*]dK+i?H2$L.bP/!!O71@V]=klSp@ZD\k$RBiHZqXp?$UcQn^bbLJNi-: %/oJG7TTsmm6I<0Bj!fG8T5O_MOJ,q`.!H(;H5%Mi05b[15/4e@ptq'Z0o$]$[)EhBFL1/M'05334T7GTGIhcHp?gP6bI52JY:d$(2NK//N%3s3DJm5hp?(Z&Ri``7C@VM\g65rW:G.-8o,OMM1HR@u?'L6p'=.IFGhC#BRRb96 %[S,?-L5S4A=atN*[nekoIuCFOkf8-nWUd;6qi,61kebNM\]Fe1X!hd(5^TT,YWfm5'nr2Cc[4Y_L@;ER`&9ri&!u;sHpl*j\lguK %AWPtch0;DEI^=L3Z"NCA[qF=E(KXsK>[L\H0D`h`YQ-UF*hb*\FU<"K3hC>miT>/*Xfa;i]A.V);/,AI5GSIiu&lKKXZ4.o#E2lE[[jSl`Ho1 %^:q7kg*U:ml62s_pW*MjOc5s*2E-XflbhPh?f0_QhYcDQj28:oh;)m"e_WF,6oNn5YML)<5IrE'5(mBiG4ic+NuQEC>t0$N[p*-E %df/:)B5Pl8qs<\4s2["KE/ojc*[&GdqVl>ON03_>3=KGT`:4m/$;Gfn5QEIB7STT$PGbQikh(cC\>qbiU^-/Cokl0[,*8HahX2LOST^>VOCa1HKW1cI7Q1gq5E#0c]=>PM@l4B#i6( %Z2FDW_I9n2Gm>E$o7ZP_-Pm9!q2>g^DEW`l*5c1pjYHZ9KYt<,8iY$1*:hHpY9t+rZh]P$Ma?QHL;Rit*=i%,4LoEuc"D.^'&K=9 %_]6&`kOCt3Cp?:8AKDBS%3K*1^b);CNaLaXq[,Pp23CDu&UqFp4OB-Rrh>CErTffbjm"'tDJ(?n5U,oq/ApU^^IM20kXj@L51[h9 %EjRDX>5fgh[#HG_jCh&DG3!cR6$hE6sO3K#l %VYlU2$FnXj^gZ?U!@a)k[_?GASl3u-5g,OCVLAI5g![rg_*Y[_K]m+ts^@^r*XVVnsK@P;$HpYlZ+qI[S %`1=D6rH.$sqsSXTrr'5&\c)Q+mD6nC$eaBu3Bm-<.W<&!&h9BrnQ8'[^tqUNR:Qe.Rn].D]G>b'XKG)L-EGiR]i`#OXC %o`Us)^Y/a*r38ZTD_n:YO4?H5/.S3kD!d'>oJH0ANmE9_\+?*@hqu(\([7RK^5$\k4uW/L[=?sAZPWCWO,+rqCj#UB4mnfu;c(r( %Dd(h=,4DdqNY?CCTrr;rOnZdWN=uU'4d"!mQgZ!TG1fHA54g@HQYY_:hnIODc2s:ipe&+'lrX(\5u*qWdY; %YMX5XB(B&+_3WP2FDe=&H+GqQDng2,d21Q&q-SF3E4ofY;.&*`2pLf;o3Jm"hVh4,%a9*gDrmON5.)IcY-)YkfQ;RDQf!1;f:G2k %Vc(8K:N?3adHGa1\p_BCH%^o8I&!2#R8:T.]stTOZq4XAT/LQ^nsc+Es*f67F`I0?mDZ,%Df3n(^Y/C\4Vhhg2E^SEOuo,n55s>t %-FomCmUP/-o>Y+'Zi@^drV#YBcunAd6i2qYg%*.(]!uL)fuiA3]^]D'T&3k[!qqd0["jNpq5l&t0D/4k6sKX>R@W2^IrX=_X4o!= %iU8Z`f'"=UmN:=FiF!%G`qkT(&?)i#/@ROlXM9#$hsq?thO;T/[+cSf2YYGXBX^"UD*FHk791>3gSb^>br8/)c-^EM[+cSf2FkC( %d;JQsm5A$\d!-2.#"KofcYnL56<2c1BSCbqWPCT_UQ-+u@h"EiKf9ueBUh1i%?8U_2B6rNNQo5ZJ_/9$Hm/f%6Y"l4e:YLmT-U;U %e`GVZcS",otUgP]-;n`cTigB/Jr5OhEs)%+1I %?hGj_!f->H5)rS#&U]\8C3FQrR>]NARr6=i/miH-\u)So^4A7[5,3$LhB1i;9F8s.qOG+urV.m$5Bgi%n$BPip^m#S2Da#k7Xk[U %rFj\?)E$A5QcERba@E#F_2?,$;_`$'5*;U;it86)8#+)_?Fr_&`Z]BnUJ^&be2UF&#-#diB3W<_*3?Gn<6R8;p:*7I^H9((j3?]J %Z0:cLL+@m`qT/7hs7l_A55%Z.[Tbm1/T^M$*I;bmFLlH\TWcYt>l=Tpid]fk>b>r;f.>eTp_MhJUU[Mb^A_'k,_+^G'Z^!k8"\K- %bnkSjGN\ELb)[;KCAlc-X">[.o$1aV'qSgh"I=(kAgT/?M*hOJCM:Gqc69./I`Vio*jQAY2O5JIPVC*0E[`+1H;>aP2*56erLA)oHMf8TK%Qf8Yo6D>9`u`!b %ibk",SrAkbB(aZ4qpXg%`,4KQa"JH-ip.95g*D,HpR\b'[g`^-.XXa?n#5a3[lo`Yhp8.gD(NjM'u#Qn%!cp$K!`t3N@If?fcWt!"r)49#ObUmg#H# %Za"7hXEa9_)8`Y;k>+h5=RfkH9DRUL]QfMUrbS,$JXG-iofG@G.Jp+o(P;M^cX0tKSU^CuM3)Vh5g8Y.XDs]b_VeGf_EVamQFnNiDWS%_\Ku%HV_h),45IYZM>;^ %:O/dV,2o1BZM>g:EMeA %q10C!UFVD1qklH%\'!8'gnC>bZHUdqqWeeG@sndI4#GNmbAMZ#-YVPI`lE+Qh!*r-2+M*PGT2']Zh1`105c8hH$]fDP!f&jG@t9" %rf&"P6.;HBll=ros2T9ubE[8mXq]LBlgqkR,&Zu4G1gRiR8/2Kqs7[Mqs4@XRJWhbZd0^C`.XBrb+&FsmFh0%Y;\_/31Tr]@k,Bi %RmM:\eK0A@.A,q$8>&J"a=l;YGgX!4F:Ds.@g6>e&`SF5)m+drgLs6rFMQrk1'AEAiH>E0;[5u+&ZoCk>%fDNf!bBpo+fZSU1.]H0_-Io4^`E %&\59RqF#0n4`rW:7eH[:`Y+XU:K&n$l[5.l$dq=4Vu1^%9lm;hYajiXPj#3h3@=^tl>"k9kL1>'W*1RPmg!XodL;i\Sprnn7R%>& %j?iH^r\Tj+:$:ate6/]AUsHTr,7A(_Ib)(,ds7OCOPStQ[qn^g3['U#/[[&5dqlt!T?65O!m%Yq;3K9_L:0t`irXp6\9rEPS-#6MXG$#\HNKL9j),r]bD.e0`Mf?J] %p]>ksFrYN.-aJNjb,c)"pr0Ss2dZI)Qh9`gne_.@qi$[524^92eJ^)KIbi$@Dsb)WPABi;QAE/eQ3V7-Js2bogZR_d0KWL2p0O+Q %dGrT@G1&`!19DjHiS,'PI&57d?hA^i>&R?h'4$#;(#s5I!r6_q!^CAeeKcLe29qY\I$>9+T\F4Q-N2F;KnLN$-Cee\jCZlIR03T0!["&+hrEE'Hp$7gVr?k0!hiD6m2Ialn %LM-(NZhM;hqq17`B_FSEHQAKeO3?C8AacD"pHdL0R/G>WJ!0ZcI>`n@eS_4_fM;[9VV6.G(mR^;kt<>#Qm.3=g<$CDORT,;Cm&SZ %M>6uej:G8noWar;oFgGb]soD4JEkiDb#MSMdd+68WZ;3q7r8.E?J$[#G<2(iD1*@We)NO3*O!=ko\.FJK<0'V#]nNRSsmru12CYe %b:$O!7E)n4A&2S&83FM.">Vh1r)ol!G(,m+_a>Yh'5P7DSM'LsX_"%p89&OurPhQVjXM6T442!H"K&Ccq[PJ0m %,l$AP)!Ip3:i4$]=+nd1Z4&D7Q`@W`onYI81e/,c)[l:7!K+(laGjn*VbI.%PHIaifkI@L7cUjm$!B?ge#XWZo14/%Fcjlcu\4fX]1,j"h %Gaa8&>sDnuJn?PXXA?\aV#ulF]lr?3KXS!ah7Bc!$;%X)m@\=pW8"tA\?7m'V/!#,@bdb?QuBI'*guY1*'RW0=.]lgLS?#,$>`7@psl?h,cN!3`$mt9pk(riF\9"0M!BF#e5bWuru7Vmj4/OX\oHrdd'3!_$c,XCU%&h=0Mo>L>.(4sKG %6]u5b;2M\m[J]fgFMSp,8Z#'iQk]4kg5VtEH_*CsCa,5RB"iq3Y>;="ABP?.P$&G4!^r[]Be;;EqeH1ic])d9,!F.ZpChNW](BgE %;NC.%RNNI`lQD@),-&FK=8Y];:W;W23]58c<)_C*M7hB-2I<%TBIDVgR%9+XY1du-gH?UaY\UBNG\VhbrYer/KUBGp;4o%n`/AVt %F[iP;U3[lOQEuLXN9u:t+O(OT/@kL1f[S3`N:5tna;o#Y`HQF7.QPp$aSp(TTrj]P#*r.tJ(C!>0SGP< %!_U$hFCJ?E:%Hm6ffi#!gpY<.6-k#7Q*I>tWgujEGYpFDlQ&1Rr[)AR=g\hX<*g_0=5kA[@A7?kWt9dS;2E@Dg[7-T/nrKh(oJm+ %0iTlq9jVb-`h%R;6?KIXghVAY#_H2,S&V6[BHOdb51Z+Y/4A9NoI"(hC0KZ,?"5(BnC6%&a;\YC9V-D..=%pgO[9n_.>ieNPO]qr %*^^>:;Ra%+AFO_f6uZ/6?G3YC`gDVjCi/@BI\Uf!RTNl=S[R@:ZgO4?Kh,h@TNf=_YbV@F(YJFq$87\2S>^o<(,o-a>nE#/89gT. %1e%+=>7Ddj:h>!2:0FT4LIpss8tWrA:1VU9LeVF-/uBbTTVEM0oI&HcoPp=%2<0+u(hRB+Zc]#1PR;8sE&"`-$VG6HZ4;E"dgPIA %2bTZ(3_0Qj]j>rdtHG-=Wn(fG<-i=>Lk&&^E%#+ZkL&eR3$@pq][ %2*o)m#6O5>0#U^tHNR3B)d,SW[f+0si(/=4*Qf2R$T5W*6]&EXZqVlJ840EFc#?Me0cR="`r'MNb@0nr0@4tBX;8W!m`f^;ZE6Q? %]bA_CYZ/.cM-0C#P5(N3eg.2IUHFV+b<@1/;L"]Z.o<4F!Or9,Y?n>l;[LTTBX"=$+Zo-m?"t$g6`B;DU:ZhLNH\.eD$8kN6>Tgk %'k5o0\hK*^+YqtVBT"iOY=-c'prc('1q$0;b=la8UAH^4$.n"OZ6qZgR*Wt,E0V`%7Vjgp^.]cl\I,n'AIdIY73913"1E$gi\aZ: %"(u5GCd2bd%W=luSmc*UJBY'XR=NGuZXUCNmC]V/Z79(CDGk7+c`EZpZ>o>VfN_EcRA*Vh>8Zb:?g`#_cOLs`T=&O7,q75Q.-QdR %WjK^ggAYTMJB@*9,%BQ\9Z0M-Vedsu>%9kaPA["m.%1#' %09n(8G9XB`b/iq`A27tVNL8l9VlH3akULR5#2\p4-H41p67,nP7.$Q@%O^R')l6!jD>RCG<)S]Db,+^ge2j4;#q"b+oE.as[5]Bi %bsQu?Cudo/>C,sU/-_d@b@9\.n`DAo%+OJP>`YJln8DC#:a'$>qigHO8(:jlceOrGQ(N$!'%km'e3\4E5pU9H>mp!'%W="lscahqA %9Fa/c,0)C<(.Et4$o@OG'(k^WobrV)0[n/\fFB%`Z$J@f[SV]DWaMo7aXG[/2J;\6XM/YdOZQ;es"[oTEP %(65#K&`bXF8tO;_d`?:_Ag,V5d!j_D36r((K`Jl98Mu$3cMZ`Zo`&0i&@^bjV[E+O_;*Hk/I-QS5H;.d+qN5\D\YnYRm:(LYZr>?U'5Q.KeIJ2sgX,E1fDX[RHrTCN!DbiR3 %IJ`0]PJ>u0>lC*SfBi\>mEa*BRGno-5IneFVfimUITl]BP:)?n2boQdf9etN0Dsm\l_bGhI?L':T78docT_0q2smMD6eKor`^B9RT7$HKqf`l>Hdc=bbN\,;X@O]dK+\jt*qXoD1*BnOOs@ %Lgd*SV$88-O-qRK73p&t4aZR",aR8p?X$j?a/hj]8Vq2u/-n!U,!/^7@E9WIPMIeH-ouW)M:2Si"q\_Ih59JUqM5V@[#)oBr=j;3 %[bfg$"`\QV/;S:tbF>FKk#Z0Vb='h+!'XaG`tf5KmUpdA)p@9M62UuACHn+E)-/j0=9/U^-F_fA*>_Z"eH[G`25As>IYW+"2bJ$sqfJM8fPBn4H[G'&Uanh)EWVA3/]#c0R6ta[>N<0Z+Rm\jaqO>j^iA %pS*^YcIt^1Ld`G,SHJ4h7JhVi>;(FO#$B`F"T]1fV)i_!`!Hq9Ft)+cG.PEQWKVO7W49\h#3h9T-DQV(kHqnsqdS9AZS&-YsL%_8t%=gXtmVN!lM2ZF2!j727i>;__]VeM->SNrXkhf`riY %(1@_)(CDmoWM#.V3t_t=CpcO30dH8"`-s[Up"0WbKI'%)rikmo1[kk^6W&$j[L'G\Cl\I9-OoKad/%9a^^8`71..EuT$V@S2f %+VOKV#F;bQSV+$grEWVSfH^4P<()%*`"s(;[OA65hMK@`Ntn/(Q!(k^KO==?.UXL@[(KNYah8.q5+N:(RjP(f/e#$4%$/U4&:Dq* %OR,4bq1>3Y"E(0qS)VI#i<43b&SF)e.p9gWPUG\#'j`!E.IaLM''(`8qBP!Ie@sOj8R8Qrf[&2UOX@+uI#aL:@abcCVMj4X'(sn5 %`CFKklu8'sP"Ju,'2h*49-qmbc60X8)R9-hIOG*!4LgBpW_LtsB/G=MhG_KCS-r3SmQ?GUX9Zs1h^hf!*It?E0+o_HK_l)'H+62H %1;tM9Ln\t+D9q:Rl>Nr[Ms2Q-Xu__k)>3Fg&nDW:]9*\1^7,o40dJe3b:rM).dm"CbJ\0GbqDjC[bTU,Qfu5,NO^ %.+mV$Lo'`L4&>.^@*)Tu_W8,V:a>B90eKY30pR3*]^A3Dm8sV[+(Sgq+d`#H*&YQ`q2)APJe5Cp_7dX!KB*99#Z?Qj@/)WTdm:nc %'0BQ>e'VO?I7*uOi=Sq(913PfSG([mHqY%>muW[iV$_rn)3eG@=Q6.(8bA.`Hn#R],fn[mMl&;1GB_2>[j@]TH55*tO_8d0LP`m! %K2.>a-h&#'(rPV_^8k2oa`6g=GRb/".Y(GU@a8^3E'\'"aWcWFZ0^1+nA0a92(0'q3c(KfibTZO+1&Xf/>A8F;'esLX0(VR7$N?_ %*blSti39NRR`!:n.Ldp[17^+@W>;C4(E9QQ#_j31T"C@'V\H@IG0XQf4ALS&)Zu&$S,d1"g-K_(_N=o+MPBGcs)>CeF6o&f %Fr7EPCU/L+LXQo7LAW>I[HVgq>nE"MFPtGGMRVUj6#7`K7\-[m(!AQa7/:lIT8>Dr2"CgkZ#7S%*&afeBGhn.'5ti).#VDoaUkJW %J7S!(2'ck_!J8d7BQtUBP%ngKqg$$^_2P/4o!jZ=#"rO+)5j$:-m9c[2+[?oqONQ;gU2T]_[IR$V&W5lIrG'Z%d950N:!)9 %jh8-M6OuenQo/Im?*_nb)IPDbRkl1A5V:0$p#>U@`+glIG>E,-EH)9D99NM8mW:=fJ^,`9O^H$59;V&V`Ut"U.,G)"XF'ntnEQ)j__C %-AU?29kKL5&02L=iL#"Y0tA`u4HQi3m:u'"BW[tL/PDX=S)E6oLYj8_S09UlDRDbp_Q4:;V)bqWm>" %=0Y/kD11#4krW9d*+*-H1*Td.+`omkCV/n;jS+JA1+nsd99Cehi"FF67+Mp06,-%WTb_]G2.@ufJZHd`P6CaJc_Z(cC;ScYf;umj %"%8=eE%HnVCtRp14?Hj@M=_YWg\4$Z(.G*br;GVnDUfGY@*)6Xu2pDF@.Ai;u:/(3c %_W>P+(p5C?2KmY5gAjiQ"gOAO>+b-%@T>'o*QuMaRpF=R`L==IG.]]%en^@U'e?F+]%64T?^mYFh23cYo)@4T1mcc7 %h?,EtbA?lPGRotUWm.%j66;,emVf<0/[B_QB]m2p,C7CTmN9\s^&q!CGFIs9kmO\SS<4/C]%R8BBp*KQ0CSA)DrWSt+c/4?FZq17 %WC,tu(+%Qb*DDd,iOY"X1:-adlM9/;]s(qhP=JpleV:jn,Y!])';Ofi5,)mLXgq_TkdanL]@(FS:c*usD.",D\/gdI&9]d6:1<'qfU[tDYL,!=CdUPUu'&kf@;4*Q-RUo5"jM@.M6Zm6bP='*keD:f\VCn5JK1=j"o!N7RF$fS% %,^oqdD"bq?8mM^$Mlr/ti+FP2N5=$GeZn@Z8AV@CeA8]\iXD\JonbDK0Hj=d,Ba'=r5d)=,;X6loD=X=Oj[XJn`h`p7TYA/]2eQt %`2s<7T57kc`W9@3lg">B5$EEM+?.S]U7Rst?oBqQ6h24qFage-Y`-B^uZX"H4$#;$a:1DX1 %_(=5aMCs*ucW0ImC8,!t7aOT/IbW,'%Xd_'bkO631?]KCU1mSjB8:o)@51>JKgJ\:V#uTT+7)3q%/_Rm=_FgUAS_RC;qFOe1T-/0 %rfN>/amKL72XL!oP%_q*6Gt%p+A>fB-=]>_kXmk2bt78(+@:M7YXMh9B=EBBg":1S-TtkV-?BJgk&]s^]ATQ(1J+nf+/n=n/eO7$ %[V[."*;l>J=(QD;)O:--\Wi//KrM8+ib1)pXj6PQ%e<%n5kb._/HIIe<_g$(K+F<>3fr>K$Vne!GrUoKhJK]W$B9PrVAV!gF4lY! %*:kbJ\BWiA)oCN)06!1;lW"$8\V&!d/fAptK--SqF)VkgW7l!t>_P!2"M%LLW_nJOJ5.E`pZ@Tp,4=G=bHi-)P^!qL\n"P8.tIKdp`G:(q'#n=Mo4@`hY %mnirG,1iOie8=Qb!f(=3$,*obnH?sp5'Fl]bb^e\R7HM9#O>g,3#9agUm;[o]$+3J@)Y]EJha]1Z,\[5T8=.mB-eBB<"!G[WNR+b %6oteAjCt/r[T,R/Y`T),NjPc3_20'u:MMbR,6D_;DRL4Xd:5ZpFFU:EG'8D38d52cTl96!UmT].'hphQ),O %,@qjb1`EZ4*'I>,bd?_B!!`fW-CD24F%+_!t8oNL_amY)pkB %lp"TkPAjA<-!$PKWF(%p')14^-!QO[\6n`u1jfKVQm/nDXe"a!'+d6M3GLb6>RJ!6FBUTh)Pgc'H$s0 %R68`+0omY6cGL3.1?lhZB4;b&j-(I`*f6%:M%2P^Ck@3>V3Mt/jc'$g/qqZ+_rA&*Q(S[D'I[R*7Q(jf*I02^44,GfOs^Nj3C>`9 %'0^lJ8ZO7/iaS6C\`Sm[:5CTdctX^n$Th4:O12Z:)_7#Gl$]qV,'4GVRpEPgG%aDT+.Ia&]>89J'=8c95t&t7PI?\NS4q(2Z\3)4>9o#mq4\'D9tf84HM()uAubg`-k9fs,&UbFD$`75?VFhL)+oA%^3_2JKI.P6grGm>[YUn*4^<%H %7-@Ahqo@2V)eRP?SF;$"a9%c_^F@PX;eue1MeK(]"D[8S@7,)=J-Dk\4#c3VE?5?2qMYfZ8Mk!\09[+pqHYgRFko%^'Bcl%Nc#)[ %dXsJq@A[N(>.8#^A/hioEAj\Vc,)sp5aVCLltS[1H=;5JD.I;?q'TuYjsrt<+%V`nq$L0!^mFf)roKRD2mR-Zb$@^1bu8bKf1Jf: %CN1PJB3%)e:gH0NJ*1E4XA-$#6.;@`@]\H[^:OqhLM@H$]YqrWZMZOP+JeKB7htLbFc(&3n_&!.G))!E`=F-;)Q+Y;UgdHQY_!TW %E3mXKZ\1k\jDQ]KJ)9n@Fq0Z^F17^;5*Gfo'+`s3U*q;!a-r`\9ib9JDS!"%oBn.+ad6p0SF>XNF4]";H5gcOTTl)-d&UVJH`Zk@D[=lA[@LL;CNAG>#H_Padn7V6.p&[dR^*DXT."44q'5_jE$?#PmQW[)Qp\j9j'-7!-lC %YQU7@?Ja;@pCIB-@8a,=Nt>-B4.3s4&pRih1TkYCh1c\`c?L3r:,mZ9 %$@QesU-eWcXV_.1"a+u6`3udE-jY,>Z.+Rj5s_Vj7%=fLBWqbfi3LQqd6S7%@G\_H2Nt"M2!g\N:NiW"uQ@b2Y7'Y-@\"k%P5<(5j/Mn/*?uj9C %3[\EEmJNXION$VQVJXgR+/7O4P!Vr,h9HrJL!+\J`3Nfh!NA'?YngUMNRob[OOkN=7F%4G" %Ht@\df26P,-lNt?;s[.69P28@t$hs[cZd"@^`;3^!>q?=:uoXWK89Dqe%E894YpYl=EU[eu=H1k?>ts/ld2Q %jRc3k_Mb8X>_T/I@4VZ:?'5Y9+N]tbm2C2,sm8HHKX),O4;h[AY %Hb`=4]3l_R8[p-kLRJnk[XGq).8l!Z5A9\;Y^?nq1Z$&g>*]q@+-oboe:,ime?0r9Z=!&CgXHU)-$bH?D,b-p%4-548jmQd0O7b44f_,0h* %bCk"W&%G;<@(QJPMRL&3A0retliEP(UY#r4;nBID3"lhrJBigV?k#432X9,W1SokR!&X4R%g^G:`QfTpk[G&>:$?+L")4K^SY7mP %)S%Yk-G!<3e&:228K9:#M91N>(bIl#CD#<_?72-bU1PjHN7p"OgYME %VVDd\J8P!$G)"b)EHVe1',0.AE`7;:#BUX:Bb/ijm'kf%2fYG_JDLF,>Q`m%K0A-O+meOr^^5.3G6gt9YVQP4[/)pn32+s-!HI,8 %)AK)4fH#nadd$7>S0B`G"3B/\o*$Be*\9T;Kt\?S-a`S1J2u#r*mgG*`EqJmYT<'?cRE&G4oh--19iGS]>J`6B@6j[ %;]b9/eVW7eJT]tg*cR[u`BAaBYfQ/3fa5'5$/,^^*jD2I0A7/N':SqBd%.TiQf+EZYQoQRFE%hA-QXf^4@*)82cUcG:5>80BEZuF^q8nsdb4GE`8DtD]n4O0fE:*!shcud1mDP`J2@XV3 %a2%q-G9gEqJ9T&N`HATo)Qm@+]AqkEMqntbV2'IQEO!j`5fL\bp;"Y$`4Q=1metlL\(KZuj*nej\IUR9G6K8*pQXQjTR5";BJCV' %U?K=dX!&bQ4tKudYXHsJmZr+/rP?d8\go"/U?^HbST/f"_]Hn1I>$qM\jg&dle_ZYbE^B(:j26B&n`!kp-@>#(Md-bGd%G,0"b_1 %Ge84)7,50dQC&oj_QKiLk[97Z$i1pc]@]_Kls8!45i8tT]#?&:3kS%uah:YrbR]9mhfHM[+SOp#C5WLYbj9fcFOp6o*j.rI"$=@;M1OLdMsYB@NHn$T3p0`)$?gD0F4Q!jZ %(5T]j&%9LM[@OcposG%:j8,3(ZUFNS%sGtdm@r%Ske8Af0(F?acIj5sf=KTTj4?\q--ECt5YIVSj1i2NrL0Or1Y/`Y$VRkaY!q]9 %pPUYI8,Tc!DMe2D"hIu:Inat<*VUA5^`)dI4]l1ng4Qats0W*Dj8Yj32$@<6YVQJ;H<&hpoL*=LMQ]d4T$4]p\E %pBM'o?p*'^'A,_@"Y)4iHf+sp/A=@R#(:]3@.^Z.3\\-I_Zr(KIs6QR'D%P-_=h8n&o8Y7=.EZ?Y_Ej.%sGu#7MfiR_57S-NYcN0 %Bo*[C%sGu%2N;C,)Jfq-`XV@+B7V%=9PnG/@.^[X*]u.@&c??fYXB%OLG('CN0f!`A_5D]J`?p\<3% %V!"J!.J'8be%rg%ZK0\i8(*L]l?jVJ@FlQbYON.C(JK]6NH"T+tV>e4m+S*VLej,Ap %K*G:J&h_j2I(KJ-)lHq--C^!5B@(2DW(Ye( %_$C6M[V^SZmH.Y?-ej9E_393V$i"6gj6R2IChm3tKi#5([/a&^)p[k*b33:F+Q]5'&c,mZ0P*&:>G9!bJ!3V %ct2NgGM$Km@V=V1'23S)?LG,DcJZn%HFu'3ZAi<"^haOI&BnE^gDP[TDiUAsQu-mqJXH>;fbo\#cH?iZfcKJia,K&k#0:TkG(sNc %:9cl/ZZWO'AHmPn?tOMc#;icH@L:>=#A`hQrP?bZc"7mJ*MOEWXFW4_K3_oS]*W:$TOnj"Q;GgQ:[AM@N#q\CCGqsP'!N5aef^IL %_%O-.*paBk%#JL(\Chqi%,G`3j!Aqk[jQCpAtppYSFL!"#\Psf/3o_b^4^L7#>61P#_6\ec?Nh00P?S1QZ17K_#i!:*paC$N%W[H %Sag*#=D-AO3s.S!hHiN1j1uepcCM^$i19atKY\/rJn%8Ms!9#CO<:=[D$PZ-&iFYL:1D+ck>3HO)tDArJihVq5qJQ"tIuQ)3!3l"8ef_3a_%Hn**paAhD>RiMKPc,jTs3q#&e)B:=G=XNq@X@o %*\8J>NVb:nZ0ut"j2r=Q"(N9OgDq40SHhSBlk1Ao*\7>tm?$ZCOU[>b#=pba=MeSfIB;:6Q_6ZjX>/FqHZ0_gih1`-61VHa&1O[aFFOVJTTiiO&!g&l?3$Aee4U %IuOW1G+\7*9K=_62_Mf"hu*gSF4B!OhlC?A7&"F4hFA]5%HUQu.2#K2q5^M=(DPh.O&MfX;6,$+E'FK2o^(Ha#Tm %[dCIKk]VH[JDIY^^,thmFg4%#[YZq9nEp3_=86Wr+a41LmUGA]K%i]K,m\^EY^k[R,U^d2Xt($K:u(bPG;*ou[?bdep0\3Jh;;=" %Enfup4",:h+Vq<;-?Leh\N>3?bmatm%@k$pd.Tg<^jZ:>f#88rgEaHY8@Lb7*N%R:]`h6Ad!"khR=3+ME9AIaF'7CV\fq %Q^sH#hFG&pRTnfcG($RI[C^4s:G:n>jPKF.JEllXmhH-&:HnYW2gtM6lW7Hkq"h%\/,fA.(Z/J(/*0j)?bO-4q>Jjg%i;^iIR]'; %2TrjPs,bWq_7:2\u;@ZShOCo<@"FRVHEX)G5j'I^< %o.HiMI9"F!`e6Cm>T&W@>bY,)?06`<*a=]gc*V<*1niOD'm>sF7$1stan"W@UgC!ODV$/I %8k%t%fGIcIBs=V/C:0_7N)"hl.XHiNI4??bI8d+BS4OE[RW2`O3'1ae!,^'61)R&D'M$A,f(-$us1-e-tGQ5oWhY'9u+6jHV\ %1F0@[`VQ3JiD4j$@W@]t@=V;(6qtF?KRmI6-kpMh"5p\SaIe_)ohQ&T3OBtZQ%tkD^>/h44?J(n$-Q4K %WLTg_flMDZV)dqF(iLg>rL<=mF/V_1l>84Gic/(Si0qjt--07aTIbE0H,E>4$q;fIGQNL5iY %pJE@>,cFmh=H9IDVE!X4YkZ'd;+PQ*Q,"s4/!Na!%Y\=NBYbF$iuUtdin;rX1U?9+2ue2Pf5?A`gJ?+5?@RIrpA3=] %Rr?We^GpLeoBKdm@W.n;lH_Cjhjp>9p?(e=8Ho[O@R.K3(u_(7 %Y9Go4nl"94\H&&=7no1LX.Lo$/?:aXgZI0A)6LIlA$>T3"^/+T.uPAu`HbBngItE`+MK3p%$6_\Z\4OcQ)G7M8NDobjA'pVM %]k*<+gWGDoLmO6>N4mfs;iOcK`H6=Oq?n7eeKW=lPH1Ypdr9YSj[GKnW-J2M(,V&3AS)e%"F)XQ&"fA>LDS:Np^lfRhS-i%ZQPO2 %):e3?TL-;Z45A:9%P!d_GX(]aVM`gn<8:[BMNsVV+hVrZ=Vd8i`]Ujb6U>G#%lLmo!6Q3mZ&Zo'.l&D7JOi^3!E^\efTk2=.N+Jd %!Be;\'Yt``1L/,!JEa26p,Ik*0a=UE`ki.VJ.FP"3jhO/g)$k>bab;S;G9[cD6?>-gSmmkFtV]V8pm(Ggu8Pb^hY'04?Bp^&D;C]J(C+(7^fK1cg!XaEi@O&R[RPB_/p5MVCC,"/cI_!V4`1)8ejng55N>!ljC %:F_[A6/l*RjXhu^2<.6==Lk'S$9.QQ5No>q1U+Ml %E,+tsJn3'W@WLB/j_XI!>!?isAAD97OnGLt/&&joJPC?%b=*\> %"TW/Js(0.s@:03QQXNQZ:+E.r=jZ<["@6EB/Qb[YFKnB:5uIC8r[`7$Nkb[L1R,F0"(gP$Z!kja3b%+%BYMqCN$q6pkcm"UXPn>fC/`HjQ0R2?Mp6P)2%W10WPZ]F8SFojsSQO?OSXe*;UF>p@eAp,/ %$)pi2I`eRSHne+f %7<'JeiG>FE_4cqZ(-1o"K^kr#O92J/Fd$NJ&gh:^&G2!D$Hk@5PZ[,8gGpb2M(qlS(t;N\\CLK`1ffB_E-/323_qC.SOn]=,P4&+orli1!_C$<"mU%\V,E36Q<9YZ^%%',O(Fmd-uhnE*b#*Ln#TL:%T;[.ZDl%<D,f^=F@<0I]0-)<\mBd7g_YgF*)VH*m1a;U[bYBhE8/j%QK/Nmn%r,X1R[Q'=$'/s?%t`@8 %hi[:VUeHqoqHP=u.\P!?TeKLj"^-(7-&&B.S=K015^7QSj_`]T-hN"fm(3"?_'[pR6*),'>'.(l[7LRB!_TVrO\(Mhf6rF*\N %T5[L-jY.,8>KeQ@AX3W(N+2t7D^PC@5eqEYO%Ga<,0$UTgkP/c-46fRe@6:Qp$)g$'-6 %NG7oN\TWWdOdH._.=iur#WgVRA7:at8q[iS61oW^"f6gkP4jRFM;!](0LPV@fo$\S %9oc@Z*O@.=E[U[K74[O=a&)Gr-^Ee,FoZ!>-C%Bfm#0nu7TC.9"B$7<`*(LH=\P/#1GgSa+3EDAMafGK+fi78*<=4WMK_U4dEU0i %X6O[qL)N\II[69@[Du76AWm^#$t]9LB-Vq3S6,'f;11\5j;7+Yl^/+GB;.T#oUUBOC&mdeiBY/][WRjiFakZ=VhcM?73i?E^/jo^ %.XV?QM%fTZ")mJFeC!KNHD]rI`J2IKrDVHGBub#_Z^>*Ho6[G3BanmBm]X39?Mo%)GrcTuQ=,6b"Q %8dVIU\n`:bV&sGls*\k?ofp,?=Q8qARk(r*"H@s,h=]H&)b(u)7Am6NLO-:$n6bUn(hBPk@_b?dY&9/W,,b[)gN %7Z&?])Oll2-Q%(]#ErON"hJ\s::lW6O-3ZZFrZQnXOU;[qO(Uf**Q("\75DKMA+&r#3HQ:e8&#;863b6B:&JF,"WtD9Y?]J"kskN %RYIm(6q/aTP(Z@M&pHV;%KkdtqHB:ijY4Rb8\rK)jj$P>4,Tn5`GQe=O9\BEO.6?Vb8REqm(_oZ/J.)gaUZoaPOK!+s %2.I[`[7nPsU`th?(1*-FgGD!7X\T!NhK1rWKgit>Pts(qf#U2kj^,r6@.PRt@Ihi4KhE\*i#[#;&TO9s-C?lf]ckL3'Jpr$H7$,1 %i%QMN\C/rK;LYtbUQkK5%L?KH:^tkV#k7QdW5=`Z27sXqc#g;5GDTIS`+9'S14_9t6`3"=e"9ViQUq_h0*&Vu!4!6s\1/KE=A(`dSVQ=`3!2k&e047$-HL1Ia@5GIR %FI),e(lo6</9`-4MjE;6V3aiRon1(=9oKcZ&_%< %TQF#bVR5o?R8KE!bsI@(AY=]"ZDWc8$Sa@M9.$&T#UFcB;'p&Okg>qDh9r:CHtWkko`o1/1.9&Q-4tX9+e8l/RB[k?mgkU0U#@7l3`_p<"mEqpJ^k6:g>J4"!f'MeRg"nCLbnD/1%'QA %:J4GG3HU[cF48"\0NmN*b/Gsb),"Be:?0mg[kok(_c#.X=<4s%Mai8sn%=fD?0_.2"^Ud?<0sE3KUdD8f5bH8h#uRSrP*11A %O::aYIRmB-NgGjPPsiij_""?ME?2M-*@2PS!e>7q0rVTI$^2lg^,?_#SM]V^%-nNa;TUr%k]KmIFmboNk%`S_Z^es+*&CXG7_N;a %8`N5$7@D's+]Ifu*[#"uT(CmRNZG=U(:\OL%ZuT6X]F9%%G(:*NU'<@QNZMpFpP!:,DCQhk=9FE3#reYu+OU;t@=3u@"Tg'^7R$'a.FQd`i[1./'9!0]K5"u>OaSVdl>*a!K55VV$n@:bb_aXC#s@$mZRX!/n#P*l=(/#JgJVT_UQ`2$\W8M&L0;ahLl`mb3K'TCM??PT^8?;pkr%+Y9!MZ,3frrH %B)+0m03BoCpPUXIV4gEg%12T1YQb2k0O:ukZ]t?W,=amEA[\'s/g8+qL>U14Qdh$%`-Fp9] %aW[!&K@E;%5q!D.6XnQP:tBX-SAd3`jB'_#e6HV%J`MljG\EMJ'=#:W/V>4`,t0W\2PelF5t#,j:hD)4(F'p!*M1Y?ab.Bbb9Glj %=pu]TZH^V0^SD:V.))5t;OC#2IWk"QA-7tX3)O.>`S`'cM'R462:=NOGGj?MHj?R@@D&aC62Ul+,AA`).d@YjL'XlC@J&3,mUa.k %Jme7DLhZZgF9*^_/^JJ18I#6R:RpDio?V.T+WFZ%Io-]>iOi,X2!9&+g5Y1SQ]c&b*mS\]lW8oe;p[8RF%O#WE'%(t-3PMqfGJZc^()dJ&j[VArtcTjVFDZT0Y.lhcciP$jZ9VP94o9@@nVi2MH5.HHE%Gob5]ZJp-Ug %30?o`AOT'\[Sg?&??E8QP1p'_K3UZ^Db2:o7gec:RUi8M2%oI$X$Ja<0TtqAJ9YSpCIa:!%;FCl3t;c:22KSg9#\-CW&KF_9GK('pGRC\*#`tRPOG7l8OCuV:q#jElYosjg2#MleMNm7S,;+q:@hEsi>3NN<+/9<2^!Wt^.WP8UK@%l:?[-LPV(SdmR\l?- %3\?%8&NN']V"t?dJ`%#3)t,'ROdrQd$W]N_h:aB<>CCDR'V=7 %[o$4$526/BCQ$K(S]LsbnP#rm7q$;jP.aaU^6<'i:BR>'aJ+C69gLiH,AsMc!,?7?SSR0LbaURBjKr_Fi)gQdgK$,!HDNU^]IA/#eJ8,arC7paZrq3D/Ro;bfYDjj_Qg@1Xf'V5Ts'Map`M.d1s%E&`u[-R9h3C(`LY`d5nR<:,p)RKTgX %>,JC$&K+EAZl`TJ.b@1'=`[I*.>bbp9-$&c5F=:oX-/$)U*St5(>hn>'8hR-X=P?[oUVd$C0jk/mXVT2+r$%[pfE`(YN=I#S5e/0 %WF'J`PlVG^C!ul\;5?`g;;7[@]7?gk9c.I_L-5.'<]F%[,J/\Z/C*/6mE,UY<3=4E!i'&,`CRFfZ^NBVR'*N-Kr"]@ok@C:fVA5u %]I4UP!ib9JTu(-uR2+DFCs.]9?7EWgr4O@uBaba$>q3Zh5_t;'1a8nI8qN[g\5ks:-F(sMJljbii_Ccrele;1auO%\5>Wto_Ek[o %-Ah@GYfd=u!LK@),U]XDLY*`)ZUWhl8]Zk9"]neVb*n5Wjq4SQ6..j4oL]\/UrnjjO'\g>s!5uJKZ=)iLk?"ua;SYWEUe':o5p*= %7sVqF!,?2G>Qfc(e4&7J4h_U)o9&#Rs*sb!FLdRp]GA16^j"EC2gg78E&VRRbfVsVr?.T(&$K.\0.D/P+,9oW#"b1!3WM!JqWVq# %iQJ770f5=nRA*Bu)ORI/Q'IWP2lppLQ"SL9QLg2`53j2_%dYJ8V-hErVpSit&kWHe+PBP_g-H'AW3:gX4%dd1Bc8t2#Yo+7!D*pj %&r-8jUVlV"Qr1kn&!V8NqZ&#tD%,7ZHQ]6ZZVb>,f29)u(91)jha((IdBPC<=I$oO'73(qMKE'[ %>^5+"Jj#T:G$2g;:Ln>(i*CSI]*:2Lget4STaZ#UXi8_Y<#;GH[a5om[NnqUJCL4pY(X+3!AUe\%o:j^KEUNp70r)!pf=m*4hhB) %>[YP:#$(<0*1(EqXhAoV?9UACjBd+OQrJSA.0q\!o.i7aFiQn%0F61,1g*mW&%.I6tChN0Wo(2Fpe.>WT#V_9m`1.&Vd9E!(h2,o?KPS"/HIPO\*c) %%&4hlRfbq(#ej=d"+,a`)!l\o,H=pT>$EkK5i^s6I,(emAW+NW!dPP("*WbGR3\kVa3b]ob,8CPkU"Bc5mZb,tqkO3hA %]+fQaL9n(UE!sATGCO(qDeLIKqa&/$OZJ)d+UY1d3G_1a'0VR'4;9NZ?k8p$BE.68Xh&!;/Kf=Jf'u7MGWgUj<4l:er!).hIs`9%hR*W&h#n)H[:gQON0XEG<.)WqW-3j=mQ`1d5dng-;.qI70*7e %$7S`0\/2h$\:?ZPl&P3n!;.PLc8_Q>-VFi`p6*K<_Y=0J_QoET$A0"3/9_.MD'rhJ-@uFi[ch[<.d'k,=elKrWC!&D]EL&S;sj=o %.<:96W$j&M2$N7p8('d+YEd^DPYOL*^%]d7T]N8:5 %nTr.Hik=qkcRRjZ#\BT`gZoRm"A#!E[B]:CkIKb!#;dN]q;>"r/$A\J='7QM4qr9@S.##AD._m]oesjmAh?9$jG_r- %!,5-N+^SfmC1&!oj+B[6@MVtQ8Cm@MN1!+`J6pSk@@%kVok8;OAe(ZNh\qYcd:%n5%tcp8.BTf_f_.5TEX&h&c@^L%%7 %3m*CT^B:'e+nCiM,q#W-(OHHk@$t$A*QIRe!L#BQUf_`&o-M8Z3I$K:jb@lt*F^Q>_#t8a8'SRV"AiBt&p4i$`@sfpFIi.>dVpW< %Y\?aVN/++c=So&ST#NB&2-OrD8EAdep(cQYM%G/>!mCC*+;pp@dh#?F,,5/qCh$s#S59kR0X4YoA5QbFPsP"*Uu?#q84+FK%bA>- %;o(IQ#n>W!&k(&5!PT?PZEQW(81-kJN5*EI7Gq(j$&;3)pb>=JjG9A$BC$nYhDgkWhP9g*LN#d,ooMQ/PTnCbV_>hD1C4+edEu>"JiP4gL3%`W,5(Om37rW#LHL,7REBcoW16mq`?EN?Rq-1[(BhTQ`;FhUqmT %BCk;'N1[R6IGVj1Guq?8SW05M0mVWmi-ACFk?X(>^;4jX%,N`cEIu35C\t'X=h"52el;Pj98dC"]Yjm7 %F16Hn9Pl"B@j/F?XJdS %2elep(R5S0d-B/CPG\BJBb?Hb`1p4_PA6lF[Xu:-74WOpiS6*_9Xk %`Yb1*!2tS>Zsf?lBl3\`;tP.X>P6!WOu^Ms:_W0NHLJ=X[+lk^fiP!DaC\ou9,,,3Cbf'.)[BCua/5aRJDMVH=1V,3k#*kDPbA,iCUdro#'=1mBMPNflsP2R)ESPF^lm,` %$tF8H4:E&Le`&C>Ls?eibmlh.d5E>UZr7caT2F\"/82U\nbaRBTi<%3Z4a4AVB$`&`%e5/<`([]O2^6R5qFt$HBHH\RXsO3i_bSg %FM1@J5aBj2UhMHNeS]90lpfubTL.i?qQ+]sQI-j2plEZXSPR*VXk[%Q(6SEj^H %"61k9;/(.r)TZ1#gt!1uE-*uj$fK+r/V[SeSVnQF3:q*1d!;`=j]NY\f^Qf;i-JR@5"o?*nd[%C8BGU2>J7BhSR%\A>@64VliRpb.(9GZ`r98#&[_EJ%,E %+nTo&JG[J[gbYl#/!W?0Xf*oeYA5`rYhhr/L9MN:ri\d- %FOq.5$b2)[$:XH-Y`Y<#j:HGJfG"]\e"[`MEACZgg\cfm[F@i]P1s7+NU/@J0`*>[*#rKTCk<_PhXJ-*LZZBG0kF&b_FC5?_U39\ %k`_?"hF1*+QF?=C!g@;0XcE\jp1-YK.\O3gZZl%:E.>UO0\Ap.J0o/!R8X8SE(7h75KonK)M4EQR4:(1-4m%3O.EO[]gQ8'3Vb#8 %TI>8S/7t-Sd"p);hADf4Ls=dc/bi[,5%7lcN[1)ER;$f6ZWuZ/B.BLO'$3*UT<4!HaQ=GPiJYVkbihjtg %,d(CbK/H[9@9r_=,dPX&>;!pr[tJaYhZqUj7b5!((`&DIah3Xi+qkOM9r'9TdDoD(./=$JdrGe.+P2DSddA?*"qU1,mgCL->bT8( %:Z=\QbG@R]3P_$gpCF73.Bje#U\l0*2a!.5*q*cS!I/Aqh--F<&QI"-K?$]$%3NKn#u$\1A-hlce`M1@U0/C:B[4'8aHsm03dL#2 %kX5m98#0[m0J,S$V*]'A!\i*dr]js2r8+sbm#kJRQ&6\!n'D>:VQik@jZ@,8$\_/Z]FP^LclpS,)%C;Dg:Pk'KP.k^D&E]+:AXdW %M[(*$2SEE]\l'Fc-t@/m4^HIW2UX-2E"n[NSb['C&joMRf$U_AE$cG&C,S3r=DbZ&i[8oImL!/IW52$<0UfO@5:.+jU1ha2EaonT %Fg2d+$eEPDU$X!0QVJt$&FgR%45^>!X*L_!-+O+]:CIDQmUP5!ne_<0Kj!Uu&TE\q"iW0u=<\nSA*o6&;`Tf%"h#YFQg, %0V10uE]+/68#+bEW@5DI*HCCL)&seA@SLjt;hTRh+_@#nA_S:qq*d.6c5^K=a0g_nK$':.rFjD@s$tZt8#,?]E(\Tlf*ucUQ\V!; %CWaE6-(Deca-Fe@&M`([G)_(^;E,rM6u-EU!*,Ub?l2#8RUkQDUQ5:/LGd6p'Q\F:!5n30(aj)L+p:&IkO@S*5s00OHM*Y!%r&C^ %ES>k]OG:nj/P]"a+/RrS22"=3ks^gSVU!@q*5qB!KQ]!IMGlTVE`-RCWTTs7+[#EsU\Hs-1im&G %q-MbiM1AAV#-O8'8BFcgjM]/;ib\QR?9'N4Kk2)(f6_61ls^]oJuV#!/51rcTdjdkEVQ>;8)uFlAMYjUBgGo]94=DWITnIASd-X> %VcY3\-2.aM;),7dE`!_*n#Boo7(j0c]0Yp4U(DQY`""m<[?!FcA"cD6T;->o69/_\g[6'5:Bm6acE2.J`,\*Sd(,[E.-JW]n*GuS %8EDg,0g[uAA!SOJbSmf&Ej'lbVJ1o%)-+skNm/O89JPR:+VR2nR^T7Td4aR4"LiQ2O;g:g(;OC[)8oiJ3pBn?!tWrb]=q$5!f2Nt=cW#N((,$/GTsoZ9%beta4J3#]pbM/+u71cimKg+i]j#8Jf;9OVa#bg$ueLl,95#G$o./m7#'=rj*W %(u+6$/G9GuSCY\'6Boa1Sg(B]UNO_]Pe"!^o386iW22KG%0%0)F[iAXl5-Cr]*pTPdS"Ar1,t-ZSPEq^Bu4 %9]rt12R+N)E]hV[N9;l5.)D)ApcPfsRWTsG;kK"J?st=MX$tH^TK%9+*`H9AoSZ]AeM5O:@n,5#Y7td@N8.n/p^&BM"pHlG)9ef; %1T5&N8_cQOFX2W]E8.,(BQU$N?ATh/YWR]dnNHG_70hs]U%k>'S0AMN,Lg-f+A`ZrOf"o-J1s?S,bF?cRi`F=j4l0I/uC"!A[@4# %WH?>@=(`QL*QOm>4FCIH./KX*B6@qhX)>7?i>%7g$hh\!a0h6(^_%4m]X?97NuPD0I&,gT#J_bucfuc?)]N^5(NqiRh7QnNF#3XE %Y_JYdTZU"Z$Fbt_R_])#&h'0;)D>n]oRM[]GAWqG,'bU(>=n,\B0`\_FX16IN[_nGi*Z#1APO!<0#FQpq"[n.`:BGC,a%[S4 %Ror1-d8)/`[T;NX>eR7(U0%7(3b-e*\u\T`qP>kKsk %M\hl9!>+O*s)ZVK!La')7AMV0'9e',2j?!X6>W@40lf/('V6Tf18n6jaW5F9cJ1tj0;r<(K1sCFLm+X_p]%c^P_6.S^q!I3!GO03?'(D#4%!f %J(I\)@SX_%rD9S28<2dCb6@lIfa"%2^"r`CFG2afdSj*YNV9r6(/M3W0$U/#glo"1]'IjIVm5SMo2--Z_M"QD(#iLeqZ(iE&#r+^ %/WoS%ID_%g`HgQ#`[n!u#GVihpDRP5_L;L^]+U_U/0DTs$qf@V\ZmTO?mC?FVoD5Y'%iqjQJ#"6^+@s%oG+G%?<&#Ii#St+m',1" %TN]/P3TplISU/L;1(%\pjq]Eb( %1tW.@N(f5M,kDAfi^@;7)g!I?0*pdQW+rfk$Ed\&Af&i7/D=PI %7MD+8Z6l%^Hopa?N[)O%^'?#+.:5@&3If;CJ)<,ZFVT*TOcO\Rna;IH#>_unFpMiU67^95B*`%1gl,?JdbU0 %e&^$MSg'gdP:O,i8;,NIk/IN %c'.?q-`#UVgLAIe6@J>uH9D$e;&F+Mjq!-JrA_?p_1EqR+"FjZ=rZc_GB3j6A?k61,uff&0Wh)WHn:>-cJHDi;2%L26Pe.DCZWk$ %_9m#i.1E`h*=P2ELgZDCJMfNp6Ig(]L_5ml58G:#M)O'"2T2a2RF<$;c59jAfSSGH-'u&#"Jq.Cr5$lN[4aXA!f_!lrlIE0]H$k %#rAt3OK_'(o9^*f0;B!d?M_dG15_!V_tUg+3K5Fubk_W,".M%i^oZ=!mtTimA&.Lt7Dn"t$cR`XS\G %f`sG0F`$M-[kbAiguIFV$>Q!kBkkmjYg1n01bWu`A=\d=3:,^.7GZ&31"+IRdi6tFc<__e*ASHL4+a$`AE?]Hu$`d;56V17OjXHm)U./B-#THQAX!n3'[o1dFNFMrj6#;g@ %_*r`[>0MC?mit&l)dl[,p.8pO4HJXS3?65Pdb6fO1I+CVCqM#C4B*U,eh*@"J9HdR*f\&O!6.o@0*[O@W]>*0Cb@a+r$APK_mBUC %7rt:a5E?4bd5TJ=0Md:J?o1C4>)b:)`2Ia1OFrQ$Od8!o]k`])3Pu[O#90q(H_qniEO;bZb7]A\'S1k)=qj`a!3LrXE?@@raOLk` %*L2-=oa4k[=`d9"YlW1`/#_6fKf.!(>0&s"X?haN5)%L4aS=ga.@Alm#!"OME3'XApH&u:UG422.n-H<\\]RLU1A/0/b20XhPb%SXL?&aW;5"'%+LR7m7!1i!=`F,AFB#%FEt %bTO"L_3f^1S%_*%Kl9MYkj/c8c(qKeZ7N7:U0/)pd@RCpLA"T:LZWLe8)(V*[O@U$16p1N=+[JgAciJlm-%&(X>/iH+:V5<.eh6JY7R?NBq>^e+7?lS,^[Rh[Q9jObV'p0r %0"-AF[SqnV+K0$#0VUV>M[V3WV,*+Uoa25H[1kheZ"@Lal).!`fQdEE:h'gqdMO)DXms;WI-A,Y4bC %=$WEiQ&Vssa=%Zeo\NQRsGo4VkJLkN'8o*Q=Pj@*pCCQ#WdIH8J %D!)bl7pn*P--LCQ]\X2$R$fd5hDVjj'.AC*!i65VpkdCkc.5c"W1SiKB)\Y!fpq.b.!kbae$HgTd+_"q#jK'd,5K!j"2O %dLt,'+d6Uc9s%9,@In5')LND)-^dEKB"@cfUsp4'H80uFCF`. %EO/f-,qpN.#)RAi_MnTZ)PlN=SVEOl_0V&1V,GJRGVIW#a&T>uNZdUhko.@)rfZ+P0%AJ:n08Y):?Qc6OireqlZV2TDeQ1!Br=K1KAT`kj8R?UP34(3pFH)MO,@$CLljmMJBPGeb#QJR+8`&B$/)5rO7d1;_FTm/[2\/aE_M %O`Kk8o'*MW=)e`9#/)O,acn)2!d,u0/n`!KT+L!C95ObMI5e8eO@BimB\"R9+EgZ"F6G/M8(&O6PRR45BhV+"Tl[&W^lm*4=rJOI %S3%NpYu'7`S%T`!']-b">-nk3kG\gjq'5tr"@nH3b>Gpu]!,djA5k/q(]CV#7Iu42\5#!sm;DGJ"R!qiEO\QarE9%Y]3Zqc?`_G7*i"3=l1f>9ZK!mN<=1,(jDp)]F<]ib\P8i<*mMpG&iK*<"363_!tmWdN<`jQm-I>IE$mXJ*f!^e1(I!\!eEU;^n+=#XCgUpeX0WJ %d>Og[JJ;XOZ33#I1&K\=bc^dZ"Ko;1#L>pKI@'t,_>:)qJ:?=95p_45 %0H,!_@0g&A\WmU-)D5pc?!r2DW]3"8:W^[/=1)$4ii+"'Q,LX:Yq-VD5Z:3N%M"&MWn(<(WM+mhES:k\3?SknN);X%KV`=&l6BV> %U5B_1&>K=PX&L:09"d"d'JD''(Y@!<_lZt,"Rp9rFRA!1$JJ#h(c3^$9[5cQ$]B86>bQU52k'UB@\I[>"pqQD.%*:j`Qj]iER=1D7X2DrtDRi)H*6-Xai"S#"=oO^%]XS %lC=R]],E[83]YW2BK.K[MBo(C]Tm;uTp63fVblk6g4ht.W^FLWSj+H-,pocA?Ku/0PM$A6)&d$[Od!!ha\%J*kVj6:-s4Sr-A*,> %*`c:70I.\3lI[L2-q)WQV&D!1?H>NFZg^`>1M/0QaUYFDeLGR,Ju:HW8?L_eZ0-J*phM6rj`cZi`OsNf\.]X&7&IlC0GH:%3<-PZ %#['Xe7SMNu8T9_?m:Q#Ad#]34h:#QiDP,'^)9V;Uj1"(*`K2p=jCAD]n"TF,e66+(a.hQ+*? %j&hDZ_&1h-_8$Uj[5@SLe3(?i]_2U'$+1j\OhA4'1aT]K6bTuS*jS2a%r=g;+>P*Wq@^_W %a0e;Cd#1NT]2'VhT`#_?$)#=9cXo1VCi4iF-*0a-!j-uUK?,5uGfH=@,uklmE)i#rl-+=Tg^pa7W*XZ>%0^)P[Eq*W6=TJ1I5PZR %H/pE]%\Z;RT$aGX>-r7/ZLd")c-eAsc3$jPE":+26Ym_HQR,b,GRA0q('ULq3i@bNA130U(T1j,i/>aQ^6&2+GTgP"g-#1KAG>"T %Ue+&E\S&E78][;([fY?1D.gZQ8UHl.V-X31UP#Bc=bnX^;/2Je%\YAK %ljm2"7ZPMiLI$'&7Bu>oE-mV)m?-=MMV;\8TF/aCP%K?4#"+Zcb;/2@=+_G`JhEW@QSHUFnO9o\@r0P#A:[k>2TT %`?37ZNj7Jn^RT`nAqHuJ1g5iCXcg5e(tVX):^q"nJti]L?Q7cS1d1HEg9AIdgkCS]<6MR@PG6"EYs4;[OSUiI#ObOtZ\V^4:r8HD %:Nm/s7W2j2nd;=O&YQ>TQZ'U]'DF.4=H;h]d.G^:a;Z)04pPKJH3:(-[= %%`FT,hM?.GYs.:)B;1Q>3)meq+\>Tkf`G!('H/jR`d*ZJFDRT_iIX^D$(=XnG"h.ZF5%eAg:BREN$?9#AoS\O+(8*pVkNBL++rGS %+5Is.c+tJpMA?8SH3OYI\6'a.N0]'FT3W#K_]Ml$n];2YVR8^BoA$ZOUW\3+q?E5EC`6sPbK;FL[k19idW*9CU4^Ht9,i(=UY1LO %b7Dlk/X+D_&fR<[<-6Q^?e,WNUI'?AN*a?H@:3msKSWC^-ar(c:M*^1WEP/s?:fP9(#t(,&tUn`c=ZmV>U\YgKCM10Wo)>6m>Jdl %"`R^\oHN5s#i$Y:m\p'5poVKYdF!i0rj&Q3N?PBhQ.]j$_2C"J2m& %&I?q\M!u`r&+)Z($j/sM.05(gg2Pt!X=8$\igD%Sc$HJF80^L-!X2,*#`+LRl)Sl@&s"/,H?8ssJA')Qa4qZOA,pAPL;JI$GtIP" %E(Sr@jp!B,Y#f57fC8(UOHa5=>X,=ECM63<:D,@0E*88JN@:[d21^dlN5d25\qqUCa^eQ-ZKXbso^44Alc4I\;1'L-$!%u:<^%^h %18F/T!-4;EJM"Hf3L6D&M]l6>DWe55lJ+o9;SVttfuH.25ci+j_I1t)Z4iV1fo2t\LW-Z^r=,!c!4j^*$:pJ*_2:1RPV,Qs&Em&M %^@(=^^&fa6Z3M>*N*R:@eZ"bH:o(;?H[*L;*N(qcYqhXsrY^lcR](P@qpiH4;Ar1J=kVF^:_&"M:qh=q"ujDEQ&M %U$R]g'Y'\\H&u$p-9?TPloo:pXe/+&@#R]p>(Y.441VVqI'6>$?Lm$ %k]Dbq6Y,EqRR=-SSqE$'hAKeadW+1:%7PpJBSX2YG^'XP!VI_*bM`MXB04-T^_"8;'=r.6VcM?4#G!OE$tBjs!AHAiY.Hk#)t;7\ %BY;o*a.*8.4-BH%fL3Zk]Zt[&@NuMX&%G`-DceZ(hBf*5_jCE4!b'%(s7AINgo039?1LsJ^5f_ %?\H%`q5eI&Vnaf064/\e0uhjaaWJ`^EC\V5,;ag7bh9.72N;XkH'%&GK?OguDbG.lC^urB$I8-A5r&Q4+JSQ;ig,!/D?]t3M3"su %Bt&Vo5c#RDW%Hb!]Y"DuKctWh%\]`@c&D")T<9tN?0TR",r\+9MM5W"JRJddBU\QA"5S3VkZne"T*6O[/hrSnK2T_qlbUMO"WYN. %.)AK'LFoJ60Hu0s7>XRd?(J=QZGksr#)tl+Y`BB4lr3[10%Z^d %ZUp!%YY\[tYCKmgBsOS_0DisV&H=-HleYMWAX[aYK@Z(ah1\'JUkmlYZ_&P?-q6-]AW?%eAsp<+OuV?t)3j& %kWL.:P+"VSmtXCl8eh,9M*QhV[G_A`!+-e^[j-GnZ*3YoI40@a&QP(5X)3=h;F#?D81N8uQ8fUXJ5nudOd8qS1S[K+iFsnF$";5Z %m%Y%8W<]h=KK;GnXKad@kV3oV::?ZY`/qUQeB0f)('L8 %qZ<\8\AJC(JTkQ`2h()7&\HUBgZ7/7F0/FM`_=V_,H*:899oo^RN1=p`o?,9N,;LsJ`c[J-Nh`KB]*2U]6]8l5TV]_T/0?am6&d1 %&t_=;F&<@#J0)6DO"'ATKpT1^d<6?##ar.G9-;Xnr4Jo=a8_ZVIn-CK %cpm_n!Y2CtdOB!-IP7<5BUi3OaR:EBROM>SI&#(qnsAh<&kr>lp6Yg1"5K#2Z*5o0@KUE3YTC7ZolWici=bi$m(@1oo2`haHe0GC %VS.:sf70WS&6fmse#5Gbn,e?s2_61H`G&gkg?ITh&nY+nXA8>!QsRX^F(W3`X$ZHe7t# %jP.H8[ZN_/2d;bGL"L:#2Br[_%^a7>J3&$rmJ:#P9b0_/6c3B[cBAdnnG,B9TIc!!@BpO_.bg@E[bA3+NH%(:7V_BqYS#rDE7_Kp %*JiUVXaqNqn%&!hD4WtpZG,)-DQ_g0CY\ROrF9)I*.,",>0\@/lOBM\*-md6jLlba]j6;C\:MSld04NbIU?Ph7**@g/9W<>%qM8* %HfO+;-OR3hZ/(H-dSa;;n=1B>Jec/U-9Cp%*b>n[eHD%*[7EQX0m93UQ7T$5(7qZ`T7QFBH&)J]gl/c %+[iYI2Aa>X)!mEIRB:N'`.;!LHf@AZU2Qlk[pfaZI]UY4krWqDJa`W-jaP[Xa[nKKaM:mhIJZ8> %Pj^72gd"&#',oK?FNW-'W5ELqDY,guYJ;p=R',?'^l>5_A2%FmL`epAPYeTqdng8Fn[S7AlJqUK0dO@i:-mZ]ocIrc1"7a%>I?j[Sju&X-?#\DJ)n0*Ump!" %H"[(j1q&2S._\oENo*?u[r8lI[r1XKCRf4p$rd&:C?N.^fTcRtBC]XJ(a\f'O59l(E,K>Pmjk9/3h&nb:J85YZVan!nHhrEN&G@`AOJ`!m]mKJl[J,;^gR56`JE(PI_iPtB=) %!j!TS-m;c!b8dQMWAZS:m!t.cA`sh2+1f9tDbf"R=k`*'RW@AuWQNg)VGd%2`XlJQ'.1a\+#L?s,"Wl]P197;qeF![65"r#32gq\ %d^e1aDcO'dj!R)TeR:s)RZ\Ucij$=`@M<_gE\3k5;o?_r7Yf,.S`D>#e2K)Z,^M/iSO5Z^B.>J`PBUpBV<$;J4C"X:iEpmBL+YeH %[,oWi[7QPU.$=pBh\;SG;Qc'a8nApN3;]@Qm#)lEgq\.Mjte6&]1+EQ%IsogeoBDaH'*Ag[VV]+as#_L_kJ;WP9Q0b(1"lM#4gsC %@:OWfmr=*SqjWeX02q;4?g5Xr`*p]NAPk8f#rPr-jG-IMWCt63ZZ?2P`;u<)URu#J(P& %LT%^<`StZM2b8rF:Z9=d@E+M!Bbsib47?7n)^]dKcD/h-YDWNOSJlaD-fODI*:@nE1??L(-UWt<E %UrccW-;hWQ]bZ\WND7Z4$/!B8f]M5Wn2U3FT)&2?OltmH"Z'#PZ.`d1!o.0Zc!o%PAJI=)'2'OM9`p#,QsJu%#&!Q5nls\PM8mU= %72WaYjR]M]fcr0urs7G\A?V2b34'0;2Z6f'V)L[QSO_(!iULFB_BVd'>;CUtq!],:'dWS61J`aFV1.`>X$r,r_F35HU]n3Q`Y?:% %NWG0+fTqqD/9*Y9(+EFGg>YWID8N`#)%K/p&.s(F\-GulH,;hdRZF;#()\%P4kf/#`^H]*dVlDs^`E/3S;YmK0K+E.Y?ri?+'9c` %eeO+0f-`L9-b%55B`k&6EB+2!>Tb!Ln`>Z"'Len*PMPC[n>HF9+hQI4:UA[r3t!0UYA_S$jHsbln#3O=e=[9`!pYPK0!_P[Zc-E0 %a3e'$K61NTM'sm(Gk]R!K,@=kjV;@T=[`[[M,9HHIVp>fY'^fn%qAi>5b4o]&>t$9kWp[Ecp#VF9N-l?$d$6c<>T,9eQORneaWc@ %r\Y(-6NGr0ChSigO*Y+g^_fCP]k*>3kS;;V_J>?n>=oT?;6&/(Q`0Bc05B=Qo0A_>glu[Qr540G*0Z^=% %XehmqgGL01Hj(6l+<'%TJ>1K.1=%eBQ=DXp!)gsfSCh#Tm&Q6gK1WKXBBou&T#L+cZrR/M=O/%E9iZp3Qf*89VK:A]Ojqp %)qBXcZq,Y\[&#nkr\L%RpY>JK^bZ[pn-N&CX\!i(*8"`]k$;?J)4.?V;ao"aTeN`n&hYa-/Q/#!6pT=OXoVY+OkcT+JFkR**7Bnr %"p?oKL$bJ%L8Yli_Z0q'muAK[YHH4=6MB*F?QK8'%P[i@7L+f9#pMB#c!V/++OF)"djGfZ32j0`FcXEU<0^OUU@_)5OkFM1$;'Dq %c\OXsL*ZnCjI$Skdl"Q:hhtPdM3chm&ui$Sk=A<,_6d1Cmh)#q"o\4)UMU@_8^-=:PNijjY6NN.B7"N*GGROZT;kKrT@jp\NC@8R %C-%k5&-XW0.+PT\0H_Dl7A8&WXh'oWa)NNPjQuop[]$]58483/)E+bog*pQ6!Wf)X9[IaCYtTMF!Sf>=&IVD@8SYVZQ7gr^b'e6[ %>BUR;PH=,b%i^l$$$:hIj6$P0pGQS"2g36hlDVh;=BrEiFFsY+W2aJD'PaZi)dQJ[8$MF(>Vdr3:"6Klnc@!KLh23j;ih^o#"4e;>1#)!*Wl):Y&\oRU3%k;lsg\2Rt.Kt@ZMkja#KL6L4V>E %80^A_i)/R7&BSV1;'#(V1lUT/a-?r\JJX8^SUQ:WfRT/@7;n1n90CClDa:6m'QS4/7SM5r7+Xio;Y;.ZW@AsBa<)Y,8j5Bm+&0uc %Y;p^bL3^aTd:Hq/D9,1VB3$CSU2demE41m2aZW!&@1Eu0SL2/c9<1=^ZI]cSCPl2Yb`T1H;3%R.L:K]PgCmFbcX[ZA[qT10TpW_X %1L"LVIBV.u8B0gT\#uPeNtIbqfbFZoh3:X/)?`l(16^7#K3jjbd]QC;-o-#q^)Mgb0t"_':l:EXm2DZ,bNc1p4349Z*43-l"dX4q %Ra/.R:aad[Mju=.opNamPfH?mO4%69NS@cZ4p$ipD(_%U.cDUS?P,^M&f5B@Ms;F8R'.g>6RM*N#UMJ\eOM9kqQA;b0cC=Rc>?1W+f2IT %Ar-U4<67GLP=[^;ZuT!\:+fP\aI$(;.ZdorR?n%icNLAMEo_)7@]V>K/o4_2KlBFSiaJ'@D(T!%T,Wigij6-Y*eXo&`tQ %6RuFlUPEJ'Qk[ad?%a9L=e+O!R]<`5jSAF>*0l^203CM>HaY_/eh4l<;^E?6WUV9"fe$db+pKjZ6^TkT3CYOZ&M@$+GB"HAbI22D %\fe)sZNiuQNnGP4fH,e*=bRO?8V(CeOmr[nh0,9.5W6EqIS!SU9os+ki`Z_@oh^)J7J6Z#DfK>=QuP=cZ@2+$Q\/RJ=!+ %_eo3_!O.[+c;MX_OST6;BY!;,DA!Noml;eqT#0HU)B:K-2V9#96,VcpMG3T0Z0>X176ZSk>o=!r-C$j:W1jo1><@O+C+G',iSH+t %]cpX8kh9E.Z$'f[CQ;prdbPPlA!BlTrc+7G2)](_Q1g?JK=V`F8Q6#<+fnpHoH?%\`mHQ?S50L.%rPNW!jS8q8R3CkMe[NF70o %.:i+iL:#EbRl]*F+XA;,rn]M!icU*`G(_MA'RnRnL$N@,@Z]%A^-Bminm^`cV@iKc98*<@3A`c?LSH=(''kc:b)de^OWm%jRd/B$ %:r7&d)A16LGY0BYh0(Z>G,AEJd/,mVlN"gA6I&n0Vcb#:12I06I)JIK])i27?$V7+BC,8&i/AJ4jYDRm>jSSn1:Io&7W+CNaWVqd %LMD-UU*_T8`A'^hQ=C&nR@TKI##2OXV'QPaUeKj)6Nn_-Xp9)I-5*HO"`S)qF\u+!BC8aWDD?JPm,?`&6jlYa/]BG_:;_hS-Nc@t %)Ff&u5uPb/E,0G(3G;s?+*,uKTq:;+@apNG98I1,;j3^-*E9N1jM^ni/b0n?hJRP9f+tOrj8KTQ`c.HEj*k.dS^^`k+]3"DXn$A80c1g/leJlc!f-n`ROGcFJ*: %H;:Fb<$KN^S&;\5/$V;OgXGFoY/<7rW61`R$k![Oi;F@=X7a_O0_U($OT6"h!X<"@H.QVR4Qn!b%\ %g2g+&XKtE]7(XD(?El15V;?PDQ"\\#dBHTu'<20`;FOW.`YM>:juK<4eR)Ra(Gm?K[2#8:CrN>>BNeK!?j1m=XJ#o\_C-VjBjP4@$mf1X"3%s?:$d_4/pB[^.TPoZWhg^BU,[:lHX2Fiq9 %([@j=7mmTijE5O8K9n>/l$7)0r2VVHtq\*X+/7B)%jeEJQ*T$#47AH70s>Xarsd,]s5P&&,#% %]7;UgNP/G#e4:$YNXeLm%dg@bP+t1hnThY[c-"S_I1n61a32dMG3Na^LlF#SG,=p;_$K_o)&F_3,_mUmQ/@dOp#RALZ$I^+0!JNdT+`$W-8(4r0_T.Cg73$&@Z^/=0C[Fm!^?Y?fN6LCDhab*CiB@ %"6de5`3ugc0K!)E&>:u,h]t@oj]SOtB_`\.ouTCZL9u]WMl>lSGE3m#D!Cb`/:M:Z7j04+1^tRu/ia%m]MdH/-CF(nmu^K]q#U]; %m"A+3onAPaJ2NYGj8,A8/!Tb_/>\naVt6K)!>N %9u&HO%ZEAEnTp=)7DqmQS4maM?';poqqM*?DPK+XiDaGpO\1t9VBi??)4>bh3lL^^TS=O8;6JE'n",Wi)b-_rbt9pG"]=iP+=Pc` %:PO7Z`faP@C/IGO'"pd%>+$5q0L=d-lKdg2UNUGTj %4IRb61`5YB>X4d8a:[-A-jiPn;B2FpEZ/]2S.U78#m%eFKk<]qMRO`jN8Lgg#j4Jo"%#gue]$qfg(PQ=*Qoi<^kqS5N %**9H>!*X9YAS>NENp5NX$.s/;m:,("M)PnK'%pa1Y(_p&fVXZfX#rY)W_3rP;0<*)P0+eXpEiW?Tp&m96J"V9LXWHG0]DVDgaT8! %=P+2I'pTQo0Z,6uUrV8"obluW4tK,M4`YJG?hB;:qjCk6P!^\C.&BXu$)A!P'?c`i%#8SMhjEa[X>S%l5)a>3J;0aQ-O@I&-c9@u %>8FMH8jdNun,a*GP\dD/#\GF>dI$Qh%(e5L?7bU]Tm/^55M#=II,lVe\@gofS.-B$UI5+^6b'!`A#p %'(ArmRWNt@8>tuN7W;H\o@RS5*VP1%19\5FC_C#u+(93J\?@bp)SW+3:T&;T'jn&uFb+).()kLaM7=N$i3Nhg1P2OoI>XkKf5P@? %1tNt#8K4),jePiit/P>@X<.%S$Df94+@iJ[rEhB`13W0J\7AWN,Vp/4I8L[Zq8FGm/(PicnDi9.\3]:/@S`Kgn %d@enH5T;*o_t%(=n>5f;U"__qg4GT1>I#%gW0&LkUMtk'F(o=L#0X9=@Re](TW/mWKedD7ec%+qeng]cbr_F[2)mh".aZ+u3Lad-=V$jH)4:3%'Bg`\@OLr-CDq1r`CbbG9:Of*ma %;D+ho)S:,:)93p24qR5Rdo];6.,l3c8n6mq#uf&?g0EUA=d5:K7b;om7Qb:I;X2m@6_mXRIPYm$'-j_[ %fm9]-`\bR@/lRXd$I[jaMMsPn4VQD=6MmEV[u(Fc-Y8$&KK8H_"nE0fmLVa:[#)F6*"S75O!)pup0lV5_nP4Yoq<.jQnX0(4<>?? %fZ*),7B;M\I<(99A=>QW8K9&e7[")Jlstg/FFUnLIL1k[QC]jG&<+rG%rh$FSoAo`bAM1%58,j>oRZ9I&k3FMP+""T_+E?AYWt_A %d/0I;jGZNdDj#:q/0BBu(+EVdl_H77($S["iIWOQVs2!^TB$NY9dQCL2;C&=[cr1DDV$^6p)5)d$]S,:@A@J+$c`fr-VpYKEhKB8 %>q:maHYV8X-j4P\"6"shD\JqeIcE1Zc86=lmm%eb.PstS@()U/#G)%c]<%>nLG`O`.o^*j-03T;V6\Zh'IYrh7Zbcu`_fQI*!Kne %O=R,e(#?[1SlHR64$A;GK*BV3aC6RL$-^jV#tU/Rl%Mb8JKouNb7Y`6Yq"6!+E=j#nTN#_,f&gnT@g&CTm'tWHb0s6W2(Q`Dep`@ %)$nIt55\^e0:nCPT[.)[h2ALF2\MTj6onmiiV3H'3mN*7fbLt5`T3'cRUG<_X%Ybf\MbpC@Rjp[,>K,ZP?sOr%ged^!9Gr9!e/;& %COC7[Uf!o:`PGu(f/qOPj,e>+cQ:"5p?kCEC*&Y"BRBBJ*qqV>(@_3CG_0l,(d#BjQhVo/%gH- %@drqJr"4Zt1,P]c"sQ/j'5)tpMsOWWC8I\,KI>Bm=2[&5)2LMN!8t_gS,0Oi>-rLNP?[AqR\CIWX'J$DE-+A\sjj\2FbXUn'gSa\DKU^S6R[b*>!o&CY6abom3DC.Ln- %r2CamQYh+A"H&oS%2WiN^%VW1=-Ha9cIYoQ9Qe!c6TU#1eebT=I3DS2ea`9WlN6N %khm#EBV`0oClZ+gjAPo9-):km=n_V_W>NPn-fT>>(i*%21#e/t2T(o*ZkK-(/8GpH"/W.T&#MVe^1Ch9m]ZE3ogOoJ: %L7]j6itV>?ESdnSAPDhhIWuA!Rgi1&OITaeG[%U(LIa_XK8Eo!6Y0:&'nn^`=,11:^'1R1Q",R*t5EWTZBQY"goK3JlQ0PjC!Q%tdNZqdjT_hR3iJ0R?1XAREBie.PLfj6+l"^DU8DYNS>7(?f<&mQ:'P9W# %5SmEBK'+?q&;;p]7]M]3PlG=.JRke0fMmW/3_cOj&fAHjZ,R1V7ALI:SHbQuNS<2$63]>1+^WFV;huC8el+FFhKI&h0:_L<$didB %l\V_'4=,9/p(8d@@>g7N/t7KkS;"_?4)#HQf46:@5q^hBdU$.;/8$A2a$8P^&DB"&6#+5V,Kj;4Vi %;OC`\SdL_j%54EXBPsX!9_(rrJqbX#PJ%cb3R.[;?eO8jRM?r`>i,LAM %,1-Y59fWSrm5qX(PaUPUH0$_gR!I-AMEI69%hW?*e1'jEr0q$&9Fljt[+UtiTJj-\PI6tZ0Qe*)B#Wn92M4;Z"DVK$eZU\A %_b(AEBACB3BkT%5I@`e#/V6U>ZmsV[.OMhYe/(\G-q6N.V:;n6FZBS).ZHOK*he\`**Cf_qOTGnZeJ`qAf#kQXEY;XV(FI(`lJPs %PET:Q7Pu\I'WK,,$D7de`OrVT33legf-4+c6Jc6](;%rW=OqXT_GS2f4_qK6mom>E)rRT:"9_M<(+e(9&8O==0^H9oh(g%7Q\AdR'a"7XW&e)7W_`3e.C!?A=k($RkIIX71J!"LjdM@k"]1=srG8g7(LX*hMZ'_Oa8JC+Z9"2s(W"#I8-Td'uK?DUIITPI>A10XauSRV-cmTQj(5";_mo,s##O;`\e %\YPN4#0O;&WmF:AL2_'uPo\(`4d"`Z!J!:NIF(k>k@Gke$5NXLKH3&E@kiFC0.2WkBnmat6RR9OFrK7STUFu8,0%FA8-Vu:'@f*V %CA0G_>uI4k&?d=g4kBsUCbTXoN;Sp)XHSbHjsEQ2i"cbNDugHe:gH6r+ni.%3po?EE/^M<=HY9d_BL;M"JN#T7hLSB7S^C!^Elid %Q&.+tlNLrZl#:.=&K/.<=$:6.3qD[4)-GNdpFp^d2Zd-up-YIb#dqgC8'#X3 %bir3,O.pF'Zouu)7(K_jSO'MFWtUEWTIO;(+^&/i0q)`2'6U<.=*1X!LBA+rQZ&Tr:6Q3N^oA>)j-LcBh!`pRN^[Ae^kn0_m=N9] %F5.>jj>*2[2HW^faT]RibJbW3+gH:_2;=dY2NP/Ro=3pV8o2]3fkMI;M%k$=Y-&1,4$D-0l`Daq`bf/n&1g8sl8F9[;e5c,enNoM %gUGbp.gH] %7_i\.0fU%1UaXS>X-cK%Ts\iX*"T`:A9AOD46lZh8Nc^?BaBb1/\CNHq2Pj/ZC(-M`Zn0\W %B3]?-&QsBV7htZ"#]_YHQ"d`rTd@bm<,S$@]?!AdQe@bqJII?t17U24F)m8HAqWSYR$;eKF`M-8Fr-j]7iOc9L>`@HKS$5El/"_2p!W#0PP(T%(BDNU!1E)pZ5MX^^"BniU<8o6jGUF#+:*AUbUCB(?"s(_B6.^`d-+qCWm%Dlp:pd7*)2gtdkKo>9rY7I*?)n[+IoZSES]3L%t2@B.;s$)mHKNfH(q7]L[0i0n[CT>A#!2JsXa^$Y$)^N!*o!Qjio-nQ$21>]lCC.4gMpOd>o %$+oc,6,gP-#%72hXliEtFu<1%JMQ>ANem)QCR@&Q)FKM4UbRTX:W4A*4i1^cTQc5S0sc]]DNH^UTHQm%JgUeWL%5AH4X;.q\?dmnBe,H7q2Yj2+IhuZ!oZD(ET\lh,d %OFlJGZuoM3Kqq%'29HS$j4I!&"s9YrYG3Wie]``_>IYu*2jEL:1p!<;M\iqC7.#[rY%oES)NKrI^XNCeh)OZjgo:pH4]lFEL6TRJ %(+W2=nVG5N60uTCDp#c)6q.rS7kn`;81dlUSt$TlSWD+7A00d`?@\TpQ@X!a+/K9$ %juS<99\G>oH/DUrPMgP"M-"eYaQgZ)n*Ppr<4S3*cnqo2b.SS,&5/SrKIfdYAeH@Mpe7]B_!6a8F#_K/I/uSlk9ekWC)@HB?J4>p %p[HkX>"$3q+@KVZ8&2D8-3UGuMj)&_A-f5fR;NKnY8ilbm)D)qblp-+iFLlj3bA>$1q_U%^-N>W/?_,S1%8-jd7)!T7p8'@>)dhiR.0X/JpBS.2aV_K"+qO^rf1n`4$bKqooo:o/D]I]P. %PQI:@k'eVX-N]HLMe_o^]#Ot%D)TulNi=pIXioXCRq%cg`ME$A2-ca\S9hBWknFlbPoK.)[$ucEcof5K=aR;m%!&I-)'g4nTiLr; %T+DG&J(0=h+ZdO50<$o/=Wh`-#i'!ds+Bb[G#OB8:i:RTR_;:d'#4,Scteh=USQ/23>4Pt?9-*aN1Ti-=b2\R2!e7)n`FH*9[YW> %VA+qEV'8l4kYLY\P<(Tk*"qSNVudBblmd6Ifp@\Oi[pZ\>t,uISrMau>Z%N+!1*$l?0jZrET,sAj@h8R\%8E[Wl;QPqERfN$>bMZ %;f&G$\lbASQD2AMA"[rV:ph,EKDaD2>#Ih)TC!>]&sCq*jQ'-9rlp0J.d7t?gFmlr21u.1][:!dePQe^;:iCe/3bL(6I7f,f02L5 %A6IH+6;e9&0+#dTc9b[)5i)M!bRL*h/.Jp8?"esJ-,KKuc$/bacj7'nL$N8.'GXVeOa&\7Q\%:nCP%CcBZ`48TX:H-$8W1V)?=g=^2k\0%$3!oqDa;kV %nCCg"q8kL`60o15-:9RG(tR`T"?DiU[^"-&j&XGhgX+2r/lSNmCOG6:P@t^`kMBA_]V5'fd!'A4fgnp3f#Ai3`tNd8N*JpN]p_T3 %;Mg$j.69u.Obsi2AM-uLDO6s^p+9]2TGV[)1?=9<\4035gip2$,W+=Cr&8"4Sk0#jgjtN`7d)g_0[*u %?!6'%E+6/5?+=<,cb5o3oR:/;FjXEs8SJh(C);(AY0$2@&UbE^?EK`PWlS4KR:S*1kfX85chK)l=U87*)p"AJ]SF)Ql+B %i('i2pT+5X[-"IqAXAJVb.2/&R0H0(-`hn%(p8(dP,%)$G%LE,JB]M.mt3QS/keZq9p8dQU-'<^@j2%40)K:^E"i0X51VW%&rW %.h;==IJCpiNlG+/2odO5;it>oelC3ikh:t$p0::Zh&E:ceHr*kU"*c;Y[F387@@EnKc9O%7QS#tTW\df5KU`]B7RLT#u`o##uk[4 %0U`lLTOF["BcWIXSX^9CN00#(le<07#TWN;'ATL;KBPc2$t<_KR9B,OWt$J1&u@CA#$#"&4jSX=_BU.:Xb4^77'6I^Wq%"]gW`3sH:"*l:In]_Np`t(6& %PnEe.3];4h8fgYVDrMO2FZM5b1k>tJXKY9f:'q'B+%sj+iuef9FE-sGajogcX-Y28^O#Zn48n^&dFm4;f2kJG^,\@MQ%-kADc&Q?rmELV4H&g]:LZZBu %msa.H]_(sL2LOu?:3SSXgPq^-2t?I+1MI]bahu<=9EBFd122UMjO(+=5D]+e_RkINs0e$E]Ip=&k`Q9l.hZ*/sdIB!5#lO=smJ,nhD'/]9 %o#\U*q.dIX_;a*1pf\bU^\@./ %pYPI]lQ`joq;\OAe!DF(0/La+0Vkd %Y\);Z%m,6Jh*8Q]N8W+SR;YluB9sDf?_?311\Dga+f<;te+O4a7W8:Hl]^4RGB36,bEr-9\Ej")*iJ,Q*Ia2qPC(=-J[bL>m,[0f %%tC\lq"qOKJ[O\,cgU8tHQW1J5>R;HUC6u%Is]N0Q%.K#rl0+7@P<;+.a-t.)DkQ#bV_Lhqt?@>m$Bm%kHfr/?hU_=YrrLQoX)G( %CgK91FIao%n(GSYDZ+,cqdg`D3H&EV0AG,4gXlMe_(Rn':V2g=p>EFWpTl_N41VrU %HA'>j=3'qjT9d"JEcKb+Ie1hGeUMFcoA],rSe&^ld(dcu\3<*gqWVgjT42%%a0WP'rTq:5.=9GAJh-UdE@&!C5Ps`Hl]W81@_TC\ %f(D!"l/&h^p[cG-ob;32r9X%q00$>)bHJ(ZOpA25s1#RaouNEiht:jDlAL,`U(3l;/Z/8loCB)O %?[hXp4.)H4]Uuk9YQ+HJpUd3dDf:&0rol@KIEug9uujZ+Su[laK*/r^WCsJ,9JfQcE1*04(1I20tSg,A5fX %-5Hd.(eD0U1sUU01\K&l1F=a2n93e?rd+&4\XE21G;a=o9PmT(nD`c"E`("u?@I=nfjarP*PMld=rj&m1\3'T6BnQCV&sdb1f.:%W4hJA<34ZW7 %[9rO/pMSOe^O=mth=CSIO0s4^cG!M4bBH=qF$90Q]"_GKm4#(r]"tY[s/t2XDsEgiosk#>HuL(r:FCPYT>H'TCC$bgW:Q"re7&%)Rt'>JD-rm+^H-.RgL2N%MtYu`#0a:>pA)#Gh/#-i'"?b']Nbj"hH2)uq9dm; %c-6PVnbJ+;H5@j@s)26qJ%`S,UA+6Ip_NmMrSCuKH_2BuhW=]croWk8ACH@6\;]c`?b0+>\>A`Kn,E!h].Zoc[YqW^s*A^?3&gid %+8k@FY>.hFg0_G9?_2[q'S#?@rp\=gl]_&;m2pe$oJNWgos^hIXk%+XPhgf^l_W]e^IDAo^]&QIG/%>^BCqKkea.Y]\m)>,ES8e4 %gL%-ce^_;*h]p.JC/!BI %0r>rW_=5hb7YNk-W](Sh1kO7mAs8)&o\IM[N=oYb; %:=F'qPs\kb\)2:FSX'*0Ci`>=m_!/]'HcrC4i[/4A);YFol0LOi$hGV/$%XXBla4mILp$gl?=/PAMakuE`#EdUbgbn2< %G$_'qs'7OXR+i6'h0'3J>ZfJ`?&Ur]?As)(HehE1GgkKu/o;iu/kk"CD-`P&7WaSAe4kG5eqL]ehfu```HE4nN[6i+0:r*TedJBu %Q0$95k%q7!mrcRGeq6P\Ie3\EQ05%]-V%7]VX($Ms):`pNpD+srF?@X(lMhokhFt.rr+M[DqW+gEF!t@D/WdBgV3^68)KkB8$2`n %p26OQrS-IPs1Wi&p^>s>o?4IYO*2UPhRqBuDZ<0kn#qe5?p/fi^OGX"/H3)MFrfekffHU%AngQ9 %2:hI&\8kR/eFl"orC?@aieQk)ZBUd\^Gt'k]lfK'P4+]E;=O6*Ar`o?Fk8uRV12P"?iEUWAR#bH-Gn\@[^>TV[\aQZf`C=b` %]Y++P@>gUD:KuV'oSj[ipuh"e8!PQ17Plsfe^P@]eZB$oq6'6jD-&$M9FWF,UX %Dt,(-Irj-qXj:<[SToA\YRuB(J)#GOb2`Bus)W2YVsfYKY5_qJ`k&kU]-B:"\ea\bpKRsm7/N@cnF(l#UN:F#EUnp:6-\$@M*>BZ %ilW?W@fFaKH?"9$Ep79;Lj*&Ma-S/4^ZS8&q>Ia's%&d^*CliRE$QLtrhi90g%(Mes2M8=F'@f-laoY?F^4bVcY0uJna#M1bO_?L %-i;*3_uFk-KHMD_oOWkBFuoWAf>Z1)^S7n//ZdCdYQ"H$HlE%'bM`6`o_@U`(T/!KHf&W<=TG$PJ)!6ndc[NU+`OEqiJ#!+3W8fD %a6XN-b+JHo+?B4oQhp\9n+6KRr@0tK$/Y;(s7rUajIp?M[AnNjK"crY"l_Y>JV99lLo/q$BBK$F'i7f^,eIR#k3M> %r4HB3V4Y=,k9i2Y0,O6C?2H@k@mBt]Q]@t+Ap/#D4pYior@\)X42&?j41[H*]g*4`kgF%Xnqo."FPcuajSG>]+CPC`pVk8F_q/ZX %jIY+UHa3@:Q`k=N?RoC968RrP5C7hMC:W9]gCKcUbK\Sb`V$:,AQ4`*?g`:;Ed-?V2GhfGpVpcfrUQP`++*8(9\Api4J\\-J*jJN %m2I^,S(h8'bPoN,[O_6g&+TJGanq=B)*i.Nmha(MWR>rHN\Np)qKI")gTQA\(hJQYl!q=G)n;c;rl1d %iDVpB:Y--Vj7:1FZKlF)?bKRUs0oahn=`q,oXh[u&Qa+&&?f@"])LU1(S>#]Fh(_k8pB/0gc:D+ %ir3AVG8HV3P1cC4E%YI'T>j.OZf3o:SWA$Vo&d@+0]epPb($[eo%S<+96DY1n5!4a+71YYm1H1q>70ucihau&K4AH\kg>HQ<<`+4 %J&GX`n4.C".%iF='&046b@hFiL6+U]_P+b>OBPkFW93P6>cI%[Is:Ns7kZU %jiq-"?@9Nbq!.K5ei+WiCPTZ3Xf_#o7iWWCjSk(G*P#s1GS.&!GP:"0@:.^Rg[,rO>s1>XIf3*`Y$O<*]__KhK:V`o%`7qq]iQr' %*;=d>Fl,@/F'eM(m.gJTB8WiP^:8W*8=++0:=#BFHfqL.qY]*Gf7BuMi0rcW4F-aWCQ>SN?esW$Y:a^a^-(0I,^3R9rVAsqeTf]0 %Y+M+'P:;/nY^!;6H*FE..0MD)S2.o(4PG=UOqoQZsfA@Q"#N3VA]CRLS9i6,Cf`8K_rTC5ZLM#.Df>-[_^Z3K@ %Q`lE&hf-F)"0]uX?G:k-U\Wj2%klkAQWM@L]Y6@Se:tc>O"N%/?%08&_lMY$$Ql!Z2NIP3q"2b-]73"iYoI;4jn*TfJ):4rT0N5N %s86X+h=,BEQJ9'`]):hMQI^$LUDB'SjRhG_AW3bZ`TbYC&^:8BJ+V$'Dje#KZ3*1-rU?)s.XFApn:OrejV:P=UGk;a\aZY2iWU`Z %"XG'o70@@QYC#tL'ihtnO7m],m&Sp::+kH)]R85!d\b%;Z@9g6r+>b82lKku?N;IdCUN3Njg^*%Z[[_dh/ui]Vi.8HLp5Lo\"u^@1]@H1pOgX36EV(,!q0 %F6j+_%tEU#bW35e5>YD%d(s%9Fh#!/SA+=3Y91([iV_(UFE>W:]DK0T;t)qp*:0fa4-*4/)YR(3YO?rr[qEZYNmGIiB^].Y]G)fN %%_PL^a[;uAic1U;=4m,/DE[+Xjt'2UDTM3*&)SEmoC_E`qO$0QHAOHGm,HE`HM+d2'0jm1fm[r8H="hoe+7-@HfLF?/mK4TrEbVh %gapVRHm;pDYUJu3E@tBZpdQq"i3GETo9UiVVdEfD@=Ml+L*s;@'Ft@VGi?ZlGjpGXfC)J%[@HQ;nTG7ANhoQQWTDW;7lSbT^-;p&C)HBEHab)=SOB)Z+8YKGj`cc1,j4WEF5c)5*_cOMVnV!Mq-r/g+'rp`YBh_cpblIbAZTtk5(0thWRJ%Gj,>O- %0js>6Gf9Np5B2f,HtggJqa^MMIHA!-RbL^3oo7FBfF.e^XMZp+M4#FQ>*$a[^>5$!hTkqP3d]1^giiP>TZH0"<-OhI&+/qsKB8_s %/c-K7XQAS/g^^u0m+%5Zi9Pd\E6tu:MregUq;fLZSY#cTbp3/Van['ko`>Fd+_nd\2t^KGu4 %T>Rm`\[_>kPFpN=A^."_Y6"FEKjfYb1^CgdTk]5.G[AcA@%(3F[R*_@AC?I#_94A\P(mI&ju$m7afDLMI.')D!5-e%sK"1s/7>kCI%*I1qC>pdG*2(RH4Kafj'Dj*9g#;lRHBRu,bE-EDoI7\IA_$8c+g"/2rc+UE3FA!%qibL4nS`!@h2Xq#rjc6H>&/^21/D\"\p+7cnL@1QKqI*TXFa?>N3FH3.YXZ^I\;&2.DdI,JYB+4\0c%,'F:VeVkEM0C`0@'OG?-kh/f-@W.F5;]+0e^O<, %7j2&\:AtE_*$T-=CWNYJWV\<-BZp3/NS]kUk3W[pkO#KH,&22&1KO`u0irc_-&jd,r0#-"LaM!]Y#=8L9JeIDE"+F=Neda^d>ZW' %R&+'PC]=Qp.+bu>X&4\MSF1:`jFfo8bR5QjbVbscI3O:ac#D@jSjio0U8u>\8P18^om/K:)F*)+bn*aA)_B*F*M:m@lA7a=J40A4 %=cGNh$Koq^+I`)U&q(\[)^M.92^4ah\o_a"=T[!mC?0Bl;M[5;;Es#;S4IaMne=S^TcV[B[?^N8)#f\TjrM1D2sjb1Lp"240t6%A %H?djL"]WiHarat(a,4KZq7"%5PDLW@%p\-Gh^+<4dJ2"u',S&,S!u68Y4;C/8gWa_^RR5s7-@hHb'C06$E+4=^:<4YMs,!g&5=f8 %7+^;X3%bgaL4'u7ahL:5=s.!u>Vn./pI276cGfl"5W58SCMWI,:/jgl&lGh'rAphhc(*BU;[lSp73jtS0#'#cA>3_nqm/iSG=5WrpXWul-kV.VWD+47O=QBgb1q %qbU]h-@4(2J(e625)#r[XWmX!FduBe/ok=U;[Upm&iU`",fiA,K+=At)$&rm37d9f^df^9(leYp1=[p'5pnpjS %'^fFF"`_N3lhq#5)UYTP\(s.?V2'S7A#nEa$dnI75dV4e$YtRPgl@lQ)aQd.9DqTj1T*,qG.tP5JODNS88mOLT7^<2!/R6#[Hq2$ %l9T,[m=+B&$Tjtt^FIR;:ZF+q0_K.a=SVh=4d@jRZ0POiJ'HO8Z]OgdVm?Ofjjo(VoN%mH44cE$=Xm"hB?r7'Vs!cW2hS"7=%%>6 %iu!!N?$t(Mh7LpD%A(;c/#9'ea1.W)hb37<=.9aSD/.=h?9S#2J'ue9XdF+;Dq1u,1&^]*=4_$Q2"g&gGhRJI.8TUV]2(Tnl+_[N %pb(f,8%uoloMji&k\W/SrYfVA`?P7pi\iom5:o90qZ\$u+168a5JaV1%Vi0.s&ue$Y3G %G+Pa_j3O&1%h,J+CY=F7TVoc*5JI?Tl24%N4d52hq!.[^,l7d2NtlPIMcdA"4h[mVkGQ!s.G28SK^G?_Gh)-^&(=a"$m$?D`I@ta %35#IXfbs`:9`8?3*He%$9@k)/CusTgKl1"s]qD9ui^D03pEDg;.9G`r$l+I84jX%NJa5>K_JKE.YLbmn..AdrcaamiE7I@=VaDVr %E^E"RM*c=ZW";Dk(cGDb@i;0XKmjMs..hT;,biO:KdcSVnohcoXGNNAc/nreMn#jhS(dT@ZF`s+r$Xq[ET[/O)!=Br1sTM7/7&\U)1n&IV.!E-!0 %N8UBFS%-*_R=W#^bJh%sr"D-keT;+Y_[)fJXJqaW]nqI>Yn6j)TT6S@iBY?PP-9<]7S!rTNrD]V28uaGNA']\53j&HcR'.NC^.Q_ %LA?JmH)L@MV"%$jR(0*+hhK?aSj.,l3PSSF-eu\bQt=e"H?%!0fPTcpo)-Mm:[=nNQ%e\J_TFp"m)++-n)K[fn#CZ@9=HXTeFmOfo`Eru*g1g3U[W/#kF]2J1U>`38>QlY %,7H0jfOnlJ$6!.uGBIfCl=[j:aUjHP93K-=UQWV@r+VaJ`7ZO%pA/8N]]4NA/%L\q3V?"2`=Q8:*r+oe3_eCFbV@VO7GKCF0udmn %Y5#q(;`Kh1"4-qn=7VNXgh0D72+EilRl`NJ1kWR:9?[3.N++=rG-A*bn@:=[(.XU[bb,e9VtK'L@u %gjIS3lMou9YndbI.G/'Ds_(ehN<@aaMQFEoI]X>#.@R0A!CbtL1,q1F!0OYnl8=lg<=r\dGb9!i"X2eHOgBUXN_0k`+aQpKH]YVGQb %*/bi#A,IK1(>ibdijLDY@7#:\orZ3X]T`1Uf!3TRb$_Zc\QN2EZ6%bbljW$a9f0)r;Yen\p\904E`7!]FHk0u/fl(1\jI7@k#BGc?+N/;SVQ5=:;e/_t=nMD8K4`R_W7+&En&WLW64$p/'c$3\AWERVein-(V)[>2o=t"K0`?u0/P)Q34 %-=:TnXZl2@LKRU3X7pNtdL7fGNp-77HucIf2\s;gJ5ou`.*P:'L07'_g%S)ZZSWjI4'cV)4RU?E\'jU^H/7W1V=.>FH:EmU %(r[-IY+3gLkVTSuA;._f<,9=6,:![@g$_kpIZJ!EcPRu06VI3ULH"-0_n)SuQEA2U^cL*t/gVEtlHI,^J?jZEWZ+Ziq[dtV;foO] %BA<`rjYc552iRED<<;70j4lAFf;McVU(!i"K>s:5^PV5Ml/`e#8eVN(k%uI..e-D$khMAGb;7[T8a-aqI%ce:nkrPBc#%/>"@LB" %0/(L)Hk3$Wg2NULqX0__<,10N0cGJ;g\4AH,Y&QR!GOL+*>Cd,b-()SdL#A;N(G`P!4:-FR?5daV/Q[KA^0olU+Ilu9(9%lcel5F %5%Bg=A#TP\)(=J%^?6/00MMkbjqFJaX@JAVYoEiJ[F&$L:54`C2LF_S5u0M80\"4aZ$86DN*DmuD:T3b8FG%J5\4j?7(jb6<%+m$ %h!FE!4.l1o&)[+YA,$A(V+hX7Mo0%2+0mg[D$`Cc(eY?S#Rr\g$LNZgAk0TD2AS"$#5)VV'I*\AE\amtD12]Z>mr[KiT?icB]-3[ %1`AP2lc$$)G`(A)V,XDkIB,pSYd)K><0LP.r#=@B\:_UQ#_bW %fE/'Y9KQg?5r.fj&<"'?m4IkpNbP1?,:_T&Z;NC73X55Ts(_*l_ZhA'fc)GBZJ>j[P>4c90H`Cag':teC_THeSooY?E!'BnEE7*H`4uZqg3]jTL]:,)jke%7!TT5h9\9VJh`ahMK27b %qo0'LGK+tQlRiBRD3'bo2Z!``mm/IW^!QU.#2:lH08Lo)!@Zkf-do.Y%&T'Fj`H4.8QOJOH>S05*d`"kk %0hp8G-Z-G,fTp>i)cJVg%7OIC>grKFdkuU<7:dctE"*>FD$q7<5J+17gh5@*%;[S=ei?EWA@cB1-WKs<@acK7;!L<^W%-Qn0;a3Y\KkeKeS#_pVA6)R'XmYIPm %7aSt5<=XSRdh0P1FFqQB5DIH#5ptHeZ9O(=:K3=H,G>9b_9a&EkZ$3D]eFQJ#W`C3]*F'cIRQZO)4jo5^sE5o&Ti7[ff1.C%XT]W %NLaC(%Qka<1^l:ZtjPU#:Upm5Wm<>$\FOO+537EhO:VSm3#02VDHTW5aXS9WT-`&8d %s&(Z!_dXZ/Emh0?S1]ACFaT6lR&HP,a4;]gj?A2KBonB&OXgMt)+*I2,aV*hQr2Jb+592>N&Gb0"@0A).Lgg@#4^aSl=n^sB(a1&Vc7"7]`1JYUZH0+(k/>Omhb]%rAQl*9NJ?mX4A(WpMqlD=]6j>l^YgO@?X*uFV&MQ#QF3NPj`:>&D=!:]) %QmV=7.K4%d1R5e4W.\.D(n6)i.;g#V?%WC"j-HQe3DpN8"2pZsE9(MQ&4:q@Uq8DWdn7*S'-lBqX-;re]b8i(PJ'Qu0).ukWmc05X7k2p`m"Km+s(W:mBO+=n.$IN(\H])7(`#h[\8G"1eYV0En.T:OWeoT8gT.sRG;A,HT).7+q$2L(Gk!5[>55K42#Jg %,(k"EO3#7FfgSkeGK8rV+u4.>cJcRjfM9d?9+`&+5t$@g`6LK#M9+?)?uRjhScOf=;r`[mN@"2s@;%!uN\'oRSK8u1&&Q[A&K)RN %C6$Wp/L$sM^dH*e=lD@DNua#>WPea2_X?")H1rBe^/Vbh8"B*W:jtStV5U/Il8:Vuqe:1X##oJYDJ# %^b4]`gH"!4@92;roMf3,/SKm>g\K\[`T)T\3ii(&,[;?]=VHn6VEn&"S[9^-79Q2R<';>^,dh95UEfXhLW76Zj8=\N__L%5[MKu[ %Pm,u*"F>`[LU3SG\dKR>Ph-.+@u&%@m>2Th`5C9P6!OZ1_l<1I$6i4s3JYDf8T>Re&\!gT8&E0kD@&9R*mR5C`#T0qVtJ"Wa#[5V %NQ&Nh`=?HN%/SJD8<%K.OqZM]b)%s?rS-5CiUp"R"W9*>:#"'#CU)%hYL(SO#V=U8gl_=n=@MTohaOQfJN(o"L>Y+=5g04'+J2_M %`Gi?:M]qkS;%,L=.u0P!$O]J+l)1^)q5?" %3ZPn/Mje5e)l"LeRX,:ogD[bY.tJjMXCJnoZ(4(Pat*dbLmWgT>d0/XNB*@kUhkk:Qm8lFlN4RZGO6F:6O9e]+B%YpWEr0PQ6 %C_?h)]q#u!%h5t[1;'s:FF1fhf9gPHW&Fs(FB$m6'`!G_j+tl]S-,HopmXGEF#CC]DF\hrp`r&/LJP7!4)eT-nC8'b%C`n,5@mq> %rR;mg?!#u,=B%*BOsebSl*C'k"+[N)0t4`5*fa%u@r_"K//`YtGBf(^DNV/L]jO6\H2d1<4+5#o=O-p:l[]7`]/Kf'I2X?s?8$Vh %Z)4%_f]i0b7W`6q`N&R7.%CM.k'WdO8l5rs/,m)njcO;oDF4MZ*FNi;Nj.O^=mgl.2!&gbJ+FmgjYdd*h)[hLg'g.%;Mi8*Yj_41 %HkE.%GTAH&k\Ap,g8RL-jeqU-3W]i5cEgCRcms)[r71\t2`CPtmu=d55Lf-F.O+8p;13Ctg1'VY>^,2Y$#re&-Q5?OMUM9Q$Oq*V %YHap*8Rb6$`@Y3B$'DO^5L_513#Ou.]&&/glpNn@?n2"a.CTIh'53rRNSp@)ILWVfRWk\U8*Z7XVoh:TaY?9DC?@P+N-mYr.*Il% %YE-5M*4[Ht*ei@^Ln*`)<-@)S2-"f:T4tD.G,@'.QD-!/UC-/Vj4LsX1TN&u9Qr?^dugkV`(9?'BKAe+R%;WH,V5L@@g>9JObT_o %'0d%sNo\&Lno?]Hh#WUu4!%nl47XQAFe%g*M_gK(TSfs-SujpJ;C%#gQn.p0WE6t@-Q_mq-[ksdV4PG.30$q8+U$tMl%_kN#Wa18)7M^MP_UQ".^bY'MV),L@*o4 %3g(5WXiHd`gB$B-f$aom!"/D<9FC5D!pP1#<5.,BqNG,EONphXe]dbdXc!;2X-:0V2N,K>;m24g5&I1d#%-2u,G-ePn^"YS@DTGV %hAPUlRWb]E=K7D8-$j\odo*BN>lkdlQ!;NBpgbSm=q+ukWD;I#ZH?G3)WnT7d<\1l<+VA-bn?HA5!;.h'LS9MeX\20-M^tZmW@"@ %R*LJhQFS6kY;?@0=hYPST:\e*FLTGDYVLDlR %rA4WOPp&T\N0F9/A%R`ZX6.$"LFQgCqZW4PeOgKSJB11l?\bL'8A8Y.n!L\g^g8(1aJ.??Z-M\QZPM\qq#ab&/M %03IL]RE<22hW(/hO8GC[W-k'8OFd)3)RXX:>67V_HWR7;XlrAmWOsJl-j)A9`uNY0hVj.>9?=2b8A(rW"'HlhTfSd[/s3>LM4`0_OZZ$+0nt%4&WcD8,]DN6\RVA>Kn>fl'e;NZmd+jDs$D2mjK_7 %B>Me(<\i4P\_A'*/$?,Z!,H))0GR^5Ia8aDB:ik''X^Et*!4G(-7(\bHnj)n%$!1n+=>c:ekatZpib(O1pUQ0/%ldOch7o;%%m6t %U$FEWN6)'_POm0b;5hMd^mNIkXh3uMGl`mF-lEEg0:$!>L)`i,b-(qhH-9)N>B=8TM85nOM$>X\CEOtNV3jPJ@0_a,AM=O.$puO@6a"HjJG@&ni %;Jg>]FkD(?fCa_rk)NP`%c(r[!*^[/p5`ug;O8)l.AuJZIQXKYn4&54CA'CK?dkUB'5]X/6^akgK]i8+D'(X^1had_%"9tIr`tf> %FTc\t>4DI@2B1$acn8T;La6U#)I'Jf*V7WIG2CI2(4;;,R4o;t"^6;iY1:Nru4[A8PE %BFtkV21PPYX8H9Wh'd6Uq>m43)4:p92_&kWG9FaT:?k$;-1Z^O%*DPA'C6SV@5h6?o2p5[XKned\s=Y^P4Ze1-!(eY_-@t-Ds!! %"5H:+$nYKCg3pbS-@Rbo^"2ki,KhKZ'VYU%]`oB1L)DXVlF"FIkZM(?nM(Jfq=$"NDf3BI6A5?*5_Dp>5MXH4lXt%<;_j.[fC^?s=&me3(/qMBf?\[gD+jt9o=BCj6PEMkrcS0uX89)&!&:YBB07:p-A^Mrp%\7$]^JnQO4]?&jm?95O6o2$4A.GCk7GFQ %0lFOG>sIALIdm!s&9[q>0r.eA;r9sJ:L-3FUIZ[-#H6r9D_4?j6B]K>lhUbo'<[JtEe(`M`WsB_Jp[O/I`;Uu7',S^Fo=ib8]?/9 %Y9"eOl*+kb^3sqiOQu?VUop>p&^Q3oR-X&6Z/?\%fsWuoocj_!V5et_.Qc8Tdtj^[G3(k`Bbp7q"=j<#oeSdM7Tfj!W9Y6VXQjH' %*oDuL)Z"c-H]'&@Wo)+ppal6hPhR/LFoAD,imT`\]hrFo\pap$6*9EbJp_+3lY!:.R8IZFf3]Aa3VXNI]riHN?`L,T]AD8;XmsIALIS=BGN$\,[ %&J.+:Q6MqJFo@7X#82o8Qb%Y9cD3Ncd$r:[;[I'.Z74T7HEd.WpoUals\kMcDo3tJF/]PtPoDj'FG9,4W03Lt0!hOf#[[M/PuDO77Rm]JCKEDMpZ1[\rj)0"VZpkO2+>e@Q0 %r5cWV?%fnlouU-I[Joj+=52Nm@I7<#?6eu8Ah,&ehgW1F?;b,,H,&A$e%UZ_hK@]3h\9?\X(]Dg-cQtZk?]e$\2esD#B(MdDt,;A %:Bb;XTXQe.XG>7FcR5*C?j":&_Y2O#;q-6kEINnkI:B!RNA'sSHtD]]YJ_/V!YX(J9_aCZHp4&F1(,f=%+iB[TDPe<88W80=G+XI %$1M`5<9+rVG7C_>r9^Z'P02_0Rp[BX7^XWb![b0Ys,=,3O2&a)1T0YQ@mN^$nL56>.R^pW:5JGk:0)ci6f:>iWNh/B0aFY) %-:HIWh[SqdnAG>N[\rW@0eB?X[>1NK&S,)X@.,j%p&2sK!?G#<2UHB:qpDQ%`,UtnSL,r62jM-,6'>8XPXLkYWn3=dd=>dTmf %aW5fhAj0QsHB8L_%q>3//h]@9LQi#l(Tp]$*]5.a,Ht=1b0knPV`[e>Ds$t:Ujb2_AiZgZ%T0[FV+6NLnd&CJi3Q0XfGC:,9+Ke_ %(Q>u3h])'ncbm0n5d,"0@KYG$&:Po.rhP%ZgNH]I-!R@+)>LQP6!lriCr"e@%dNBtpbRP@#=>ced`kQUQp8>9i^Z`e(EKs39EH]o %fWdthGSreHig!2"@ria<8,h-*H`D'gq8tZQW[0+30nmVdmoACjJnD3]9!asUYtTM&c1X/ofi5_JX.JrHa3W<1o\&frk2b\8aVA0. %#`PREm!fn#P`Ip"'j,-.EI"6@X(Qb4;3oH0#\i?=I!-N]bR-X$O'd,hESQ;r/&;'h!51]2P'@@lr=CN[Hs=2figV"a%@C]u!T[>t %!0hn65o1sMs2DY^8A#`eJ8Gdim9B:G^N;h>!8@:[i`[lAI;!JJTq1u*HBBEt?iq(W2#2d'LdU)%F;$hj](#f@9o_/l3e*_5`?*Sf %R=EL*i1oBMB(FLLLYdVI_dC>Ii,G"L:M;ARljNPnF@1jed>u*j,.Q,ETj/-X:LO%L:J&A70OYc1_CC]J^^#9Q,n4CeR.dRl?^.9o %+fJ9R'1X#*p0nb2UCU%(^EdNEG*GWpcf!)t##(j<5B;bp3df4Df:s\.g>Yu4IBRI\>C/[0Lb.g %(@i3g_%Q2;6jR %^PNZ(@2)^fJL=ehL#39YR[ppn)#,Zk'*3rljd"QJ,f\<&'*f7)TA.`UHBBTT4L8G0ecdQ<[-bn,ds[0Yq@6%e`W;?*;pRIhN?(,boOp)_B&9:4)n-0ib%VN %)Yj.YW#c[g,%'W/-A2TWO.cj9^jE=N%R?*RH3:3%oBSS`XbT`4go7T%4nnlRas.IV]DSMP"T7hU^4EDd!MGW>/Pf#Z6m,9YM^"85 %!*kiu*o9!ce7bcqKWcTjB2SI\TPHm-5H%pjop3u8d!5TY^W>kJ:rA]e^h^f>&_l*T?D6( %3FRmjB)QI[lc;fApAL1ag&mDonskVEc5jKJjh^PEVUsi+0G7N.,5f1'_\6T*b$0UWcqFQ(mu+.J65,FF-B>jEjX(091FX;r$4T*H %%=g(q+m#EM&%2)^t7N=Fdsf\6S\ %p@&<*HY(7SDB8#OpJ*(gQ.%25Q0J2WHi&hGA@fQ;1B#$M1B#s":.#D#6>fC]BP]"q![<%ggT$3aokjr^kFIk?#!bWl7=96(rBd1`k:'VLgCpA5An`*bS_XC.N(b=g?6o)#J`5NrGOS?FSJ6_Fs %Jc%g%$-0h%hcpPK8Ri'brPn^G]+4#C\>pAX'VB!ktJrl-Z/I=HAZo;hT1%!nJFat1']B"mT) %k_[3eO;I(s5fHsH^_Bfg(??c(d$iQ79+>'^`POJ+FF!eLXf(V7WJaBVHb=birQ%tOTat[Fns*Xf*lP7g,(t.>"E,-'q3X=B[dSc\ %_JNFm"G0W(2&:ga`8MNX]RPVC\t3+Qg@2Bggks+"o9.QI1?OcF/Ue_T]jSu/;CCV$ZIF,;ZFjQm)9;Ja]q=q"WUcKb:![Im %,qeg&bU.qBI=t(oq)s%t&PRt.KI3>tNU"H>;.q'e>\I;Y],8k=$,7(+7Qa??a$O:RQ+hC7&NFPM1b_6?CZ:LA)<^r/V%0/"%-iLX %Z.U>+J562sYE19cEg;hrYCLN<0_>Tr)#71RMp+dAqkJ^7?K*=5Y0GR1@33K_jcV#F;B.#$CW$YVW(QWD9S35>E$EFt+A\.:--V.db=,\_0AL?fp&A?)ZHp5J:UZj7 %IUu]n63Z"Tc<9,'G2g`QNWXpoqt@=[r0iS9^k:i4q@(%8S:FZWZ^bY_m]&Db.;5l]U4`p+p*Xbf=9-s&E:u*QUKAt2M)(ZRON,u_ %hMlpZ7e1IoZTEFk;!^>IekM"q`6bNEHgI9R^H%6sK<8[9Irc1i#2V_!GcU.N1+XE&#a&cm]&WSU\%NYpQ*VK2Q_4T#HV8o:>`0J- %W4dga^79AN9,BQe)gr;gIPkI_V0R;R(IpYNmr()C3uWM%l*-8(!Z;/nqcO#EZ7(h6Cb3*+#4hS;P6E`V-Q.$WJ59TkAVRKH'PR@_Qb0,Q^c, %<"#ZePg1dV0]G"ePCrbU6Rmpcnc2qt#f_>qk2jSNMS6AL;a?Fj8a3gRa#2/S"DI.q,qnVn*0pSrbhFZZW$k;C36om+*lPk3 %fNX>^iq53'JPBn]&+FE2>,])TpgmSV0ZK,#)qCYlKS<5G/_W,N>j-[i9^kg>('+ %44hChd%bDm\:kgf-[sUs&ks-.b(?Fkh^Ihh5Z,"d=Pkfj)Nure"3)KBI=SGcNd`8.:&^P&AIp;p`mc0?d/ss.`etUJ(kL5H?"TE0^aqm1f>Ar(bo=JPZLdS[pA;O4mD?*d@\51oZ+UlC-0,*a1`RSI10qe;LgG`Zjt8*DlOU]T"Dc.e+R8;AX&GPcI56rYJ+F_)jT$!*\lJM5D1\j=)rSXgI.R2ij%tMB@QQBE,d7D(dE(k(cq9u#%lci;f7=GeK %5?R&U.d_q[J9SgQ=bCl,4;5F?MJW?!lCLNU>bO,Ar6f[)K6u3M=B741YcIOA`8W6jI,uYSL$`,bnFE:gg^VV7Z!"?j"7C?Z %r(>fOaaJ,X8`aL&gdKYliiD7FLU-nVq3\d:@>75?7hg;ENWfHd"WEA0HL,%aEbZU,FfoTLI'A+58eq5[Mj*e^bU7'is*`3GY2nOD %0;fRK.gq@2DeBH7"a?t8_q/&qG`I/!XE1m[8f:$EmH%6i\#b#NH1BGY@3jJ,F[&^PP+.WCPgkD/Q^"'?c]Yk98f,)%lfl(@XTARlmHW0fifm_7s2FkSg0DJlMXBZ*`[kH^5Qjf`FHBtiuS#.$"a:?sLm/HoO!Y46+p)<;9G#p7/[>4\AZC(Q7 %jg]htNYh1N$0FP"m%O#:b9$G"Xt[=,[ed-g^!f\20WWhWQ2%8V98U&0c6C%!*3ds/Q*aH^Lr+0sc%&BX0:o-7S-o\1n`[md7 %*iWg3gC\*5"FuR3Lj!DqfT&2*i5'OE]`f@f*PCd*Q+"^=&-P14TPZajPhIHXahGIS@h.(,Dr& %%rlkr6:"!eb'=c/HA3d=7Uqb%@*%Z?Lar %CX9r!5%%?BR&%T;GdQG^gqoB;ru*tqm:qe\,rr#lfCVt^C)/U;Vui^OY %)ep35R)!@b#Qusnj?1WJR9r(G:H"s..iEk$O;S_'pf-1I-5=WSi\(2YhC6E`S*p[nepTeCWk/X-ur-:$Y=fD4^V1ndJkL%Wg52ZRVEH"YL`Qol\!V*LM,7*Hc.=6@sL$ru? %U"(gW7HS&FXA[dU+g\t:8/U`AEou?t##kY1SLQp&9U?_Jl&pQ(9K8dn9_tQ18NC)@C]=RChA\R91sUi>1V0GKjktue`&(6mDV+Ve %;r]MFUh+U^Z;>W.]i#Sq?73A?r` %b)+3S1s%%\q/8uJjL&%+s4ASug&1ls,T#kdchq::*6nr2KKc&#DUW'*s+s=MNf*ftP8p_[@$Jh]Gt",V5uL,r)#31/%tS":8DqF+ %MM*uU>C8_f!&q;5fiN^`X4]c*rB2MZR#\_R<_(aFCD'e[W"\*ASU:K/4#K6t3?jEn8VeA-r>\_;g %j8.(q*=B*_h;FLRI'[+q0-nT'q:iqcBC_\jaqd&Oro:eDn8C@7']Uu>Hnl#b,iPYlWQg44HPH&nFae/pEV*eLWI;Eq5(7u.X8a1$ %i(&Fk:;:'rarLfG*Jj-dk5cEFN:joDa>"Vr5NApuoJQ&kD+T%o;!.%0#nQ %(/Jp?nQ>AG)nk5ea[dtRarJC\a[h/Io1+0XFqj+;khd0qT2#^=iEJLf.mJQ&?p!:.n5UYUr`o:c4I&A&^jf^-EqAL)fELLE;L`"h %CKiobQMLelnS'VmV\5YZ,Ss%mPDLMJSe1`&rWRCB1#Y-?bO\[_GMJ'^ToMg*iT"YOT %>:?+/Ek%km%,A]"/s$V9DXor/s30X*/\LOhITQQ3hB1L6U^UkDe %AI9_PrivateDataEnd \ No newline at end of file diff --git a/doc/IGE332/vect.eps b/doc/IGE332/vect.eps new file mode 100644 index 0000000..eb6c130 --- /dev/null +++ b/doc/IGE332/vect.eps @@ -0,0 +1,4962 @@ +%!PS-Adobe-3.1 EPSF-3.0 +%ADO_DSC_Encoding: MacOS Roman +%%Title: vect.eps +%%Creator: Adobe Illustrator(R) 13.0 +%%For: Alain Hebert +%%CreationDate: 6/13/09 +%%BoundingBox: 0 0 370 231 +%%HiResBoundingBox: 0 0 369.5000 230.0684 +%%CropBox: 0 0 369.5000 230.0684 +%%LanguageLevel: 2 +%%DocumentData: Clean7Bit +%ADOBeginClientInjection: DocumentHeader "AI11EPS" +%%AI8_CreatorVersion: 13.0.2 %AI9_PrintingDataBegin %ADO_BuildNumber: Adobe Illustrator(R) 13.0.2 x434 R agm 4.4379 ct 5.1039 %ADO_ContainsXMP: MainFirst %AI7_Thumbnail: 128 80 8 %%BeginData: 6470 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FD31FFA87D7D84A8FD4EFFA8A87D7D84A87D7DA87EFD05A87D527D %A8A8FD047D527D7DFD12FFA8A8FD4EFFA8FFFFFF7D59527D527E7D7D527D %7DA827FF7D7D52FF7D52527D52537DA8FD12FFA8A8FD4DFF527E7DA8FFFF %FD04527D7D277DFD04527DA8FD047D2E7D525252A8FD13FFA87DFD4DFF84 %FD05FF847DA8A8A87DA884FF7DFD05A8FF7D7DA8FFFF7D7D7DFD13FFA8A8 %FD4DFF7DFD30FFA87DFFA8FD4BFF7EFD30FFA87D7DA8A8FD4AFF7DFD30FF %A87DFD4DFFA8FD30FFA8A8FD4DFF7DFD30FFA87DFD4DFF7DFD04FF7DA852 %A87D7DA8A852A8A8FFA87D52A8FFFFFFA8FFA8A8FF7D7D7DFD11FFA8A8FD %4DFF7DFFFFFFA87D52A8FD0552FF5252A87D275252FFFFFF27A852FFFF52 %277DA8FD10FFA87DFD4DFF7D7DA8A8FFA87D7D52527D527DA87D52A87D52 %7DFD04FF7D7D7DFFFF7D7D7DFFFFA87DA87DA87DA87DA87DA87DA87DA87D %7D7DA8A8FD4AFF59FFA8FFFFFF7D7D7DA8FFA87D527DFF527D7DFD05FF7D %A8A8FFFF7D52FFFFFFA8FFA8A8A8FFA8A8A8FFA8A8A8FFA8A87DFFA8FD4B %FF84FD30FFA8A8FD4DFF7DFD30FFA87DFD4DFFA8FD30FFA8A8FD4DFF7DFD %30FFA87EFD4DFF7DFD30FFA87DA8A8A8FD4AFF7DFD30FFA859A8A8FD4BFF %A8FFFFFFA8A8847DFF7D7DA8A852A8A8FF7D7D59A8FFFF7D7EFFA8FFFF7D %A87DFD11FFA8A8FD4DFF52A87DFFA8527D7D535252527DA85259FF522859 %52FFA87E527D52FFA82752A8FFFFA8A87DA87DA87DA87DA8FD05FFA87DFD %4DFF7DA8A8A8FF7D7D5259527D277DA85952A852527DFFFFFF527D7DA8FF %AF7D52FD04FFFD09A8FD05FFA8A8FD4DFF7DFD05FF537D7DA8FFA87D7DA8 %A852A87EFFFFFFA853527DA8FFA87D7DFD12FFA87DFD4DFFA8FD30FFA87D %A8A8FD4BFF7DFD31FF7DA87DFD4BFF7DFD7FFF7DFD7FFF7DFD7FFF7DFFFF %FFA8A87D7DA87D52A8A8527DA8A8A87D7D7DFFFFA859FF7DFFFFA87D7DA8 %FD5FFF7DFD04FF537D7D7D527D527DFF7D52FF7D525259FFFF7E527D7DA8 %FF52527DFFFFFFA8FFA8FFA8FFA8FFA8FD54FF52A87DA8FFA8527E275259 %5252FF52527D7D277DA8FFFFA852527DFFA87D527EFFFF84FD087DA8FD54 %FFA8FD05FFA853A884FFA8A852A8FF7D7DA8FD04FFA87D7DFFFFFF7D7DFD %61FF7DFD7FFF7DFD7FFF7DFD7FFF7DFD7FFF7DFD7BFFA87D7D7E7EFD06FF %A8FFA8A8FFFFA8FD05FFA8FD0BFFA8FD35FFA8FFFFFFA8FD07FFA8A8A8FF %FFFFA8A8FFA8A8FD10FFA8A8FFA87DFFFFFF7D7D52537D52527D527D527D %A87D525252FFFFFF52A852FFA852527DA8FD32FF7D52527D7D527D7D7D52 %7D7D527D7D277D7DFFFD05527D52FD0FFF7DA8FFFF7D7D84A8FF52A87D7D %527D27A8FF5252FF525252A8FFFF52527D7DFFAF537DA8FFFFA87DA87DA8 %7DA87D847DFD22FF7E7DA8A8FFFF7D7D7D527DFF7D527D527D277DFF7DA8 %7DFF52527D527D7DFD10FFA8A8FFFF52FFA8FFFFA85252527DA852527D7D %7D527D52FD04FF845252A8FFA87D52FFFFFFA8A8A8FFA8A8A8FFA8FD22FF %A87DFFA8FFFFFF5953527D527D527D7D52527D52A853FF527D527DA85252 %7DA8FD0FFF7DA8FFFF7DFD06FFA8FD05FFA8FFFFA8FD08FFA8FFFFFFA8FD %2FFFA8A8FD06FFA8FFFFFFA8FFFFFFA9FD07FFA8FFFFFFA8A8A8FD10FFA8 %A8FFFF7DFD4CFFA87DFD2DFFFD057DFD4CFFA8A8FD2DFFA87DFFA87DFD4C %FFA87DFD2DFF7DA8FFFF7EFD4CFFA8A8FD2DFFA8A8FFFF7DFFFFFFA8FFFF %A8FFFF7DFFFFA8FFFFA8FFA8A8A8FFFFFFA8FFA8FFFFFFA8AFA8FD2CFFA8 %7DFD15FFA8FD17FF7DA8FFFFA8FD04FF597D527E527D527D597D7DFF7D52 %527DFFFF7D52A87DA8FF525252A8FD2CFFA8A8FD04FF7DA87DFF7D7DA8A8 %52A8A8FFA87E537D7DFFA8A87DA8A8FD12FFA8A8FFFF52AFA8FFFF847DFF %FD0552FF7D52A88427527DFFFF7D527D53FFFF7D5284FFFFFD0AA8FD21FF %A87DA8A8FFFF525384FD0552FF5252A87D277D287DFF7D52277D7DFFFFFF %FD0FA87D7EA8A87DA8A8A8FFFF7D525252FF537D527D7D7D527DA8FFFFFF %847D52A8FFFF7D7DA8FFFFAF7DA87DA884A87DA8A8FD21FFA87DA8A8A8FF %A87D7D52527D527DFF7D52A87D5253FFFFFF59A87D7D7DFFFFFFA8A884A8 %7DA884A87DA884A87DA8A87D7DA8847DFD05FFA8A8A8FD04FFA8A8FFA8FF %A8FD05FFA8FD04FFAFA8FD2EFFA87DFD05FF7D7D7DA8FFA87D597DFF527D %7DFD04FFFD057DFD12FF7DA8FFFF7DFD4CFFA8A8FD16FFA8FFFFFFA8FD12 %FFA8A8FFFF7DFD4CFFA87DFD2DFF7DA8FFFF7EFD4CFFA8A8FD2DFFA8A8FF %FF7DFD4CFFA87DFD2DFF7DFD04A8FD4CFFA8A8FD2DFFA87DA87D7DFFFFFF %A9FFFFFFA8FFA8A8A8A9A8A87EFD04A8FFA8FF7EA8A8FFFFFFA8A8A8FD2C %FFA87DFD05FFA9FFA8FFFD04A87EFFFD04A8FFA8A8FFA8A8A8FFFFFFA8A8 %A8FD0DFF7DA8FFFF7DFD04FF527D7DA8FF52527E527D52527D52527D527D %7D52527D52A85352527D7DFD2BFFA8A8FD04FF527D7DFFFF52527D527D52 %53525253A8537D7D52537D52A85352527D7DFD0CFFA8A8FFFF7D7D7DA8FF %A82752A87D527D7D527D59527D52A852A8FFA87DA8537D527D527DA8FD2C %FFAF597D7DFFFFA8277DA87D52847D527D7D527D52A852A8FFFF7DA8537D %527D527DA8FD0DFF7DA8FD08FF7D7D7DA87D537D7DFF7DA8FF527DA8527D %A8A87E7DA852A87D52A8FD32FFA87D7DA8A8527D7D7DFF7DA8A8527DA859 %7DA87EA87DA853A87D52A8FD0DFFA8A8FD08FFA8FFA8FFA8A8A8FD05FFA8 %A8A8FFA8FFFFFFA8FFA8FFA8A8A8FD33FFAFFFA8FFA8A8A8FD05FFA8A8FF %A8A8FFA8FFA8FFA8FFA8A8A8FD0DFF7DA8FD7EFFA87DA87DFD7EFFA8FDFC %FFFDFCFFFD09FFA852FFFFFFA8FD04FFA8FD0CFFA8FFFFFFA8FD09FFA8FF %A8A8FD23FFA8A8FFA8FFA8FD04FFA884FD0BFFA8FFFFFFA8A8FD09FFA8FF %A8FD0BFF52527D7D52527EFF525227FF7D52597D7D52FD047D527D7D5252 %7D528452527DA8527D5252527D525252537DFD1FFF7DA8A87D525952FF7D %7D277DFF52537D537D7D7D527D527D537D5252527D7D7D52FF527D527D27 %7D527D527D52FD07FF7D5252275227FF7D7D5253FF7D2752525352527D52 %527D2E522752527D5252277DA87D5252277D2E522752277DFD1FFF7D7DA8 %2752527DFF7D7D52A8A827FD06527D27A852522752527D52522752FF7D52 %52277D525227525252A8FD06FF7D7DA87E7D7EA8FF527D7DFFFD097DA852 %A8597D7D7DA8A8A87DA8FF7D7D527D527EFD057DFD1FFF7E537D7E52847D %FF7D7D7DFFA87D7D7D597D7DA852A85284FD057DA8A87D7DFF7D7D527D52 %FD047DA852A8FDFCFFFDFCFFFDFCFFFDFCFFFD15FFFF %%EndData +%ADOEndClientInjection: DocumentHeader "AI11EPS" +%%Pages: 1 +%%DocumentNeededResources: +%%DocumentSuppliedResources: procset Adobe_AGM_Image 1.0 0 +%%+ procset Adobe_CoolType_Utility_T42 1.0 0 +%%+ procset Adobe_CoolType_Utility_MAKEOCF 1.23 0 +%%+ procset Adobe_CoolType_Core 2.31 0 +%%+ procset Adobe_AGM_Core 2.0 0 +%%+ procset Adobe_AGM_Utils 1.0 0 +%%DocumentFonts: +%%DocumentNeededFonts: +%%DocumentNeededFeatures: +%%DocumentSuppliedFeatures: +%%DocumentProcessColors: Black +%%DocumentCustomColors: +%%CMYKCustomColor: +%%RGBCustomColor: +%%EndComments + + + + + + +%%BeginDefaults +%%ViewingOrientation: 1 0 0 1 +%%EndDefaults +%%BeginProlog +%%BeginResource: procset Adobe_AGM_Utils 1.0 0 +%%Version: 1.0 0 +%%Copyright: Copyright(C)2000-2006 Adobe Systems, Inc. All Rights Reserved. +systemdict/setpacking known +{currentpacking true setpacking}if +userdict/Adobe_AGM_Utils 73 dict dup begin put +/bdf +{bind def}bind def +/nd{null def}bdf +/xdf +{exch def}bdf +/ldf +{load def}bdf +/ddf +{put}bdf +/xddf +{3 -1 roll put}bdf +/xpt +{exch put}bdf +/ndf +{ + exch dup where{ + pop pop pop + }{ + xdf + }ifelse +}def +/cdndf +{ + exch dup currentdict exch known{ + pop pop + }{ + exch def + }ifelse +}def +/gx +{get exec}bdf +/ps_level + /languagelevel where{ + pop systemdict/languagelevel gx + }{ + 1 + }ifelse +def +/level2 + ps_level 2 ge +def +/level3 + ps_level 3 ge +def +/ps_version + {version cvr}stopped{-1}if +def +/set_gvm +{currentglobal exch setglobal}bdf +/reset_gvm +{setglobal}bdf +/makereadonlyarray +{ + /packedarray where{pop packedarray + }{ + array astore readonly}ifelse +}bdf +/map_reserved_ink_name +{ + dup type/stringtype eq{ + dup/Red eq{ + pop(_Red_) + }{ + dup/Green eq{ + pop(_Green_) + }{ + dup/Blue eq{ + pop(_Blue_) + }{ + dup()cvn eq{ + pop(Process) + }if + }ifelse + }ifelse + }ifelse + }if +}bdf +/AGMUTIL_GSTATE 22 dict def +/get_gstate +{ + AGMUTIL_GSTATE begin + /AGMUTIL_GSTATE_clr_spc currentcolorspace def + /AGMUTIL_GSTATE_clr_indx 0 def + /AGMUTIL_GSTATE_clr_comps 12 array def + mark currentcolor counttomark + {AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 3 -1 roll put + /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 add def}repeat pop + /AGMUTIL_GSTATE_fnt rootfont def + /AGMUTIL_GSTATE_lw currentlinewidth def + /AGMUTIL_GSTATE_lc currentlinecap def + /AGMUTIL_GSTATE_lj currentlinejoin def + /AGMUTIL_GSTATE_ml currentmiterlimit def + currentdash/AGMUTIL_GSTATE_do xdf/AGMUTIL_GSTATE_da xdf + /AGMUTIL_GSTATE_sa currentstrokeadjust def + /AGMUTIL_GSTATE_clr_rnd currentcolorrendering def + /AGMUTIL_GSTATE_op currentoverprint def + /AGMUTIL_GSTATE_bg currentblackgeneration cvlit def + /AGMUTIL_GSTATE_ucr currentundercolorremoval cvlit def + currentcolortransfer cvlit/AGMUTIL_GSTATE_gy_xfer xdf cvlit/AGMUTIL_GSTATE_b_xfer xdf + cvlit/AGMUTIL_GSTATE_g_xfer xdf cvlit/AGMUTIL_GSTATE_r_xfer xdf + /AGMUTIL_GSTATE_ht currenthalftone def + /AGMUTIL_GSTATE_flt currentflat def + end +}def +/set_gstate +{ + AGMUTIL_GSTATE begin + AGMUTIL_GSTATE_clr_spc setcolorspace + AGMUTIL_GSTATE_clr_indx{AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 1 sub get + /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 sub def}repeat setcolor + AGMUTIL_GSTATE_fnt setfont + AGMUTIL_GSTATE_lw setlinewidth + AGMUTIL_GSTATE_lc setlinecap + AGMUTIL_GSTATE_lj setlinejoin + AGMUTIL_GSTATE_ml setmiterlimit + AGMUTIL_GSTATE_da AGMUTIL_GSTATE_do setdash + AGMUTIL_GSTATE_sa setstrokeadjust + AGMUTIL_GSTATE_clr_rnd setcolorrendering + AGMUTIL_GSTATE_op setoverprint + AGMUTIL_GSTATE_bg cvx setblackgeneration + AGMUTIL_GSTATE_ucr cvx setundercolorremoval + AGMUTIL_GSTATE_r_xfer cvx AGMUTIL_GSTATE_g_xfer cvx AGMUTIL_GSTATE_b_xfer cvx + AGMUTIL_GSTATE_gy_xfer cvx setcolortransfer + AGMUTIL_GSTATE_ht/HalftoneType get dup 9 eq exch 100 eq or + { + currenthalftone/HalftoneType get AGMUTIL_GSTATE_ht/HalftoneType get ne + { + mark AGMUTIL_GSTATE_ht{sethalftone}stopped cleartomark + }if + }{ + AGMUTIL_GSTATE_ht sethalftone + }ifelse + AGMUTIL_GSTATE_flt setflat + end +}def +/get_gstate_and_matrix +{ + AGMUTIL_GSTATE begin + /AGMUTIL_GSTATE_ctm matrix currentmatrix def + end + get_gstate +}def +/set_gstate_and_matrix +{ + set_gstate + AGMUTIL_GSTATE begin + AGMUTIL_GSTATE_ctm setmatrix + end +}def +/AGMUTIL_str256 256 string def +/AGMUTIL_src256 256 string def +/AGMUTIL_dst64 64 string def +/AGMUTIL_srcLen nd +/AGMUTIL_ndx nd +/AGMUTIL_cpd nd +/capture_cpd{ + //Adobe_AGM_Utils/AGMUTIL_cpd currentpagedevice ddf +}def +/thold_halftone +{ + level3 + {sethalftone currenthalftone} + { + dup/HalftoneType get 3 eq + { + sethalftone currenthalftone + }{ + begin + Width Height mul{ + Thresholds read{pop}if + }repeat + end + currenthalftone + }ifelse + }ifelse +}def +/rdcmntline +{ + currentfile AGMUTIL_str256 readline pop + (%)anchorsearch{pop}if +}bdf +/filter_cmyk +{ + dup type/filetype ne{ + exch()/SubFileDecode filter + }{ + exch pop + } + ifelse + [ + exch + { + AGMUTIL_src256 readstring pop + dup length/AGMUTIL_srcLen exch def + /AGMUTIL_ndx 0 def + AGMCORE_plate_ndx 4 AGMUTIL_srcLen 1 sub{ + 1 index exch get + AGMUTIL_dst64 AGMUTIL_ndx 3 -1 roll put + /AGMUTIL_ndx AGMUTIL_ndx 1 add def + }for + pop + AGMUTIL_dst64 0 AGMUTIL_ndx getinterval + } + bind + /exec cvx + ]cvx +}bdf +/filter_indexed_devn +{ + cvi Names length mul names_index add Lookup exch get +}bdf +/filter_devn +{ + 4 dict begin + /srcStr xdf + /dstStr xdf + dup type/filetype ne{ + 0()/SubFileDecode filter + }if + [ + exch + [ + /devicen_colorspace_dict/AGMCORE_gget cvx/begin cvx + currentdict/srcStr get/readstring cvx/pop cvx + /dup cvx/length cvx 0/gt cvx[ + Adobe_AGM_Utils/AGMUTIL_ndx 0/ddf cvx + names_index Names length currentdict/srcStr get length 1 sub{ + 1/index cvx/exch cvx/get cvx + currentdict/dstStr get/AGMUTIL_ndx/load cvx 3 -1/roll cvx/put cvx + Adobe_AGM_Utils/AGMUTIL_ndx/AGMUTIL_ndx/load cvx 1/add cvx/ddf cvx + }for + currentdict/dstStr get 0/AGMUTIL_ndx/load cvx/getinterval cvx + ]cvx/if cvx + /end cvx + ]cvx + bind + /exec cvx + ]cvx + end +}bdf +/AGMUTIL_imagefile nd +/read_image_file +{ + AGMUTIL_imagefile 0 setfileposition + 10 dict begin + /imageDict xdf + /imbufLen Width BitsPerComponent mul 7 add 8 idiv def + /imbufIdx 0 def + /origDataSource imageDict/DataSource get def + /origMultipleDataSources imageDict/MultipleDataSources get def + /origDecode imageDict/Decode get def + /dstDataStr imageDict/Width get colorSpaceElemCnt mul string def + imageDict/MultipleDataSources known{MultipleDataSources}{false}ifelse + { + /imbufCnt imageDict/DataSource get length def + /imbufs imbufCnt array def + 0 1 imbufCnt 1 sub{ + /imbufIdx xdf + imbufs imbufIdx imbufLen string put + imageDict/DataSource get imbufIdx[AGMUTIL_imagefile imbufs imbufIdx get/readstring cvx/pop cvx]cvx put + }for + DeviceN_PS2{ + imageDict begin + /DataSource[DataSource/devn_sep_datasource cvx]cvx def + /MultipleDataSources false def + /Decode[0 1]def + end + }if + }{ + /imbuf imbufLen string def + Indexed_DeviceN level3 not and DeviceN_NoneName or{ + /srcDataStrs[imageDict begin + currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse + { + Width Decode length 2 div mul cvi string + }repeat + end]def + imageDict begin + /DataSource[AGMUTIL_imagefile Decode BitsPerComponent false 1/filter_indexed_devn load dstDataStr srcDataStrs devn_alt_datasource/exec cvx]cvx def + /Decode[0 1]def + end + }{ + imageDict/DataSource[1 string dup 0 AGMUTIL_imagefile Decode length 2 idiv string/readstring cvx/pop cvx names_index/get cvx/put cvx]cvx put + imageDict/Decode[0 1]put + }ifelse + }ifelse + imageDict exch + load exec + imageDict/DataSource origDataSource put + imageDict/MultipleDataSources origMultipleDataSources put + imageDict/Decode origDecode put + end +}bdf +/write_image_file +{ + begin + {(AGMUTIL_imagefile)(w+)file}stopped{ + false + }{ + Adobe_AGM_Utils/AGMUTIL_imagefile xddf + 2 dict begin + /imbufLen Width BitsPerComponent mul 7 add 8 idiv def + MultipleDataSources{DataSource 0 get}{DataSource}ifelse type/filetype eq{ + /imbuf imbufLen string def + }if + 1 1 Height MultipleDataSources not{Decode length 2 idiv mul}if{ + pop + MultipleDataSources{ + 0 1 DataSource length 1 sub{ + DataSource type dup + /arraytype eq{ + pop DataSource exch gx + }{ + /filetype eq{ + DataSource exch get imbuf readstring pop + }{ + DataSource exch get + }ifelse + }ifelse + AGMUTIL_imagefile exch writestring + }for + }{ + DataSource type dup + /arraytype eq{ + pop DataSource exec + }{ + /filetype eq{ + DataSource imbuf readstring pop + }{ + DataSource + }ifelse + }ifelse + AGMUTIL_imagefile exch writestring + }ifelse + }for + end + true + }ifelse + end +}bdf +/close_image_file +{ + AGMUTIL_imagefile closefile(AGMUTIL_imagefile)deletefile +}def +statusdict/product known userdict/AGMP_current_show known not and{ + /pstr statusdict/product get def + pstr(HP LaserJet 2200)eq + pstr(HP LaserJet 4000 Series)eq or + pstr(HP LaserJet 4050 Series )eq or + pstr(HP LaserJet 8000 Series)eq or + pstr(HP LaserJet 8100 Series)eq or + pstr(HP LaserJet 8150 Series)eq or + pstr(HP LaserJet 5000 Series)eq or + pstr(HP LaserJet 5100 Series)eq or + pstr(HP Color LaserJet 4500)eq or + pstr(HP Color LaserJet 4600)eq or + pstr(HP LaserJet 5Si)eq or + pstr(HP LaserJet 1200 Series)eq or + pstr(HP LaserJet 1300 Series)eq or + pstr(HP LaserJet 4100 Series)eq or + { + userdict/AGMP_current_show/show load put + userdict/show{ + currentcolorspace 0 get + /Pattern eq + {false charpath f} + {AGMP_current_show}ifelse + }put + }if + currentdict/pstr undef +}if +/consumeimagedata +{ + begin + AGMIMG_init_common + currentdict/MultipleDataSources known not + {/MultipleDataSources false def}if + MultipleDataSources + { + DataSource 0 get type + dup/filetype eq + { + 1 dict begin + /flushbuffer Width cvi string def + 1 1 Height cvi + { + pop + 0 1 DataSource length 1 sub + { + DataSource exch get + flushbuffer readstring pop pop + }for + }for + end + }if + dup/arraytype eq exch/packedarraytype eq or DataSource 0 get xcheck and + { + Width Height mul cvi + { + 0 1 DataSource length 1 sub + {dup DataSource exch gx length exch 0 ne{pop}if}for + dup 0 eq + {pop exit}if + sub dup 0 le + {exit}if + }loop + pop + }if + } + { + /DataSource load type + dup/filetype eq + { + 1 dict begin + /flushbuffer Width Decode length 2 idiv mul cvi string def + 1 1 Height{pop DataSource flushbuffer readstring pop pop}for + end + }if + dup/arraytype eq exch/packedarraytype eq or/DataSource load xcheck and + { + Height Width BitsPerComponent mul 8 BitsPerComponent sub add 8 idiv Decode length 2 idiv mul mul + { + DataSource length dup 0 eq + {pop exit}if + sub dup 0 le + {exit}if + }loop + pop + }if + }ifelse + end +}bdf +/addprocs +{ + 2{/exec load}repeat + 3 1 roll + [5 1 roll]bind cvx +}def +/modify_halftone_xfer +{ + currenthalftone dup length dict copy begin + currentdict 2 index known{ + 1 index load dup length dict copy begin + currentdict/TransferFunction known{ + /TransferFunction load + }{ + currenttransfer + }ifelse + addprocs/TransferFunction xdf + currentdict end def + currentdict end sethalftone + }{ + currentdict/TransferFunction known{ + /TransferFunction load + }{ + currenttransfer + }ifelse + addprocs/TransferFunction xdf + currentdict end sethalftone + pop + }ifelse +}def +/clonearray +{ + dup xcheck exch + dup length array exch + Adobe_AGM_Core/AGMCORE_tmp -1 ddf + { + Adobe_AGM_Core/AGMCORE_tmp 2 copy get 1 add ddf + dup type/dicttype eq + { + Adobe_AGM_Core/AGMCORE_tmp get + exch + clonedict + Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf + }if + dup type/arraytype eq + { + Adobe_AGM_Core/AGMCORE_tmp get exch + clonearray + Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf + }if + exch dup + Adobe_AGM_Core/AGMCORE_tmp get 4 -1 roll put + }forall + exch{cvx}if +}bdf +/clonedict +{ + dup length dict + begin + { + dup type/dicttype eq + {clonedict}if + dup type/arraytype eq + {clonearray}if + def + }forall + currentdict + end +}bdf +/DeviceN_PS2 +{ + /currentcolorspace AGMCORE_gget 0 get/DeviceN eq level3 not and +}bdf +/Indexed_DeviceN +{ + /indexed_colorspace_dict AGMCORE_gget dup null ne{ + dup/CSDBase known{ + /CSDBase get/CSD get_res/Names known + }{ + pop false + }ifelse + }{ + pop false + }ifelse +}bdf +/DeviceN_NoneName +{ + /Names where{ + pop + false Names + { + (None)eq or + }forall + }{ + false + }ifelse +}bdf +/DeviceN_PS2_inRip_seps +{ + /AGMCORE_in_rip_sep where + { + pop dup type dup/arraytype eq exch/packedarraytype eq or + { + dup 0 get/DeviceN eq level3 not and AGMCORE_in_rip_sep and + { + /currentcolorspace exch AGMCORE_gput + false + }{ + true + }ifelse + }{ + true + }ifelse + }{ + true + }ifelse +}bdf +/base_colorspace_type +{ + dup type/arraytype eq{0 get}if +}bdf +/currentdistillerparams where{pop currentdistillerparams/CoreDistVersion get 5000 lt}{true}ifelse +{ + /pdfmark_5{cleartomark}bind def +}{ + /pdfmark_5{pdfmark}bind def +}ifelse +/ReadBypdfmark_5 +{ + currentfile exch 0 exch/SubFileDecode filter + /currentdistillerparams where + {pop currentdistillerparams/CoreDistVersion get 5000 lt}{true}ifelse + {flushfile cleartomark} + {/PUT pdfmark}ifelse +}bdf +/xpdfm +{ + { + dup 0 get/Label eq + { + aload length[exch 1 add 1 roll/PAGELABEL + }{ + aload pop + [{ThisPage}<<5 -2 roll>>/PUT + }ifelse + pdfmark_5 + }forall +}bdf +/ds{ + Adobe_AGM_Utils begin +}bdf +/dt{ + currentdict Adobe_AGM_Utils eq{ + end + }if +}bdf +systemdict/setpacking known +{setpacking}if +%%EndResource +%%BeginResource: procset Adobe_AGM_Core 2.0 0 +%%Version: 2.0 0 +%%Copyright: Copyright(C)1997-2007 Adobe Systems, Inc. All Rights Reserved. +systemdict/setpacking known +{ + currentpacking + true setpacking +}if +userdict/Adobe_AGM_Core 209 dict dup begin put +/Adobe_AGM_Core_Id/Adobe_AGM_Core_2.0_0 def +/AGMCORE_str256 256 string def +/AGMCORE_save nd +/AGMCORE_graphicsave nd +/AGMCORE_c 0 def +/AGMCORE_m 0 def +/AGMCORE_y 0 def +/AGMCORE_k 0 def +/AGMCORE_cmykbuf 4 array def +/AGMCORE_screen[currentscreen]cvx def +/AGMCORE_tmp 0 def +/AGMCORE_&setgray nd +/AGMCORE_&setcolor nd +/AGMCORE_&setcolorspace nd +/AGMCORE_&setcmykcolor nd +/AGMCORE_cyan_plate nd +/AGMCORE_magenta_plate nd +/AGMCORE_yellow_plate nd +/AGMCORE_black_plate nd +/AGMCORE_plate_ndx nd +/AGMCORE_get_ink_data nd +/AGMCORE_is_cmyk_sep nd +/AGMCORE_host_sep nd +/AGMCORE_avoid_L2_sep_space nd +/AGMCORE_distilling nd +/AGMCORE_composite_job nd +/AGMCORE_producing_seps nd +/AGMCORE_ps_level -1 def +/AGMCORE_ps_version -1 def +/AGMCORE_environ_ok nd +/AGMCORE_CSD_cache 0 dict def +/AGMCORE_currentoverprint false def +/AGMCORE_deltaX nd +/AGMCORE_deltaY nd +/AGMCORE_name nd +/AGMCORE_sep_special nd +/AGMCORE_err_strings 4 dict def +/AGMCORE_cur_err nd +/AGMCORE_current_spot_alias false def +/AGMCORE_inverting false def +/AGMCORE_feature_dictCount nd +/AGMCORE_feature_opCount nd +/AGMCORE_feature_ctm nd +/AGMCORE_ConvertToProcess false def +/AGMCORE_Default_CTM matrix def +/AGMCORE_Default_PageSize nd +/AGMCORE_Default_flatness nd +/AGMCORE_currentbg nd +/AGMCORE_currentucr nd +/AGMCORE_pattern_paint_type 0 def +/knockout_unitsq nd +currentglobal true setglobal +[/CSA/Gradient/Procedure] +{ + /Generic/Category findresource dup length dict copy/Category defineresource pop +}forall +setglobal +/AGMCORE_key_known +{ + where{ + /Adobe_AGM_Core_Id known + }{ + false + }ifelse +}ndf +/flushinput +{ + save + 2 dict begin + /CompareBuffer 3 -1 roll def + /readbuffer 256 string def + mark + { + currentfile readbuffer{readline}stopped + {cleartomark mark} + { + not + {pop exit} + if + CompareBuffer eq + {exit} + if + }ifelse + }loop + cleartomark + end + restore +}bdf +/getspotfunction +{ + AGMCORE_screen exch pop exch pop + dup type/dicttype eq{ + dup/HalftoneType get 1 eq{ + /SpotFunction get + }{ + dup/HalftoneType get 2 eq{ + /GraySpotFunction get + }{ + pop + { + abs exch abs 2 copy add 1 gt{ + 1 sub dup mul exch 1 sub dup mul add 1 sub + }{ + dup mul exch dup mul add 1 exch sub + }ifelse + }bind + }ifelse + }ifelse + }if +}def +/np +{newpath}bdf +/clp_npth +{clip np}def +/eoclp_npth +{eoclip np}def +/npth_clp +{np clip}def +/graphic_setup +{ + /AGMCORE_graphicsave save store + concat + 0 setgray + 0 setlinecap + 0 setlinejoin + 1 setlinewidth + []0 setdash + 10 setmiterlimit + np + false setoverprint + false setstrokeadjust + //Adobe_AGM_Core/spot_alias gx + /Adobe_AGM_Image where{ + pop + Adobe_AGM_Image/spot_alias 2 copy known{ + gx + }{ + pop pop + }ifelse + }if + /sep_colorspace_dict null AGMCORE_gput + 100 dict begin + /dictstackcount countdictstack def + /showpage{}def + mark +}def +/graphic_cleanup +{ + cleartomark + dictstackcount 1 countdictstack 1 sub{end}for + end + AGMCORE_graphicsave restore +}def +/compose_error_msg +{ + grestoreall initgraphics + /Helvetica findfont 10 scalefont setfont + /AGMCORE_deltaY 100 def + /AGMCORE_deltaX 310 def + clippath pathbbox np pop pop 36 add exch 36 add exch moveto + 0 AGMCORE_deltaY rlineto AGMCORE_deltaX 0 rlineto + 0 AGMCORE_deltaY neg rlineto AGMCORE_deltaX neg 0 rlineto closepath + 0 AGMCORE_&setgray + gsave 1 AGMCORE_&setgray fill grestore + 1 setlinewidth gsave stroke grestore + currentpoint AGMCORE_deltaY 15 sub add exch 8 add exch moveto + /AGMCORE_deltaY 12 def + /AGMCORE_tmp 0 def + AGMCORE_err_strings exch get + { + dup 32 eq + { + pop + AGMCORE_str256 0 AGMCORE_tmp getinterval + stringwidth pop currentpoint pop add AGMCORE_deltaX 28 add gt + { + currentpoint AGMCORE_deltaY sub exch pop + clippath pathbbox pop pop pop 44 add exch moveto + }if + AGMCORE_str256 0 AGMCORE_tmp getinterval show( )show + 0 1 AGMCORE_str256 length 1 sub + { + AGMCORE_str256 exch 0 put + }for + /AGMCORE_tmp 0 def + }{ + AGMCORE_str256 exch AGMCORE_tmp xpt + /AGMCORE_tmp AGMCORE_tmp 1 add def + }ifelse + }forall +}bdf +/AGMCORE_CMYKDeviceNColorspaces[ + [/Separation/None/DeviceCMYK{0 0 0}] + [/Separation(Black)/DeviceCMYK{0 0 0 4 -1 roll}bind] + [/Separation(Yellow)/DeviceCMYK{0 0 3 -1 roll 0}bind] + [/DeviceN[(Yellow)(Black)]/DeviceCMYK{0 0 4 2 roll}bind] + [/Separation(Magenta)/DeviceCMYK{0 exch 0 0}bind] + [/DeviceN[(Magenta)(Black)]/DeviceCMYK{0 3 1 roll 0 exch}bind] + [/DeviceN[(Magenta)(Yellow)]/DeviceCMYK{0 3 1 roll 0}bind] + [/DeviceN[(Magenta)(Yellow)(Black)]/DeviceCMYK{0 4 1 roll}bind] + [/Separation(Cyan)/DeviceCMYK{0 0 0}] + [/DeviceN[(Cyan)(Black)]/DeviceCMYK{0 0 3 -1 roll}bind] + [/DeviceN[(Cyan)(Yellow)]/DeviceCMYK{0 exch 0}bind] + [/DeviceN[(Cyan)(Yellow)(Black)]/DeviceCMYK{0 3 1 roll}bind] + [/DeviceN[(Cyan)(Magenta)]/DeviceCMYK{0 0}] + [/DeviceN[(Cyan)(Magenta)(Black)]/DeviceCMYK{0 exch}bind] + [/DeviceN[(Cyan)(Magenta)(Yellow)]/DeviceCMYK{0}] + [/DeviceCMYK] +]def +/ds{ + Adobe_AGM_Core begin + /currentdistillerparams where + { + pop currentdistillerparams/CoreDistVersion get 5000 lt + {<>setdistillerparams}if + }if + /AGMCORE_ps_version xdf + /AGMCORE_ps_level xdf + errordict/AGM_handleerror known not{ + errordict/AGM_handleerror errordict/handleerror get put + errordict/handleerror{ + Adobe_AGM_Core begin + $error/newerror get AGMCORE_cur_err null ne and{ + $error/newerror false put + AGMCORE_cur_err compose_error_msg + }if + $error/newerror true put + end + errordict/AGM_handleerror get exec + }bind put + }if + /AGMCORE_environ_ok + ps_level AGMCORE_ps_level ge + ps_version AGMCORE_ps_version ge and + AGMCORE_ps_level -1 eq or + def + AGMCORE_environ_ok not + {/AGMCORE_cur_err/AGMCORE_bad_environ def}if + /AGMCORE_&setgray systemdict/setgray get def + level2{ + /AGMCORE_&setcolor systemdict/setcolor get def + /AGMCORE_&setcolorspace systemdict/setcolorspace get def + }if + /AGMCORE_currentbg currentblackgeneration def + /AGMCORE_currentucr currentundercolorremoval def + /AGMCORE_Default_flatness currentflat def + /AGMCORE_distilling + /product where{ + pop systemdict/setdistillerparams known product(Adobe PostScript Parser)ne and + }{ + false + }ifelse + def + /AGMCORE_GSTATE AGMCORE_key_known not{ + /AGMCORE_GSTATE 21 dict def + /AGMCORE_tmpmatrix matrix def + /AGMCORE_gstack 32 array def + /AGMCORE_gstackptr 0 def + /AGMCORE_gstacksaveptr 0 def + /AGMCORE_gstackframekeys 14 def + /AGMCORE_&gsave/gsave ldf + /AGMCORE_&grestore/grestore ldf + /AGMCORE_&grestoreall/grestoreall ldf + /AGMCORE_&save/save ldf + /AGMCORE_&setoverprint/setoverprint ldf + /AGMCORE_gdictcopy{ + begin + {def}forall + end + }def + /AGMCORE_gput{ + AGMCORE_gstack AGMCORE_gstackptr get + 3 1 roll + put + }def + /AGMCORE_gget{ + AGMCORE_gstack AGMCORE_gstackptr get + exch + get + }def + /gsave{ + AGMCORE_&gsave + AGMCORE_gstack AGMCORE_gstackptr get + AGMCORE_gstackptr 1 add + dup 32 ge{limitcheck}if + /AGMCORE_gstackptr exch store + AGMCORE_gstack AGMCORE_gstackptr get + AGMCORE_gdictcopy + }def + /grestore{ + AGMCORE_&grestore + AGMCORE_gstackptr 1 sub + dup AGMCORE_gstacksaveptr lt{1 add}if + dup AGMCORE_gstack exch get dup/AGMCORE_currentoverprint known + {/AGMCORE_currentoverprint get setoverprint}{pop}ifelse + /AGMCORE_gstackptr exch store + }def + /grestoreall{ + AGMCORE_&grestoreall + /AGMCORE_gstackptr AGMCORE_gstacksaveptr store + }def + /save{ + AGMCORE_&save + AGMCORE_gstack AGMCORE_gstackptr get + AGMCORE_gstackptr 1 add + dup 32 ge{limitcheck}if + /AGMCORE_gstackptr exch store + /AGMCORE_gstacksaveptr AGMCORE_gstackptr store + AGMCORE_gstack AGMCORE_gstackptr get + AGMCORE_gdictcopy + }def + /setoverprint{ + dup/AGMCORE_currentoverprint exch AGMCORE_gput AGMCORE_&setoverprint + }def + 0 1 AGMCORE_gstack length 1 sub{ + AGMCORE_gstack exch AGMCORE_gstackframekeys dict put + }for + }if + level3/AGMCORE_&sysshfill AGMCORE_key_known not and + { + /AGMCORE_&sysshfill systemdict/shfill get def + /AGMCORE_&sysmakepattern systemdict/makepattern get def + /AGMCORE_&usrmakepattern/makepattern load def + }if + /currentcmykcolor[0 0 0 0]AGMCORE_gput + /currentstrokeadjust false AGMCORE_gput + /currentcolorspace[/DeviceGray]AGMCORE_gput + /sep_tint 0 AGMCORE_gput + /devicen_tints[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]AGMCORE_gput + /sep_colorspace_dict null AGMCORE_gput + /devicen_colorspace_dict null AGMCORE_gput + /indexed_colorspace_dict null AGMCORE_gput + /currentcolor_intent()AGMCORE_gput + /customcolor_tint 1 AGMCORE_gput + /absolute_colorimetric_crd null AGMCORE_gput + /relative_colorimetric_crd null AGMCORE_gput + /saturation_crd null AGMCORE_gput + /perceptual_crd null AGMCORE_gput + currentcolortransfer cvlit/AGMCore_gray_xfer xdf cvlit/AGMCore_b_xfer xdf + cvlit/AGMCore_g_xfer xdf cvlit/AGMCore_r_xfer xdf + << + /MaxPatternItem currentsystemparams/MaxPatternCache get + >> + setuserparams + end +}def +/ps +{ + /setcmykcolor where{ + pop + Adobe_AGM_Core/AGMCORE_&setcmykcolor/setcmykcolor load put + }if + Adobe_AGM_Core begin + /setcmykcolor + { + 4 copy AGMCORE_cmykbuf astore/currentcmykcolor exch AGMCORE_gput + 1 sub 4 1 roll + 3{ + 3 index add neg dup 0 lt{ + pop 0 + }if + 3 1 roll + }repeat + setrgbcolor pop + }ndf + /currentcmykcolor + { + /currentcmykcolor AGMCORE_gget aload pop + }ndf + /setoverprint + {pop}ndf + /currentoverprint + {false}ndf + /AGMCORE_cyan_plate 1 0 0 0 test_cmyk_color_plate def + /AGMCORE_magenta_plate 0 1 0 0 test_cmyk_color_plate def + /AGMCORE_yellow_plate 0 0 1 0 test_cmyk_color_plate def + /AGMCORE_black_plate 0 0 0 1 test_cmyk_color_plate def + /AGMCORE_plate_ndx + AGMCORE_cyan_plate{ + 0 + }{ + AGMCORE_magenta_plate{ + 1 + }{ + AGMCORE_yellow_plate{ + 2 + }{ + AGMCORE_black_plate{ + 3 + }{ + 4 + }ifelse + }ifelse + }ifelse + }ifelse + def + /AGMCORE_have_reported_unsupported_color_space false def + /AGMCORE_report_unsupported_color_space + { + AGMCORE_have_reported_unsupported_color_space false eq + { + (Warning: Job contains content that cannot be separated with on-host methods. This content appears on the black plate, and knocks out all other plates.)== + Adobe_AGM_Core/AGMCORE_have_reported_unsupported_color_space true ddf + }if + }def + /AGMCORE_composite_job + AGMCORE_cyan_plate AGMCORE_magenta_plate and AGMCORE_yellow_plate and AGMCORE_black_plate and def + /AGMCORE_in_rip_sep + /AGMCORE_in_rip_sep where{ + pop AGMCORE_in_rip_sep + }{ + AGMCORE_distilling + { + false + }{ + userdict/Adobe_AGM_OnHost_Seps known{ + false + }{ + level2{ + currentpagedevice/Separations 2 copy known{ + get + }{ + pop pop false + }ifelse + }{ + false + }ifelse + }ifelse + }ifelse + }ifelse + def + /AGMCORE_producing_seps AGMCORE_composite_job not AGMCORE_in_rip_sep or def + /AGMCORE_host_sep AGMCORE_producing_seps AGMCORE_in_rip_sep not and def + /AGM_preserve_spots + /AGM_preserve_spots where{ + pop AGM_preserve_spots + }{ + AGMCORE_distilling AGMCORE_producing_seps or + }ifelse + def + /AGM_is_distiller_preserving_spotimages + { + currentdistillerparams/PreserveOverprintSettings known + { + currentdistillerparams/PreserveOverprintSettings get + { + currentdistillerparams/ColorConversionStrategy known + { + currentdistillerparams/ColorConversionStrategy get + /sRGB ne + }{ + true + }ifelse + }{ + false + }ifelse + }{ + false + }ifelse + }def + /convert_spot_to_process where{pop}{ + /convert_spot_to_process + { + //Adobe_AGM_Core begin + dup map_alias{ + /Name get exch pop + }if + dup dup(None)eq exch(All)eq or + { + pop false + }{ + AGMCORE_host_sep + { + gsave + 1 0 0 0 setcmykcolor currentgray 1 exch sub + 0 1 0 0 setcmykcolor currentgray 1 exch sub + 0 0 1 0 setcmykcolor currentgray 1 exch sub + 0 0 0 1 setcmykcolor currentgray 1 exch sub + add add add 0 eq + { + pop false + }{ + false setoverprint + current_spot_alias false set_spot_alias + 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor + set_spot_alias + currentgray 1 ne + }ifelse + grestore + }{ + AGMCORE_distilling + { + pop AGM_is_distiller_preserving_spotimages not + }{ + //Adobe_AGM_Core/AGMCORE_name xddf + false + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 0 eq + AGMUTIL_cpd/OverrideSeparations known and + { + AGMUTIL_cpd/OverrideSeparations get + { + /HqnSpots/ProcSet resourcestatus + { + pop pop pop true + }if + }if + }if + { + AGMCORE_name/HqnSpots/ProcSet findresource/TestSpot gx not + }{ + gsave + [/Separation AGMCORE_name/DeviceGray{}]AGMCORE_&setcolorspace + false + AGMUTIL_cpd/SeparationColorNames 2 copy known + { + get + {AGMCORE_name eq or}forall + not + }{ + pop pop pop true + }ifelse + grestore + }ifelse + }ifelse + }ifelse + }ifelse + end + }def + }ifelse + /convert_to_process where{pop}{ + /convert_to_process + { + dup length 0 eq + { + pop false + }{ + AGMCORE_host_sep + { + dup true exch + { + dup(Cyan)eq exch + dup(Magenta)eq 3 -1 roll or exch + dup(Yellow)eq 3 -1 roll or exch + dup(Black)eq 3 -1 roll or + {pop} + {convert_spot_to_process and}ifelse + } + forall + { + true exch + { + dup(Cyan)eq exch + dup(Magenta)eq 3 -1 roll or exch + dup(Yellow)eq 3 -1 roll or exch + (Black)eq or and + }forall + not + }{pop false}ifelse + }{ + false exch + { + /PhotoshopDuotoneList where{pop false}{true}ifelse + { + dup(Cyan)eq exch + dup(Magenta)eq 3 -1 roll or exch + dup(Yellow)eq 3 -1 roll or exch + dup(Black)eq 3 -1 roll or + {pop} + {convert_spot_to_process or}ifelse + } + { + convert_spot_to_process or + } + ifelse + } + forall + }ifelse + }ifelse + }def + }ifelse + /AGMCORE_avoid_L2_sep_space + version cvr 2012 lt + level2 and + AGMCORE_producing_seps not and + def + /AGMCORE_is_cmyk_sep + AGMCORE_cyan_plate AGMCORE_magenta_plate or AGMCORE_yellow_plate or AGMCORE_black_plate or + def + /AGM_avoid_0_cmyk where{ + pop AGM_avoid_0_cmyk + }{ + AGM_preserve_spots + userdict/Adobe_AGM_OnHost_Seps known + userdict/Adobe_AGM_InRip_Seps known or + not and + }ifelse + { + /setcmykcolor[ + { + 4 copy add add add 0 eq currentoverprint and{ + pop 0.0005 + }if + }/exec cvx + /AGMCORE_&setcmykcolor load dup type/operatortype ne{ + /exec cvx + }if + ]cvx def + }if + /AGMCORE_IsSeparationAProcessColor + { + dup(Cyan)eq exch dup(Magenta)eq exch dup(Yellow)eq exch(Black)eq or or or + }def + AGMCORE_host_sep{ + /setcolortransfer + { + AGMCORE_cyan_plate{ + pop pop pop + }{ + AGMCORE_magenta_plate{ + 4 3 roll pop pop pop + }{ + AGMCORE_yellow_plate{ + 4 2 roll pop pop pop + }{ + 4 1 roll pop pop pop + }ifelse + }ifelse + }ifelse + settransfer + } + def + /AGMCORE_get_ink_data + AGMCORE_cyan_plate{ + {pop pop pop} + }{ + AGMCORE_magenta_plate{ + {4 3 roll pop pop pop} + }{ + AGMCORE_yellow_plate{ + {4 2 roll pop pop pop} + }{ + {4 1 roll pop pop pop} + }ifelse + }ifelse + }ifelse + def + /AGMCORE_RemoveProcessColorNames + { + 1 dict begin + /filtername + { + dup/Cyan eq 1 index(Cyan)eq or + {pop(_cyan_)}if + dup/Magenta eq 1 index(Magenta)eq or + {pop(_magenta_)}if + dup/Yellow eq 1 index(Yellow)eq or + {pop(_yellow_)}if + dup/Black eq 1 index(Black)eq or + {pop(_black_)}if + }def + dup type/arraytype eq + {[exch{filtername}forall]} + {filtername}ifelse + end + }def + level3{ + /AGMCORE_IsCurrentColor + { + dup AGMCORE_IsSeparationAProcessColor + { + AGMCORE_plate_ndx 0 eq + {dup(Cyan)eq exch/Cyan eq or}if + AGMCORE_plate_ndx 1 eq + {dup(Magenta)eq exch/Magenta eq or}if + AGMCORE_plate_ndx 2 eq + {dup(Yellow)eq exch/Yellow eq or}if + AGMCORE_plate_ndx 3 eq + {dup(Black)eq exch/Black eq or}if + AGMCORE_plate_ndx 4 eq + {pop false}if + }{ + gsave + false setoverprint + current_spot_alias false set_spot_alias + 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor + set_spot_alias + currentgray 1 ne + grestore + }ifelse + }def + /AGMCORE_filter_functiondatasource + { + 5 dict begin + /data_in xdf + data_in type/stringtype eq + { + /ncomp xdf + /comp xdf + /string_out data_in length ncomp idiv string def + 0 ncomp data_in length 1 sub + { + string_out exch dup ncomp idiv exch data_in exch ncomp getinterval comp get 255 exch sub put + }for + string_out + }{ + string/string_in xdf + /string_out 1 string def + /component xdf + [ + data_in string_in/readstring cvx + [component/get cvx 255/exch cvx/sub cvx string_out/exch cvx 0/exch cvx/put cvx string_out]cvx + [/pop cvx()]cvx/ifelse cvx + ]cvx/ReusableStreamDecode filter + }ifelse + end + }def + /AGMCORE_separateShadingFunction + { + 2 dict begin + /paint? xdf + /channel xdf + dup type/dicttype eq + { + begin + FunctionType 0 eq + { + /DataSource channel Range length 2 idiv DataSource AGMCORE_filter_functiondatasource def + currentdict/Decode known + {/Decode Decode channel 2 mul 2 getinterval def}if + paint? not + {/Decode[1 1]def}if + }if + FunctionType 2 eq + { + paint? + { + /C0[C0 channel get 1 exch sub]def + /C1[C1 channel get 1 exch sub]def + }{ + /C0[1]def + /C1[1]def + }ifelse + }if + FunctionType 3 eq + { + /Functions[Functions{channel paint? AGMCORE_separateShadingFunction}forall]def + }if + currentdict/Range known + {/Range[0 1]def}if + currentdict + end}{ + channel get 0 paint? AGMCORE_separateShadingFunction + }ifelse + end + }def + /AGMCORE_separateShading + { + 3 -1 roll begin + currentdict/Function known + { + currentdict/Background known + {[1 index{Background 3 index get 1 exch sub}{1}ifelse]/Background xdf}if + Function 3 1 roll AGMCORE_separateShadingFunction/Function xdf + /ColorSpace[/DeviceGray]def + }{ + ColorSpace dup type/arraytype eq{0 get}if/DeviceCMYK eq + { + /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def + }{ + ColorSpace dup 1 get AGMCORE_RemoveProcessColorNames 1 exch put + }ifelse + ColorSpace 0 get/Separation eq + { + { + [1/exch cvx/sub cvx]cvx + }{ + [/pop cvx 1]cvx + }ifelse + ColorSpace 3 3 -1 roll put + pop + }{ + { + [exch ColorSpace 1 get length 1 sub exch sub/index cvx 1/exch cvx/sub cvx ColorSpace 1 get length 1 add 1/roll cvx ColorSpace 1 get length{/pop cvx}repeat]cvx + }{ + pop[ColorSpace 1 get length{/pop cvx}repeat cvx 1]cvx + }ifelse + ColorSpace 3 3 -1 roll bind put + }ifelse + ColorSpace 2/DeviceGray put + }ifelse + end + }def + /AGMCORE_separateShadingDict + { + dup/ColorSpace get + dup type/arraytype ne + {[exch]}if + dup 0 get/DeviceCMYK eq + { + exch begin + currentdict + AGMCORE_cyan_plate + {0 true}if + AGMCORE_magenta_plate + {1 true}if + AGMCORE_yellow_plate + {2 true}if + AGMCORE_black_plate + {3 true}if + AGMCORE_plate_ndx 4 eq + {0 false}if + dup not currentoverprint and + {/AGMCORE_ignoreshade true def}if + AGMCORE_separateShading + currentdict + end exch + }if + dup 0 get/Separation eq + { + exch begin + ColorSpace 1 get dup/None ne exch/All ne and + { + ColorSpace 1 get AGMCORE_IsCurrentColor AGMCORE_plate_ndx 4 lt and ColorSpace 1 get AGMCORE_IsSeparationAProcessColor not and + { + ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq + { + /ColorSpace + [ + /Separation + ColorSpace 1 get + /DeviceGray + [ + ColorSpace 3 get/exec cvx + 4 AGMCORE_plate_ndx sub -1/roll cvx + 4 1/roll cvx + 3[/pop cvx]cvx/repeat cvx + 1/exch cvx/sub cvx + ]cvx + ]def + }{ + AGMCORE_report_unsupported_color_space + AGMCORE_black_plate not + { + currentdict 0 false AGMCORE_separateShading + }if + }ifelse + }{ + currentdict ColorSpace 1 get AGMCORE_IsCurrentColor + 0 exch + dup not currentoverprint and + {/AGMCORE_ignoreshade true def}if + AGMCORE_separateShading + }ifelse + }if + currentdict + end exch + }if + dup 0 get/DeviceN eq + { + exch begin + ColorSpace 1 get convert_to_process + { + ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq + { + /ColorSpace + [ + /DeviceN + ColorSpace 1 get + /DeviceGray + [ + ColorSpace 3 get/exec cvx + 4 AGMCORE_plate_ndx sub -1/roll cvx + 4 1/roll cvx + 3[/pop cvx]cvx/repeat cvx + 1/exch cvx/sub cvx + ]cvx + ]def + }{ + AGMCORE_report_unsupported_color_space + AGMCORE_black_plate not + { + currentdict 0 false AGMCORE_separateShading + /ColorSpace[/DeviceGray]def + }if + }ifelse + }{ + currentdict + false -1 ColorSpace 1 get + { + AGMCORE_IsCurrentColor + { + 1 add + exch pop true exch exit + }if + 1 add + }forall + exch + dup not currentoverprint and + {/AGMCORE_ignoreshade true def}if + AGMCORE_separateShading + }ifelse + currentdict + end exch + }if + dup 0 get dup/DeviceCMYK eq exch dup/Separation eq exch/DeviceN eq or or not + { + exch begin + ColorSpace dup type/arraytype eq + {0 get}if + /DeviceGray ne + { + AGMCORE_report_unsupported_color_space + AGMCORE_black_plate not + { + ColorSpace 0 get/CIEBasedA eq + { + /ColorSpace[/Separation/_ciebaseda_/DeviceGray{}]def + }if + ColorSpace 0 get dup/CIEBasedABC eq exch dup/CIEBasedDEF eq exch/DeviceRGB eq or or + { + /ColorSpace[/DeviceN[/_red_/_green_/_blue_]/DeviceRGB{}]def + }if + ColorSpace 0 get/CIEBasedDEFG eq + { + /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def + }if + currentdict 0 false AGMCORE_separateShading + }if + }if + currentdict + end exch + }if + pop + dup/AGMCORE_ignoreshade known + { + begin + /ColorSpace[/Separation(None)/DeviceGray{}]def + currentdict end + }if + }def + /shfill + { + AGMCORE_separateShadingDict + dup/AGMCORE_ignoreshade known + {pop} + {AGMCORE_&sysshfill}ifelse + }def + /makepattern + { + exch + dup/PatternType get 2 eq + { + clonedict + begin + /Shading Shading AGMCORE_separateShadingDict def + Shading/AGMCORE_ignoreshade known + currentdict end exch + {pop<>}if + exch AGMCORE_&sysmakepattern + }{ + exch AGMCORE_&usrmakepattern + }ifelse + }def + }if + }if + AGMCORE_in_rip_sep{ + /setcustomcolor + { + exch aload pop + dup 7 1 roll inRip_spot_has_ink not { + 4{4 index mul 4 1 roll} + repeat + /DeviceCMYK setcolorspace + 6 -2 roll pop pop + }{ + //Adobe_AGM_Core begin + /AGMCORE_k xdf/AGMCORE_y xdf/AGMCORE_m xdf/AGMCORE_c xdf + end + [/Separation 4 -1 roll/DeviceCMYK + {dup AGMCORE_c mul exch dup AGMCORE_m mul exch dup AGMCORE_y mul exch AGMCORE_k mul} + ] + setcolorspace + }ifelse + setcolor + }ndf + /setseparationgray + { + [/Separation(All)/DeviceGray{}]setcolorspace_opt + 1 exch sub setcolor + }ndf + }{ + /setseparationgray + { + AGMCORE_&setgray + }ndf + }ifelse + /findcmykcustomcolor + { + 5 makereadonlyarray + }ndf + /setcustomcolor + { + exch aload pop pop + 4{4 index mul 4 1 roll}repeat + setcmykcolor pop + }ndf + /has_color + /colorimage where{ + AGMCORE_producing_seps{ + pop true + }{ + systemdict eq + }ifelse + }{ + false + }ifelse + def + /map_index + { + 1 index mul exch getinterval{255 div}forall + }bdf + /map_indexed_devn + { + Lookup Names length 3 -1 roll cvi map_index + }bdf + /n_color_components + { + base_colorspace_type + dup/DeviceGray eq{ + pop 1 + }{ + /DeviceCMYK eq{ + 4 + }{ + 3 + }ifelse + }ifelse + }bdf + level2{ + /mo/moveto ldf + /li/lineto ldf + /cv/curveto ldf + /knockout_unitsq + { + 1 setgray + 0 0 1 1 rectfill + }def + level2/setcolorspace AGMCORE_key_known not and{ + /AGMCORE_&&&setcolorspace/setcolorspace ldf + /AGMCORE_ReplaceMappedColor + { + dup type dup/arraytype eq exch/packedarraytype eq or + { + /AGMCORE_SpotAliasAry2 where{ + begin + dup 0 get dup/Separation eq + { + pop + dup length array copy + dup dup 1 get + current_spot_alias + { + dup map_alias + { + false set_spot_alias + dup 1 exch setsepcolorspace + true set_spot_alias + begin + /sep_colorspace_dict currentdict AGMCORE_gput + pop pop pop + [ + /Separation Name + CSA map_csa + MappedCSA + /sep_colorspace_proc load + ] + dup Name + end + }if + }if + map_reserved_ink_name 1 xpt + }{ + /DeviceN eq + { + dup length array copy + dup dup 1 get[ + exch{ + current_spot_alias{ + dup map_alias{ + /Name get exch pop + }if + }if + map_reserved_ink_name + }forall + ]1 xpt + }if + }ifelse + end + }if + }if + }def + /setcolorspace + { + dup type dup/arraytype eq exch/packedarraytype eq or + { + dup 0 get/Indexed eq + { + AGMCORE_distilling + { + /PhotoshopDuotoneList where + { + pop false + }{ + true + }ifelse + }{ + true + }ifelse + { + aload pop 3 -1 roll + AGMCORE_ReplaceMappedColor + 3 1 roll 4 array astore + }if + }{ + AGMCORE_ReplaceMappedColor + }ifelse + }if + DeviceN_PS2_inRip_seps{AGMCORE_&&&setcolorspace}if + }def + }if + }{ + /adj + { + currentstrokeadjust{ + transform + 0.25 sub round 0.25 add exch + 0.25 sub round 0.25 add exch + itransform + }if + }def + /mo{ + adj moveto + }def + /li{ + adj lineto + }def + /cv{ + 6 2 roll adj + 6 2 roll adj + 6 2 roll adj curveto + }def + /knockout_unitsq + { + 1 setgray + 8 8 1[8 0 0 8 0 0]{}image + }def + /currentstrokeadjust{ + /currentstrokeadjust AGMCORE_gget + }def + /setstrokeadjust{ + /currentstrokeadjust exch AGMCORE_gput + }def + /setcolorspace + { + /currentcolorspace exch AGMCORE_gput + }def + /currentcolorspace + { + /currentcolorspace AGMCORE_gget + }def + /setcolor_devicecolor + { + base_colorspace_type + dup/DeviceGray eq{ + pop setgray + }{ + /DeviceCMYK eq{ + setcmykcolor + }{ + setrgbcolor + }ifelse + }ifelse + }def + /setcolor + { + currentcolorspace 0 get + dup/DeviceGray ne{ + dup/DeviceCMYK ne{ + dup/DeviceRGB ne{ + dup/Separation eq{ + pop + currentcolorspace 3 gx + currentcolorspace 2 get + }{ + dup/Indexed eq{ + pop + currentcolorspace 3 get dup type/stringtype eq{ + currentcolorspace 1 get n_color_components + 3 -1 roll map_index + }{ + exec + }ifelse + currentcolorspace 1 get + }{ + /AGMCORE_cur_err/AGMCORE_invalid_color_space def + AGMCORE_invalid_color_space + }ifelse + }ifelse + }if + }if + }if + setcolor_devicecolor + }def + }ifelse + /sop/setoverprint ldf + /lw/setlinewidth ldf + /lc/setlinecap ldf + /lj/setlinejoin ldf + /ml/setmiterlimit ldf + /dsh/setdash ldf + /sadj/setstrokeadjust ldf + /gry/setgray ldf + /rgb/setrgbcolor ldf + /cmyk[ + /currentcolorspace[/DeviceCMYK]/AGMCORE_gput cvx + /setcmykcolor load dup type/operatortype ne{/exec cvx}if + ]cvx bdf + level3 AGMCORE_host_sep not and{ + /nzopmsc{ + 6 dict begin + /kk exch def + /yy exch def + /mm exch def + /cc exch def + /sum 0 def + cc 0 ne{/sum sum 2#1000 or def cc}if + mm 0 ne{/sum sum 2#0100 or def mm}if + yy 0 ne{/sum sum 2#0010 or def yy}if + kk 0 ne{/sum sum 2#0001 or def kk}if + AGMCORE_CMYKDeviceNColorspaces sum get setcolorspace + sum 0 eq{0}if + end + setcolor + }bdf + }{ + /nzopmsc/cmyk ldf + }ifelse + /sep/setsepcolor ldf + /devn/setdevicencolor ldf + /idx/setindexedcolor ldf + /colr/setcolor ldf + /csacrd/set_csa_crd ldf + /sepcs/setsepcolorspace ldf + /devncs/setdevicencolorspace ldf + /idxcs/setindexedcolorspace ldf + /cp/closepath ldf + /clp/clp_npth ldf + /eclp/eoclp_npth ldf + /f/fill ldf + /ef/eofill ldf + /@/stroke ldf + /nclp/npth_clp ldf + /gset/graphic_setup ldf + /gcln/graphic_cleanup ldf + /ct/concat ldf + /cf/currentfile ldf + /fl/filter ldf + /rs/readstring ldf + /AGMCORE_def_ht currenthalftone def + /clonedict Adobe_AGM_Utils begin/clonedict load end def + /clonearray Adobe_AGM_Utils begin/clonearray load end def + currentdict{ + dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{ + bind + }if + def + }forall + /getrampcolor + { + /indx exch def + 0 1 NumComp 1 sub + { + dup + Samples exch get + dup type/stringtype eq{indx get}if + exch + Scaling exch get aload pop + 3 1 roll + mul add + }for + ColorSpaceFamily/Separation eq + {sep} + { + ColorSpaceFamily/DeviceN eq + {devn}{setcolor}ifelse + }ifelse + }bdf + /sssetbackground{ + aload pop + ColorSpaceFamily/Separation eq + {sep} + { + ColorSpaceFamily/DeviceN eq + {devn}{setcolor}ifelse + }ifelse + }bdf + /RadialShade + { + 40 dict begin + /ColorSpaceFamily xdf + /background xdf + /ext1 xdf + /ext0 xdf + /BBox xdf + /r2 xdf + /c2y xdf + /c2x xdf + /r1 xdf + /c1y xdf + /c1x xdf + /rampdict xdf + /setinkoverprint where{pop/setinkoverprint{pop}def}if + gsave + BBox length 0 gt + { + np + BBox 0 get BBox 1 get moveto + BBox 2 get BBox 0 get sub 0 rlineto + 0 BBox 3 get BBox 1 get sub rlineto + BBox 2 get BBox 0 get sub neg 0 rlineto + closepath + clip + np + }if + c1x c2x eq + { + c1y c2y lt{/theta 90 def}{/theta 270 def}ifelse + }{ + /slope c2y c1y sub c2x c1x sub div def + /theta slope 1 atan def + c2x c1x lt c2y c1y ge and{/theta theta 180 sub def}if + c2x c1x lt c2y c1y lt and{/theta theta 180 add def}if + }ifelse + gsave + clippath + c1x c1y translate + theta rotate + -90 rotate + {pathbbox}stopped + {0 0 0 0}if + /yMax xdf + /xMax xdf + /yMin xdf + /xMin xdf + grestore + xMax xMin eq yMax yMin eq or + { + grestore + end + }{ + /max{2 copy gt{pop}{exch pop}ifelse}bdf + /min{2 copy lt{pop}{exch pop}ifelse}bdf + rampdict begin + 40 dict begin + background length 0 gt{background sssetbackground gsave clippath fill grestore}if + gsave + c1x c1y translate + theta rotate + -90 rotate + /c2y c1x c2x sub dup mul c1y c2y sub dup mul add sqrt def + /c1y 0 def + /c1x 0 def + /c2x 0 def + ext0 + { + 0 getrampcolor + c2y r2 add r1 sub 0.0001 lt + { + c1x c1y r1 360 0 arcn + pathbbox + /aymax exch def + /axmax exch def + /aymin exch def + /axmin exch def + /bxMin xMin axmin min def + /byMin yMin aymin min def + /bxMax xMax axmax max def + /byMax yMax aymax max def + bxMin byMin moveto + bxMax byMin lineto + bxMax byMax lineto + bxMin byMax lineto + bxMin byMin lineto + eofill + }{ + c2y r1 add r2 le + { + c1x c1y r1 0 360 arc + fill + } + { + c2x c2y r2 0 360 arc fill + r1 r2 eq + { + /p1x r1 neg def + /p1y c1y def + /p2x r1 def + /p2y c1y def + p1x p1y moveto p2x p2y lineto p2x yMin lineto p1x yMin lineto + fill + }{ + /AA r2 r1 sub c2y div def + AA -1 eq + {/theta 89.99 def} + {/theta AA 1 AA dup mul sub sqrt div 1 atan def} + ifelse + /SS1 90 theta add dup sin exch cos div def + /p1x r1 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def + /p1y p1x SS1 div neg def + /SS2 90 theta sub dup sin exch cos div def + /p2x r1 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def + /p2y p2x SS2 div neg def + r1 r2 gt + { + /L1maxX p1x yMin p1y sub SS1 div add def + /L2maxX p2x yMin p2y sub SS2 div add def + }{ + /L1maxX 0 def + /L2maxX 0 def + }ifelse + p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto + L1maxX L1maxX p1x sub SS1 mul p1y add lineto + fill + }ifelse + }ifelse + }ifelse + }if + c1x c2x sub dup mul + c1y c2y sub dup mul + add 0.5 exp + 0 dtransform + dup mul exch dup mul add 0.5 exp 72 div + 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt + 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt + 1 index 1 index lt{exch}if pop + /hires xdf + hires mul + /numpix xdf + /numsteps NumSamples def + /rampIndxInc 1 def + /subsampling false def + numpix 0 ne + { + NumSamples numpix div 0.5 gt + { + /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def + /rampIndxInc NumSamples 1 sub numsteps div def + /subsampling true def + }if + }if + /xInc c2x c1x sub numsteps div def + /yInc c2y c1y sub numsteps div def + /rInc r2 r1 sub numsteps div def + /cx c1x def + /cy c1y def + /radius r1 def + np + xInc 0 eq yInc 0 eq rInc 0 eq and and + { + 0 getrampcolor + cx cy radius 0 360 arc + stroke + NumSamples 1 sub getrampcolor + cx cy radius 72 hires div add 0 360 arc + 0 setlinewidth + stroke + }{ + 0 + numsteps + { + dup + subsampling{round cvi}if + getrampcolor + cx cy radius 0 360 arc + /cx cx xInc add def + /cy cy yInc add def + /radius radius rInc add def + cx cy radius 360 0 arcn + eofill + rampIndxInc add + }repeat + pop + }ifelse + ext1 + { + c2y r2 add r1 lt + { + c2x c2y r2 0 360 arc + fill + }{ + c2y r1 add r2 sub 0.0001 le + { + c2x c2y r2 360 0 arcn + pathbbox + /aymax exch def + /axmax exch def + /aymin exch def + /axmin exch def + /bxMin xMin axmin min def + /byMin yMin aymin min def + /bxMax xMax axmax max def + /byMax yMax aymax max def + bxMin byMin moveto + bxMax byMin lineto + bxMax byMax lineto + bxMin byMax lineto + bxMin byMin lineto + eofill + }{ + c2x c2y r2 0 360 arc fill + r1 r2 eq + { + /p1x r2 neg def + /p1y c2y def + /p2x r2 def + /p2y c2y def + p1x p1y moveto p2x p2y lineto p2x yMax lineto p1x yMax lineto + fill + }{ + /AA r2 r1 sub c2y div def + AA -1 eq + {/theta 89.99 def} + {/theta AA 1 AA dup mul sub sqrt div 1 atan def} + ifelse + /SS1 90 theta add dup sin exch cos div def + /p1x r2 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def + /p1y c2y p1x SS1 div sub def + /SS2 90 theta sub dup sin exch cos div def + /p2x r2 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def + /p2y c2y p2x SS2 div sub def + r1 r2 lt + { + /L1maxX p1x yMax p1y sub SS1 div add def + /L2maxX p2x yMax p2y sub SS2 div add def + }{ + /L1maxX 0 def + /L2maxX 0 def + }ifelse + p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto + L1maxX L1maxX p1x sub SS1 mul p1y add lineto + fill + }ifelse + }ifelse + }ifelse + }if + grestore + grestore + end + end + end + }ifelse + }bdf + /GenStrips + { + 40 dict begin + /ColorSpaceFamily xdf + /background xdf + /ext1 xdf + /ext0 xdf + /BBox xdf + /y2 xdf + /x2 xdf + /y1 xdf + /x1 xdf + /rampdict xdf + /setinkoverprint where{pop/setinkoverprint{pop}def}if + gsave + BBox length 0 gt + { + np + BBox 0 get BBox 1 get moveto + BBox 2 get BBox 0 get sub 0 rlineto + 0 BBox 3 get BBox 1 get sub rlineto + BBox 2 get BBox 0 get sub neg 0 rlineto + closepath + clip + np + }if + x1 x2 eq + { + y1 y2 lt{/theta 90 def}{/theta 270 def}ifelse + }{ + /slope y2 y1 sub x2 x1 sub div def + /theta slope 1 atan def + x2 x1 lt y2 y1 ge and{/theta theta 180 sub def}if + x2 x1 lt y2 y1 lt and{/theta theta 180 add def}if + } + ifelse + gsave + clippath + x1 y1 translate + theta rotate + {pathbbox}stopped + {0 0 0 0}if + /yMax exch def + /xMax exch def + /yMin exch def + /xMin exch def + grestore + xMax xMin eq yMax yMin eq or + { + grestore + end + }{ + rampdict begin + 20 dict begin + background length 0 gt{background sssetbackground gsave clippath fill grestore}if + gsave + x1 y1 translate + theta rotate + /xStart 0 def + /xEnd x2 x1 sub dup mul y2 y1 sub dup mul add 0.5 exp def + /ySpan yMax yMin sub def + /numsteps NumSamples def + /rampIndxInc 1 def + /subsampling false def + xStart 0 transform + xEnd 0 transform + 3 -1 roll + sub dup mul + 3 1 roll + sub dup mul + add 0.5 exp 72 div + 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt + 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt + 1 index 1 index lt{exch}if pop + mul + /numpix xdf + numpix 0 ne + { + NumSamples numpix div 0.5 gt + { + /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def + /rampIndxInc NumSamples 1 sub numsteps div def + /subsampling true def + }if + }if + ext0 + { + 0 getrampcolor + xMin xStart lt + { + xMin yMin xMin neg ySpan rectfill + }if + }if + /xInc xEnd xStart sub numsteps div def + /x xStart def + 0 + numsteps + { + dup + subsampling{round cvi}if + getrampcolor + x yMin xInc ySpan rectfill + /x x xInc add def + rampIndxInc add + }repeat + pop + ext1{ + xMax xEnd gt + { + xEnd yMin xMax xEnd sub ySpan rectfill + }if + }if + grestore + grestore + end + end + end + }ifelse + }bdf +}def +/pt +{ + end +}def +/dt{ +}def +/pgsv{ + //Adobe_AGM_Core/AGMCORE_save save put +}def +/pgrs{ + //Adobe_AGM_Core/AGMCORE_save get restore +}def +systemdict/findcolorrendering known{ + /findcolorrendering systemdict/findcolorrendering get def +}if +systemdict/setcolorrendering known{ + /setcolorrendering systemdict/setcolorrendering get def +}if +/test_cmyk_color_plate +{ + gsave + setcmykcolor currentgray 1 ne + grestore +}def +/inRip_spot_has_ink +{ + dup//Adobe_AGM_Core/AGMCORE_name xddf + convert_spot_to_process not +}def +/map255_to_range +{ + 1 index sub + 3 -1 roll 255 div mul add +}def +/set_csa_crd +{ + /sep_colorspace_dict null AGMCORE_gput + begin + CSA get_csa_by_name setcolorspace_opt + set_crd + end +} +def +/map_csa +{ + currentdict/MappedCSA known{MappedCSA null ne}{false}ifelse + {pop}{get_csa_by_name/MappedCSA xdf}ifelse +}def +/setsepcolor +{ + /sep_colorspace_dict AGMCORE_gget begin + dup/sep_tint exch AGMCORE_gput + TintProc + end +}def +/setdevicencolor +{ + /devicen_colorspace_dict AGMCORE_gget begin + Names length copy + Names length 1 sub -1 0 + { + /devicen_tints AGMCORE_gget 3 1 roll xpt + }for + TintProc + end +}def +/sep_colorspace_proc +{ + /AGMCORE_tmp exch store + /sep_colorspace_dict AGMCORE_gget begin + currentdict/Components known{ + Components aload pop + TintMethod/Lab eq{ + 2{AGMCORE_tmp mul NComponents 1 roll}repeat + LMax sub AGMCORE_tmp mul LMax add NComponents 1 roll + }{ + TintMethod/Subtractive eq{ + NComponents{ + AGMCORE_tmp mul NComponents 1 roll + }repeat + }{ + NComponents{ + 1 sub AGMCORE_tmp mul 1 add NComponents 1 roll + }repeat + }ifelse + }ifelse + }{ + ColorLookup AGMCORE_tmp ColorLookup length 1 sub mul round cvi get + aload pop + }ifelse + end +}def +/sep_colorspace_gray_proc +{ + /AGMCORE_tmp exch store + /sep_colorspace_dict AGMCORE_gget begin + GrayLookup AGMCORE_tmp GrayLookup length 1 sub mul round cvi get + end +}def +/sep_proc_name +{ + dup 0 get + dup/DeviceRGB eq exch/DeviceCMYK eq or level2 not and has_color not and{ + pop[/DeviceGray] + /sep_colorspace_gray_proc + }{ + /sep_colorspace_proc + }ifelse +}def +/setsepcolorspace +{ + current_spot_alias{ + dup begin + Name map_alias{ + exch pop + }if + end + }if + dup/sep_colorspace_dict exch AGMCORE_gput + begin + CSA map_csa + /AGMCORE_sep_special Name dup()eq exch(All)eq or store + AGMCORE_avoid_L2_sep_space{ + [/Indexed MappedCSA sep_proc_name 255 exch + {255 div}/exec cvx 3 -1 roll[4 1 roll load/exec cvx]cvx + ]setcolorspace_opt + /TintProc{ + 255 mul round cvi setcolor + }bdf + }{ + MappedCSA 0 get/DeviceCMYK eq + currentdict/Components known and + AGMCORE_sep_special not and{ + /TintProc[ + Components aload pop Name findcmykcustomcolor + /exch cvx/setcustomcolor cvx + ]cvx bdf + }{ + AGMCORE_host_sep Name(All)eq and{ + /TintProc{ + 1 exch sub setseparationgray + }bdf + }{ + AGMCORE_in_rip_sep MappedCSA 0 get/DeviceCMYK eq and + AGMCORE_host_sep or + Name()eq and{ + /TintProc[ + MappedCSA sep_proc_name exch 0 get/DeviceCMYK eq{ + cvx/setcmykcolor cvx + }{ + cvx/setgray cvx + }ifelse + ]cvx bdf + }{ + AGMCORE_producing_seps MappedCSA 0 get dup/DeviceCMYK eq exch/DeviceGray eq or and AGMCORE_sep_special not and{ + /TintProc[ + /dup cvx + MappedCSA sep_proc_name cvx exch + 0 get/DeviceGray eq{ + 1/exch cvx/sub cvx 0 0 0 4 -1/roll cvx + }if + /Name cvx/findcmykcustomcolor cvx/exch cvx + AGMCORE_host_sep{ + AGMCORE_is_cmyk_sep + /Name cvx + /AGMCORE_IsSeparationAProcessColor load/exec cvx + /not cvx/and cvx + }{ + Name inRip_spot_has_ink not + }ifelse + [ + /pop cvx 1 + ]cvx/if cvx + /setcustomcolor cvx + ]cvx bdf + }{ + /TintProc{setcolor}bdf + [/Separation Name MappedCSA sep_proc_name load]setcolorspace_opt + }ifelse + }ifelse + }ifelse + }ifelse + }ifelse + set_crd + setsepcolor + end +}def +/additive_blend +{ + 3 dict begin + /numarrays xdf + /numcolors xdf + 0 1 numcolors 1 sub + { + /c1 xdf + 1 + 0 1 numarrays 1 sub + { + 1 exch add/index cvx + c1/get cvx/mul cvx + }for + numarrays 1 add 1/roll cvx + }for + numarrays[/pop cvx]cvx/repeat cvx + end +}def +/subtractive_blend +{ + 3 dict begin + /numarrays xdf + /numcolors xdf + 0 1 numcolors 1 sub + { + /c1 xdf + 1 1 + 0 1 numarrays 1 sub + { + 1 3 3 -1 roll add/index cvx + c1/get cvx/sub cvx/mul cvx + }for + /sub cvx + numarrays 1 add 1/roll cvx + }for + numarrays[/pop cvx]cvx/repeat cvx + end +}def +/exec_tint_transform +{ + /TintProc[ + /TintTransform cvx/setcolor cvx + ]cvx bdf + MappedCSA setcolorspace_opt +}bdf +/devn_makecustomcolor +{ + 2 dict begin + /names_index xdf + /Names xdf + 1 1 1 1 Names names_index get findcmykcustomcolor + /devicen_tints AGMCORE_gget names_index get setcustomcolor + Names length{pop}repeat + end +}bdf +/setdevicencolorspace +{ + dup/AliasedColorants known{false}{true}ifelse + current_spot_alias and{ + 7 dict begin + /names_index 0 def + dup/names_len exch/Names get length def + /new_names names_len array def + /new_LookupTables names_len array def + /alias_cnt 0 def + dup/Names get + { + dup map_alias{ + exch pop + dup/ColorLookup known{ + dup begin + new_LookupTables names_index ColorLookup put + end + }{ + dup/Components known{ + dup begin + new_LookupTables names_index Components put + end + }{ + dup begin + new_LookupTables names_index[null null null null]put + end + }ifelse + }ifelse + new_names names_index 3 -1 roll/Name get put + /alias_cnt alias_cnt 1 add def + }{ + /name xdf + new_names names_index name put + dup/LookupTables known{ + dup begin + new_LookupTables names_index LookupTables names_index get put + end + }{ + dup begin + new_LookupTables names_index[null null null null]put + end + }ifelse + }ifelse + /names_index names_index 1 add def + }forall + alias_cnt 0 gt{ + /AliasedColorants true def + /lut_entry_len new_LookupTables 0 get dup length 256 ge{0 get length}{length}ifelse def + 0 1 names_len 1 sub{ + /names_index xdf + new_LookupTables names_index get dup length 256 ge{0 get length}{length}ifelse lut_entry_len ne{ + /AliasedColorants false def + exit + }{ + new_LookupTables names_index get 0 get null eq{ + dup/Names get names_index get/name xdf + name(Cyan)eq name(Magenta)eq name(Yellow)eq name(Black)eq + or or or not{ + /AliasedColorants false def + exit + }if + }if + }ifelse + }for + lut_entry_len 1 eq{ + /AliasedColorants false def + }if + AliasedColorants{ + dup begin + /Names new_names def + /LookupTables new_LookupTables def + /AliasedColorants true def + /NComponents lut_entry_len def + /TintMethod NComponents 4 eq{/Subtractive}{/Additive}ifelse def + /MappedCSA TintMethod/Additive eq{/DeviceRGB}{/DeviceCMYK}ifelse def + currentdict/TTTablesIdx known not{ + /TTTablesIdx -1 def + }if + end + }if + }if + end + }if + dup/devicen_colorspace_dict exch AGMCORE_gput + begin + currentdict/AliasedColorants known{ + AliasedColorants + }{ + false + }ifelse + dup not{ + CSA map_csa + }if + /TintTransform load type/nulltype eq or{ + /TintTransform[ + 0 1 Names length 1 sub + { + /TTTablesIdx TTTablesIdx 1 add def + dup LookupTables exch get dup 0 get null eq + { + 1 index + Names exch get + dup(Cyan)eq + { + pop exch + LookupTables length exch sub + /index cvx + 0 0 0 + } + { + dup(Magenta)eq + { + pop exch + LookupTables length exch sub + /index cvx + 0/exch cvx 0 0 + }{ + (Yellow)eq + { + exch + LookupTables length exch sub + /index cvx + 0 0 3 -1/roll cvx 0 + }{ + exch + LookupTables length exch sub + /index cvx + 0 0 0 4 -1/roll cvx + }ifelse + }ifelse + }ifelse + 5 -1/roll cvx/astore cvx + }{ + dup length 1 sub + LookupTables length 4 -1 roll sub 1 add + /index cvx/mul cvx/round cvx/cvi cvx/get cvx + }ifelse + Names length TTTablesIdx add 1 add 1/roll cvx + }for + Names length[/pop cvx]cvx/repeat cvx + NComponents Names length + TintMethod/Subtractive eq + { + subtractive_blend + }{ + additive_blend + }ifelse + ]cvx bdf + }if + AGMCORE_host_sep{ + Names convert_to_process{ + exec_tint_transform + } + { + currentdict/AliasedColorants known{ + AliasedColorants not + }{ + false + }ifelse + 5 dict begin + /AvoidAliasedColorants xdf + /painted? false def + /names_index 0 def + /names_len Names length def + AvoidAliasedColorants{ + /currentspotalias current_spot_alias def + false set_spot_alias + }if + Names{ + AGMCORE_is_cmyk_sep{ + dup(Cyan)eq AGMCORE_cyan_plate and exch + dup(Magenta)eq AGMCORE_magenta_plate and exch + dup(Yellow)eq AGMCORE_yellow_plate and exch + (Black)eq AGMCORE_black_plate and or or or{ + /devicen_colorspace_dict AGMCORE_gget/TintProc[ + Names names_index/devn_makecustomcolor cvx + ]cvx ddf + /painted? true def + }if + painted?{exit}if + }{ + 0 0 0 0 5 -1 roll findcmykcustomcolor 1 setcustomcolor currentgray 0 eq{ + /devicen_colorspace_dict AGMCORE_gget/TintProc[ + Names names_index/devn_makecustomcolor cvx + ]cvx ddf + /painted? true def + exit + }if + }ifelse + /names_index names_index 1 add def + }forall + AvoidAliasedColorants{ + currentspotalias set_spot_alias + }if + painted?{ + /devicen_colorspace_dict AGMCORE_gget/names_index names_index put + }{ + /devicen_colorspace_dict AGMCORE_gget/TintProc[ + names_len[/pop cvx]cvx/repeat cvx 1/setseparationgray cvx + 0 0 0 0/setcmykcolor cvx + ]cvx ddf + }ifelse + end + }ifelse + } + { + AGMCORE_in_rip_sep{ + Names convert_to_process not + }{ + level3 + }ifelse + { + [/DeviceN Names MappedCSA/TintTransform load]setcolorspace_opt + /TintProc level3 not AGMCORE_in_rip_sep and{ + [ + Names/length cvx[/pop cvx]cvx/repeat cvx + ]cvx bdf + }{ + {setcolor}bdf + }ifelse + }{ + exec_tint_transform + }ifelse + }ifelse + set_crd + /AliasedColorants false def + end +}def +/setindexedcolorspace +{ + dup/indexed_colorspace_dict exch AGMCORE_gput + begin + currentdict/CSDBase known{ + CSDBase/CSD get_res begin + currentdict/Names known{ + currentdict devncs + }{ + 1 currentdict sepcs + }ifelse + AGMCORE_host_sep{ + 4 dict begin + /compCnt/Names where{pop Names length}{1}ifelse def + /NewLookup HiVal 1 add string def + 0 1 HiVal{ + /tableIndex xdf + Lookup dup type/stringtype eq{ + compCnt tableIndex map_index + }{ + exec + }ifelse + /Names where{ + pop setdevicencolor + }{ + setsepcolor + }ifelse + currentgray + tableIndex exch + 255 mul cvi + NewLookup 3 1 roll put + }for + [/Indexed currentcolorspace HiVal NewLookup]setcolorspace_opt + end + }{ + level3 + { + currentdict/Names known{ + [/Indexed[/DeviceN Names MappedCSA/TintTransform load]HiVal Lookup]setcolorspace_opt + }{ + [/Indexed[/Separation Name MappedCSA sep_proc_name load]HiVal Lookup]setcolorspace_opt + }ifelse + }{ + [/Indexed MappedCSA HiVal + [ + currentdict/Names known{ + Lookup dup type/stringtype eq + {/exch cvx CSDBase/CSD get_res/Names get length dup/mul cvx exch/getinterval cvx{255 div}/forall cvx} + {/exec cvx}ifelse + /TintTransform load/exec cvx + }{ + Lookup dup type/stringtype eq + {/exch cvx/get cvx 255/div cvx} + {/exec cvx}ifelse + CSDBase/CSD get_res/MappedCSA get sep_proc_name exch pop/load cvx/exec cvx + }ifelse + ]cvx + ]setcolorspace_opt + }ifelse + }ifelse + end + set_crd + } + { + CSA map_csa + AGMCORE_host_sep level2 not and{ + 0 0 0 0 setcmykcolor + }{ + [/Indexed MappedCSA + level2 not has_color not and{ + dup 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or{ + pop[/DeviceGray] + }if + HiVal GrayLookup + }{ + HiVal + currentdict/RangeArray known{ + { + /indexed_colorspace_dict AGMCORE_gget begin + Lookup exch + dup HiVal gt{ + pop HiVal + }if + NComponents mul NComponents getinterval{}forall + NComponents 1 sub -1 0{ + RangeArray exch 2 mul 2 getinterval aload pop map255_to_range + NComponents 1 roll + }for + end + }bind + }{ + Lookup + }ifelse + }ifelse + ]setcolorspace_opt + set_crd + }ifelse + }ifelse + end +}def +/setindexedcolor +{ + AGMCORE_host_sep{ + /indexed_colorspace_dict AGMCORE_gget + begin + currentdict/CSDBase known{ + CSDBase/CSD get_res begin + currentdict/Names known{ + map_indexed_devn + devn + } + { + Lookup 1 3 -1 roll map_index + sep + }ifelse + end + }{ + Lookup MappedCSA/DeviceCMYK eq{4}{1}ifelse 3 -1 roll + map_index + MappedCSA/DeviceCMYK eq{setcmykcolor}{setgray}ifelse + }ifelse + end + }{ + level3 not AGMCORE_in_rip_sep and/indexed_colorspace_dict AGMCORE_gget/CSDBase known and{ + /indexed_colorspace_dict AGMCORE_gget/CSDBase get/CSD get_res begin + map_indexed_devn + devn + end + } + { + setcolor + }ifelse + }ifelse +}def +/ignoreimagedata +{ + currentoverprint not{ + gsave + dup clonedict begin + 1 setgray + /Decode[0 1]def + /DataSourcedef + /MultipleDataSources false def + /BitsPerComponent 8 def + currentdict end + systemdict/image gx + grestore + }if + consumeimagedata +}def +/add_res +{ + dup/CSD eq{ + pop + //Adobe_AGM_Core begin + /AGMCORE_CSD_cache load 3 1 roll put + end + }{ + defineresource pop + }ifelse +}def +/del_res +{ + { + aload pop exch + dup/CSD eq{ + pop + {//Adobe_AGM_Core/AGMCORE_CSD_cache get exch undef}forall + }{ + exch + {1 index undefineresource}forall + pop + }ifelse + }forall +}def +/get_res +{ + dup/CSD eq{ + pop + dup type dup/nametype eq exch/stringtype eq or{ + AGMCORE_CSD_cache exch get + }if + }{ + findresource + }ifelse +}def +/get_csa_by_name +{ + dup type dup/nametype eq exch/stringtype eq or{ + /CSA get_res + }if +}def +/paintproc_buf_init +{ + /count get 0 0 put +}def +/paintproc_buf_next +{ + dup/count get dup 0 get + dup 3 1 roll + 1 add 0 xpt + get +}def +/cachepaintproc_compress +{ + 5 dict begin + currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def + /ppdict 20 dict def + /string_size 16000 def + /readbuffer string_size string def + currentglobal true setglobal + ppdict 1 array dup 0 1 put/count xpt + setglobal + /LZWFilter + { + exch + dup length 0 eq{ + pop + }{ + ppdict dup length 1 sub 3 -1 roll put + }ifelse + {string_size}{0}ifelse string + }/LZWEncode filter def + { + ReadFilter readbuffer readstring + exch LZWFilter exch writestring + not{exit}if + }loop + LZWFilter closefile + ppdict + end +}def +/cachepaintproc +{ + 2 dict begin + currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def + /ppdict 20 dict def + currentglobal true setglobal + ppdict 1 array dup 0 1 put/count xpt + setglobal + { + ReadFilter 16000 string readstring exch + ppdict dup length 1 sub 3 -1 roll put + not{exit}if + }loop + ppdict dup dup length 1 sub()put + end +}def +/make_pattern +{ + exch clonedict exch + dup matrix currentmatrix matrix concatmatrix 0 0 3 2 roll itransform + exch 3 index/XStep get 1 index exch 2 copy div cvi mul sub sub + exch 3 index/YStep get 1 index exch 2 copy div cvi mul sub sub + matrix translate exch matrix concatmatrix + 1 index begin + BBox 0 get XStep div cvi XStep mul/xshift exch neg def + BBox 1 get YStep div cvi YStep mul/yshift exch neg def + BBox 0 get xshift add + BBox 1 get yshift add + BBox 2 get xshift add + BBox 3 get yshift add + 4 array astore + /BBox exch def + [xshift yshift/translate load null/exec load]dup + 3/PaintProc load put cvx/PaintProc exch def + end + gsave 0 setgray + makepattern + grestore +}def +/set_pattern +{ + dup/PatternType get 1 eq{ + dup/PaintType get 1 eq{ + currentoverprint sop[/DeviceGray]setcolorspace 0 setgray + }if + }if + setpattern +}def +/setcolorspace_opt +{ + dup currentcolorspace eq{pop}{setcolorspace}ifelse +}def +/updatecolorrendering +{ + currentcolorrendering/RenderingIntent known{ + currentcolorrendering/RenderingIntent get + } + { + Intent/AbsoluteColorimetric eq + { + /absolute_colorimetric_crd AGMCORE_gget dup null eq + } + { + Intent/RelativeColorimetric eq + { + /relative_colorimetric_crd AGMCORE_gget dup null eq + } + { + Intent/Saturation eq + { + /saturation_crd AGMCORE_gget dup null eq + } + { + /perceptual_crd AGMCORE_gget dup null eq + }ifelse + }ifelse + }ifelse + { + pop null + } + { + /RenderingIntent known{null}{Intent}ifelse + }ifelse + }ifelse + Intent ne{ + Intent/ColorRendering{findresource}stopped + { + pop pop systemdict/findcolorrendering known + { + Intent findcolorrendering + { + /ColorRendering findresource true exch + } + { + /ColorRendering findresource + product(Xerox Phaser 5400)ne + exch + }ifelse + dup Intent/AbsoluteColorimetric eq + { + /absolute_colorimetric_crd exch AGMCORE_gput + } + { + Intent/RelativeColorimetric eq + { + /relative_colorimetric_crd exch AGMCORE_gput + } + { + Intent/Saturation eq + { + /saturation_crd exch AGMCORE_gput + } + { + Intent/Perceptual eq + { + /perceptual_crd exch AGMCORE_gput + } + { + pop + }ifelse + }ifelse + }ifelse + }ifelse + 1 index{exch}{pop}ifelse + } + {false}ifelse + } + {true}ifelse + { + dup begin + currentdict/TransformPQR known{ + currentdict/TransformPQR get aload pop + 3{{}eq 3 1 roll}repeat or or + } + {true}ifelse + currentdict/MatrixPQR known{ + currentdict/MatrixPQR get aload pop + 1.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll + 0.0 eq 9 1 roll 1.0 eq 9 1 roll 0.0 eq 9 1 roll + 0.0 eq 9 1 roll 0.0 eq 9 1 roll 1.0 eq + and and and and and and and and + } + {true}ifelse + end + or + { + clonedict begin + /TransformPQR[ + {4 -1 roll 3 get dup 3 1 roll sub 5 -1 roll 3 get 3 -1 roll sub div + 3 -1 roll 3 get 3 -1 roll 3 get dup 4 1 roll sub mul add}bind + {4 -1 roll 4 get dup 3 1 roll sub 5 -1 roll 4 get 3 -1 roll sub div + 3 -1 roll 4 get 3 -1 roll 4 get dup 4 1 roll sub mul add}bind + {4 -1 roll 5 get dup 3 1 roll sub 5 -1 roll 5 get 3 -1 roll sub div + 3 -1 roll 5 get 3 -1 roll 5 get dup 4 1 roll sub mul add}bind + ]def + /MatrixPQR[0.8951 -0.7502 0.0389 0.2664 1.7135 -0.0685 -0.1614 0.0367 1.0296]def + /RangePQR[-0.3227950745 2.3229645538 -1.5003771057 3.5003465881 -0.1369979095 2.136967392]def + currentdict end + }if + setcolorrendering_opt + }if + }if +}def +/set_crd +{ + AGMCORE_host_sep not level2 and{ + currentdict/ColorRendering known{ + ColorRendering/ColorRendering{findresource}stopped not{setcolorrendering_opt}if + }{ + currentdict/Intent known{ + updatecolorrendering + }if + }ifelse + currentcolorspace dup type/arraytype eq + {0 get}if + /DeviceRGB eq + { + currentdict/UCR known + {/UCR}{/AGMCORE_currentucr}ifelse + load setundercolorremoval + currentdict/BG known + {/BG}{/AGMCORE_currentbg}ifelse + load setblackgeneration + }if + }if +}def +/set_ucrbg +{ + dup null eq{pop/AGMCORE_currentbg load}{/Procedure get_res}ifelse setblackgeneration + dup null eq{pop/AGMCORE_currentucr load}{/Procedure get_res}ifelse setundercolorremoval +}def +/setcolorrendering_opt +{ + dup currentcolorrendering eq{ + pop + }{ + clonedict + begin + /Intent Intent def + currentdict + end + setcolorrendering + }ifelse +}def +/cpaint_gcomp +{ + convert_to_process//Adobe_AGM_Core/AGMCORE_ConvertToProcess xddf + //Adobe_AGM_Core/AGMCORE_ConvertToProcess get not + { + (%end_cpaint_gcomp)flushinput + }if +}def +/cpaint_gsep +{ + //Adobe_AGM_Core/AGMCORE_ConvertToProcess get + { + (%end_cpaint_gsep)flushinput + }if +}def +/cpaint_gend +{np}def +/T1_path +{ + currentfile token pop currentfile token pop mo + { + currentfile token pop dup type/stringtype eq + {pop exit}if + 0 exch rlineto + currentfile token pop dup type/stringtype eq + {pop exit}if + 0 rlineto + }loop +}def +/T1_gsave + level3 + {/clipsave} + {/gsave}ifelse + load def +/T1_grestore + level3 + {/cliprestore} + {/grestore}ifelse + load def +/set_spot_alias_ary +{ + dup inherit_aliases + //Adobe_AGM_Core/AGMCORE_SpotAliasAry xddf +}def +/set_spot_normalization_ary +{ + dup inherit_aliases + dup length + /AGMCORE_SpotAliasAry where{pop AGMCORE_SpotAliasAry length add}if + array + //Adobe_AGM_Core/AGMCORE_SpotAliasAry2 xddf + /AGMCORE_SpotAliasAry where{ + pop + AGMCORE_SpotAliasAry2 0 AGMCORE_SpotAliasAry putinterval + AGMCORE_SpotAliasAry length + }{0}ifelse + AGMCORE_SpotAliasAry2 3 1 roll exch putinterval + true set_spot_alias +}def +/inherit_aliases +{ + {dup/Name get map_alias{/CSD put}{pop}ifelse}forall +}def +/set_spot_alias +{ + /AGMCORE_SpotAliasAry2 where{ + /AGMCORE_current_spot_alias 3 -1 roll put + }{ + pop + }ifelse +}def +/current_spot_alias +{ + /AGMCORE_SpotAliasAry2 where{ + /AGMCORE_current_spot_alias get + }{ + false + }ifelse +}def +/map_alias +{ + /AGMCORE_SpotAliasAry2 where{ + begin + /AGMCORE_name xdf + false + AGMCORE_SpotAliasAry2{ + dup/Name get AGMCORE_name eq{ + /CSD get/CSD get_res + exch pop true + exit + }{ + pop + }ifelse + }forall + end + }{ + pop false + }ifelse +}bdf +/spot_alias +{ + true set_spot_alias + /AGMCORE_&setcustomcolor AGMCORE_key_known not{ + //Adobe_AGM_Core/AGMCORE_&setcustomcolor/setcustomcolor load put + }if + /customcolor_tint 1 AGMCORE_gput + //Adobe_AGM_Core begin + /setcustomcolor + { + //Adobe_AGM_Core begin + dup/customcolor_tint exch AGMCORE_gput + 1 index aload pop pop 1 eq exch 1 eq and exch 1 eq and exch 1 eq and not + current_spot_alias and{1 index 4 get map_alias}{false}ifelse + { + false set_spot_alias + /sep_colorspace_dict AGMCORE_gget null ne + 3 1 roll 2 index{ + exch pop/sep_tint AGMCORE_gget exch + }if + mark 3 1 roll + setsepcolorspace + counttomark 0 ne{ + setsepcolor + }if + pop + not{/sep_tint 1.0 AGMCORE_gput}if + pop + true set_spot_alias + }{ + AGMCORE_&setcustomcolor + }ifelse + end + }bdf + end +}def +/begin_feature +{ + Adobe_AGM_Core/AGMCORE_feature_dictCount countdictstack put + count Adobe_AGM_Core/AGMCORE_feature_opCount 3 -1 roll put + {Adobe_AGM_Core/AGMCORE_feature_ctm matrix currentmatrix put}if +}def +/end_feature +{ + 2 dict begin + /spd/setpagedevice load def + /setpagedevice{get_gstate spd set_gstate}def + stopped{$error/newerror false put}if + end + count Adobe_AGM_Core/AGMCORE_feature_opCount get sub dup 0 gt{{pop}repeat}{pop}ifelse + countdictstack Adobe_AGM_Core/AGMCORE_feature_dictCount get sub dup 0 gt{{end}repeat}{pop}ifelse + {Adobe_AGM_Core/AGMCORE_feature_ctm get setmatrix}if +}def +/set_negative +{ + //Adobe_AGM_Core begin + /AGMCORE_inverting exch def + level2{ + currentpagedevice/NegativePrint known AGMCORE_distilling not and{ + currentpagedevice/NegativePrint get//Adobe_AGM_Core/AGMCORE_inverting get ne{ + true begin_feature true{ + <>setpagedevice + }end_feature + }if + /AGMCORE_inverting false def + }if + }if + AGMCORE_inverting{ + [{1 exch sub}/exec load dup currenttransfer exch]cvx bind settransfer + AGMCORE_distilling{ + erasepage + }{ + gsave np clippath 1/setseparationgray where{pop setseparationgray}{setgray}ifelse + /AGMIRS_&fill where{pop AGMIRS_&fill}{fill}ifelse grestore + }ifelse + }if + end +}def +/lw_save_restore_override{ + /md where{ + pop + md begin + initializepage + /initializepage{}def + /pmSVsetup{}def + /endp{}def + /pse{}def + /psb{}def + /orig_showpage where + {pop} + {/orig_showpage/showpage load def} + ifelse + /showpage{orig_showpage gR}def + end + }if +}def +/pscript_showpage_override{ + /NTPSOct95 where + { + begin + showpage + save + /showpage/restore load def + /restore{exch pop}def + end + }if +}def +/driver_media_override +{ + /md where{ + pop + md/initializepage known{ + md/initializepage{}put + }if + md/rC known{ + md/rC{4{pop}repeat}put + }if + }if + /mysetup where{ + /mysetup[1 0 0 1 0 0]put + }if + Adobe_AGM_Core/AGMCORE_Default_CTM matrix currentmatrix put + level2 + {Adobe_AGM_Core/AGMCORE_Default_PageSize currentpagedevice/PageSize get put}if +}def +/driver_check_media_override +{ + /PrepsDict where + {pop} + { + Adobe_AGM_Core/AGMCORE_Default_CTM get matrix currentmatrix ne + Adobe_AGM_Core/AGMCORE_Default_PageSize get type/arraytype eq + { + Adobe_AGM_Core/AGMCORE_Default_PageSize get 0 get currentpagedevice/PageSize get 0 get eq and + Adobe_AGM_Core/AGMCORE_Default_PageSize get 1 get currentpagedevice/PageSize get 1 get eq and + }if + { + Adobe_AGM_Core/AGMCORE_Default_CTM get setmatrix + }if + }ifelse +}def +AGMCORE_err_strings begin + /AGMCORE_bad_environ(Environment not satisfactory for this job. Ensure that the PPD is correct or that the PostScript level requested is supported by this printer. )def + /AGMCORE_color_space_onhost_seps(This job contains colors that will not separate with on-host methods. )def + /AGMCORE_invalid_color_space(This job contains an invalid color space. )def +end +/set_def_ht +{AGMCORE_def_ht sethalftone}def +/set_def_flat +{AGMCORE_Default_flatness setflat}def +end +systemdict/setpacking known +{setpacking}if +%%EndResource +%%BeginResource: procset Adobe_CoolType_Core 2.31 0 %%Copyright: Copyright 1997-2006 Adobe Systems Incorporated. All Rights Reserved. %%Version: 2.31 0 10 dict begin /Adobe_CoolType_Passthru currentdict def /Adobe_CoolType_Core_Defined userdict/Adobe_CoolType_Core known def Adobe_CoolType_Core_Defined {/Adobe_CoolType_Core userdict/Adobe_CoolType_Core get def} if userdict/Adobe_CoolType_Core 70 dict dup begin put /Adobe_CoolType_Version 2.31 def /Level2? systemdict/languagelevel known dup {pop systemdict/languagelevel get 2 ge} if def Level2? not { /currentglobal false def /setglobal/pop load def /gcheck{pop false}bind def /currentpacking false def /setpacking/pop load def /SharedFontDirectory 0 dict def } if currentpacking true setpacking currentglobal false setglobal userdict/Adobe_CoolType_Data 2 copy known not {2 copy 10 dict put} if get begin /@opStackCountByLevel 32 dict def /@opStackLevel 0 def /@dictStackCountByLevel 32 dict def /@dictStackLevel 0 def end setglobal currentglobal true setglobal userdict/Adobe_CoolType_GVMFonts known not {userdict/Adobe_CoolType_GVMFonts 10 dict put} if setglobal currentglobal false setglobal userdict/Adobe_CoolType_LVMFonts known not {userdict/Adobe_CoolType_LVMFonts 10 dict put} if setglobal /ct_VMDictPut { dup gcheck{Adobe_CoolType_GVMFonts}{Adobe_CoolType_LVMFonts}ifelse 3 1 roll put }bind def /ct_VMDictUndef { dup Adobe_CoolType_GVMFonts exch known {Adobe_CoolType_GVMFonts exch undef} { dup Adobe_CoolType_LVMFonts exch known {Adobe_CoolType_LVMFonts exch undef} {pop} ifelse }ifelse }bind def /ct_str1 1 string def /ct_xshow { /_ct_na exch def /_ct_i 0 def currentpoint /_ct_y exch def /_ct_x exch def { pop pop ct_str1 exch 0 exch put ct_str1 show {_ct_na _ct_i get}stopped {pop pop} { _ct_x _ct_y moveto 0 rmoveto } ifelse /_ct_i _ct_i 1 add def currentpoint /_ct_y exch def /_ct_x exch def } exch @cshow }bind def /ct_yshow { /_ct_na exch def /_ct_i 0 def currentpoint /_ct_y exch def /_ct_x exch def { pop pop ct_str1 exch 0 exch put ct_str1 show {_ct_na _ct_i get}stopped {pop pop} { _ct_x _ct_y moveto 0 exch rmoveto } ifelse /_ct_i _ct_i 1 add def currentpoint /_ct_y exch def /_ct_x exch def } exch @cshow }bind def /ct_xyshow { /_ct_na exch def /_ct_i 0 def currentpoint /_ct_y exch def /_ct_x exch def { pop pop ct_str1 exch 0 exch put ct_str1 show {_ct_na _ct_i get}stopped {pop pop} { {_ct_na _ct_i 1 add get}stopped {pop pop pop} { _ct_x _ct_y moveto rmoveto } ifelse } ifelse /_ct_i _ct_i 2 add def currentpoint /_ct_y exch def /_ct_x exch def } exch @cshow }bind def /xsh{{@xshow}stopped{Adobe_CoolType_Data begin ct_xshow end}if}bind def /ysh{{@yshow}stopped{Adobe_CoolType_Data begin ct_yshow end}if}bind def /xysh{{@xyshow}stopped{Adobe_CoolType_Data begin ct_xyshow end}if}bind def currentglobal true setglobal /ct_T3Defs { /BuildChar { 1 index/Encoding get exch get 1 index/BuildGlyph get exec }bind def /BuildGlyph { exch begin GlyphProcs exch get exec end }bind def }bind def setglobal /@_SaveStackLevels { Adobe_CoolType_Data begin /@vmState currentglobal def false setglobal @opStackCountByLevel @opStackLevel 2 copy known not { 2 copy 3 dict dup/args 7 index 5 add array put put get } { get dup/args get dup length 3 index lt { dup length 5 add array exch 1 index exch 0 exch putinterval 1 index exch/args exch put } {pop} ifelse } ifelse begin count 1 sub 1 index lt {pop count} if dup/argCount exch def dup 0 gt { args exch 0 exch getinterval astore pop } {pop} ifelse count /restCount exch def end /@opStackLevel @opStackLevel 1 add def countdictstack 1 sub @dictStackCountByLevel exch @dictStackLevel exch put /@dictStackLevel @dictStackLevel 1 add def @vmState setglobal end }bind def /@_RestoreStackLevels { Adobe_CoolType_Data begin /@opStackLevel @opStackLevel 1 sub def @opStackCountByLevel @opStackLevel get begin count restCount sub dup 0 gt {{pop}repeat} {pop} ifelse args 0 argCount getinterval{}forall end /@dictStackLevel @dictStackLevel 1 sub def @dictStackCountByLevel @dictStackLevel get end countdictstack exch sub dup 0 gt {{end}repeat} {pop} ifelse }bind def /@_PopStackLevels { Adobe_CoolType_Data begin /@opStackLevel @opStackLevel 1 sub def /@dictStackLevel @dictStackLevel 1 sub def end }bind def /@Raise { exch cvx exch errordict exch get exec stop }bind def /@ReRaise { cvx $error/errorname get errordict exch get exec stop }bind def /@Stopped { 0 @#Stopped }bind def /@#Stopped { @_SaveStackLevels stopped {@_RestoreStackLevels true} {@_PopStackLevels false} ifelse }bind def /@Arg { Adobe_CoolType_Data begin @opStackCountByLevel @opStackLevel 1 sub get begin args exch argCount 1 sub exch sub get end end }bind def currentglobal true setglobal /CTHasResourceForAllBug Level2? { 1 dict dup /@shouldNotDisappearDictValue true def Adobe_CoolType_Data exch/@shouldNotDisappearDict exch put begin count @_SaveStackLevels {(*){pop stop}128 string/Category resourceforall} stopped pop @_RestoreStackLevels currentdict Adobe_CoolType_Data/@shouldNotDisappearDict get dup 3 1 roll ne dup 3 1 roll { /@shouldNotDisappearDictValue known { { end currentdict 1 index eq {pop exit} if } loop } if } { pop end } ifelse } {false} ifelse def true setglobal /CTHasResourceStatusBug Level2? { mark {/steveamerige/Category resourcestatus} stopped {cleartomark true} {cleartomark currentglobal not} ifelse } {false} ifelse def setglobal /CTResourceStatus { mark 3 1 roll /Category findresource begin ({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec {cleartomark false} {{3 2 roll pop true}{cleartomark false}ifelse} ifelse end }bind def /CTWorkAroundBugs { Level2? { /cid_PreLoad/ProcSet resourcestatus { pop pop currentglobal mark { (*) { dup/CMap CTHasResourceStatusBug {CTResourceStatus} {resourcestatus} ifelse { pop dup 0 eq exch 1 eq or { dup/CMap findresource gcheck setglobal /CMap undefineresource } { pop CTHasResourceForAllBug {exit} {stop} ifelse } ifelse } {pop} ifelse } 128 string/CMap resourceforall } stopped {cleartomark} stopped pop setglobal } if } if }bind def /ds { Adobe_CoolType_Core begin CTWorkAroundBugs /mo/moveto load def /nf/newencodedfont load def /msf{makefont setfont}bind def /uf{dup undefinefont ct_VMDictUndef}bind def /ur/undefineresource load def /chp/charpath load def /awsh/awidthshow load def /wsh/widthshow load def /ash/ashow load def /@xshow/xshow load def /@yshow/yshow load def /@xyshow/xyshow load def /@cshow/cshow load def /sh/show load def /rp/repeat load def /.n/.notdef def end currentglobal false setglobal userdict/Adobe_CoolType_Data 2 copy known not {2 copy 10 dict put} if get begin /AddWidths? false def /CC 0 def /charcode 2 string def /@opStackCountByLevel 32 dict def /@opStackLevel 0 def /@dictStackCountByLevel 32 dict def /@dictStackLevel 0 def /InVMFontsByCMap 10 dict def /InVMDeepCopiedFonts 10 dict def end setglobal }bind def /dt { currentdict Adobe_CoolType_Core eq {end} if }bind def /ps { Adobe_CoolType_Core begin Adobe_CoolType_GVMFonts begin Adobe_CoolType_LVMFonts begin SharedFontDirectory begin }bind def /pt { end end end end }bind def /unload { systemdict/languagelevel known { systemdict/languagelevel get 2 ge { userdict/Adobe_CoolType_Core 2 copy known {undef} {pop pop} ifelse } if } if }bind def /ndf { 1 index where {pop pop pop} {dup xcheck{bind}if def} ifelse }def /findfont systemdict begin userdict begin /globaldict where{/globaldict get begin}if dup where pop exch get /globaldict where{pop end}if end end Adobe_CoolType_Core_Defined {/systemfindfont exch def} { /findfont 1 index def /systemfindfont exch def } ifelse /undefinefont {pop}ndf /copyfont { currentglobal 3 1 roll 1 index gcheck setglobal dup null eq{0}{dup length}ifelse 2 index length add 1 add dict begin exch { 1 index/FID eq {pop pop} {def} ifelse } forall dup null eq {pop} {{def}forall} ifelse currentdict end exch setglobal }bind def /copyarray { currentglobal exch dup gcheck setglobal dup length array copy exch setglobal }bind def /newencodedfont { currentglobal { SharedFontDirectory 3 index known {SharedFontDirectory 3 index get/FontReferenced known} {false} ifelse } { FontDirectory 3 index known {FontDirectory 3 index get/FontReferenced known} { SharedFontDirectory 3 index known {SharedFontDirectory 3 index get/FontReferenced known} {false} ifelse } ifelse } ifelse dup { 3 index findfont/FontReferenced get 2 index dup type/nametype eq {findfont} if ne {pop false} if } if dup { 1 index dup type/nametype eq {findfont} if dup/CharStrings known { /CharStrings get length 4 index findfont/CharStrings get length ne { pop false } if } {pop} ifelse } if { pop 1 index findfont /Encoding get exch 0 1 255 {2 copy get 3 index 3 1 roll put} for pop pop pop } { currentglobal 4 1 roll dup type/nametype eq {findfont} if dup gcheck setglobal dup dup maxlength 2 add dict begin exch { 1 index/FID ne 2 index/Encoding ne and {def} {pop pop} ifelse } forall /FontReferenced exch def /Encoding exch dup length array copy def /FontName 1 index dup type/stringtype eq{cvn}if def dup currentdict end definefont ct_VMDictPut setglobal } ifelse }bind def /SetSubstituteStrategy { $SubstituteFont begin dup type/dicttype ne {0 dict} if currentdict/$Strategies known { exch $Strategies exch 2 copy known { get 2 copy maxlength exch maxlength add dict begin {def}forall {def}forall currentdict dup/$Init known {dup/$Init get exec} if end /$Strategy exch def } {pop pop pop} ifelse } {pop pop} ifelse end }bind def /scff { $SubstituteFont begin dup type/stringtype eq {dup length exch} {null} ifelse /$sname exch def /$slen exch def /$inVMIndex $sname null eq { 1 index $str cvs dup length $slen sub $slen getinterval cvn } {$sname} ifelse def end {findfont} @Stopped { dup length 8 add string exch 1 index 0(BadFont:)putinterval 1 index exch 8 exch dup length string cvs putinterval cvn {findfont} @Stopped {pop/Courier findfont} if } if $SubstituteFont begin /$sname null def /$slen 0 def /$inVMIndex null def end }bind def /isWidthsOnlyFont { dup/WidthsOnly known {pop pop true} { dup/FDepVector known {/FDepVector get{isWidthsOnlyFont dup{exit}if}forall} { dup/FDArray known {/FDArray get{isWidthsOnlyFont dup{exit}if}forall} {pop} ifelse } ifelse } ifelse }bind def /ct_StyleDicts 4 dict dup begin /Adobe-Japan1 4 dict dup begin Level2? { /Serif /HeiseiMin-W3-83pv-RKSJ-H/Font resourcestatus {pop pop/HeiseiMin-W3} { /CIDFont/Category resourcestatus { pop pop /HeiseiMin-W3/CIDFont resourcestatus {pop pop/HeiseiMin-W3} {/Ryumin-Light} ifelse } {/Ryumin-Light} ifelse } ifelse def /SansSerif /HeiseiKakuGo-W5-83pv-RKSJ-H/Font resourcestatus {pop pop/HeiseiKakuGo-W5} { /CIDFont/Category resourcestatus { pop pop /HeiseiKakuGo-W5/CIDFont resourcestatus {pop pop/HeiseiKakuGo-W5} {/GothicBBB-Medium} ifelse } {/GothicBBB-Medium} ifelse } ifelse def /HeiseiMaruGo-W4-83pv-RKSJ-H/Font resourcestatus {pop pop/HeiseiMaruGo-W4} { /CIDFont/Category resourcestatus { pop pop /HeiseiMaruGo-W4/CIDFont resourcestatus {pop pop/HeiseiMaruGo-W4} { /Jun101-Light-RKSJ-H/Font resourcestatus {pop pop/Jun101-Light} {SansSerif} ifelse } ifelse } { /Jun101-Light-RKSJ-H/Font resourcestatus {pop pop/Jun101-Light} {SansSerif} ifelse } ifelse } ifelse /RoundSansSerif exch def /Default Serif def } { /Serif/Ryumin-Light def /SansSerif/GothicBBB-Medium def { (fonts/Jun101-Light-83pv-RKSJ-H)status }stopped {pop}{ {pop pop pop pop/Jun101-Light} {SansSerif} ifelse /RoundSansSerif exch def }ifelse /Default Serif def } ifelse end def /Adobe-Korea1 4 dict dup begin /Serif/HYSMyeongJo-Medium def /SansSerif/HYGoThic-Medium def /RoundSansSerif SansSerif def /Default Serif def end def /Adobe-GB1 4 dict dup begin /Serif/STSong-Light def /SansSerif/STHeiti-Regular def /RoundSansSerif SansSerif def /Default Serif def end def /Adobe-CNS1 4 dict dup begin /Serif/MKai-Medium def /SansSerif/MHei-Medium def /RoundSansSerif SansSerif def /Default Serif def end def end def Level2?{currentglobal true setglobal}if /ct_BoldRomanWidthProc { stringwidth 1 index 0 ne{exch .03 add exch}if setcharwidth 0 0 }bind def /ct_Type0WidthProc { dup stringwidth 0 0 moveto 2 index true charpath pathbbox 0 -1 7 index 2 div .88 setcachedevice2 pop 0 0 }bind def /ct_Type0WMode1WidthProc { dup stringwidth pop 2 div neg -0.88 2 copy moveto 0 -1 5 -1 roll true charpath pathbbox setcachedevice }bind def /cHexEncoding [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12 /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25 /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38 /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71 /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84 /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97 /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0 /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3 /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6 /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def /ct_BoldBaseFont 11 dict begin /FontType 3 def /FontMatrix[1 0 0 1 0 0]def /FontBBox[0 0 1 1]def /Encoding cHexEncoding def /_setwidthProc/ct_BoldRomanWidthProc load def /_bcstr1 1 string def /BuildChar { exch begin _basefont setfont _bcstr1 dup 0 4 -1 roll put dup _setwidthProc 3 copy moveto show _basefonto setfont moveto show end }bind def currentdict end def systemdict/composefont known { /ct_DefineIdentity-H { /Identity-H/CMap resourcestatus { pop pop } { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering(Identity)def /Supplement 0 def end def /CMapName/Identity-H def /CMapVersion 1.000 def /CMapType 1 def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } ifelse } def /ct_BoldBaseCIDFont 11 dict begin /CIDFontType 1 def /CIDFontName/ct_BoldBaseCIDFont def /FontMatrix[1 0 0 1 0 0]def /FontBBox[0 0 1 1]def /_setwidthProc/ct_Type0WidthProc load def /_bcstr2 2 string def /BuildGlyph { exch begin _basefont setfont _bcstr2 1 2 index 256 mod put _bcstr2 0 3 -1 roll 256 idiv put _bcstr2 dup _setwidthProc 3 copy moveto show _basefonto setfont moveto show end }bind def currentdict end def }if Level2?{setglobal}if /ct_CopyFont{ { 1 index/FID ne 2 index/UniqueID ne and {def}{pop pop}ifelse }forall }bind def /ct_Type0CopyFont { exch dup length dict begin ct_CopyFont [ exch FDepVector { dup/FontType get 0 eq { 1 index ct_Type0CopyFont /_ctType0 exch definefont } { /_ctBaseFont exch 2 index exec } ifelse exch } forall pop ] /FDepVector exch def currentdict end }bind def /ct_MakeBoldFont { dup/ct_SyntheticBold known { dup length 3 add dict begin ct_CopyFont /ct_StrokeWidth .03 0 FontMatrix idtransform pop def /ct_SyntheticBold true def currentdict end definefont } { dup dup length 3 add dict begin ct_CopyFont /PaintType 2 def /StrokeWidth .03 0 FontMatrix idtransform pop def /dummybold currentdict end definefont dup/FontType get dup 9 ge exch 11 le and { ct_BoldBaseCIDFont dup length 3 add dict copy begin dup/CIDSystemInfo get/CIDSystemInfo exch def ct_DefineIdentity-H /_Type0Identity/Identity-H 3 -1 roll[exch]composefont /_basefont exch def /_Type0Identity/Identity-H 3 -1 roll[exch]composefont /_basefonto exch def currentdict end /CIDFont defineresource } { ct_BoldBaseFont dup length 3 add dict copy begin /_basefont exch def /_basefonto exch def currentdict end definefont } ifelse } ifelse }bind def /ct_MakeBold{ 1 index 1 index findfont currentglobal 5 1 roll dup gcheck setglobal dup /FontType get 0 eq { dup/WMode known{dup/WMode get 1 eq}{false}ifelse version length 4 ge and {version 0 4 getinterval cvi 2015 ge} {true} ifelse {/ct_Type0WidthProc} {/ct_Type0WMode1WidthProc} ifelse ct_BoldBaseFont/_setwidthProc 3 -1 roll load put {ct_MakeBoldFont}ct_Type0CopyFont definefont } { dup/_fauxfont known not 1 index/SubstMaster known not and { ct_BoldBaseFont/_setwidthProc /ct_BoldRomanWidthProc load put ct_MakeBoldFont } { 2 index 2 index eq {exch pop } { dup length dict begin ct_CopyFont currentdict end definefont } ifelse } ifelse } ifelse pop pop pop setglobal }bind def /?str1 256 string def /?set { $SubstituteFont begin /$substituteFound false def /$fontname 1 index def /$doSmartSub false def end dup findfont $SubstituteFont begin $substituteFound {false} { dup/FontName known { dup/FontName get $fontname eq 1 index/DistillerFauxFont known not and /currentdistillerparams where {pop false 2 index isWidthsOnlyFont not and} if } {false} ifelse } ifelse exch pop /$doSmartSub true def end { 5 1 roll pop pop pop pop findfont } { 1 index findfont dup/FontType get 3 eq { 6 1 roll pop pop pop pop pop false } {pop true} ifelse { $SubstituteFont begin pop pop /$styleArray 1 index def /$regOrdering 2 index def pop pop 0 1 $styleArray length 1 sub { $styleArray exch get ct_StyleDicts $regOrdering 2 copy known { get exch 2 copy known not {pop/Default} if get dup type/nametype eq { ?str1 cvs length dup 1 add exch ?str1 exch(-)putinterval exch dup length exch ?str1 exch 3 index exch putinterval add ?str1 exch 0 exch getinterval cvn } { pop pop/Unknown } ifelse } { pop pop pop pop/Unknown } ifelse } for end findfont }if } ifelse currentglobal false setglobal 3 1 roll null copyfont definefont pop setglobal }bind def setpacking userdict/$SubstituteFont 25 dict put 1 dict begin /SubstituteFont dup $error exch 2 copy known {get} {pop pop{pop/Courier}bind} ifelse def /currentdistillerparams where dup { pop pop currentdistillerparams/CannotEmbedFontPolicy 2 copy known {get/Error eq} {pop pop false} ifelse } if not { countdictstack array dictstack 0 get begin userdict begin $SubstituteFont begin /$str 128 string def /$fontpat 128 string def /$slen 0 def /$sname null def /$match false def /$fontname null def /$substituteFound false def /$inVMIndex null def /$doSmartSub true def /$depth 0 def /$fontname null def /$italicangle 26.5 def /$dstack null def /$Strategies 10 dict dup begin /$Type3Underprint { currentglobal exch false setglobal 11 dict begin /UseFont exch $WMode 0 ne { dup length dict copy dup/WMode $WMode put /UseFont exch definefont } if def /FontName $fontname dup type/stringtype eq{cvn}if def /FontType 3 def /FontMatrix[.001 0 0 .001 0 0]def /Encoding 256 array dup 0 1 255{/.notdef put dup}for pop def /FontBBox[0 0 0 0]def /CCInfo 7 dict dup begin /cc null def /x 0 def /y 0 def end def /BuildChar { exch begin CCInfo begin 1 string dup 0 3 index put exch pop /cc exch def UseFont 1000 scalefont setfont cc stringwidth/y exch def/x exch def x y setcharwidth $SubstituteFont/$Strategy get/$Underprint get exec 0 0 moveto cc show x y moveto end end }bind def currentdict end exch setglobal }bind def /$GetaTint 2 dict dup begin /$BuildFont { dup/WMode known {dup/WMode get} {0} ifelse /$WMode exch def $fontname exch dup/FontName known { dup/FontName get dup type/stringtype eq{cvn}if } {/unnamedfont} ifelse exch Adobe_CoolType_Data/InVMDeepCopiedFonts get 1 index/FontName get known { pop Adobe_CoolType_Data/InVMDeepCopiedFonts get 1 index get null copyfont } {$deepcopyfont} ifelse exch 1 index exch/FontBasedOn exch put dup/FontName $fontname dup type/stringtype eq{cvn}if put definefont Adobe_CoolType_Data/InVMDeepCopiedFonts get begin dup/FontBasedOn get 1 index def end }bind def /$Underprint { gsave x abs y abs gt {/y 1000 def} {/x -1000 def 500 120 translate} ifelse Level2? { [/Separation(All)/DeviceCMYK{0 0 0 1 pop}] setcolorspace } {0 setgray} ifelse 10 setlinewidth x .8 mul [7 3] { y mul 8 div 120 sub x 10 div exch moveto 0 y 4 div neg rlineto dup 0 rlineto 0 y 4 div rlineto closepath gsave Level2? {.2 setcolor} {.8 setgray} ifelse fill grestore stroke } forall pop grestore }bind def end def /$Oblique 1 dict dup begin /$BuildFont { currentglobal exch dup gcheck setglobal null copyfont begin /FontBasedOn currentdict/FontName known { FontName dup type/stringtype eq{cvn}if } {/unnamedfont} ifelse def /FontName $fontname dup type/stringtype eq{cvn}if def /currentdistillerparams where {pop} { /FontInfo currentdict/FontInfo known {FontInfo null copyfont} {2 dict} ifelse dup begin /ItalicAngle $italicangle def /FontMatrix FontMatrix [1 0 ItalicAngle dup sin exch cos div 1 0 0] matrix concatmatrix readonly end 4 2 roll def def } ifelse FontName currentdict end definefont exch setglobal }bind def end def /$None 1 dict dup begin /$BuildFont{}bind def end def end def /$Oblique SetSubstituteStrategy /$findfontByEnum { dup type/stringtype eq{cvn}if dup/$fontname exch def $sname null eq {$str cvs dup length $slen sub $slen getinterval} {pop $sname} ifelse $fontpat dup 0(fonts/*)putinterval exch 7 exch putinterval /$match false def $SubstituteFont/$dstack countdictstack array dictstack put mark { $fontpat 0 $slen 7 add getinterval {/$match exch def exit} $str filenameforall } stopped { cleardictstack currentdict true $SubstituteFont/$dstack get { exch { 1 index eq {pop false} {true} ifelse } {begin false} ifelse } forall pop } if cleartomark /$slen 0 def $match false ne {$match(fonts/)anchorsearch pop pop cvn} {/Courier} ifelse }bind def /$ROS 1 dict dup begin /Adobe 4 dict dup begin /Japan1 [/Ryumin-Light/HeiseiMin-W3 /GothicBBB-Medium/HeiseiKakuGo-W5 /HeiseiMaruGo-W4/Jun101-Light]def /Korea1 [/HYSMyeongJo-Medium/HYGoThic-Medium]def /GB1 [/STSong-Light/STHeiti-Regular]def /CNS1 [/MKai-Medium/MHei-Medium]def end def end def /$cmapname null def /$deepcopyfont { dup/FontType get 0 eq { 1 dict dup/FontName/copied put copyfont begin /FDepVector FDepVector copyarray 0 1 2 index length 1 sub { 2 copy get $deepcopyfont dup/FontName/copied put /copied exch definefont 3 copy put pop pop } for def currentdict end } {$Strategies/$Type3Underprint get exec} ifelse }bind def /$buildfontname { dup/CIDFont findresource/CIDSystemInfo get begin Registry length Ordering length Supplement 8 string cvs 3 copy length 2 add add add string dup 5 1 roll dup 0 Registry putinterval dup 4 index(-)putinterval dup 4 index 1 add Ordering putinterval 4 2 roll add 1 add 2 copy(-)putinterval end 1 add 2 copy 0 exch getinterval $cmapname $fontpat cvs exch anchorsearch {pop pop 3 2 roll putinterval cvn/$cmapname exch def} {pop pop pop pop pop} ifelse length $str 1 index(-)putinterval 1 add $str 1 index $cmapname $fontpat cvs putinterval $cmapname length add $str exch 0 exch getinterval cvn }bind def /$findfontByROS { /$fontname exch def $ROS Registry 2 copy known { get Ordering 2 copy known {get} {pop pop[]} ifelse } {pop pop[]} ifelse false exch { dup/CIDFont resourcestatus { pop pop save 1 index/CIDFont findresource dup/WidthsOnly known {dup/WidthsOnly get} {false} ifelse exch pop exch restore {pop} {exch pop true exit} ifelse } {pop} ifelse } forall {$str cvs $buildfontname} { false(*) { save exch dup/CIDFont findresource dup/WidthsOnly known {dup/WidthsOnly get not} {true} ifelse exch/CIDSystemInfo get dup/Registry get Registry eq exch/Ordering get Ordering eq and and {exch restore exch pop true exit} {pop restore} ifelse } $str/CIDFont resourceforall {$buildfontname} {$fontname $findfontByEnum} ifelse } ifelse }bind def end end currentdict/$error known currentdict/languagelevel known and dup {pop $error/SubstituteFont known} if dup {$error} {Adobe_CoolType_Core} ifelse begin { /SubstituteFont /CMap/Category resourcestatus { pop pop { $SubstituteFont begin /$substituteFound true def dup length $slen gt $sname null ne or $slen 0 gt and { $sname null eq {dup $str cvs dup length $slen sub $slen getinterval cvn} {$sname} ifelse Adobe_CoolType_Data/InVMFontsByCMap get 1 index 2 copy known { get false exch { pop currentglobal { GlobalFontDirectory 1 index known {exch pop true exit} {pop} ifelse } { FontDirectory 1 index known {exch pop true exit} { GlobalFontDirectory 1 index known {exch pop true exit} {pop} ifelse } ifelse } ifelse } forall } {pop pop false} ifelse { exch pop exch pop } { dup/CMap resourcestatus { pop pop dup/$cmapname exch def /CMap findresource/CIDSystemInfo get{def}forall $findfontByROS } { 128 string cvs dup(-)search { 3 1 roll search { 3 1 roll pop {dup cvi} stopped {pop pop pop pop pop $findfontByEnum} { 4 2 roll pop pop exch length exch 2 index length 2 index sub exch 1 sub -1 0 { $str cvs dup length 4 index 0 4 index 4 3 roll add getinterval exch 1 index exch 3 index exch putinterval dup/CMap resourcestatus { pop pop 4 1 roll pop pop pop dup/$cmapname exch def /CMap findresource/CIDSystemInfo get{def}forall $findfontByROS true exit } {pop} ifelse } for dup type/booleantype eq {pop} {pop pop pop $findfontByEnum} ifelse } ifelse } {pop pop pop $findfontByEnum} ifelse } {pop pop $findfontByEnum} ifelse } ifelse } ifelse } {//SubstituteFont exec} ifelse /$slen 0 def end } } { { $SubstituteFont begin /$substituteFound true def dup length $slen gt $sname null ne or $slen 0 gt and {$findfontByEnum} {//SubstituteFont exec} ifelse end } } ifelse bind readonly def Adobe_CoolType_Core/scfindfont/systemfindfont load put } { /scfindfont { $SubstituteFont begin dup systemfindfont dup/FontName known {dup/FontName get dup 3 index ne} {/noname true} ifelse dup { /$origfontnamefound 2 index def /$origfontname 4 index def/$substituteFound true def } if exch pop { $slen 0 gt $sname null ne 3 index length $slen gt or and { pop dup $findfontByEnum findfont dup maxlength 1 add dict begin {1 index/FID eq{pop pop}{def}ifelse} forall currentdict end definefont dup/FontName known{dup/FontName get}{null}ifelse $origfontnamefound ne { $origfontname $str cvs print ( substitution revised, using )print dup/FontName known {dup/FontName get}{(unspecified font)} ifelse $str cvs print(.\n)print } if } {exch pop} ifelse } {exch pop} ifelse end }bind def } ifelse end end Adobe_CoolType_Core_Defined not { Adobe_CoolType_Core/findfont { $SubstituteFont begin $depth 0 eq { /$fontname 1 index dup type/stringtype ne{$str cvs}if def /$substituteFound false def } if /$depth $depth 1 add def end scfindfont $SubstituteFont begin /$depth $depth 1 sub def $substituteFound $depth 0 eq and { $inVMIndex null ne {dup $inVMIndex $AddInVMFont} if $doSmartSub { currentdict/$Strategy known {$Strategy/$BuildFont get exec} if } if } if end }bind put } if } if end /$AddInVMFont { exch/FontName 2 copy known { get 1 dict dup begin exch 1 index gcheck def end exch Adobe_CoolType_Data/InVMFontsByCMap get exch $DictAdd } {pop pop pop} ifelse }bind def /$DictAdd { 2 copy known not {2 copy 4 index length dict put} if Level2? not { 2 copy get dup maxlength exch length 4 index length add lt 2 copy get dup length 4 index length add exch maxlength 1 index lt { 2 mul dict begin 2 copy get{forall}def 2 copy currentdict put end } {pop} ifelse } if get begin {def} forall end }bind def end end %%EndResource currentglobal true setglobal %%BeginResource: procset Adobe_CoolType_Utility_MAKEOCF 1.23 0 %%Copyright: Copyright 1987-2006 Adobe Systems Incorporated. %%Version: 1.23 0 systemdict/languagelevel known dup {currentglobal false setglobal} {false} ifelse exch userdict/Adobe_CoolType_Utility 2 copy known {2 copy get dup maxlength 27 add dict copy} {27 dict} ifelse put Adobe_CoolType_Utility begin /@eexecStartData def /@recognizeCIDFont null def /ct_Level2? exch def /ct_Clone? 1183615869 internaldict dup /CCRun known not exch/eCCRun known not ct_Level2? and or def ct_Level2? {globaldict begin currentglobal true setglobal} if /ct_AddStdCIDMap ct_Level2? {{ mark Adobe_CoolType_Utility/@recognizeCIDFont currentdict put { ((Hex)57 StartData 0615 1e27 2c39 1c60 d8a8 cc31 fe2b f6e0 7aa3 e541 e21c 60d8 a8c9 c3d0 6d9e 1c60 d8a8 c9c2 02d7 9a1c 60d8 a849 1c60 d8a8 cc36 74f4 1144 b13b 77)0()/SubFileDecode filter cvx exec } stopped { cleartomark Adobe_CoolType_Utility/@recognizeCIDFont get countdictstack dup array dictstack exch 1 sub -1 0 { 2 copy get 3 index eq {1 index length exch sub 1 sub{end}repeat exit} {pop} ifelse } for pop pop Adobe_CoolType_Utility/@eexecStartData get eexec } {cleartomark} ifelse }} {{ Adobe_CoolType_Utility/@eexecStartData get eexec }} ifelse bind def userdict/cid_extensions known dup{cid_extensions/cid_UpdateDB known and}if { cid_extensions begin /cid_GetCIDSystemInfo { 1 index type/stringtype eq {exch cvn exch} if cid_extensions begin dup load 2 index known { 2 copy cid_GetStatusInfo dup null ne { 1 index load 3 index get dup null eq {pop pop cid_UpdateDB} { exch 1 index/Created get eq {exch pop exch pop} {pop cid_UpdateDB} ifelse } ifelse } {pop cid_UpdateDB} ifelse } {cid_UpdateDB} ifelse end }bind def end } if ct_Level2? {end setglobal} if /ct_UseNativeCapability? systemdict/composefont known def /ct_MakeOCF 35 dict def /ct_Vars 25 dict def /ct_GlyphDirProcs 6 dict def /ct_BuildCharDict 15 dict dup begin /charcode 2 string def /dst_string 1500 string def /nullstring()def /usewidths? true def end def ct_Level2?{setglobal}{pop}ifelse ct_GlyphDirProcs begin /GetGlyphDirectory { systemdict/languagelevel known {pop/CIDFont findresource/GlyphDirectory get} { 1 index/CIDFont findresource/GlyphDirectory get dup type/dicttype eq { dup dup maxlength exch length sub 2 index lt { dup length 2 index add dict copy 2 index /CIDFont findresource/GlyphDirectory 2 index put } if } if exch pop exch pop } ifelse + }def /+ { systemdict/languagelevel known { currentglobal false setglobal 3 dict begin /vm exch def } {1 dict begin} ifelse /$ exch def systemdict/languagelevel known { vm setglobal /gvm currentglobal def $ gcheck setglobal } if ?{$ begin}if }def /?{$ type/dicttype eq}def /|{ userdict/Adobe_CoolType_Data known { Adobe_CoolType_Data/AddWidths? known { currentdict Adobe_CoolType_Data begin begin AddWidths? { Adobe_CoolType_Data/CC 3 index put ?{def}{$ 3 1 roll put}ifelse CC charcode exch 1 index 0 2 index 256 idiv put 1 index exch 1 exch 256 mod put stringwidth 2 array astore currentfont/Widths get exch CC exch put } {?{def}{$ 3 1 roll put}ifelse} ifelse end end } {?{def}{$ 3 1 roll put}ifelse} ifelse } {?{def}{$ 3 1 roll put}ifelse} ifelse }def /! { ?{end}if systemdict/languagelevel known {gvm setglobal} if end }def /:{string currentfile exch readstring pop}executeonly def end ct_MakeOCF begin /ct_cHexEncoding [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12 /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25 /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38 /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71 /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84 /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97 /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0 /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3 /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6 /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def /ct_CID_STR_SIZE 8000 def /ct_mkocfStr100 100 string def /ct_defaultFontMtx[.001 0 0 .001 0 0]def /ct_1000Mtx[1000 0 0 1000 0 0]def /ct_raise{exch cvx exch errordict exch get exec stop}bind def /ct_reraise {cvx $error/errorname get(Error: )print dup( )cvs print errordict exch get exec stop }bind def /ct_cvnsi { 1 index add 1 sub 1 exch 0 4 1 roll { 2 index exch get exch 8 bitshift add } for exch pop }bind def /ct_GetInterval { Adobe_CoolType_Utility/ct_BuildCharDict get begin /dst_index 0 def dup dst_string length gt {dup string/dst_string exch def} if 1 index ct_CID_STR_SIZE idiv /arrayIndex exch def 2 index arrayIndex get 2 index arrayIndex ct_CID_STR_SIZE mul sub { dup 3 index add 2 index length le { 2 index getinterval dst_string dst_index 2 index putinterval length dst_index add/dst_index exch def exit } { 1 index length 1 index sub dup 4 1 roll getinterval dst_string dst_index 2 index putinterval pop dup dst_index add/dst_index exch def sub /arrayIndex arrayIndex 1 add def 2 index dup length arrayIndex gt {arrayIndex get} { pop exit } ifelse 0 } ifelse } loop pop pop pop dst_string 0 dst_index getinterval end }bind def ct_Level2? { /ct_resourcestatus currentglobal mark true setglobal {/unknowninstancename/Category resourcestatus} stopped {cleartomark setglobal true} {cleartomark currentglobal not exch setglobal} ifelse { { mark 3 1 roll/Category findresource begin ct_Vars/vm currentglobal put ({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec {cleartomark false} {{3 2 roll pop true}{cleartomark false}ifelse} ifelse ct_Vars/vm get setglobal end } } {{resourcestatus}} ifelse bind def /CIDFont/Category ct_resourcestatus {pop pop} { currentglobal true setglobal /Generic/Category findresource dup length dict copy dup/InstanceType/dicttype put /CIDFont exch/Category defineresource pop setglobal } ifelse ct_UseNativeCapability? { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering(Identity)def /Supplement 0 def end def /CMapName/Identity-H def /CMapVersion 1.000 def /CMapType 1 def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } if } { /ct_Category 2 dict begin /CIDFont 10 dict def /ProcSet 2 dict def currentdict end def /defineresource { ct_Category 1 index 2 copy known { get dup dup maxlength exch length eq { dup length 10 add dict copy ct_Category 2 index 2 index put } if 3 index 3 index put pop exch pop } {pop pop/defineresource/undefined ct_raise} ifelse }bind def /findresource { ct_Category 1 index 2 copy known { get 2 index 2 copy known {get 3 1 roll pop pop} {pop pop/findresource/undefinedresource ct_raise} ifelse } {pop pop/findresource/undefined ct_raise} ifelse }bind def /resourcestatus { ct_Category 1 index 2 copy known { get 2 index known exch pop exch pop { 0 -1 true } { false } ifelse } {pop pop/findresource/undefined ct_raise} ifelse }bind def /ct_resourcestatus/resourcestatus load def } ifelse /ct_CIDInit 2 dict begin /ct_cidfont_stream_init { { dup(Binary)eq { pop null currentfile ct_Level2? { {cid_BYTE_COUNT()/SubFileDecode filter} stopped {pop pop pop} if } if /readstring load exit } if dup(Hex)eq { pop currentfile ct_Level2? { {null exch/ASCIIHexDecode filter/readstring} stopped {pop exch pop(>)exch/readhexstring} if } {(>)exch/readhexstring} ifelse load exit } if /StartData/typecheck ct_raise } loop cid_BYTE_COUNT ct_CID_STR_SIZE le { 2 copy cid_BYTE_COUNT string exch exec pop 1 array dup 3 -1 roll 0 exch put } { cid_BYTE_COUNT ct_CID_STR_SIZE div ceiling cvi dup array exch 2 sub 0 exch 1 exch { 2 copy 5 index ct_CID_STR_SIZE string 6 index exec pop put pop } for 2 index cid_BYTE_COUNT ct_CID_STR_SIZE mod string 3 index exec pop 1 index exch 1 index length 1 sub exch put } ifelse cid_CIDFONT exch/GlyphData exch put 2 index null eq { pop pop pop } { pop/readstring load 1 string exch { 3 copy exec pop dup length 0 eq { pop pop pop pop pop true exit } if 4 index eq { pop pop pop pop false exit } if } loop pop } ifelse }bind def /StartData { mark { currentdict dup/FDArray get 0 get/FontMatrix get 0 get 0.001 eq { dup/CDevProc known not { /CDevProc 1183615869 internaldict/stdCDevProc 2 copy known {get} { pop pop {pop pop pop pop pop 0 -1000 7 index 2 div 880} } ifelse def } if } { /CDevProc { pop pop pop pop pop 0 1 cid_temp/cid_CIDFONT get /FDArray get 0 get /FontMatrix get 0 get div 7 index 2 div 1 index 0.88 mul }def } ifelse /cid_temp 15 dict def cid_temp begin /cid_CIDFONT exch def 3 copy pop dup/cid_BYTE_COUNT exch def 0 gt { ct_cidfont_stream_init FDArray { /Private get dup/SubrMapOffset known { begin /Subrs SubrCount array def Subrs SubrMapOffset SubrCount SDBytes ct_Level2? { currentdict dup/SubrMapOffset undef dup/SubrCount undef /SDBytes undef } if end /cid_SD_BYTES exch def /cid_SUBR_COUNT exch def /cid_SUBR_MAP_OFFSET exch def /cid_SUBRS exch def cid_SUBR_COUNT 0 gt { GlyphData cid_SUBR_MAP_OFFSET cid_SD_BYTES ct_GetInterval 0 cid_SD_BYTES ct_cvnsi 0 1 cid_SUBR_COUNT 1 sub { exch 1 index 1 add cid_SD_BYTES mul cid_SUBR_MAP_OFFSET add GlyphData exch cid_SD_BYTES ct_GetInterval 0 cid_SD_BYTES ct_cvnsi cid_SUBRS 4 2 roll GlyphData exch 4 index 1 index sub ct_GetInterval dup length string copy put } for pop } if } {pop} ifelse } forall } if cleartomark pop pop end CIDFontName currentdict/CIDFont defineresource pop end end } stopped {cleartomark/StartData ct_reraise} if }bind def currentdict end def /ct_saveCIDInit { /CIDInit/ProcSet ct_resourcestatus {true} {/CIDInitC/ProcSet ct_resourcestatus} ifelse { pop pop /CIDInit/ProcSet findresource ct_UseNativeCapability? {pop null} {/CIDInit ct_CIDInit/ProcSet defineresource pop} ifelse } {/CIDInit ct_CIDInit/ProcSet defineresource pop null} ifelse ct_Vars exch/ct_oldCIDInit exch put }bind def /ct_restoreCIDInit { ct_Vars/ct_oldCIDInit get dup null ne {/CIDInit exch/ProcSet defineresource pop} {pop} ifelse }bind def /ct_BuildCharSetUp { 1 index begin CIDFont begin Adobe_CoolType_Utility/ct_BuildCharDict get begin /ct_dfCharCode exch def /ct_dfDict exch def CIDFirstByte ct_dfCharCode add dup CIDCount ge {pop 0} if /cid exch def { GlyphDirectory cid 2 copy known {get} {pop pop nullstring} ifelse dup length FDBytes sub 0 gt { dup FDBytes 0 ne {0 FDBytes ct_cvnsi} {pop 0} ifelse /fdIndex exch def dup length FDBytes sub FDBytes exch getinterval /charstring exch def exit } { pop cid 0 eq {/charstring nullstring def exit} if /cid 0 def } ifelse } loop }def /ct_SetCacheDevice { 0 0 moveto dup stringwidth 3 -1 roll true charpath pathbbox 0 -1000 7 index 2 div 880 setcachedevice2 0 0 moveto }def /ct_CloneSetCacheProc { 1 eq { stringwidth pop -2 div -880 0 -1000 setcharwidth moveto } { usewidths? { currentfont/Widths get cid 2 copy known {get exch pop aload pop} {pop pop stringwidth} ifelse } {stringwidth} ifelse setcharwidth 0 0 moveto } ifelse }def /ct_Type3ShowCharString { ct_FDDict fdIndex 2 copy known {get} { currentglobal 3 1 roll 1 index gcheck setglobal ct_Type1FontTemplate dup maxlength dict copy begin FDArray fdIndex get dup/FontMatrix 2 copy known {get} {pop pop ct_defaultFontMtx} ifelse /FontMatrix exch dup length array copy def /Private get /Private exch def /Widths rootfont/Widths get def /CharStrings 1 dict dup/.notdef dup length string copy put def currentdict end /ct_Type1Font exch definefont dup 5 1 roll put setglobal } ifelse dup/CharStrings get 1 index/Encoding get ct_dfCharCode get charstring put rootfont/WMode 2 copy known {get} {pop pop 0} ifelse exch 1000 scalefont setfont ct_str1 0 ct_dfCharCode put ct_str1 exch ct_dfSetCacheProc ct_SyntheticBold { currentpoint ct_str1 show newpath moveto ct_str1 true charpath ct_StrokeWidth setlinewidth stroke } {ct_str1 show} ifelse }def /ct_Type4ShowCharString { ct_dfDict ct_dfCharCode charstring FDArray fdIndex get dup/FontMatrix get dup ct_defaultFontMtx ct_matrixeq not {ct_1000Mtx matrix concatmatrix concat} {pop} ifelse /Private get Adobe_CoolType_Utility/ct_Level2? get not { ct_dfDict/Private 3 -1 roll {put} 1183615869 internaldict/superexec get exec } if 1183615869 internaldict Adobe_CoolType_Utility/ct_Level2? get {1 index} {3 index/Private get mark 6 1 roll} ifelse dup/RunInt known {/RunInt get} {pop/CCRun} ifelse get exec Adobe_CoolType_Utility/ct_Level2? get not {cleartomark} if }bind def /ct_BuildCharIncremental { { Adobe_CoolType_Utility/ct_MakeOCF get begin ct_BuildCharSetUp ct_ShowCharString } stopped {stop} if end end end end }bind def /BaseFontNameStr(BF00)def /ct_Type1FontTemplate 14 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0]def /FontBBox [-250 -250 1250 1250]def /Encoding ct_cHexEncoding def /PaintType 0 def currentdict end def /BaseFontTemplate 11 dict begin /FontMatrix [0.001 0 0 0.001 0 0]def /FontBBox [-250 -250 1250 1250]def /Encoding ct_cHexEncoding def /BuildChar/ct_BuildCharIncremental load def ct_Clone? { /FontType 3 def /ct_ShowCharString/ct_Type3ShowCharString load def /ct_dfSetCacheProc/ct_CloneSetCacheProc load def /ct_SyntheticBold false def /ct_StrokeWidth 1 def } { /FontType 4 def /Private 1 dict dup/lenIV 4 put def /CharStrings 1 dict dup/.notdefput def /PaintType 0 def /ct_ShowCharString/ct_Type4ShowCharString load def } ifelse /ct_str1 1 string def currentdict end def /BaseFontDictSize BaseFontTemplate length 5 add def /ct_matrixeq { true 0 1 5 { dup 4 index exch get exch 3 index exch get eq and dup not {exit} if } for exch pop exch pop }bind def /ct_makeocf { 15 dict begin exch/WMode exch def exch/FontName exch def /FontType 0 def /FMapType 2 def dup/FontMatrix known {dup/FontMatrix get/FontMatrix exch def} {/FontMatrix matrix def} ifelse /bfCount 1 index/CIDCount get 256 idiv 1 add dup 256 gt{pop 256}if def /Encoding 256 array 0 1 bfCount 1 sub{2 copy dup put pop}for bfCount 1 255{2 copy bfCount put pop}for def /FDepVector bfCount dup 256 lt{1 add}if array def BaseFontTemplate BaseFontDictSize dict copy begin /CIDFont exch def CIDFont/FontBBox known {CIDFont/FontBBox get/FontBBox exch def} if CIDFont/CDevProc known {CIDFont/CDevProc get/CDevProc exch def} if currentdict end BaseFontNameStr 3(0)putinterval 0 1 bfCount dup 256 eq{1 sub}if { FDepVector exch 2 index BaseFontDictSize dict copy begin dup/CIDFirstByte exch 256 mul def FontType 3 eq {/ct_FDDict 2 dict def} if currentdict end 1 index 16 BaseFontNameStr 2 2 getinterval cvrs pop BaseFontNameStr exch definefont put } for ct_Clone? {/Widths 1 index/CIDFont get/GlyphDirectory get length dict def} if FontName currentdict end definefont ct_Clone? { gsave dup 1000 scalefont setfont ct_BuildCharDict begin /usewidths? false def currentfont/Widths get begin exch/CIDFont get/GlyphDirectory get { pop dup charcode exch 1 index 0 2 index 256 idiv put 1 index exch 1 exch 256 mod put stringwidth 2 array astore def } forall end /usewidths? true def end grestore } {exch pop} ifelse }bind def currentglobal true setglobal /ct_ComposeFont { ct_UseNativeCapability? { 2 index/CMap ct_resourcestatus {pop pop exch pop} { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CMapName 3 index def /CMapVersion 1.000 def /CMapType 1 def exch/WMode exch def /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering CMapName ct_mkocfStr100 cvs (Adobe-)search { pop pop (-)search { dup length string copy exch pop exch pop } {pop(Identity)} ifelse } {pop (Identity)} ifelse def /Supplement 0 def end def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } ifelse composefont } { 3 2 roll pop 0 get/CIDFont findresource ct_makeocf } ifelse }bind def setglobal /ct_MakeIdentity { ct_UseNativeCapability? { 1 index/CMap ct_resourcestatus {pop pop} { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CMapName 2 index def /CMapVersion 1.000 def /CMapType 1 def /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering CMapName ct_mkocfStr100 cvs (Adobe-)search { pop pop (-)search {dup length string copy exch pop exch pop} {pop(Identity)} ifelse } {pop(Identity)} ifelse def /Supplement 0 def end def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } ifelse composefont } { exch pop 0 get/CIDFont findresource ct_makeocf } ifelse }bind def currentdict readonly pop end end %%EndResource setglobal %%BeginResource: procset Adobe_CoolType_Utility_T42 1.0 0 %%Copyright: Copyright 1987-2004 Adobe Systems Incorporated. %%Version: 1.0 0 userdict/ct_T42Dict 15 dict put ct_T42Dict begin /Is2015? { version cvi 2015 ge }bind def /AllocGlyphStorage { Is2015? { pop } { {string}forall }ifelse }bind def /Type42DictBegin { 25 dict begin /FontName exch def /CharStrings 256 dict begin /.notdef 0 def currentdict end def /Encoding exch def /PaintType 0 def /FontType 42 def /FontMatrix[1 0 0 1 0 0]def 4 array astore cvx/FontBBox exch def /sfnts }bind def /Type42DictEnd { currentdict dup/FontName get exch definefont end ct_T42Dict exch dup/FontName get exch put }bind def /RD{string currentfile exch readstring pop}executeonly def /PrepFor2015 { Is2015? { /GlyphDirectory 16 dict def sfnts 0 get dup 2 index (glyx) putinterval 2 index (locx) putinterval pop pop } { pop pop }ifelse }bind def /AddT42Char { Is2015? { /GlyphDirectory get begin def end pop pop } { /sfnts get 4 index get 3 index 2 index putinterval pop pop pop pop }ifelse }bind def /T0AddT42Mtx2 { /CIDFont findresource/Metrics2 get begin def end }bind def end %%EndResource currentglobal true setglobal %%BeginFile: MMFauxFont.prc %%Copyright: Copyright 1987-2001 Adobe Systems Incorporated. %%All Rights Reserved. userdict /ct_EuroDict 10 dict put ct_EuroDict begin /ct_CopyFont { { 1 index /FID ne {def} {pop pop} ifelse} forall } def /ct_GetGlyphOutline { gsave initmatrix newpath exch findfont dup length 1 add dict begin ct_CopyFont /Encoding Encoding dup length array copy dup 4 -1 roll 0 exch put def currentdict end /ct_EuroFont exch definefont 1000 scalefont setfont 0 0 moveto [ <00> stringwidth <00> false charpath pathbbox [ {/m cvx} {/l cvx} {/c cvx} {/cp cvx} pathforall grestore counttomark 8 add } def /ct_MakeGlyphProc { ] cvx /ct_PSBuildGlyph cvx ] cvx } def /ct_PSBuildGlyph { gsave 8 -1 roll pop 7 1 roll 6 -2 roll ct_FontMatrix transform 6 2 roll 4 -2 roll ct_FontMatrix transform 4 2 roll ct_FontMatrix transform currentdict /PaintType 2 copy known {get 2 eq}{pop pop false} ifelse dup 9 1 roll { currentdict /StrokeWidth 2 copy known { get 2 div 0 ct_FontMatrix dtransform pop 5 1 roll 4 -1 roll 4 index sub 4 1 roll 3 -1 roll 4 index sub 3 1 roll exch 4 index add exch 4 index add 5 -1 roll pop } { pop pop } ifelse } if setcachedevice ct_FontMatrix concat ct_PSPathOps begin exec end { currentdict /StrokeWidth 2 copy known { get } { pop pop 0 } ifelse setlinewidth stroke } { fill } ifelse grestore } def /ct_PSPathOps 4 dict dup begin /m {moveto} def /l {lineto} def /c {curveto} def /cp {closepath} def end def /ct_matrix1000 [1000 0 0 1000 0 0] def /ct_AddGlyphProc { 2 index findfont dup length 4 add dict begin ct_CopyFont /CharStrings CharStrings dup length 1 add dict copy begin 3 1 roll def currentdict end def /ct_FontMatrix ct_matrix1000 FontMatrix matrix concatmatrix def /ct_PSBuildGlyph /ct_PSBuildGlyph load def /ct_PSPathOps /ct_PSPathOps load def currentdict end definefont pop } def systemdict /languagelevel known { /ct_AddGlyphToPrinterFont { 2 copy ct_GetGlyphOutline 3 add -1 roll restore ct_MakeGlyphProc ct_AddGlyphProc } def } { /ct_AddGlyphToPrinterFont { pop pop restore Adobe_CTFauxDict /$$$FONTNAME get /Euro Adobe_CTFauxDict /$$$SUBSTITUTEBASE get ct_EuroDict exch get ct_AddGlyphProc } def } ifelse /AdobeSansMM { 556 0 24 -19 541 703 { 541 628 m 510 669 442 703 354 703 c 201 703 117 607 101 444 c 50 444 l 25 372 l 97 372 l 97 301 l 49 301 l 24 229 l 103 229 l 124 67 209 -19 350 -19 c 435 -19 501 25 509 32 c 509 131 l 492 105 417 60 343 60 c 267 60 204 127 197 229 c 406 229 l 430 301 l 191 301 l 191 372 l 455 372 l 479 444 l 194 444 l 201 531 245 624 348 624 c 433 624 484 583 509 534 c cp 556 0 m } ct_PSBuildGlyph } def /AdobeSerifMM { 500 0 10 -12 484 692 { 347 298 m 171 298 l 170 310 170 322 170 335 c 170 362 l 362 362 l 374 403 l 172 403 l 184 580 244 642 308 642 c 380 642 434 574 457 457 c 481 462 l 474 691 l 449 691 l 433 670 429 657 410 657 c 394 657 360 692 299 692 c 204 692 94 604 73 403 c 22 403 l 10 362 l 70 362 l 69 352 69 341 69 330 c 69 319 69 308 70 298 c 22 298 l 10 257 l 73 257 l 97 57 216 -12 295 -12 c 364 -12 427 25 484 123 c 458 142 l 425 101 384 37 316 37 c 256 37 189 84 173 257 c 335 257 l cp 500 0 m } ct_PSBuildGlyph } def end %%EndFile setglobal Adobe_CoolType_Core begin /$Oblique SetSubstituteStrategy end %%BeginResource: procset Adobe_AGM_Image 1.0 0 +%%Version: 1.0 0 +%%Copyright: Copyright(C)2000-2006 Adobe Systems, Inc. All Rights Reserved. +systemdict/setpacking known +{ + currentpacking + true setpacking +}if +userdict/Adobe_AGM_Image 71 dict dup begin put +/Adobe_AGM_Image_Id/Adobe_AGM_Image_1.0_0 def +/nd{ + null def +}bind def +/AGMIMG_&image nd +/AGMIMG_&colorimage nd +/AGMIMG_&imagemask nd +/AGMIMG_mbuf()def +/AGMIMG_ybuf()def +/AGMIMG_kbuf()def +/AGMIMG_c 0 def +/AGMIMG_m 0 def +/AGMIMG_y 0 def +/AGMIMG_k 0 def +/AGMIMG_tmp nd +/AGMIMG_imagestring0 nd +/AGMIMG_imagestring1 nd +/AGMIMG_imagestring2 nd +/AGMIMG_imagestring3 nd +/AGMIMG_imagestring4 nd +/AGMIMG_imagestring5 nd +/AGMIMG_cnt nd +/AGMIMG_fsave nd +/AGMIMG_colorAry nd +/AGMIMG_override nd +/AGMIMG_name nd +/AGMIMG_maskSource nd +/AGMIMG_flushfilters nd +/invert_image_samples nd +/knockout_image_samples nd +/img nd +/sepimg nd +/devnimg nd +/idximg nd +/ds +{ + Adobe_AGM_Core begin + Adobe_AGM_Image begin + /AGMIMG_&image systemdict/image get def + /AGMIMG_&imagemask systemdict/imagemask get def + /colorimage where{ + pop + /AGMIMG_&colorimage/colorimage ldf + }if + end + end +}def +/ps +{ + Adobe_AGM_Image begin + /AGMIMG_ccimage_exists{/customcolorimage where + { + pop + /Adobe_AGM_OnHost_Seps where + { + pop false + }{ + /Adobe_AGM_InRip_Seps where + { + pop false + }{ + true + }ifelse + }ifelse + }{ + false + }ifelse + }bdf + level2{ + /invert_image_samples + { + Adobe_AGM_Image/AGMIMG_tmp Decode length ddf + /Decode[Decode 1 get Decode 0 get]def + }def + /knockout_image_samples + { + Operator/imagemask ne{ + /Decode[1 1]def + }if + }def + }{ + /invert_image_samples + { + {1 exch sub}currenttransfer addprocs settransfer + }def + /knockout_image_samples + { + {pop 1}currenttransfer addprocs settransfer + }def + }ifelse + /img/imageormask ldf + /sepimg/sep_imageormask ldf + /devnimg/devn_imageormask ldf + /idximg/indexed_imageormask ldf + /_ctype 7 def + currentdict{ + dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{ + bind + }if + def + }forall +}def +/pt +{ + end +}def +/dt +{ +}def +/AGMIMG_flushfilters +{ + dup type/arraytype ne + {1 array astore}if + dup 0 get currentfile ne + {dup 0 get flushfile}if + { + dup type/filetype eq + { + dup status 1 index currentfile ne and + {closefile} + {pop} + ifelse + }{pop}ifelse + }forall +}def +/AGMIMG_init_common +{ + currentdict/T known{/ImageType/T ldf currentdict/T undef}if + currentdict/W known{/Width/W ldf currentdict/W undef}if + currentdict/H known{/Height/H ldf currentdict/H undef}if + currentdict/M known{/ImageMatrix/M ldf currentdict/M undef}if + currentdict/BC known{/BitsPerComponent/BC ldf currentdict/BC undef}if + currentdict/D known{/Decode/D ldf currentdict/D undef}if + currentdict/DS known{/DataSource/DS ldf currentdict/DS undef}if + currentdict/O known{ + /Operator/O load 1 eq{ + /imagemask + }{ + /O load 2 eq{ + /image + }{ + /colorimage + }ifelse + }ifelse + def + currentdict/O undef + }if + currentdict/HSCI known{/HostSepColorImage/HSCI ldf currentdict/HSCI undef}if + currentdict/MD known{/MultipleDataSources/MD ldf currentdict/MD undef}if + currentdict/I known{/Interpolate/I ldf currentdict/I undef}if + currentdict/SI known{/SkipImageProc/SI ldf currentdict/SI undef}if + /DataSource load xcheck not{ + DataSource type/arraytype eq{ + DataSource 0 get type/filetype eq{ + /_Filters DataSource def + currentdict/MultipleDataSources known not{ + /DataSource DataSource dup length 1 sub get def + }if + }if + }if + currentdict/MultipleDataSources known not{ + /MultipleDataSources DataSource type/arraytype eq{ + DataSource length 1 gt + } + {false}ifelse def + }if + }if + /NComponents Decode length 2 div def + currentdict/SkipImageProc known not{/SkipImageProc{false}def}if +}bdf +/imageormask_sys +{ + begin + AGMIMG_init_common + save mark + level2{ + currentdict + Operator/imagemask eq{ + AGMIMG_&imagemask + }{ + use_mask{ + process_mask AGMIMG_&image + }{ + AGMIMG_&image + }ifelse + }ifelse + }{ + Width Height + Operator/imagemask eq{ + Decode 0 get 1 eq Decode 1 get 0 eq and + ImageMatrix/DataSource load + AGMIMG_&imagemask + }{ + BitsPerComponent ImageMatrix/DataSource load + AGMIMG_&image + }ifelse + }ifelse + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + cleartomark restore + end +}def +/overprint_plate +{ + currentoverprint{ + 0 get dup type/nametype eq{ + dup/DeviceGray eq{ + pop AGMCORE_black_plate not + }{ + /DeviceCMYK eq{ + AGMCORE_is_cmyk_sep not + }if + }ifelse + }{ + false exch + { + AGMOHS_sepink eq or + }forall + not + }ifelse + }{ + pop false + }ifelse +}def +/process_mask +{ + level3{ + dup begin + /ImageType 1 def + end + 4 dict begin + /DataDict exch def + /ImageType 3 def + /InterleaveType 3 def + /MaskDict 9 dict begin + /ImageType 1 def + /Width DataDict dup/MaskWidth known{/MaskWidth}{/Width}ifelse get def + /Height DataDict dup/MaskHeight known{/MaskHeight}{/Height}ifelse get def + /ImageMatrix[Width 0 0 Height neg 0 Height]def + /NComponents 1 def + /BitsPerComponent 1 def + /Decode DataDict dup/MaskD known{/MaskD}{[1 0]}ifelse get def + /DataSource Adobe_AGM_Core/AGMIMG_maskSource get def + currentdict end def + currentdict end + }if +}def +/use_mask +{ + dup/Mask known {dup/Mask get}{false}ifelse +}def +/imageormask +{ + begin + AGMIMG_init_common + SkipImageProc{ + currentdict consumeimagedata + } + { + save mark + level2 AGMCORE_host_sep not and{ + currentdict + Operator/imagemask eq DeviceN_PS2 not and{ + imagemask + }{ + AGMCORE_in_rip_sep currentoverprint and currentcolorspace 0 get/DeviceGray eq and{ + [/Separation/Black/DeviceGray{}]setcolorspace + /Decode[Decode 1 get Decode 0 get]def + }if + use_mask{ + process_mask image + }{ + DeviceN_NoneName DeviceN_PS2 Indexed_DeviceN level3 not and or or AGMCORE_in_rip_sep and + { + Names convert_to_process not{ + 2 dict begin + /imageDict xdf + /names_index 0 def + gsave + imageDict write_image_file{ + Names{ + dup(None)ne{ + [/Separation 3 -1 roll/DeviceGray{1 exch sub}]setcolorspace + Operator imageDict read_image_file + names_index 0 eq{true setoverprint}if + /names_index names_index 1 add def + }{ + pop + }ifelse + }forall + close_image_file + }if + grestore + end + }{ + Operator/imagemask eq{ + imagemask + }{ + image + }ifelse + }ifelse + }{ + Operator/imagemask eq{ + imagemask + }{ + image + }ifelse + }ifelse + }ifelse + }ifelse + }{ + Width Height + Operator/imagemask eq{ + Decode 0 get 1 eq Decode 1 get 0 eq and + ImageMatrix/DataSource load + /Adobe_AGM_OnHost_Seps where{ + pop imagemask + }{ + currentgray 1 ne{ + currentdict imageormask_sys + }{ + currentoverprint not{ + 1 AGMCORE_&setgray + currentdict imageormask_sys + }{ + currentdict ignoreimagedata + }ifelse + }ifelse + }ifelse + }{ + BitsPerComponent ImageMatrix + MultipleDataSources{ + 0 1 NComponents 1 sub{ + DataSource exch get + }for + }{ + /DataSource load + }ifelse + Operator/colorimage eq{ + AGMCORE_host_sep{ + MultipleDataSources level2 or NComponents 4 eq and{ + AGMCORE_is_cmyk_sep{ + MultipleDataSources{ + /DataSource DataSource 0 get xcheck + { + [ + DataSource 0 get/exec cvx + DataSource 1 get/exec cvx + DataSource 2 get/exec cvx + DataSource 3 get/exec cvx + /AGMCORE_get_ink_data cvx + ]cvx + }{ + DataSource aload pop AGMCORE_get_ink_data + }ifelse def + }{ + /DataSource + Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul + /DataSource load + filter_cmyk 0()/SubFileDecode filter def + }ifelse + /Decode[Decode 0 get Decode 1 get]def + /MultipleDataSources false def + /NComponents 1 def + /Operator/image def + invert_image_samples + 1 AGMCORE_&setgray + currentdict imageormask_sys + }{ + currentoverprint not Operator/imagemask eq and{ + 1 AGMCORE_&setgray + currentdict imageormask_sys + }{ + currentdict ignoreimagedata + }ifelse + }ifelse + }{ + MultipleDataSources NComponents AGMIMG_&colorimage + }ifelse + }{ + true NComponents colorimage + }ifelse + }{ + Operator/image eq{ + AGMCORE_host_sep{ + /DoImage true def + currentdict/HostSepColorImage known{HostSepColorImage not}{false}ifelse + { + AGMCORE_black_plate not Operator/imagemask ne and{ + /DoImage false def + currentdict ignoreimagedata + }if + }if + 1 AGMCORE_&setgray + DoImage + {currentdict imageormask_sys}if + }{ + use_mask{ + process_mask image + }{ + image + }ifelse + }ifelse + }{ + Operator/knockout eq{ + pop pop pop pop pop + currentcolorspace overprint_plate not{ + knockout_unitsq + }if + }if + }ifelse + }ifelse + }ifelse + }ifelse + cleartomark restore + }ifelse + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + end +}def +/sep_imageormask +{ + /sep_colorspace_dict AGMCORE_gget begin + CSA map_csa + begin + AGMIMG_init_common + SkipImageProc{ + currentdict consumeimagedata + }{ + save mark + AGMCORE_avoid_L2_sep_space{ + /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def + }if + AGMIMG_ccimage_exists + MappedCSA 0 get/DeviceCMYK eq and + currentdict/Components known and + Name()ne and + Name(All)ne and + Operator/image eq and + AGMCORE_producing_seps not and + level2 not and + { + Width Height BitsPerComponent ImageMatrix + [ + /DataSource load/exec cvx + { + 0 1 2 index length 1 sub{ + 1 index exch + 2 copy get 255 xor put + }for + }/exec cvx + ]cvx bind + MappedCSA 0 get/DeviceCMYK eq{ + Components aload pop + }{ + 0 0 0 Components aload pop 1 exch sub + }ifelse + Name findcmykcustomcolor + customcolorimage + }{ + AGMCORE_producing_seps not{ + level2{ + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne AGMCORE_avoid_L2_sep_space not and currentcolorspace 0 get/Separation ne and{ + [/Separation Name MappedCSA sep_proc_name exch dup 0 get 15 string cvs(/Device)anchorsearch{pop pop 0 get}{pop}ifelse exch load]setcolorspace_opt + /sep_tint AGMCORE_gget setcolor + }if + currentdict imageormask + }{ + currentdict + Operator/imagemask eq{ + imageormask + }{ + sep_imageormask_lev1 + }ifelse + }ifelse + }{ + AGMCORE_host_sep{ + Operator/knockout eq{ + currentdict/ImageMatrix get concat + knockout_unitsq + }{ + currentgray 1 ne{ + AGMCORE_is_cmyk_sep Name(All)ne and{ + level2{ + Name AGMCORE_IsSeparationAProcessColor + { + Operator/imagemask eq{ + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ + /sep_tint AGMCORE_gget 1 exch sub AGMCORE_&setcolor + }if + }{ + invert_image_samples + }ifelse + }{ + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ + [/Separation Name[/DeviceGray] + { + sep_colorspace_proc AGMCORE_get_ink_data + 1 exch sub + }bind + ]AGMCORE_&setcolorspace + /sep_tint AGMCORE_gget AGMCORE_&setcolor + }if + }ifelse + currentdict imageormask_sys + }{ + currentdict + Operator/imagemask eq{ + imageormask_sys + }{ + sep_image_lev1_sep + }ifelse + }ifelse + }{ + Operator/imagemask ne{ + invert_image_samples + }if + currentdict imageormask_sys + }ifelse + }{ + currentoverprint not Name(All)eq or Operator/imagemask eq and{ + currentdict imageormask_sys + }{ + currentoverprint not + { + gsave + knockout_unitsq + grestore + }if + currentdict consumeimagedata + }ifelse + }ifelse + }ifelse + }{ + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ + currentcolorspace 0 get/Separation ne{ + [/Separation Name MappedCSA sep_proc_name exch 0 get exch load]setcolorspace_opt + /sep_tint AGMCORE_gget setcolor + }if + }if + currentoverprint + MappedCSA 0 get/DeviceCMYK eq and + Name AGMCORE_IsSeparationAProcessColor not and + //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{Name inRip_spot_has_ink not and}{false}ifelse + Name(All)ne and{ + imageormask_l2_overprint + }{ + currentdict imageormask + }ifelse + }ifelse + }ifelse + }ifelse + cleartomark restore + }ifelse + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + end + end +}def +/colorSpaceElemCnt +{ + mark currentcolor counttomark dup 2 add 1 roll cleartomark +}bdf +/devn_sep_datasource +{ + 1 dict begin + /dataSource xdf + [ + 0 1 dataSource length 1 sub{ + dup currentdict/dataSource get/exch cvx/get cvx/exec cvx + /exch cvx names_index/ne cvx[/pop cvx]cvx/if cvx + }for + ]cvx bind + end +}bdf +/devn_alt_datasource +{ + 11 dict begin + /convProc xdf + /origcolorSpaceElemCnt xdf + /origMultipleDataSources xdf + /origBitsPerComponent xdf + /origDecode xdf + /origDataSource xdf + /dsCnt origMultipleDataSources{origDataSource length}{1}ifelse def + /DataSource origMultipleDataSources + { + [ + BitsPerComponent 8 idiv origDecode length 2 idiv mul string + 0 1 origDecode length 2 idiv 1 sub + { + dup 7 mul 1 add index exch dup BitsPerComponent 8 idiv mul exch + origDataSource exch get 0()/SubFileDecode filter + BitsPerComponent 8 idiv string/readstring cvx/pop cvx/putinterval cvx + }for + ]bind cvx + }{origDataSource}ifelse 0()/SubFileDecode filter def + [ + origcolorSpaceElemCnt string + 0 2 origDecode length 2 sub + { + dup origDecode exch get dup 3 -1 roll 1 add origDecode exch get exch sub 2 BitsPerComponent exp 1 sub div + 1 BitsPerComponent 8 idiv{DataSource/read cvx/not cvx{0}/if cvx/mul cvx}repeat/mul cvx/add cvx + }for + /convProc load/exec cvx + origcolorSpaceElemCnt 1 sub -1 0 + { + /dup cvx 2/add cvx/index cvx + 3 1/roll cvx/exch cvx 255/mul cvx/cvi cvx/put cvx + }for + ]bind cvx 0()/SubFileDecode filter + end +}bdf +/devn_imageormask +{ + /devicen_colorspace_dict AGMCORE_gget begin + CSA map_csa + 2 dict begin + dup + /srcDataStrs[3 -1 roll begin + AGMIMG_init_common + currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse + { + Width Decode length 2 div mul cvi + { + dup 65535 gt{1 add 2 div cvi}{exit}ifelse + }loop + string + }repeat + end]def + /dstDataStr srcDataStrs 0 get length string def + begin + AGMIMG_init_common + SkipImageProc{ + currentdict consumeimagedata + }{ + save mark + AGMCORE_producing_seps not{ + level3 not{ + Operator/imagemask ne{ + /DataSource[[ + DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse + colorSpaceElemCnt/devicen_colorspace_dict AGMCORE_gget/TintTransform get + devn_alt_datasource 1/string cvx/readstring cvx/pop cvx]cvx colorSpaceElemCnt 1 sub{dup}repeat]def + /MultipleDataSources true def + /Decode colorSpaceElemCnt[exch{0 1}repeat]def + }if + }if + currentdict imageormask + }{ + AGMCORE_host_sep{ + Names convert_to_process{ + CSA get_csa_by_name 0 get/DeviceCMYK eq{ + /DataSource + Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul + DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse + 4/devicen_colorspace_dict AGMCORE_gget/TintTransform get + devn_alt_datasource + filter_cmyk 0()/SubFileDecode filter def + /MultipleDataSources false def + /Decode[1 0]def + /DeviceGray setcolorspace + currentdict imageormask_sys + }{ + AGMCORE_report_unsupported_color_space + AGMCORE_black_plate{ + /DataSource + DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse + CSA get_csa_by_name 0 get/DeviceRGB eq{3}{1}ifelse/devicen_colorspace_dict AGMCORE_gget/TintTransform get + devn_alt_datasource + /MultipleDataSources false def + /Decode colorSpaceElemCnt[exch{0 1}repeat]def + currentdict imageormask_sys + }{ + gsave + knockout_unitsq + grestore + currentdict consumeimagedata + }ifelse + }ifelse + } + { + /devicen_colorspace_dict AGMCORE_gget/names_index known{ + Operator/imagemask ne{ + MultipleDataSources{ + /DataSource[DataSource devn_sep_datasource/exec cvx]cvx def + /MultipleDataSources false def + }{ + /DataSource/DataSource load dstDataStr srcDataStrs 0 get filter_devn def + }ifelse + invert_image_samples + }if + currentdict imageormask_sys + }{ + currentoverprint not Operator/imagemask eq and{ + currentdict imageormask_sys + }{ + currentoverprint not + { + gsave + knockout_unitsq + grestore + }if + currentdict consumeimagedata + }ifelse + }ifelse + }ifelse + }{ + currentdict imageormask + }ifelse + }ifelse + cleartomark restore + }ifelse + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + end + end + end +}def +/imageormask_l2_overprint +{ + currentdict + currentcmykcolor add add add 0 eq{ + currentdict consumeimagedata + }{ + level3{ + currentcmykcolor + /AGMIMG_k xdf + /AGMIMG_y xdf + /AGMIMG_m xdf + /AGMIMG_c xdf + Operator/imagemask eq{ + [/DeviceN[ + AGMIMG_c 0 ne{/Cyan}if + AGMIMG_m 0 ne{/Magenta}if + AGMIMG_y 0 ne{/Yellow}if + AGMIMG_k 0 ne{/Black}if + ]/DeviceCMYK{}]setcolorspace + AGMIMG_c 0 ne{AGMIMG_c}if + AGMIMG_m 0 ne{AGMIMG_m}if + AGMIMG_y 0 ne{AGMIMG_y}if + AGMIMG_k 0 ne{AGMIMG_k}if + setcolor + }{ + /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def + [/Indexed + [ + /DeviceN[ + AGMIMG_c 0 ne{/Cyan}if + AGMIMG_m 0 ne{/Magenta}if + AGMIMG_y 0 ne{/Yellow}if + AGMIMG_k 0 ne{/Black}if + ] + /DeviceCMYK{ + AGMIMG_k 0 eq{0}if + AGMIMG_y 0 eq{0 exch}if + AGMIMG_m 0 eq{0 3 1 roll}if + AGMIMG_c 0 eq{0 4 1 roll}if + } + ] + 255 + { + 255 div + mark exch + dup dup dup + AGMIMG_k 0 ne{ + /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 1 roll pop pop pop + counttomark 1 roll + }{ + pop + }ifelse + AGMIMG_y 0 ne{ + /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 2 roll pop pop pop + counttomark 1 roll + }{ + pop + }ifelse + AGMIMG_m 0 ne{ + /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 3 roll pop pop pop + counttomark 1 roll + }{ + pop + }ifelse + AGMIMG_c 0 ne{ + /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec pop pop pop + counttomark 1 roll + }{ + pop + }ifelse + counttomark 1 add -1 roll pop + } + ]setcolorspace + }ifelse + imageormask_sys + }{ + write_image_file{ + currentcmykcolor + 0 ne{ + [/Separation/Black/DeviceGray{}]setcolorspace + gsave + /Black + [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 1 roll pop pop pop 1 exch sub}/exec cvx] + cvx modify_halftone_xfer + Operator currentdict read_image_file + grestore + }if + 0 ne{ + [/Separation/Yellow/DeviceGray{}]setcolorspace + gsave + /Yellow + [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 2 roll pop pop pop 1 exch sub}/exec cvx] + cvx modify_halftone_xfer + Operator currentdict read_image_file + grestore + }if + 0 ne{ + [/Separation/Magenta/DeviceGray{}]setcolorspace + gsave + /Magenta + [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 3 roll pop pop pop 1 exch sub}/exec cvx] + cvx modify_halftone_xfer + Operator currentdict read_image_file + grestore + }if + 0 ne{ + [/Separation/Cyan/DeviceGray{}]setcolorspace + gsave + /Cyan + [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{pop pop pop 1 exch sub}/exec cvx] + cvx modify_halftone_xfer + Operator currentdict read_image_file + grestore + }if + close_image_file + }{ + imageormask + }ifelse + }ifelse + }ifelse +}def +/indexed_imageormask +{ + begin + AGMIMG_init_common + save mark + currentdict + AGMCORE_host_sep{ + Operator/knockout eq{ + /indexed_colorspace_dict AGMCORE_gget dup/CSA known{ + /CSA get get_csa_by_name + }{ + /Names get + }ifelse + overprint_plate not{ + knockout_unitsq + }if + }{ + Indexed_DeviceN{ + /devicen_colorspace_dict AGMCORE_gget dup/names_index known exch/Names get convert_to_process or{ + indexed_image_lev2_sep + }{ + currentoverprint not{ + knockout_unitsq + }if + currentdict consumeimagedata + }ifelse + }{ + AGMCORE_is_cmyk_sep{ + Operator/imagemask eq{ + imageormask_sys + }{ + level2{ + indexed_image_lev2_sep + }{ + indexed_image_lev1_sep + }ifelse + }ifelse + }{ + currentoverprint not{ + knockout_unitsq + }if + currentdict consumeimagedata + }ifelse + }ifelse + }ifelse + }{ + level2{ + Indexed_DeviceN{ + /indexed_colorspace_dict AGMCORE_gget begin + }{ + /indexed_colorspace_dict AGMCORE_gget dup null ne + { + begin + currentdict/CSDBase known{CSDBase/CSD get_res/MappedCSA get}{CSA}ifelse + get_csa_by_name 0 get/DeviceCMYK eq ps_level 3 ge and ps_version 3015.007 lt and + AGMCORE_in_rip_sep and{ + [/Indexed[/DeviceN[/Cyan/Magenta/Yellow/Black]/DeviceCMYK{}]HiVal Lookup] + setcolorspace + }if + end + } + {pop}ifelse + }ifelse + imageormask + Indexed_DeviceN{ + end + }if + }{ + Operator/imagemask eq{ + imageormask + }{ + indexed_imageormask_lev1 + }ifelse + }ifelse + }ifelse + cleartomark restore + currentdict/_Filters known{_Filters AGMIMG_flushfilters}if + end +}def +/indexed_image_lev2_sep +{ + /indexed_colorspace_dict AGMCORE_gget begin + begin + Indexed_DeviceN not{ + currentcolorspace + dup 1/DeviceGray put + dup 3 + currentcolorspace 2 get 1 add string + 0 1 2 3 AGMCORE_get_ink_data 4 currentcolorspace 3 get length 1 sub + { + dup 4 idiv exch currentcolorspace 3 get exch get 255 exch sub 2 index 3 1 roll put + }for + put setcolorspace + }if + currentdict + Operator/imagemask eq{ + AGMIMG_&imagemask + }{ + use_mask{ + process_mask AGMIMG_&image + }{ + AGMIMG_&image + }ifelse + }ifelse + end end +}def + /OPIimage + { + dup type/dicttype ne{ + 10 dict begin + /DataSource xdf + /ImageMatrix xdf + /BitsPerComponent xdf + /Height xdf + /Width xdf + /ImageType 1 def + /Decode[0 1 def] + currentdict + end + }if + dup begin + /NComponents 1 cdndf + /MultipleDataSources false cdndf + /SkipImageProc{false}cdndf + /Decode[ + 0 + currentcolorspace 0 get/Indexed eq{ + 2 BitsPerComponent exp 1 sub + }{ + 1 + }ifelse + ]cdndf + /Operator/image cdndf + end + /sep_colorspace_dict AGMCORE_gget null eq{ + imageormask + }{ + gsave + dup begin invert_image_samples end + sep_imageormask + grestore + }ifelse + }def +/cachemask_level2 +{ + 3 dict begin + /LZWEncode filter/WriteFilter xdf + /readBuffer 256 string def + /ReadFilter + currentfile + 0(%EndMask)/SubFileDecode filter + /ASCII85Decode filter + /RunLengthDecode filter + def + { + ReadFilter readBuffer readstring exch + WriteFilter exch writestring + not{exit}if + }loop + WriteFilter closefile + end +}def +/spot_alias +{ + /mapto_sep_imageormask + { + dup type/dicttype ne{ + 12 dict begin + /ImageType 1 def + /DataSource xdf + /ImageMatrix xdf + /BitsPerComponent xdf + /Height xdf + /Width xdf + /MultipleDataSources false def + }{ + begin + }ifelse + /Decode[/customcolor_tint AGMCORE_gget 0]def + /Operator/image def + /SkipImageProc{false}def + currentdict + end + sep_imageormask + }bdf + /customcolorimage + { + Adobe_AGM_Image/AGMIMG_colorAry xddf + /customcolor_tint AGMCORE_gget + << + /Name AGMIMG_colorAry 4 get + /CSA[/DeviceCMYK] + /TintMethod/Subtractive + /TintProc null + /MappedCSA null + /NComponents 4 + /Components[AGMIMG_colorAry aload pop pop] + >> + setsepcolorspace + mapto_sep_imageormask + }ndf + Adobe_AGM_Image/AGMIMG_&customcolorimage/customcolorimage load put + /customcolorimage + { + Adobe_AGM_Image/AGMIMG_override false put + current_spot_alias{dup 4 get map_alias}{false}ifelse + { + false set_spot_alias + /customcolor_tint AGMCORE_gget exch setsepcolorspace + pop + mapto_sep_imageormask + true set_spot_alias + }{ + //Adobe_AGM_Image/AGMIMG_&customcolorimage get exec + }ifelse + }bdf +}def +/snap_to_device +{ + 6 dict begin + matrix currentmatrix + dup 0 get 0 eq 1 index 3 get 0 eq and + 1 index 1 get 0 eq 2 index 2 get 0 eq and or exch pop + { + 1 1 dtransform 0 gt exch 0 gt/AGMIMG_xSign? exch def/AGMIMG_ySign? exch def + 0 0 transform + AGMIMG_ySign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch + AGMIMG_xSign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch + itransform/AGMIMG_llY exch def/AGMIMG_llX exch def + 1 1 transform + AGMIMG_ySign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch + AGMIMG_xSign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch + itransform/AGMIMG_urY exch def/AGMIMG_urX exch def + [AGMIMG_urX AGMIMG_llX sub 0 0 AGMIMG_urY AGMIMG_llY sub AGMIMG_llX AGMIMG_llY]concat + }{ + }ifelse + end +}def +level2 not{ + /colorbuf + { + 0 1 2 index length 1 sub{ + dup 2 index exch get + 255 exch sub + 2 index + 3 1 roll + put + }for + }def + /tint_image_to_color + { + begin + Width Height BitsPerComponent ImageMatrix + /DataSource load + end + Adobe_AGM_Image begin + /AGMIMG_mbuf 0 string def + /AGMIMG_ybuf 0 string def + /AGMIMG_kbuf 0 string def + { + colorbuf dup length AGMIMG_mbuf length ne + { + dup length dup dup + /AGMIMG_mbuf exch string def + /AGMIMG_ybuf exch string def + /AGMIMG_kbuf exch string def + }if + dup AGMIMG_mbuf copy AGMIMG_ybuf copy AGMIMG_kbuf copy pop + } + addprocs + {AGMIMG_mbuf}{AGMIMG_ybuf}{AGMIMG_kbuf}true 4 colorimage + end + }def + /sep_imageormask_lev1 + { + begin + MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{ + { + 255 mul round cvi GrayLookup exch get + }currenttransfer addprocs settransfer + currentdict imageormask + }{ + /sep_colorspace_dict AGMCORE_gget/Components known{ + MappedCSA 0 get/DeviceCMYK eq{ + Components aload pop + }{ + 0 0 0 Components aload pop 1 exch sub + }ifelse + Adobe_AGM_Image/AGMIMG_k xddf + Adobe_AGM_Image/AGMIMG_y xddf + Adobe_AGM_Image/AGMIMG_m xddf + Adobe_AGM_Image/AGMIMG_c xddf + AGMIMG_y 0.0 eq AGMIMG_m 0.0 eq and AGMIMG_c 0.0 eq and{ + {AGMIMG_k mul 1 exch sub}currenttransfer addprocs settransfer + currentdict imageormask + }{ + currentcolortransfer + {AGMIMG_k mul 1 exch sub}exch addprocs 4 1 roll + {AGMIMG_y mul 1 exch sub}exch addprocs 4 1 roll + {AGMIMG_m mul 1 exch sub}exch addprocs 4 1 roll + {AGMIMG_c mul 1 exch sub}exch addprocs 4 1 roll + setcolortransfer + currentdict tint_image_to_color + }ifelse + }{ + MappedCSA 0 get/DeviceGray eq{ + {255 mul round cvi ColorLookup exch get 0 get}currenttransfer addprocs settransfer + currentdict imageormask + }{ + MappedCSA 0 get/DeviceCMYK eq{ + currentcolortransfer + {255 mul round cvi ColorLookup exch get 3 get 1 exch sub}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 2 get 1 exch sub}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 1 get 1 exch sub}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 0 get 1 exch sub}exch addprocs 4 1 roll + setcolortransfer + currentdict tint_image_to_color + }{ + currentcolortransfer + {pop 1}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 2 get}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 1 get}exch addprocs 4 1 roll + {255 mul round cvi ColorLookup exch get 0 get}exch addprocs 4 1 roll + setcolortransfer + currentdict tint_image_to_color + }ifelse + }ifelse + }ifelse + }ifelse + end + }def + /sep_image_lev1_sep + { + begin + /sep_colorspace_dict AGMCORE_gget/Components known{ + Components aload pop + Adobe_AGM_Image/AGMIMG_k xddf + Adobe_AGM_Image/AGMIMG_y xddf + Adobe_AGM_Image/AGMIMG_m xddf + Adobe_AGM_Image/AGMIMG_c xddf + {AGMIMG_c mul 1 exch sub} + {AGMIMG_m mul 1 exch sub} + {AGMIMG_y mul 1 exch sub} + {AGMIMG_k mul 1 exch sub} + }{ + {255 mul round cvi ColorLookup exch get 0 get 1 exch sub} + {255 mul round cvi ColorLookup exch get 1 get 1 exch sub} + {255 mul round cvi ColorLookup exch get 2 get 1 exch sub} + {255 mul round cvi ColorLookup exch get 3 get 1 exch sub} + }ifelse + AGMCORE_get_ink_data currenttransfer addprocs settransfer + currentdict imageormask_sys + end + }def + /indexed_imageormask_lev1 + { + /indexed_colorspace_dict AGMCORE_gget begin + begin + currentdict + MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{ + {HiVal mul round cvi GrayLookup exch get HiVal div}currenttransfer addprocs settransfer + imageormask + }{ + MappedCSA 0 get/DeviceGray eq{ + {HiVal mul round cvi Lookup exch get HiVal div}currenttransfer addprocs settransfer + imageormask + }{ + MappedCSA 0 get/DeviceCMYK eq{ + currentcolortransfer + {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll + {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll + {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll + {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll + setcolortransfer + tint_image_to_color + }{ + currentcolortransfer + {pop 1}exch addprocs 4 1 roll + {3 mul HiVal mul round cvi 2 add Lookup exch get HiVal div}exch addprocs 4 1 roll + {3 mul HiVal mul round cvi 1 add Lookup exch get HiVal div}exch addprocs 4 1 roll + {3 mul HiVal mul round cvi Lookup exch get HiVal div}exch addprocs 4 1 roll + setcolortransfer + tint_image_to_color + }ifelse + }ifelse + }ifelse + end end + }def + /indexed_image_lev1_sep + { + /indexed_colorspace_dict AGMCORE_gget begin + begin + {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub} + {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub} + {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub} + {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub} + AGMCORE_get_ink_data currenttransfer addprocs settransfer + currentdict imageormask_sys + end end + }def +}if +end +systemdict/setpacking known +{setpacking}if +%%EndResource +currentdict Adobe_AGM_Utils eq {end} if +%%EndProlog +%%BeginSetup +Adobe_AGM_Utils begin +2 2010 Adobe_AGM_Core/ds gx +Adobe_CoolType_Core/ds get exec Adobe_AGM_Image/ds gx +currentdict Adobe_AGM_Utils eq {end} if +%%EndSetup +%%Page: (Page 1) 1 +%%EndPageComments +%%BeginPageSetup +%ADOBeginClientInjection: PageSetup Start "AI11EPS" +%AI12_RMC_Transparency: Balance=75 RasterRes=300 GradRes=150 Text=0 Stroke=1 Clip=1 OP=0 +%ADOEndClientInjection: PageSetup Start "AI11EPS" +Adobe_AGM_Utils begin +Adobe_AGM_Core/ps gx +Adobe_AGM_Utils/capture_cpd gx +Adobe_CoolType_Core/ps get exec Adobe_AGM_Image/ps gx +%ADOBeginClientInjection: PageSetup End "AI11EPS" +/currentdistillerparams where {pop currentdistillerparams /CoreDistVersion get 5000 lt} {true} ifelse { userdict /AI11_PDFMark5 /cleartomark load put userdict /AI11_ReadMetadata_PDFMark5 {flushfile cleartomark } bind put} { userdict /AI11_PDFMark5 /pdfmark load put userdict /AI11_ReadMetadata_PDFMark5 {/PUT pdfmark} bind put } ifelse [/NamespacePush AI11_PDFMark5 [/_objdef {ai_metadata_stream_123} /type /stream /OBJ AI11_PDFMark5 [{ai_metadata_stream_123} currentfile 0 (% &&end XMP packet marker&&) /SubFileDecode filter AI11_ReadMetadata_PDFMark5 + + + + application/postscript + + + Adobe Illustrator CS3 + 2009-06-13T13:27:01-04:00 + 2009-06-13T13:27:39-04:00 + 2009-06-13T13:27:39-04:00 + + + + 256 + 160 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAoAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9G6f5z0TUTb/AFNL6SO7 4m3nOnX6wsslCr+s0CxhSDXkWpirF/PXmzz3oup/V9PitJLedpri1ZIXvLhba2gg5erbLNbvwa4k kDSR8uC8fhJbCqU2P5p+ZNbvLyz0s2kHoo97Bcraz3pmt0tLGZYreES2zyuz3rFmJXinH4anZVLm /PLXxa3N6bO1+pPZWZs7pBK0aX84Zmjl5mNuEixv6Z2oyhd+QxpCdx/mZrOr6p5s0vSprW0bSYnu tIupLeS4E0VmxivFcerCrfvQvBkNAr71xS1befvNVpomr3Go3Flc3Vt5Wi8xWTpbvbr60wuCImUz Sc1UxRjYite1cCse1D83vPVlDqN6yRGFLjVrW3ifTpo4EbT4rqSIi8NwVlkraDlH6Y2Lb/DhVn3k 3UfPt9cI+qBfqKtILn61YNp1x9hTF6KLc3iuOVeRYjArNMVdirsVdirE9X0bR9V89WkWqWNvfxRa XO0cd1EkyqxuIgSocMAaYVZHp+mabptv9W060hsrYEsILeNIk5HqeKBRU4FROKuxV2KuxV2KuxV2 KuxV2KuxV2KuxV2KuxV2KuxV2KuxVIvIX/KDeXf+2ZZf9Q6YqjNa8t+Xtcjij1rTLXUo4G5wpdwp MEbuVDhqVpv44qh77yX5Q1CAwX2i2VzA0wuDFLbxsvrCNYhJQr9r041WvgKYqq/4V8si0msxpNmt pcCNZ7dYIxG4hbnEGQLQ8G3XwxVWXQdESOGNdPtxHbRyQ26CJKJHPT1UUU2WSg5Dv3xVD33lHytf /Uvr2kWd1+jgosPWgjf0VUUVY+SniBQbDFV955X8uXlm1ld6ZbT2jTS3LQSRIyGa4DiWXiR9t/We rdfiOKtaF5X8ueX4pYtE02306Odg0y20axh2UUBbiN6YqmmKuxV2KuxViWs3Oq2/nq0bTrJL6Q6X MHR5hAFH1iLepR64VZHps+oT2we/tVs7ipBhSUTCnY8wqdflgVFYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FUi8hf8oN5d/7Zll/1DpiqC1bz/DYandaVFpV7eajblmWJPQhSS3ihhmmu RNcSwxCKP6yqMWYfHsMVSWb869DW4VY9NvJLRY7aW6uGa1ieL60Sqr6EsyTSlCKN6St7V2qaVFz/ AJs6Tb2MmqT6bex6LJDcz6VqhEBhvfqkMlwyRBZTIhkigdovVRQwHywKreZPzP0/RdRttNWwnvLy 6jtpoVWS2gTjdJdOvKW4lijUqti9at3FKnFU/wBA8x2Wt+X7fXLZJUtbiNpBEy8pV4Eqy8YjJyIZ SBwJr2riqX6b580fUotHktIrg/pq5u7W3jkj9ORPqJlWeSVHIKKHg47/ABVZdutFUv8AMH5q6Jo3 mOfy79Su77VLe0a9aK2NtVlWN5fTjSWaKWSQrH9mNG6jFWZRP6kaScWTmobiwowqK0I8cVXYq7FX Yqx+T/lP4P8AtlTf9RMWFWQYFdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVYZ5A8s 6anlTy5eia+9YafZy8DqF8YuXoI1PRMxi4/5PHj2piqaeZ/KFvrskFyt5Np99BFLbC6gSCXnbXHH 1oJYrmOeKSN/TU0ZdiNu9VWPWn5I+TrbTLyxX1ZWukiSK8lWB57f0ZHkRoH9IcDV9/lhtUYv5V6M 8S2F3fXl5oNvHPFpuiymEW9qtzE8D8GSNZn4RTOkfqO3AHbAqyD8qNHbUbW/1e+utcntGjEa6gts 8bQwQ3EMMLxpDGjBPrjvypyLbk4qzWGGKGJIYUWOGNQkcaAKqqooFUDYADFWP6F5H0zR76G8hnnm kt0vY7dJSpRBqN4b2cgKq/EX4rX+VRirWoeSbW+8xQ6vNf3XoxSw3R0wGL6u1zbKVhlLGMzDiG+y sgUnqOtVU31PSrXUokiuHuEVG5A21zcWrVpTdreSJiPYmmKpd/gzR/8Alo1P/uLan/2U4q7/AAZo /wDy0an/ANxbU/8AspxV3+DNH/5aNT/7i2p/9lOKpFJ5R0r/ABxBD6+o8Dpkz1/Smo8qi4jH2/rH Km/StMKsx0/T7ewt/q8DzPGCW5XE81y9T/xZO8j09q4FROKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2 KuxV2KuxV2KuxVIvIX/KDeXf+2ZZf9Q6YqnuKuxV2KuxV2KuxV2KuxV2KuxV2KsS1nU3sPPVpIlj c3xfS5lKWqo7L/pERq3Nk2wqyPTb5r22E7Ws9mSSPRuVVZNu9FZxQ/PAqKxV2KuxV2KuxV2KuxV2 KuxV2KuxV2KuxV2KuxV2KuxV2KsL8gJ5u/wr5cLzaf8Ao/6hZ1URTet6Xopty9Tjy496Uwqxzz5p 2rWGoXaSXOrXdjdQvc6J9XkvyqanLcM0kTHTh6qKkPp/VxJ+7ryrirHfqX5k3M0vmRIbpL2KfQqC ee/WZTNa2IulSziCWsiepJKJ+Ue3x7AjFVedPNbaXa/oH/EB1qO19XzcLw3wrPE0Llbb1z6RlLK/ BbT4Sm3TjihEazaebfNfnAXGlpfN5eupZDareSanplv+4tIVZ2WH0Z4wZSwSoAZq9cVZ35gGp6H+ Whju7u/1DULK1torq709Ga9uHDRpIY+IZ1Mm4LirICW6jAlJPy9fzBfajp4ubu9l0zTrW5uWacXi B5by4aO3tmkvI4J7n6rFBJ8bpUllPhhVAXOm+Zr/APM+8tZNR1ZbC7mPJIRfW0FlbQwRyRSwzeob GX1pYzGV9PnVmPbFXpmqrrRhT9FPbJNy/eG6SR1407CNkNa4FSz0/P8A/v8A0r/kTc/9VcKtrH59 5DlPpXGu9IbitP8Akbiqf4FY/J/yn8H/AGypv+omLCrIMCuxV2KuxV2KuxV2KuxV2KuxV2KuxV2K uxV2KuxV2KuxV2KpF5C/5Qby7/2zLL/qHTFU9xV2KuxV2KuxV2KuxV2KuxV2KuxVKNW8tw6jfw36 3t1Y3UMTwCS0dU5RuyuVYOjj7SDFUbpti1lbCBrqe8IJPrXLK0m/aqqgoPliqKxV2KuxV2KuxV2K uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KsM8geZtNfyp5cshDfesdPs4uZ0++EXL0EWvrGERcf8rlx7 1xVQ8yeYvOVp5hl0e1a0to7iG4v9Nujby3kr21lFbCSBbdZYPUuJJ534gOKIPHoqwgfnN5vueV/b RwiytIbNriKOwuJoHeaRo5jLdGaI2y1Q8eUbU96VJpCcX/5l+brTyzb+Z/8AQprbWra/k03SUhkF zaPa2dxdRGWT1mE4X6uEnAROLNt4EJVvOH5jeZbXX7DSdGaIreW9hM0kNm+oTBrmHUJXCQJNDzFL KOnxbAk74VZhZ61r6eRDrGrQ21hrMdnJPNHdMbe2R0DFGmNZWiUgBmFSV6dsCsd8p+f/ADNqutW+ g39tBBqtveXQ1ZVikiK2VvaxSRyek0kvptLNeRcf3jAqCetQqq3zX5188WfmybSdKt7OPTSkdra3 txH63LUrmGR7eKUpcxSRIzhBUQP3rhVnN9qsWm2sUt6kzu9FYWdtcXXx0qfhgjlcL7sMCoD/ABno /wDyz6n/ANwnU/8AsmxVtfOWkMwAt9TqTQV0rUwPvNviqeYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FXYqkXkL/lBvLv/bMsv+odMVR2teX9C1y1W01nT7fUbZGEiRXMayqrjowD A0PbFVKPyt5aitLizi0q0jtLtQlzAkEapIqksodQADxLEjwxV1t5U8sWupXWqW2k2kOo3wZby7SC NZZQ5q4dwKnkftePfFVmmeT/ACppbo+m6PZ2TxytcRtbwRxlZWRoy4KgUPCRl+RpiqazQxTRPDMi yQyKUkjcBlZWFCrA7EEYql2jeV/LmiKBpGmWthRSlbeFIzxLciKqAact8VXS+XNAl1iPW5dNtn1i FPTi1BokM6ruKLIRyHU9+5xVMcVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirs VdirsVdiqReQv+UG8u/9syy/6h0xVDXv5j+VLR5Y2nnnlt5ZormG1tbm5eH6swSaSVIY3ZIkY/bP wnsTiqw/mX5T/Sf1BZp5FD20T38dtO9ir3qRyWyvdqhgX1Vnj41b9oYqtj/NHyW6NIbyWKDiHt55 rW5iiuIy6R+pau8arOoaVamPlsa/Z3xVV1j8xPLWl6o2kym6udTVuLWVnaXN1L/drNXjDG9RwcGo xVPdP1Ow1HTbfU7KdZrC6iWeC4GytG68lbelNvHFUv03zl5a1NdObT71blNWNyNPeNXIkFmxSdgS uyowpU7Hala4qhL/APMXyjY6leabcXcgutPMa3vC1upIoml4FFaZImiqfWTblXfFWSYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FUHq+rafpGmz6lqEvo2dsA00nFnoCQo+FQzHc+GKpF/wArN8m+rcxteSIt tUidrecRTKk62ztbyFOE6pNIqMYyaV8MVbf8zPJ6Ndc7qVIrWG4uBdNbXC286Was9x9WnKCOcxqh JEbHptXFVSf8xfJ0Onzag2oBrKCxg1R5kSRgbW6keKFlopJZniZeH2q9Riq28/MPy9aazbaS6Xsl xeIJbaaGyuZbd4iELSrOkZjMcYlT1GBotfipirV/+ZPlOystOu5Z5pE1a1jvdOjht5pZZoZpIYo+ MaIW5M91GAlOW/TFUKv5seVJJRb28epXN6Ofr2MGm3slzD6ZUN60Kxc4/wC8WnIdx44qyTRtZ0/W LBb/AE+QyWzSTQhmRozzt5WgkBVwrCkkbDcYqjcVdirsVYpYSebNWl1CaDVoLOC3vbi1hg+qCUhI H4AlzKtSaV6YVQ/kDyzpqeVPLl6Jr71hp9nLwOoXxi5egjU9EzGLj/k8ePamBV3m/wAiXmsXs13p t7DZtf2qafqcdxDJMrQxTNPFJD6M1sySpJK53Yq1dxtiqQr+R1jJYyreX7XOotJpTR3zCZaJp0Fp BKHjE3FzOLRjU7ry70xVEXf5UapqenWmmatrkctpo1sbfQnt7T0pUYBFjluiZnWUosXHiixg7nba hVefyl/SeuprfmW+jvbuR5HvLe0jmtIGBgjghWOk7yrwEXJiXPIntjast1XytpeoeWJPLa+pY6XJ AtqEs2ETJAlB6amjDiVXiRShWowKkHkT8t28r3r3EupvqKpFPDYo6BPRW7vJLuelCft/uQaU3Unu AFV0P5den59/xP69qsSyyXASK0Ed5I80AgMU90JKSQpxEiL6YPKm+26rKNT0q11KJIrh7hFRuQNt c3Fq1aU3a3kiYj2JpiqXf4M0f/lo1P8A7i2p/wDZTira+TdIVgRcanUGorqupkfcbjFU8xV2KuxV 2KuxV2KuxV2KsX1eyXUfOVrZXFxdx2qadNMIrW7ubQGT141DN9Xki5UU0HLFU+sNNtrG1+qxNNJE SSfrM81055dQZJ3kentWmKvNz+S909zesdXighuWYj6ravC0xe6jueV3GJ/q7snpcVMUUZJPI+GG 1au/ya1OeGKwXWootMsLC80vTVW3l9c211aT28aXLfWPSk9A3AYFYlLcd8Cq035KQSavcyDVpYdF u2tGk06FSjL9WNxOyxScjwV7y4W4px2II7ihtU+0fyFJYt5fWe/+sxaDYX2mIChVpYLp4RDVuRoY orYKf5jvtgVj7fk3eXltptnq2sRXVno0NrYafHDbPAzWNtdW9w6zuJ2JldbRU5pxA603xVBXn5FM ms3F7ptxYvZyvIYLDUYLq4WJJFh6SR3UMjNziY1ZjsaYbV6zBGY4URuPMD4zGvBSx3YhatSp36nA q/FXYq7FWF+XfNflbTjq9rqGsWNndLqt6WguLmGKQBpiQSrsDuMKpv5C/wCUG8u/9syy/wCodMCp 280SKzO6qqkBiSAATSgP3jFVrXFusqwtKiytusZYBiPYde2KrvWiq45rWMAyCoqoO4J8MVWy3NvC KzSpGNt3YL1rTr8jiqoCCKjcHocVcWUEAkAsaAeJpXFXMyqpZiAoFSTsABirsVdirsVdirsVdirs VdirsVdirsVY/J/yn8H/AGypv+omLCrIMCuxV2KuxV2KuxV2KuxV2KuxV2Ksf8m/7z6r/wBtW+/5 PHCVSvyA/m7/AAr5cDw6f+j/AKhZ1YSzet6Xopvx9Pjy49q0xVLPPfkovrJ1a30c63aXsdx9fsOM Fxwv3ht7e1vfq15JDBKIorcpxLCnLkO+BWCwflP53n0+8vbyxt49StYLJLKB4re4nf6rK/wW128r yW3GNVpxbwp0woTaX8vPMN5pQ0mDRfqHmBLXUYdc81u1uE1P63aTwqvKN2nlE00scp9ZF9Pj40xS q6x5K80+bfMem3l1ow0uyhWztLgalHZ36A2dtqPOU24lkjkjMt3GiEmtfioKYqz1vKT6d+W915X0 +SS5lXTri0t5AUidnljcD0/2I6M9EHRRQdsCsR/LryXrVlqtnDPpcmneWtKnutQ0xLkWaXT3E8MV tGbiOyPpc0U3FGA+yyVNcVd5u/Ly61v8xjfS6ZNdWd3FFaXF1KbNrNLBoZI7lVLf6bFcVk/dmLap qe9Cr0jUE1eG1hj0aO2Z0opW6eRVEYFBQorkn54FS71PP/8AvjSv+R1z/wBUsKtrJ595DlBpXGu9 JritP+RWKp/gV2KuxV2KuxV2KuxV2KsS1ltbHnq0/RKWzy/oub1BdPIi8frEX2fTVzWuFUw1LT9f 1Ly7NbTzJZaqHjmgkspJAha3lSaNGdlRuMhj4SCn2ScCvGr6bzm1lLb6VDrz3txpbR65JMdT5DUR 6ZevqIYFqQwjNmwHGtduOFCZW+m+ZdJ1640zzIuor5OiZZbkaXPq12vqyQ/uOEwZr4xclk9UIeAf hXriqu9951stL1iO8i1mRtX0Sey8s0iuZrhZ/rV79U+stGG9C5+rTQFpJOJ2+JuSnFKN8peRPN2o Xz6pf6nd6XanULySVUur03VwkOpM8EckM7G3hj4xChjWrIf8o4q78w59fu9c1S2i1S/0uCylsBG1 jHeT/wCiy21y7OYbCSGekt0qxlwduAHStVWR/ljqGtTnUrXUo5ohbx6fI0FxLJcPBcz2aSXNv6sp dzwbi5DMSC+BWR6k/msXRGmxWD2tBQ3MkyyV77IjCn04qhfU8/8A++NK/wCR1z/1Swq71PP/APvj Sv8Akdc/9UsVd6nn/wD3xpX/ACOuf+qWKpH5Tfzv6Gp+jBphH6TvOfOW4Hx+seVKRnavTFCf+Qv+ UG8u/wDbMsv+odMCU9xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ksfk/5T+D/tlTf9 RMWFWQYFdirsVdirsVU/q1v9Y+s+kn1kJ6Yn4jnwJ5cOXXjXemKuhtreAOIIkiEjtJJwULydt2dq dWPc4qqYq7FXYq7FWP8Ak3/efVf+2rff8njhKpb5F8z6RH5a8v6VI08eoR2VpbSQPbXKcZVhRGVm aMKKMKdcVQ/mv8zJ/LGsJZ6jpLG0upZIdNukmQGcpBA4JVgFjX1p2jZnYBQvKtMCobzV+acmjNpt lbDTbjVZzKmrRfW5pYrOaFEZo3+q29xNVi9ByjXFUp1D85tYs7nU4zp9g66VaLcyL9Yvec7fo5L9 vRIsigX95xHqsh7kDCqlJ+dOuIbKM2Wl87wXDGX19S9OMWwhqjD9H+oWJuB9lSu3XFWS6Z568yam Tc2OjW02lxXC6fcXDXjRSC7IVWdIpIFrbrK4SpIkI3EdfhIVLIfzM84qXjuNBspbg3t/pttDa3kz s9zp9nPcsKPbJ8MjQKiHrvuMVQ+r/nYyz250ext5tOumiSDUrqadYy72YvJEKW1vcvVEmiXYH4iQ aUwqzryprGratpz3Wo2MdlVk+qtDI0sc8L28UvrJ6kcMiqXkdQroG+HfAqdYq7FXYq7FXYq7FXYq 7FXYq7FWK6xqdrpXnS1u70SpbSabNEsyQyyr6nrxNxJiV6Gm++FUzm16S40gX+iWzai5nhhEDcrY 8HnSOZ/3qqf3UbM/TelMCsZ8l/mzpnmOwh1K4+raTp/pwQzy3dysbHULhFkW2hSQIXUJX4zTkfsB gCcVY3Zfnjq9x5fOsNp2nqJFtDFbie+LRm8njiBmJsghVVkqfSZztsDhVFN+cOuC/tbMWGms09rH deqJ9R4yercz24jiH1DmG/0Y/wB4qjfY4qv8u/nDrGsWVo8enWL32qm3h0y1juLxQs9xG81LqSW0 jRUSKJyTEZKkUFa1xVN9U85efLSTSoE0TTVudQvW0uRZb+Qot0sUs4dGit5D6LQw1HMK4Y0KU+LA qG/5W3MIZuWlAXMwlTRofWJF1PDqr6W0VeHwlW9GQ0B2c+GKqfk780PMHmO7jWHSbR4XZfVhhuLn 6xBCZljaZ/WtYYHCKakRysenvQq9KwK7FXYqwvy75U8raidXutQ0exvLptVvQ09xbQyyELMQAWdS dhhVmmBUu1Ty9o2qzwz6hbLcvBFPBGrluHp3aCOZWSvFg6CnxDFUt1HyB5fvoNOic3du+lIY7O6t bu4t7gKyLG3OaJ1kfkqLUsTiqvF5M0GPTdU04xyzQa1EIdUeaeWWWZRbLaVaV2Z+RhjALVrXfriq 3XfJWjazJYTXD3dtPpsckVnPY3dxaSLHNw9RC8DozBvRTr4YqpQfl/5Zh1KHURFO88LRy+nJdXDw vcRIES5lhZzHJPxUfvWUsTvWu+KouHyloMN3Bdx2xW4t72fUon9SQ0urqN4pnoWp8SSsOPQdsVSx vyx8oiwtLK1huLCOxnnubWSyuri2lSS5r6tJYnV6MDxpXYbDbFWSWFlHY2UNpE8sscChFkuJZJ5W p3eWUs7H3JxVXxV2KuxV2KuxV2KuxV2KuxV2KuxV2KpLpHkzy5pD2r6faek1paR2EVXdgYIG5RBw xIZozXi5+IVO++Kpbpn5Y+WNOhgt4Wv5LO1e3ktLO4v7ua3ha0mSeExxSSMi8HiXoOm3Q4qnzaJp ranc6m0RN5d2sdlPJyahgieR0XjWg+Kd9xviqQWf5YeWLXT/ANHLJqEloixLaRy6heSfVTBT0mte Uv7h0pRWjoabdKjFUztfJvl+1t7CCK3Yrp122oW8jyyyStdyJJG80sjszyuyzvUuT+AxVTTyN5XS TTZBZgvpFzc3unszufTmvHeWZt2+IM8hah2BpToMVW+XfI+jeXpzJps18IuLJHZzXt1PaoHbmfTg kkaNTXoQuKsgxV2KuxVienP5l0iXUYE0R72Ke+uLmG4juLdFZJ35r8MjKwIrvthVlmBXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq8Jh1X8x tMvtcvNMttR1LUfRujOt1HfIsTNdxiJ3glWe1keOBnMX1FqMo3Q4UJ/+XmvfmTe3GtXetpPJONKj m0eykt5IbaeVZrlQ3J4oCjsEj5KwQkNXiABRSo+TtR/MDV/POjSarPfPo1pbXkskkllLp0b3RhgR 4ZYmVOQheZxGzVrQ0rQnFUo1T8xfzbj1LVobewuY7JJ5DbyvptxzjihmMYSPhDcKSyvGeX7zl24D cKFf/HX5tPqc8Nxa3NlY8Ld7q5TSpZGs4W9LnKsQEnqSHk9UR5qbn4eNMVavfNf5rXVskF1b3lvd k2gjsrbTZwLi3PF5LuS5VkNvJzojRA1H8lCWVVLpvOX5s6lfSR3Eeo2VoHnaFIdNnjLcrS9HoOwj NAk0cKCjtRm5czTZVNNR82fnPZaXKkViwWwMEMt49tM8jx3fKdZlCxXTubaNEhkpG3xOSwqNlUz1 /wAx/mRa2HlzVDFdQ30+j376hp9rZyXMX10LAYDJGAGRuLO4DGo4laE1UqWKWnm382rq/upZYtSj u2tbezjtl066EVxyu5/Ul9T04UgljtJfUDBV5FVHsVCJh85fnZbxTW6WUkcNrZW9GntLqWRECQg3 HMW0nqSP8fIcpCDWsfwnFXsPk6/1TUPLGnXmqRSQ6hNCDcRzRGCTkCRVoiaqWAr2/wBVfsgJTnFX Yq7FXYq7FXYq7FXkl/5m8wQWWsaZZw6hc69F5iWa1iktb54vqP1+KnGZRHEYuB+wJaca9sKHfl15 h/MLVfMmmyeYHvIbIwahG8bWUkEEssZtWj5F4YWWnqShWZE+wVFdyylCWGsfmVreuaFDfG9gs11O 2m1eOOzls0t5Vju5ZLIuQDcW6+jF+8qVPIVJ5ABVvzL57/NG2806zaaZZTnTIvUitJH06dkQxiNh IjxxTc+SCQhuT9v3dfhKhBW/n784pJOK6dcuZLN3iVtNlBUBT/pDgqgZ6iqKr8n2X0VrUKq9x5u/ M2a3u4Cb0wGGQaNPHpEyyakjNMskk28Rs2ijVGT7JatQrdMVQCec/wA2Lm+Wwmh1Gxsorm2Elyun zmREhvraJxVo3MivbytIxLvzp+yKriqIs/NH5y2nluGGGxmeW10+3vWnlt5Xf07hbaEQkMk0rSQN 9ZlbZnoq1U9Cqnt75h/MU+S/LGsyRXEeqjUZRf2tpaySm4t1huvq/qwMkEirKyRA1Ee7A/BtRSxO Lzp+bNxPa3csWoR3VpFqH1Xhpl00V2ZI7KS0injEUSIJJvUjEhUcBXf9rFUTpXmz86rW8OnRadM8 MUN40JvLe5leUATyLO7mI/EkvGNY/WBYUAQ8gcUPTvy11jX9W8rx3WupIt8JZE5ywNbGRFI4uEdI WKmtAxiStPs9yEsqxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kux V2KuxV2KuxV2KuxV2KuxV2KuxV//2Q== + + + + + + uuid:D7FF3C35B059DE11AFC0B4F2CCFB8D1B + uuid:D9FF3C35B059DE11AFC0B4F2CCFB8D1B + + + + + 792.000000 + 612.000000 + Points + + 1 + False + False + + + + Helvetica + Helvetica + Regular + TrueType + 6.0d7e1 + False + Helvetica.dfont + + + + + + Black + + + + + + Default Swatch Group + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + % &&end XMP packet marker&& [{ai_metadata_stream_123} <> /PUT AI11_PDFMark5 [/Document 1 dict begin /Metadata {ai_metadata_stream_123} def currentdict end /BDC AI11_PDFMark5 +%ADOEndClientInjection: PageSetup End "AI11EPS" +%%EndPageSetup +1 -1 scale 0 -230.068 translate +pgsv +[1 0 0 1 0 0 ]ct +gsave +np +gsave +0 0 mo +0 230.068 li +369.5 230.068 li +369.5 0 li +cp +clp +[1 0 0 1 0 0 ]ct +1 lw +0 lc +0 lj +10 ml +[72 0 ] 0 dsh +true sadj +0.5 9.5 mo +0.5 171.5 li +false sop +/0 +[/DeviceCMYK] /CSA add_res +0 0 0 1 cmyk +@ +%ADOBeginSubsetFont: Helvetica Initial +%ADOt1write: (1.0.24) %%Copyright: Copyright 2009 Adobe System Incorporated. All rights reserved. 12 dict dup begin /FontType 1 def /FontName /Helvetica def /FontInfo 5 dict dup begin /ItalicAngle 0 def /FSType 0 def end def /PaintType 0 def /FontMatrix [0.001 0 0 0.001 0 0] def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 32 /space put dup 39 /quotesingle put dup 40 /parenleft put dup 41 /parenright put dup 45 /hyphen put dup 47 /slash put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 65 /A put dup 67 /C put dup 69 /E put dup 70 /F put dup 71 /G put dup 73 /I put dup 75 /K put dup 78 /N put dup 79 /O put dup 80 /P put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put def /FontBBox {-951 -481 1446 1122} def end systemdict begin dup /Private 7 dict dup begin /|- {def} def /| {put} def /BlueValues [0 0] def /password 5839 def /MinFeature {16 16} def /OtherSubrs[{}{}{}{systemdict/internaldict known not{pop 3}{1183615869 systemdict/internaldict get exec dup/startlock known{/startlock get exec}{dup /strtlck known{/strtlck get exec}{pop 3}ifelse}ifelse}ifelse}executeonly]def /Subrs 5 array dup 0 <1C60D8A8CC31FE2BF6E07AA3E541E2> | dup 1 <1C60D8A8C9C3D06D9E> | dup 2 <1C60D8A8C9C202D79A> | dup 3 <1C60D8A849> | dup 4 <1C60D8A8CC3674F41144B13B77> | def put dup /CharStrings 27 dict dup begin /.notdef <1C60D8A8C9B66F631635D26BA635582B3FDE9B3DD75794781396E6 48A7CA97DB1343CA> |- /space <1C60D8A8C9B854D00D> |- /quotesingle <1C60D8A8C9B8ADAC7D5A0126936BF9AA86DD6462CB7D8404> |- /parenleft <1C60D8A8C9B81F2C3A3BDBA2E9DFEE10E6670AEBC7475A54CE0B 91C398F722701ECC7FFACD7325FD69C372628B8FE38CA7FCBE37C8CC6151D955 D330AD238F5A7ADFF3EC6F792676AC012B90C4C6A5CC37C0C314284064> |- /parenright <1C60D8A8C9B81F2C240532A9306D88FBE802946D4D7C96BED00 3DF2FCDB8DDB235CA368A4FADF1D0309B087452F4DD7B6CF26A6C550E92B406C 8BCDB5365991B0FCCD46328F398E95D059281A86422A9CC2837C1B0EF> |- /hyphen <1C60D8A8C9B81F2C797F8B2BDB0639171EDAAB309BF7> |- /slash <1C60D8A8C9B854D08FD42DCC2A61292225078A8A43> |- /one <1C60D8A8C9B7EF322B8DEEDAE6F72EF3709E16C7A593AF17F17D72A390 7C7468090579C66DE0263BFE> |- /two <1C60D8A8C9B7EF327699F81B0CD59DC4BD38D48AF11B5B9C1D7787A22B DC09D7BCED9A76C2312055A28AC829584109043EE366AF8632D6D62E9BBD6A43 57093750D4015EA59C9F538C44C55AD0DB14FEE0C7267845EB7EFBD514024AA1 A03530A8941AD7B5F508335B2FDCA37E6B0627146A6F144DB9DD7DCA6BE86290 FB46DD6A2918F4C2C2BDEECA159D78> |- /three <1C60D8A8C9B7EF322B8D6E3793F9C339FF2D01F55F75395A69A42725 328E1B8E66EAFF6BAC335B6E345906CE7152DDCE6F991DD2E99A50D14EF5FE71 6864AD89B92005EB56184F6465E294CACBF73EC4E77A27D9ACFF3348FE551D23 745FD8C1F5363E223D2FE146B2E36748D97805004E8C37168D3D6622BBF76ADD 739801325A4BB7457A49C531154E36C58F381AB30F164CAE6510100AF5FE6405 CBE42D3AEC01131A86CADB27645F055DEC901ADBC964660F336098380F7A3143 62D92502B680C534E053458ABD592A4A4D87F9589307764B161F9884> |- /four <1C60D8A8C9B7EF32298E3DD46F18108137336D1A5C627A90D059BB181 58BA2A55FF5DE20CE460964DAF45C08A7D9820A784F4A44F7E1> |- /five <1C60D8A8C9B7EF3277A9C7C54B35CB479E4C110330EAD203F40A20826 414A4CC0E90EF4AAF68DCFEF4ABE6CFF07A7C5FBDADC90A7F87ECB382B602F56 451722980F3A3AC74E582BA9C9CEC3027EC489F453112D8FBBD217B656538AC9 0D034F616E885784C813B1555F6DEF92ECF082193A9672305F8A984DE35F68D1 502A8C10EB08C528E24E38813C68D1F86D01BCA9E> |- /A <1C60D8A8C9B64EDFF4A769B0E349B0B8A8759517834132408F730D592533 2B160EAFC678A283B12B9F41A37E5CF702EF2D2E718583BF> |- /C <1C60D8A8C9B6079F6D8209747A86332E73924F1B07F271169856A53C9157 71D7C530ADE68D8CA49F0A6B3478F9E8176949771F40D91B68E1A88C72CE81CC 0A91B3CFB642960E7EB2127A1637D49961A11F5DD40622F39379CDAB7E5B349D F832E4955008C5E3208AB258B012A237635179513D820ACF76E0A17ED392C351 599687E8E7D0> |- /E <1C60D8A8C9B64EDFE336C703EA12FABA68C9F5D15F1A9B67653505BC29F8 D56A4237858E054C3198877A> |- /F <1C60D8A8C9B7D8BE0123FD0A136BA0F480FD4287FFCF97986718886432AF 2C7EB6A3F35B> |- /G <1C60D8A8C9B6FF86FAE761919412E75DCB56A17E0B647886E974BE0CD2DD C55247C89172C0F24B317CED95A1845F91927547B6F787BE4A81523EC6B90B7A F23F6F8A8BDDC51D0AA285D7E086AD8E028BD7D16A89F17742D556071D7D5616 6C6C8A71E0DFC3DA3B4DBE27EC4E6BE207A1EAF47A71BE409951D1C5060119CD D071AF7E9076F56846B6D62E52B2CB6390635FC230> |- /I <1C60D8A8C9B854D0EE4B20327A907C36187261> |- /K <1C60D8A8C9B64EDFDBBA3672BA9F92710F094994A8A12A9F4DF39299BC3F AD32D853DD36FBDA8E3717CD2AE8C1575639957965FDD3> |- /N <1C60D8A8C9B6079F42CB3557771D803C706A630DA03929B931F488C01B37 E85FE694B3E25EF7F6332F> |- /O <1C60D8A8C9B6FF86FAE00AF1D2F86EE41080CA4FE58FE601E0C2094F12B2 546E9E38BAEF65733BECF7148D0EA0DA88DD45A55274AD12A1DAB92015F88338 234BE6A027107EEF674C9235BAD46D7DFF766B4165047A7FA440E1670CEEAAB2 425BA29AB4CCAE0C0F708E15BAD5B5B8F2A1708072DEF2F49003A8347C8BC4E8 13779196F3AD613B7571> |- /P <1C60D8A8C9B64EDFE336D280AD0769103D1650D4946BC89E21A88DEC5161 3F3C79BEE823BD11DE4DA6DB5B89497F0D2976B3DEFC67AF28487C3BB530BC49 F1D09A090BACE6D7137C10758B70768799060F36DCE81F308AA18889AF5053DE> |- /R <1C60D8A8C9B6079F62E4AB3BE2637412A7FA2BF1A87387986CC045CAB872 B149BF5CA8B183616945E928E44276850B6ACD583D0202E4733E2391A44F4BCB 738AB089D22707E0F4100F2BC6F35BD460D56FBB8A5713D4AF8760EB8EC1E1AE 6F49A9B2B1066A8DA04011CCA29E2BB62A652880D30D80185E3336BD5BF6EB5D 116E1FAF0793D4F86835A22CB564EFB5339E311318AE2981A0679F359C9E7A1F F6CE964A> |- /S <1C60D8A8C9B64EDFB8831DC7D3DA5352C683CFE7ADDB1F2F7D19136185D1 F816C3BE09EC1E84619F52030DEE9359B5F11BDC142E51FA821DBBAA94D355CD B3194A176F4CAFE2F8762140A61B8DB4801B25EC39CF8CD3F7F21C11EB8BF2FE AA7BF71364CB0E29D9153C5428F8E2556CFDCDFCF7C63E7AA008F518E6EAA3DE B5EC8960FB0234452B3B55FF1BB7B980C85D0DFF1CA34BE144E02D5E8A581ACC 1C4C80D7396F6E85C6E2CC3BAA0E140AF4F656AC7D073077DF7B4E8B5856F92B> |- /T <1C60D8A8C9B7D8BE7B6CE17BCB3B2D4B0FB3E6AF9E6DDADD178189522CE1 F006> |- /U <1C60D8A8C9B6079F4AA924EA43FD5A09DAB441D8FDAD8EE41C906BC5551C AACFEF8B65251D34977BCAD7099CF8F4F9BCA8F32E33DFACED539B0F12BA4E54 491DDBF246C2DFA3D44D729CA7103659C293245DC39AD319> |- /V <1C60D8A8C9B64EDFA60949676B75C625C6948873966B83A549B84A6BD5D6 EE9C83058CE085EB61> |- end put end dup /FontName get exch definefont pop end %ADOEndSubsetFont +/BDZTMS+Helvetica /Helvetica findfont ct_VMDictPut /BDZTMS+Helvetica*1 [32{/.notdef}rp /space 6{/.notdef}rp /quotesingle /parenleft /parenright 3{/.notdef}rp /hyphen /.notdef /slash /.notdef /one /two /three /four /five 11{/.notdef}rp /A /.notdef /C /.notdef /E /F /G /.notdef /I /.notdef /K 2{/.notdef}rp /N /O /P /.notdef /R /S /T /U /V 169{/.notdef}rp] BDZTMS+Helvetica nf BDZTMS+Helvetica*1 [12 0 0 -12 0 0 ]msf 14.4922 13.498 mo ('SIGNATURE' ) [2.29102 8.00391 3.33398 9.33398 8.66602 8.00391 7.33008 8.66602 8.66602 8.00391 2.29102 0 ]xsh 14.4922 39.498 mo ('GROUP 1/ 5' ) [2.29102 9.33398 8.66602 9.33398 8.66602 8.00391 3.33398 3.33398 6.67383 3.33398 3.33398 3.33398 6.67383 2.29102 0 ]xsh 13.4922 67.498 mo ('GROUP 2/ 5' ) [2.29102 9.33398 8.66602 9.33398 8.66602 8.00391 3.33398 3.33398 6.67383 3.33398 3.33398 3.33398 6.67383 2.29102 0 ]xsh 14.4922 93.498 mo ('GROUP 3/ 5' ) [2.29102 9.33398 8.66602 9.33398 8.66602 8.00391 3.33398 3.33398 6.67383 3.33398 3.33398 3.33398 6.67383 2.29102 0 ]xsh 13.4922 121.498 mo ('GROUP 4/ 5' ) [2.29102 9.33398 8.66602 9.33398 8.66602 8.00391 3.33398 3.33398 6.67383 3.33398 3.33398 3.33398 6.67383 2.29102 0 ]xsh 14.4922 147.498 mo ('GROUP 5/ 5' ) [2.29102 9.33398 8.66602 9.33398 8.66602 8.00391 3.33398 3.33398 6.67383 3.33398 3.33398 3.33398 6.67383 2.29102 0 ]xsh 14.4922 175.498 mo ('K-EFFECTIVE' ) [2.29102 8.00391 3.99609 8.00391 7.33008 7.33008 8.00391 8.66602 7.33008 3.33398 8.00391 8.00391 2.29102 0 ]xsh 240.492 121.498 mo ('SIGNATURE' ) [2.29102 8.00391 3.33398 9.33398 8.66602 8.00391 7.33008 8.66602 8.66602 8.00391 2.29102 0 ]xsh 239.492 175.498 mo ('K-EFFECTIVE' ) [2.29102 8.00391 3.99609 8.00391 7.33008 7.33008 8.00391 8.66602 7.33008 3.33398 8.00391 8.00391 2.29102 0 ]xsh 239.492 148.498 mo ('GROUP' \(5\) ) [2.29102 9.33398 8.66602 9.33398 8.66602 8.00391 2.29102 3.33398 3.99609 6.67383 3.99609 0 ]xsh 99.5 144.5 mo +126.5 144.5 li +99.5 117.5 mo +126.5 117.5 li +99.5 90.5 mo +126.5 90.5 li +99.5 63.5 mo +126.5 63.5 li +144.5 72.5 mo +153.5 72.5 li +144.5 54.5 mo +153.5 54.5 li +144.5 0.5 mo +153.5 0.5 li +144.5 18.5 mo +153.5 18.5 li +144.5 0.5 mo +144.5 72.5 li +99.5 36.5 mo +153.5 36.5 li +360.5 180.5 mo +369.5 180.5 li +360.5 162.5 mo +369.5 162.5 li +360.5 108.5 mo +369.5 108.5 li +360.5 126.5 mo +369.5 126.5 li +360.5 108.5 mo +360.5 180.5 li +315.5 144.5 mo +369.5 144.5 li +225.5 171.5 mo +234.5 171.5 li +225.5 144.5 mo +234.5 144.5 li +225.5 117.5 mo +234.5 117.5 li +225.5 117.5 mo +225.5 171.5 li +0.5 171.5 mo +9.5 171.5 li +0.5 144.5 mo +9.5 144.5 li +0.5 117.5 mo +9.5 117.5 li +0.5 90.5 mo +9.5 90.5 li +0.5 63.5 mo +9.5 63.5 li +0.5 36.5 mo +9.5 36.5 li +0.5 9.5 mo +9.5 9.5 li +@ +%ADOBeginSubsetFont: Helvetica AddGlyphs +%ADOt1write: (1.0.24) %%Copyright: Copyright 2009 Adobe System Incorporated. All rights reserved. systemdict begin BDZTMS+Helvetica dup /Private get dup rcheck {begin true}{pop false}ifelse exch /CharStrings get begin systemdict /gcheck known {currentglobal currentdict gcheck setglobal} if /L <1C60D8A8C9B7EF320B5E1B1901757FD427860A5A6931496E07> |- /a <1C60D8A8C9B7EF322B0D17E770BC81022852C5639214CBF49D6EF8BAFB01 88062A6BB41F6EB58ADD15E3D1B86AD22624C804FD4A4EBA73D78F7E503599DB 65A7EB53D74C4A9A536152BF7A6B13AB96FF2727313FED0263E50A950746CED5 AD5E7764E6E353716A8BE8970281B41D9429E56957BD1FCC84205F76AF78E807 D18CA1CFFE724AECDDD2D385233E91066015AC7E0906FE359E28D96D9E0BD326 B9E6C7D3E486FD1864E3B47A611B1D6D0D080020321300485E65AE9E4C12443E 21865F474D46CD791839F25C8FD0A80215E3D2C3A5928427942DF3859AEF6E90 35C909FC75082E8FF246F375DDB90EAC248C9121707FE869E161502F320A2711 3504> |- /b <1C60D8A8C9B7EF3218D573119DA1C11A6AE733DE74B449EE28E952049DF2 0D24986476D6D2EEF32C9EA9D0ACD1DB597DCDAFEA016C8786CCA065DDF1EE59 07C8756872FC8DF20AB863D540CF67DD1EF324B2790688B9E765FC9F6CEBC3C1 28AB52D1A4FF3B9BAF04627D17E8573C64B9FC053FD7156FF73E6BCD82B1A402 A01ECDBBEC20265AC1F5281625> |- /c <1C60D8A8C9B7A73DB9BB4BD7623FA1F3C03F832EDB3EBDEEADF30D53894C A8D0E43AB471E7BA022BFFD675D506AE0402072D4B89708C39F4DE4224D2E08E 345C99AE382D5A27CCF2E9E7F36B9FF185D5B1582E55EEA79434D321A3126C80 6AF846740E1C2FF9A41681247A023D851231C058548F93E1F768FE103B973ACF 15C379D13F> |- /e <1C60D8A8C9B7EF322BB83B593C4F5531F1493EEBEAC6F4C92C25FF10F1FB 8EC7E530E4B1F1C9E51F31B44D59539AB4135F310FAB43C5A16AA1F4EA07D67B BB916AB355913EB7D45F3AC7C9CF1FD32728FCA1A2D5BBD257CEF831AE751904 AD7F4FBE21E10F3A844E74CF6B850E894017941E45AE6BCDA168BF4979345C67 DB13F0C5FE9888EB731B0A06A8D5D1475F60C11332FBE633540E50C86671A26F D83CD870BB68F7A9> |- /f <1C60D8A8C9B854D0E1194BB75B674577C40C65C9DA80CF489EB158487251 DB3D0D4CE62FE4588AAD1DAC98153B63C50CB7167E75DAE3557295D61A22E58E D82D181423A4BEB279AE837EE035530BF30960CB0B47037A994CC5880A6489EE> |- /i <1C60D8A8C9B88C084EE8A68C7FA2A58C433876A9B19799899FEF7A13> |- /l <1C60D8A8C9B88C084B857C39B4185359B4FDA8> |- /o <1C60D8A8C9B7EF322BB7315D499F0FAA57DF741D86CA9D8DB7E5AD83A05F D148F53EC24E4E6BF5C292C0FC171599978D99E35AB7CAFB8CB65593939725D5 20CE4A30CDA834D29EB92A082721C79AE18875772ECDD437AD2148D76D23F045 CDA1E61619294E456095F14AB8D580008870DAABB6481A0C5B1656CACCDE79F2 741F9BB15B> |- /s <1C60D8A8C9B7A73DE557A2AA450BB57EE39D611FDE79056DA153DEDE8E0D 2C9D756143DA5E614060C362E0813E35369DA2F002330267D2CFA81D3D9AA172 C91A8B8E19BB92CE3CFBA62200E9E8175CCCB3A5FA559ECF71DD7F2B47B117C6 9AC3637EDAE62020C9DAFDDB718C27C76EF62794CF8B187D103B05AC07655F04 A6D9D5181CB287F032D98B2512B2A9B281D13745308AC05B350DA95BA0BE14F1 2630B5B2A718215DC0DE5A544FA267BEF8FD5CF5292808F195D31A5EEC3ADC63> |- /t <1C60D8A8C9B854D0DE8EB299D76AFE3A3E7733E2D967660702D2EB06537F 4BAA1F2129056DC9771C91484E3F22B637802F61054AB3D0E9902E08C4E6B9AD DC0E2F51D38CAD652B2A777D9304919B1B524DD7CC56553E03BE971752FD0161 CF> |- /v <1C60D8A8C9B7A73DDF32B99894CC6FA66F5D07EC695DA6C164CB40F9A791 729569775D3BE9C3> |- systemdict /gcheck known {setglobal} if end {end} if end BDZTMS+Helvetica /Encoding get dup 76 /L put dup 97 /a put dup 98 /b put dup 99 /c put dup 101 /e put dup 102 /f put dup 105 /i put dup 108 /l put dup 111 /o put dup 115 /s put dup 116 /t put dup 118 /v put pop %ADOEndSubsetFont +/BDZTMS+Helvetica*1 [32{/.notdef}rp /space 6{/.notdef}rp /quotesingle /parenleft /parenright 3{/.notdef}rp /hyphen /.notdef /slash /.notdef /one /two /three /four /five 11{/.notdef}rp /A /.notdef /C /.notdef /E /F /G /.notdef /I /.notdef /K /L /.notdef /N /O /P /.notdef /R /S /T /U /V 10{/.notdef}rp /a /b /c /.notdef /e /f 2{/.notdef}rp /i 2{/.notdef}rp /l 2{/.notdef}rp /o 3{/.notdef}rp /s /t /.notdef /v 137{/.notdef}rp] BDZTMS+Helvetica nf BDZTMS+Helvetica*1 [12 0 0 -12 0 0 ]msf 0.5 206.498 mo (Set of associative tables ) [8.00391 6.67383 3.33398 3.33398 6.67383 3.33398 3.33398 6.67383 6 6 6.67383 6 2.66602 6.67383 3.33398 2.66602 6 6.67383 3.33398 3.33398 6.67383 6.67383 2.66602 6.67383 6 0 ]xsh 220.5 206.498 mo (List of associative tables) [6.67383 2.66602 6 3.33398 3.33398 6.67383 3.33398 3.33398 6.67383 6 6 6.67383 6 2.66602 6.67383 3.33398 2.66602 6 6.67383 3.33398 3.33398 6.67383 6.67383 2.66602 6.67383 0 ]xsh %ADOBeginClientInjection: EndPageContent "AI11EPS" +userdict /annotatepage 2 copy known {get exec}{pop pop} ifelse +%ADOEndClientInjection: EndPageContent "AI11EPS" +grestore +grestore +pgrs +%%PageTrailer +%ADOBeginClientInjection: PageTrailer Start "AI11EPS" +[/EMC AI11_PDFMark5 [/NamespacePop AI11_PDFMark5 +%ADOEndClientInjection: PageTrailer Start "AI11EPS" +[ +[/CSA [/0 ]] +] del_res +/BDZTMS+Helvetica*1 uf /BDZTMS+Helvetica uf /Helvetica uf Adobe_AGM_Image/pt gx +Adobe_CoolType_Core/pt get exec Adobe_AGM_Core/pt gx +currentdict Adobe_AGM_Utils eq {end} if +%%Trailer +Adobe_AGM_Image/dt get exec +Adobe_CoolType_Core/dt get exec Adobe_AGM_Core/dt get exec +%%EOF +%AI9_PrintingDataEnd userdict /AI9_read_buffer 256 string put userdict begin /ai9_skip_data { mark { currentfile AI9_read_buffer { readline } stopped { } { not { exit } if (%AI9_PrivateDataEnd) eq { exit } if } ifelse } loop cleartomark } def end userdict /ai9_skip_data get exec %AI9_PrivateDataBegin %!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Illustrator(R) 13.0 %%AI8_CreatorVersion: 13.0.2 %%For: (Alain Hebert) () %%Title: (vect.eps) %%CreationDate: 6/13/09 1:27 PM %AI9_DataStream %Gb!U'q-NAJcRA_I5jtBM$D!Z^Eu@%q'IZ>"!Xn3'T[8P&?-cjG+6V@=A]KW`Vo(RmH,$b:]B3%\E4-CN82QoIf:DN[X#&a[?a_-XLdWS(%(dR.oV/jRL?j4.,c\#3rnS %3uOdP.26`Tr*S@gFfR`t8aTZ14SfdAC-p)(nZXi)XthEi)BS,f0nZ7[;qcrMZ1q@!rPh$ %qn',ln&]/\(rC<(XR\55TM)`'ehr3E]JVoW$/0KhnA\@8D_CME:pp;t/aR/K,/Y2rqfAU9J21q"J5gs^%ofr;J]\KF/CJF*g %e1&NGhCSKjVBC1iW>KaCs)k,-4[Nn922Hjjbi+L\-u+Qh6'?84qi8>+S90r9t$#?qg%r[9u[MUneDg"J8Kq7Kf>;DMebk/rU*#i>7FY4ol;4'7gQ: %Jkm4Br.V%&->8TNPI(k.?sN1-FfJGd7ct#&:2in28?`5hj@qCMdX0DddPoT8oUO2=X[2qP/JoRW![KORACRE6bS^83=ti-$_ZVLN %>o4Z2_Cl`HR=FuW4bkES$+4/gn4@5S:^OrgBcgNS1]T\:oL%f#oT*B#C(\*U]TA8>hF#U\^IYs>17^'rKDpKa0KMgo0KOHJN1-!J %ptug#&c.7P&Y+r,i=kLlkWF;dfp$[dk"#l5\g\(e>+sFM4XZI\BS#^XSPt,adQ<&'dOr?ToUO24*?46)e=s&Yki@.i:B$BI'@%lQ %9]hl'L-V]sItW8NDC=mtr01DccD#P]BqJ3\V0eL,i,+a6.&X,P9X1\E"8%CY'&HZo62O:O9A:b3adYE=iIC?`84?ka-O?M9rCd,9 %PN94LQi-IM;^q9*rCd-$1?>q@Qi,$=amX&3[[i]`'aga)rCd,)Mr_ADQi-IMb@U64rCd,i.ce)8Qi,m.ImfmGgqbA+=7Vj[,(J#8 %KOcO"Wg44h+=fI^t'`:Q0R5.sCZ;?l\P2D[J[EK$>4UQbIK?A73"8uSXHK8pn-tJtbT&r0l3J8@#JNLYJ8's<>n?%:b%%Dlo-[%f)NYB/2gEeQFc9b;9Hha;C6GkjYEYF8eeXWZMLWI.7bRL)ic^c5+>)5+LN]=pZ2$)oRZM&PFiTs[F"mS %Kk;0Le+q$DcRH6$n/WCUQ3%=6dErOWV%SG[#_`:k;hBOG!RcPkSBN@.#MLL-n?!U0LiJ\PqC"d;rnq[jt`'YA;'6S9\&bgO\CYnV"@G:9dPcko71VAr^kG:j]#7AH87BFeHA[L %XA%RfO3E[_G*U#o)6`3&E[jX0J33k3ME)a(2jFJEY0skX:h:-SGQj\sjEXNIaggRTV%Q1f;E@h=.3=a:#7C2,[A8(Pbc6/NoR4(b %^j;6B>XE^@m03>jPijs$ap\,0UN/HgSA%^0T'+V\Cd6%aUrkX-$IZ>:;DF<%'Pk4,AppGT-'aA[2rGXaL?5[6rDc12Zj1huQKJe4 %-JV"\dCH"l8m=YGWQH`k7adG7(gmDO"mBBK8ocC]^^p;si;\0[BXcjln:XHmnR.S-Om^7k$7rgT\4V&=oE)_01=/1FF&,fm@M %WP*itOF@G&L$,1\Hc8oe;dlR:=RPE1-M2eRN`G&uWn]LptbW^^0j;B@0r\NKJr7]WIc>uB]\(&KZp %auesY7.gs<*@Q1['.db&p<@R+>4c$tY*X.[5OAAub=VInXO#k5.S9.tW'MpW"GXZGk,=;uhns64!l;seZ>:t2AXudnZ?d7_"dqa2:F_K,WMus?AYI39-='PPfoPruBTWUGQX),L %Ydb<-2iP0mCR2!uPog;`JX4i>j;7.IUB=+iD:qu9'!SL06E6:=c %%2C@g2XR\?lf:,Z-XIBk=Z=-BVcl2s"ic;N6s:#L,&'hPfQ>Ys[K3++6`/21C-h"170nN-__C6GA`)6eMC,d[c_Z1`hT?8=B#hQe[D'q8Dmc8`\kqoC5MEp.$2,d@3eL %5G\!k&b^2'KjJ,N:rtP#OAKr0e.m?/_4VgP[(Gpt(r)I2#HL9LDe%^2$=(MfHK$,o %#[/n<*DcZ*rK#9-HmZ7Jiik"_a%7A;k$k+UX=(a&$^LMKFO6V.HB^p`_0e<1O611'qY-%1M@\nH %`u[T2qKFL`hF.RI58)rPYW_C!#Om@HBVXa2lT]H1$A7])s"fOjs)\M5+o[@tX5@b)cjS!#mt3?`>[o]Vk%Ld6iHR6lhe24-JdHEN %kYGUIdn./%`X?<4$8Sm.Ik'tCd)`/@\eGs9p^\]^KOP@SrZEob0D.>Nf^&S*"+_jk;fLSk^:d0V18C,F1r_\tS>,Wps2*\Vnb53c %YY6+:jnJtd1[Y9pi42naXOEbu8dFks<-@mpSkfrTGiAm]6n?LU!hkR1d^]]NbmAZE_NO5A;X&j6\g3On)0g8YQ_[*7e7c-qR\Zke %1Gt`sj367g,)5Kf"S=='UftBg)1o(LiFl$bF$BG69Cq,84eEl]*08&,Gdi[hoA!C92KnBXol`A[,!M./]m1D#V`o\l"#5_LB63UdU%m%/HMC_pNara+ZBrmKip@%ui?,TH %\SSo0%VBR]^aE^m6%&\sioic%$:t^W%hM7EhY\77`e2l&q5]pF'Z';i_Kc6G#t,DN/gaDXI;KDTW2M&&kED+Wqq)RtR.3)gZVPLZ %J@L"GoZGM$:G6tq4g"I.Mr\$Bh4FgeiS@*;(@pFtm!Kt%NF%nmW8DLTrL)jXkb\a(&X'UOc)72jg[TN]oM8\eFAmXIT0iMVN]%gN %L!f"<@+s7r>X@7F6(7c([=W-t[t"hcS"Z2&B^N\E6bdEfJ4[<"&h.%XYppAYUA@(Q8cQ@E9?c)fktn3Gk",Y#:Nmre?+?6nmpd9i(q]ns\BdqnU4Bf>YQ1n4JgRa(alc"@!HAomuEZUsTBBpSdCRMGgmB)eJrW@.>F4Whms3AaG/qaTJG %4Z&2ob]RQCMpC5q""c7mHJuBt1ti$DWEm"INK2%/:)gc$obaF4)dQ77W&-hL/[D2&&NCPCL,%TnbH.6s7uE+3!au!lq(VrHHYHhpGXnat4N17m`F[?4W]*b>ImquekskY:n.ngGeK %l&Gu]H*W@8OqVbB4r\jPgYcf2s,X+2Lkb&_+QZ,a:A[ChSjJ3tIUI+k")2bGEEh^R]+>0Bb2X#qoo!fc1`\)]q4HVRKSlNqQ^@Q> %q+R$"*\U&^>K5#s#-eC-9Wd_qJ'aBI)*J]6ZkP]9IjQq""5BU8lgM8=h*p[[1BTRl[d*>T?r$%)o;P0l&J?,,ABGW3s6HqB7'c"X %0nXK?>O8o:%'@&e_H_7hSNb='ia%KP&]]kj]>0&<*ZnU5:"-j$-?r`g\/Kk3h&2#d#iBW&s(+[gcDS#=n8GT.s!B1\s6Y,O:t7]X %s#iEe:YVP-_30g\bUkjSFhU+hq(M$Uru\amqYm,eimmg2AqT?@hu2FbMhM:h1N'1\D)Km?&bbJE9JN[Fmu$'l3YtFL%I-1VhX&_9 %R,j/)mZ8R-eR:^mg^N>k^HE.Lq0!Ur5H][]^HE.Im'I[#B08OR:0i7>Odol>UGBRT?a/O";0Ogf93i.-n,M]H5$F?Qm4Jgd=hBGG %TN1lO>Ho9>4kZUiL:Wbp)@?]#Nq]+*X,E-b,)K5qqCR$6^I;i\TcMFRraI(\_n"h*@(8''%HA+4r/>q`iQ %E>mc%o@X7HYQpdqV%P4M#EtKErMMIq0\'c5HSh;#&\3&aTJ#k`hPoM_EWc]b'QWdo+Xps(lO$>WN`?kr.o@CB@qV'q]Oi?+Pa65" %D0d_GriFr?&,NUsb,eGqik:4j'$'cmlg<*?]_s"")rh6q]"le*f^$k=bl!"+\iK&"&[P==1kSh/BG>Z)k%/rSL`3j7W@.Cq9P9\H %Du=',dhHRHXjX][$GnoGbOV8d/mLicat/h]DrF*8EPq>bB2qTAagnaf,B7kbMLUUI0f3a_G'Ym@Y;S]A7jS!UC58Xh2Z<&>3f)D& %K=6b+XHbUWTm*TU(R#/A#Fpf9Y[?dO+W9c?`c$jVS9Hej-)S.9_K'NVmF+p9cjiE"\-X*@0hbaW`+_dYVq8"0c(oGE-fQG$7jMT, %Q&HVi7r$WuO9p^Z_?Gbfdg7;_d1F1$)3./rP'6.V>S%>Gm:)C3\'#_hh\lg@\u&HPieg]VN@[u`)-bggP.-t%lHEH8,YR17A9+Au=%omYZf**8R;\ppe1L",@IVKO@VF_:T'U:6Ogji?jP %2MDT;LH7s0'RL=4\e8QiZS'"RB!L2X1F8o@VXk9<"n+O"s# %VP!5s6r,eU>#%u* %4(JIaTGb@uH1/]^>"+QKf(2'1DXK.scU%#<_7iDFbXJd-e-(*M_+#=e8IEin5R.#4fmk\'=S&8eSHCY+27^F^ %7rI1OoDirbOm>b:HEMg_BiElm=_btFmo+5g\2KL]Rs:2@[Dr-Ml4] %;WF%6\C.t+5Ba>.XZ2o#Rep4pZo[5]feqKmC/h&gN"@+on3X@JBpg=Yce0[R1Daq$-R[SH=Tf$6:rYcs5NaKbg,TX6^[DC[#VtbFa<@C8TeZd)$\M%e^`/b:eB8,C<@B"R"R!^lNch=7"mF*5& %r738FNF%d.i_a^3XXqM6/ZJAKHhJ1,?Z)@`]h7jRNk%?=,[oF#Kc^Dp0UCG=JM5C1@_V'NiLMWjNH2bSkLZgh>&5KnBE<9iaiH>e %/+TCNErcg3+EtKkV&Re2pM6ZXll9i+EIl06 %^\"Q@3f56Kfm3@ck1`oa!]QPf?f-gD)L[`s]meg?1qN^Qq?]kUgo/8sCK>aQ5;oS]4l.0#ifE5]meNHORs1uh=ed&<1jcXFF-&%< %SXPNq]\?0K=YuT(gq8!H8=;E*Ccugh@ep]rMYKV!erArrG&*>pD4!3'.o5h6- %VjilZ'fQJ?bV7W.6XdntRQ$ZD[_fY/k(RNE)qB,SXARISRFSXEU'6.tS,QAFF_K09l]nN2DfX_mHDf>Z(5a)k@mg/[jlC0$D) %UV7S5q['U_:_+gk1s$>K5/F\$d81XS-b5IpP82qj,nFu0^VN'H(oM7"W]fAmG^>ZKJCogEDmZ)Y9R5\<1DVk(n6bB4ThS&8OFcGB]jC[i^ip4O_ %d<"_>H<@OfZkC);b";'/:qOH\s[GSj`NF"I=hg,5j6uCH6B:=6oH$H`5F=\I;5-,YckM@]]Z?`4q-L^JC %4Nss'bf2,((XYsfd7tmaA"%?h<(W0@gDdJfG,<;Ro0eFf7O,E?1_utAbPf6&9BG+<27bI*=.9&s'p0I6c@pA"qVRo'hJo;WZ,N>K %`PXR-jN>G?%@W7p7H$\"Xu)uCIT@taY8D!G0MmU>)GPYJoYRn-8o3T^B<[8uU/29eB.ojLdC?I/[!uT#FaT,d4n\%Xoa/U\:V"mN %LO8j".?hl%n*]E>,/V;@gp[pPdbF>T$1!8'`kS*N^N^`2[gR%+5-h<.2-r1$Zdi>/Oo='oL#nb(#hkCg!(R;\W$7Su@AQ?T0 %mW8&rKRh7*!rh_OX'ZqqX\&t+]m#dN.RcB,GOE)h>*W1!bO3K[W0R7%V.t#B<%>o6_W\t.M>ZA&IfR/ROS5'-2\S:**$rU"F#%uLfDYJiG-lm!4hhY0?kOP,Tek2]>)c(m:r-Q/_.^%GoPH>)U7Q7?\\7MF?osT+A=ngUS,/s>_J)7VKoZa8\=u=8Vg=tK@`/Vpn %\2;HcVoi*T3WpfP53ohfdFpjP %5)I&:9(!LRniRW?jeuLVTcC/a@EYqCqp5LN*c?(4;>#5XZ@G_5Q1%8I=pfWFAXLPD?%]C&/pW_mlFhWKM %^%7%(Pl__3dB3hkk/B."l-ug3Ep&8mgW7KMHs.tt!>[*gj=[_9$!4gFpDsG/1Hmb&W,f4`LJq^@Us#-B+@+Fj":]4WeoR)oct4D6ZCLIP'(\1HYBZ)6Q4[TBXqWe,)f/"cokDledGO'rR\C_9%f1meGV-aC(+e:TL`aU8/ %[/=C\'l?HG>:jS[crbBqEKC7)3[3cK@]iori5C36op0%c8'tae9@W<9Wa"q^/47(HWOfSoq8dJBAZ\aNBVYQSSKKB.Y./Dc_Pn^V %RZ;dH3fKL%Y[W]t'.:1Teh,^"C::[1!2.aQRG#W7[ahq3^jV]-iIT=uc<1eJk<3.>q %_oKV@5=*HHo?SW(>>U@H1.BcG/8eni!32,=^)2cDOJQOYR$#4?VjP64c$_5qr(TKqjaB]m`+OBR+Yh_5l*@gf'd+RMB28cF0.i;_X@S?8NHVCoV0.A>m<$pL!CAaBVG%m"Eubn\::FGu %0X4qi9/HdqV*so7mNb+5HUFZ!T1)2_r=^2gXGf`83#!'/q`5ak"Yu34r%$8CdrPXjh"dlln:b %%bk+4m+,V#<(E&Q]p.^jY^&S3TJ#l\bsXO0^m8q-`/0*`En&;Smd,WYnVt-qZZh^=]tKLbgNs*3b==cnAo:=B>FJCZ1("B4RPq+d %)@DT\eo2C&m4G$qG=ImP@rG1j>f1Q=O0_d,28#!$Xj'q\K9k=s(pAW33S*&cs/`1ACgm;!_?UIa %J$KOo^X-_/]b[=KMq\#k(K_..[4i\Y(tQQO+K"F6X0%,T,>U,=cmd>^eDMc5 %ON)>=q#G?d0+BC2jj\VN%2fO(ql3XmBO99,h&)M*Dd11agL)SG\34M#a_3_LSj]&Z*g*ksjbknYV>ps=o` %N&3o_KX3nrEa`_9)/2j.CBf,-p$C/U&Uh#/F-U3kF[b$d0^GQhH@&obh>jc+LtE&EXc;^:maB:hI[cL+dtLX+O#RmC\M %/\"aiSUC\_3P/eo*'1DqeI4KRnZA6IB:hJfSDCGZ%\7=/8d:i3[c$.*FS6SoA;>C%*'3s*3daE8)KP'.1[+?)ZA'>[.Pf4(k]@`E %6U7qOg7)rXMcgJ$FXGJ]P$QL]H;UT1!k6LrY4ADG/ge4eZ=IM5;d$1"=uZalH$UDk$cS95n*rQ+[/h5ij%5SKUWjN*b%j+LEnM^j %\VeGV:m71CJq,l#@C[FdCZ=lRNH"FXfor:GO\WUDVhnT$acQ>^jLMS\P'+p;R`XZU2!7Wb]N!+&LF//$%LH+$Q3Og@.#=kA='GFkCZt%XefrT"5=^]CbW7AYhZaJob %^!%L+i8)E+eb%UC7a3HZNIeS,P\?Hfj!M0qn\EcC@c/oC9iWQj103BDc;'jbVNi^T9Vn'TnOtHrLjVug*nd!=#4tH?YoOI%7 %bd=-UZudq][]n',Js.SuEUR"B7+nOV$gD/.-OXq,MC##]L@DR`*^&[3LmH)FKmQ<[!fij&2jnZG>pB!cM=Xk>>3j229.&/![u/ks %Bd&OrATTtTC,(d.VFt*Rbl5h2FpFfgXhuA>4B4O"91Ps-[dnu$[iQDILY'[b3*hS8#2B$me!2/6d*RpVbFpYqekTpm.sPUSCr+Tr %arVEk6Sf/^2IrUEk3">VOjX"#+[=:YHB(pE%`44JE42"t.S:n&<0enE>%QADDVU5WI'uic]9S&k?TA6C\MZ2VLX"&'[3'!(Vp:]Y %jK-Dj`qP:D(0i.VNiXmHQ7%G>Qrdo4\tI4^FNgdi/ngQYp`Qcc+lpRI?C`6n`&(EF3C!_1l`:Vr12nnt/aYmtOGquBL[(RG%`G#E %kUc+f[H>B[qYAa/&%BXUA'=&QBtOdF7bkTHiKfs'4S4K`VYq/EBI$bD0MoXMsF?TfK+Ru^6!imsY2VtsiSN49Vsg^O!teu&YP %1EXnPRLs2$"0b`gSDG$fg=E7ZNRs7p%h"oFW*RG3,#G/R_l-eNLl"O8XESb%Le\HqDHuO1g#jhB>t74B_msiN%I(+7MrA?/kGCme&6mT8],Yk!/Qd^*BD\R^ade%JbFh)@/&CWVBA`iM2VFG\B*SKBe\j)Gm(]OPh4/uFVpgkI^HV$sNe %1gga4'cYk2Y8GRMCj;jf_BmO>_/PpM_tBpA=b^):)31)(3c3$h/$5>mLdl'6@>&8sPBo6A\qEj;^33%TE(8da3\s\&f9qbI^Q+9& %kF].mV",JP[:H'W3,?T+`VEtYOMB/3F_%9l3%g8C2U,RWqNQLrC^s0F362A^#L%k4@0X'i+3>Eu0"Tek[7$A3:I\@7>(u"!eXF&RM5n)3,J=qEQn[! %^1QQ)"C(O>E(qEhZF1jj((c&s`+p6t"#&)S7M3SGR)ZX'FL-Z-.n^bPp!DT?Y53>Tf,]X-kJesO-5MS!LI(%5&gShhS/K;[\C0NN`hUJ>i))LVcm#p1P.I0I^;Ji7-I4ghSFXGk.=p4l28HHFa\n2l2-+gundq4TfqtQ3>6PHL7Ya/S# %gBVBE-s-@iCmSSns,PuZX;Ys11g8r1ArS;7nU6pF=s,fn/-kSPeJgEi[Ys)r!`m6c?/)#*8&tWBCocgWIoNa?(;*5aX@o!<ZMm9Y$;3;d*ZhSQRS9iO&EGZg!i0),<(r?T+IC %EiSa'Xs':[D#Q7M9W]V1c7G=-r(c3NZK]RuH2R!RVK7Bpe[+MaEp6WFQp.!W6&[C`9kTSu[H;9d"+X/+=K>Z/,F_F9JE5-5/+T.7 %l-+5/AC,Z9f9]3EVF?s/a1&V\R%NXP5l#l6od#>r?;g%XS*o'8-U,)c^"%@K %N7u7NpXM!(ZILR.]poiq[ir\Y/"O-;-eRq$,F@te\A*UY&9=D=Q))%[hY"QmU:-#YsPO7bD-5+=q %;s>SrAkB]iM0:ARQ2?SW/YZ1W7:Zh5G2o"^pg%-Hk9=Q`5$l+dhIF4820UCVb8DtE>C:+qC[S:lYB3C4>Jo^YqMXd-*0BI7[D-:m %2GIn:C[Q"$MX!WSb@MqQ\<2!lQTiXEh)0Bd\SnW/O3kJBBg62gk?OR[1!aj/P-6Wks_i0n"%YtL+366/c]G_b*E6XcO8?-uJ.qgW/q6hjuT %q98C;nOA=h?^?CUI2oa*`T%4G$1R1An6`jlhb"*A#SjT>Is=J.Y?Bk'"&Z/JbCE(rTu0K?G9AUjF!4&3Y*&aPc!-0%%H04/0CoFu)DRGu)gu]81hNYL8)t*?r %S1P,h5&QEe?_$[SQG;D(ikALUN]Vu:((%A+lqTFA4o_T0Z-+b4AAQ2fI`#/\L(YKKk4OR.kmQiu#+Z;f;%!HX[I"D;g0Pf@7'P4N(L`.V2HpM!0`jE)PkosBZNS+e&bl5'ZY&nXif7Tpe^:7JE.P771AFRCpgCnF)g;Oane0V?5/\MLLkI>^-40IW^.#.Gn2S%"N/O&gh8i(ms1L8aXNsHH0O.AFkDK8uD;u<>h(=?P_0aIHKV/t)ODS]EKB.$jOB1o_pfk*B/kI@6=\Y0:i26t7 %WUl6dHh&0+Vii=L[cA.9dp*9$qekBQaQ*#K]Lu%6RjL!eRdtoaj\JTc>&m!Ok?-Vqp)^YZbBu9`rYDh8 %_@,f=+8Qr>Y_8_EYZ]kdQY\h=?$#bZ>;jW(h_/k(1o@m?NB_jY=uG$?]8*M5__at@\X4qgbth1OJGS'9K:f9>1/_CA>gPM<&#"2S %cq&V6)IAF[c2AkiNn6YW`@;0iT5I3Z/eeFaPLb`E,&_[kNUDURbbnGR?;,_7Rm%:b^15ip1i40KpG*hNm-EX.b4OiB9BG-\&Rt$(VE9'kKG9j;JkkR+*gsf?>rn7,]BWY,(.cS7k;$jO^DeHU@cfRfdWTI[K<8-2F"pgE %88N1_ZO3h?m#pW4IX/cV.dP$MlI>(ZI$\&:A\1T3=> %\?_E+SlX>aUrM(Pf!*_a,WJ%TUTF`*H0GKSM0,9[8^t;ZsqLEGqa"r&E*73sjB=Y00<&,W9`W %B'ET>n-M,qG%DG-C#r>\aO9q\?+]G;N9Ru)hqho53fBML@-EcZ^3o+FcT,s< %NGH,tW=RNloW^h`!O_LT2O0J>8iEZ!:0/@GRQnIZR["j+F^,T4jPm=!pV7bed4o1`g&Z9#<>NE<@kNi>6(71G/r_U+qfEUiQq]o9 %+^N_u4,h6elQrk;D7)_X#LN8d'"]\[=/rW-FLpch5drb()Xlmqraa%h5gN&*J8TE.4aoo[igBH%S-,^7HC)bUFINBr50LqY*A2@4 %4gqM8V^t*B3Ii1N.Tq:>Era=2A^c$if6/U8M]:@#E%)kMbLajC^6F]K.f@7Yq(-Gp>O/,5[W62$Qh"QL^UkHSLmIsc7/Gr.)SA;`>IiHlrDkotMS7V[kubHLme*nD&5Li%2O)IgIdWtJmI0^h)lL's]m`Z+h8L5MF^]%XiH)HG7*WunmC@J,!G'K.e]ePCN%an#3&fl'=->b4saos;E`O5\6Hme*ms\AjiR %)Xd:)^XZ-%i*Pq[5PpEmX'F%@n+AIGU/u7*>PUHH=1c@&mc.OI'G("'^,=^3BUX36X5>+(C!3P;H5^#]?9cnf.9?-4V`&8Xoip/%\'Vg;p.ul$E?4fMfdfAVn)IUu$WiIVL3rm+Hc?HT4;i&0_sq5P\CXO*MW%T# %7h<8UHi7ct]@^,"`I%RM".^.pk_f-2kqJtjgTAbTF-H46hWqY0hbo@e2u!0ZZ7B"jfC-NKO[[ZW@QdpXaDgT=n]IZ'2]e %]mdC?Ef5lfom?Z$+O+itA+[$kme*nC_PqI$/bf*%@VdXjqLrd)oeXjq?/f0Tqo-B6Mf\E8rTk:)ECMcemIDCFCihLZ>qeF[PW;h1 %]pXq^Na64uD!#Teffnn3QaWidVMRuVb_9QIDiKq&p)99!Gf1d,V[4b#;!j6>8]E+]-,9.'Q6b_Q]'o/2`FjOq"[79_,O?CdP]8"j %V`G=F2VO>?ruBnhJKr7Fo5acnMsZ!/_Rg%;\a\JDFXqjoruQ6Hb#b+6Hq!X3p$A^&]]c;cJ(;EVQZ`PCX^ej^51.+uA*u5BnD-q8N,3b$*GO?Tcp>ERLgF?jr^.@bW#bIXa_H.ZmOEPsO %"c'g*+jomMc6&'pTq>%9de6I;VWm@cA@E*S\[f\79)NS+hi@:^Wn4$%\kg2,j7-2$_KcoF^R=SRO,jD8mHt4Koj%EA,DP)NCupC- %NXNebpa6?dJGee-%&#V?KB0VhpRRp1r!^b5o78=fKR4?RK6gE"JY^)_df'0eEUhNb\5KjhK %[n?P-!9Dcu.B4-i`Q.*aIHMlY(*MH!UHf2>H)9F&9pgFG`G>>ooblM)Xb:;Y.8nkh740gCmmm^9A^=cfB/:t6RXWLY_)7:'-4ZM/ %oWrP5_LBHR,'m:L5a;o/Z,NHM^47WU,&(6,,(XimVRCI^#L@Dn0>-L]'8$aVab_sJ'(PR_mf[t6(865!D\Ga\W.ET_Mmqt$>2EpC %DcrHooOG6JDsqQ+5=R`Zl8 %TEp'2piZudLI;J;IO:ED!^M6bDLdPqT^YtWF %j,hL>r'jp>8"[YSU\?!T/dUnjK`O=g`BZ_7+P&CG#g.I6WZ!g?NZcG/W60@UFo_)SS_.i4fia?7qjeH$-TT6nR)^k@Y]^_8q)qdo'NG=a.j2,u<8V1b.&1_JP`On[LZj^" %1mUPgm1=EZT-j1uPHmu>7]$3V]Ll:06k]Le0P]m4AQfkXaY]\l[M*9inU>5f/6$eJh6:pH/(.IFA\nLP:G56U1olUUgreZQ),U:l %&@GE[p?P9CjmtUO9C]3E$NAV2?Dcndc`go#j&"-S$9mVL> %LBbI#-Yh]Tra+TI%ZO\%BHUa=Oed/6\\rZ)bOqsq4!5;K1sOB63B'=s/B_nATn+h/4Z&4>c!>R-$pfV7"gan2:[]2)$25LNb_'F? %q!M10Nu=$^:*S7-;L1#T=2[;LR@5K#;%%'S-6kHhlSbFU6.9g-6bVg%RrQ.0Q2@\8q=_ %%#RuEd9MKb!Fq_9+er@(;ZuN3DrXC0E0VE^"/Z8T$3h!4#)nTCmKAjejk1Y\.qd2D0eg-Ioce\Fk(_hk)Dn#O]KGu/nHuNnV./bI %)Pj@Y5\KEZ)6'OU)X7bRe(A=.$=8[r\PKU7IECa&2DkJe&,:O>gnr34p@L7?JqTm%K*;4Gmu=%a)-9Z8^%p7:I0l"_=SBnd)[-Po %//%)@QO4?HZq-"_5XFDn.M0BD5W82GI<__W!ksDHfZ;Bt.86Ul,/G0$L]$C9VYsun/?G@.PNpTS(2Am>R6c3-4mIUHk4< %/./tTk;kY3UM`?igJQ:@1++@m#R18rM])S+p>(6AO[%%^5sDC_a"=C.&b;p%L1)l#Emh#^8o'8Rq<9]FI4U)JCFD4M_ %.TNKn+;f15kc*!n4"fE4Pf(s>g3Q&MppfU+nOgWbm[,l1WR.$Fo#[9l\K"UG-'2\P/8-]HgsB/B@7$bn/=pV^l=[.0"YdTo'5cB2G/Z4]=e6R4naiZjNW_Oh(Np2=oLCh-")$3 %![!Nqc@7-KYJ-jk@2Dri&o!DW0l&'Xf[/_ZP].;0e]g7,]H?*VL"C4-j(lp*!e6_sesS,k0+'drTpcNTY%DVe5pHc,[N"GbGlgad %R`!+*qZqaUIpuVqB$jlO-Gp(0!W@D:mR)68623.tT-KcRb2EE;lonsrjm['.Po`_A7OiUc/+$eqCgt#>0(P.:*Fpu5_*l/tMq65` %*Tn'iHYGH?-_.$r!5-T"_= %$];E'@b;\[(22%XVF6I?.=-"3OP`4^:5=1COjBZ`74n+Vd(I'NI%_)8.\%0d2DFa%47kQ^WfP'XTDF$(Pj*?cD'2KEr>+':6jPDQ %FZ;dCeBLCa;Tf;VDn8ck+L]A^n4&"cSqHuuTC2O8'A=$FEp@PU:i(h9k.C3V%-E_8D&5[WpU'T<-ikD%?Yf %*q,1"*]E5$prmrW+4Wd<@]p8pSO@M`UQ?lpK0r7@GRGC'%5BHQ.s%+i.a6$:iduP;IX^mP5Rc'lA%`S:a,17CQ/bfQ]2lW^(C(+\ %Y]:-cPu_Q4*tu][Wj;M;pj/rpCWJI>)UifY#iFc45R>)/f'1G'Eq7 %g>BNG2*S5Ung?*5=6a%!.Zs>A/@h6>6eQ:$C,\8-":A:;C\o:-TK812,qPW"Kf+cBNA5$YN.tgi'P3E:J,R9>Afss$Et[Tm$oj:P %n,LFBQXPde<>'n=8%T+6(/qQZQ<=%Wf_I!,ZC@5:2Smksp-i;7\*0UakhEh!'#7.&@sgo'LAc:dbM@K+8/*JP1_qa/q@t',6$> % %7YDpoVje(?89i-u1c(4"i>I1!7s!Thj^Fnh9l)_;XAecqHLYWTE:<_H(R0C2^>PL57CJRJf)GTj#+;Pu/7O\E'UEcVOCod9j-#8/)*0bHt='%`.];<`rUN4UKZ#!,RiRun2qnk0G6?t9cqr::j_@[SAM21Z*Z5"3V;^jYp(rdI#WV*$K]06*(R"S/G,P+YX\;W?k/$jXb(A+mHn>aVZK=4 %dX(Zn#Hc%Q->Ue2lTqX(XS49KolueLHPY4Z$n"i^d!HP[HBjBXoh'4F[$Z(<3Z-d'=@$M=$3a#io`mH42^&@VCm6*"P)$jE*T&*#cXG&t,ltL(M"tViW\dcq6mNY6Tjj232.5;H=.i*`Le^LLgEX<_9l*&323D'_p;S$ %4kct"d\^':m]Ar;=`aUYTZJ2LZJZhIrJ26Z?k9p!E%QUY_2#/'(:ZGS=Dh(+.Y2"H-7m %oH-$rs'*>Y%R_=ie[;Z5Ib$K[qKVWBAponTV"qC$pm='TR<[?!1om)AQo-'=JWS:78,P\B(j`+-/78d;`+*j!9;(t!+6p>BP!JHr %&%G0tjH&HiNqI7Bl/WB%R%4@`O8Qg,B)NZWN;RBc)k1Z8pd0/U6LmWrh?BID5UE_3h$#n&;4[VN3ko6.n>a*/Wr0\>Ktju6VTL!, %&$M6$>*&TtRZ\kG9)bba!ZC+Gjai-UL#gQolKF&H+4g)$10K`)c(9XZKiKNNIusYR]t][,6#pcF%EPCDRi'e^RbTHNlmc^Eu]RDegREE+B94T<*.JZ0gq97A(9"qV,`ZU1<]?$j2d8R@QW!+\Xc^+>1;LU&2*^'9E>C2]X% %+Mfb6@`Wf3i@+IKNp1tTQkYI2`qS7oDPL'H@RlKbF\egP61$j$CpAed,D]r8mW+3*YleDlGEp8S/R4R4b%E*9)oQ@ca-(PKh^KY% %Df3aRJ_hVYbZ3@8(RfiHkkqq*q7N#/m;A<1+Ha%(E8VeCrRLr^P"FdBHW'1<9K%H.;p1u'kppc>5XpOKM3>D_+7@<]gEKK+V[4QM %UhN"pI-/X2\7"Lc_WW[/od#+<3=b@uJjE>X#6[I+&M3XTYST&0P1^)4E2+(mrAhU5,:=G514"kg_m2dpN;m\VpqYYgNAp*Pb==M4[f"r:tmE+DgHdYR;Srfg[e=WW(et-hkf38,CB%iGhhY>h&7qUHg %c?j\P^HkKF'%WP"=5)s=UVm"0bYidsUH6Zd2\6mIf9q\#g(W&Xf'5ITe".,1XkA27VEKKKHklYn2[[1$hO**`*,L9KRbMa(duY`D %op3Pq,89Ap"$,hj*sZTR+.:4mL\"rulo/Wuq*R$9p%aZmjGsr0Yr;WERJ`2B#hJ$#&miT8gLg"HEsKWjo3]]8n@IFF1MieZG?q"3 %s"DugC7XU`RM')r=JBbaHauDK@V,[>#;kqr\a6`D%W.^d/"bHK$abjNEqGaT"7,;dODqbD,3Z5D4>7hL`8TOk=^p-pUP\>hOJ2h' %l6m#pe4$/r9`T@2\p2;X/muc?CVF%B12Ydf/<9>X?U5d-[O;@rP.U.##B/P[^5C`+e@h*A?nc:a3A:Cd;q+lGi;>L&,OE2 %f-kqV`iOj>)FY1!@uBbi9iU*39(W6b#p]M.kH%"#RsOiV#C8aF:(kTPh'!*S%;m?,#MEQJq]03WIK.M6GVS2'FaTXKpTsEc,uLU? %C1+"Ig_o!3@!CIMEed2VZP!r;R,q(IR0,W.R?k*!-+k:K*@S1Q[p1S*h3&:9RXX^=2:%@27-R_aQpS+N\g!B"Hibj;a74WEqM75HI-14XVlrW%^bUgGUYUhp %PZgc+PZ]h.NOY\slR'hf_SGCFl5=g2=_`>2C\Wjf+3dG/V2aJl;O?52<#a>p_hNBOTnJ6)641KK-\k-$dgc=.`UGTl1$-Ba]%SAE %SeUG2IE;J1E1h4c(d84!/H?gR-,2s.NZu^CJ3/PZ"'SN\0a5>S01WCBc5]X$2IFW48MD0lm.&Q&7q(P-5c3XHgP4.i+@F]5*tqRDc5+7ilC\ %oj.)6pg3ej="iZ34KG\JmCa&:b&pqo"^u3b3).[d`HWn]B$M`WgVW0GS/GFV$GBh>"g72Uo]_3M[g@bQhUoC*e0E2bJ4,mk>[ukB %JekS2OF0Dg'fd^>4Yomb`j#aLOj2_h'oM0!XnLgZc,3%KPJ]?V)i\^rnBIrDB0g!MU@RQ2a9]i>g8Lc:@k:)@5UU.mKlbT[G9#Ql %3.i/fKS8k![uk\PHR*F)]/N#9]D7gmoW`8q6A:'A=TC'urW/)!RrY`>83UjnjIaL67U1_$;rrh^"0dqjDOYg`am"/78VnsimYs6e %\X^Zigr'/,mFHumdV=!^_V(&s\ea5-Pf*6l-ADnL$f3]Y$u;/oomd8]qGfu(,4&i'p`ao8("E'V#@AV- %hG?tMgkFRd"rd1.$foMRpnFOaB/n!k#NcT0TA#9Lf=4eQ#Z[dF*ofV+3hEU^&Jqpf^CqlfZHeY'1O!\YT %r<&?R90uR?%"NI;_g8bc0^mqr$,"es=au1%B'+nai]PoL&U'1^^PGmFpcX54s=1f.qb'$Z(/cMh)k24+/^W!S`(lhF[i2[d=WDT`4BkA3G_]%;Teff %=,$ecKkZc7^p':k1Rs"U$VV98%35G=ck`Y#P/i8"4_\mU1*5!`-$MS8UDa6F<^Lk,@sZVe05d%,:O@aqMK&h'KQcr\.R%9)=HPni %Mt[aN's,@TJK/(oUsJIXkd-QhmpEr'cJIEIXHm=)d:e?ZT>*ml'01Y`?O//P&:49L,Y!+Z*[WB.oCpb`IMP02N,5Es_lK?G#f.31 %$=6gKi'Vi&$HVa+O":o?Ioms]-I"%'0S2d]GhAMA@7*lq"`gC/"UTEG=;5/@QPgG0B.a[hZoNmrhjCD+0ZoEML!F+k04VFMdaJVT %a):tJ,mG+d@/p:f-S5==S>:KC8BQ_335V7/fZW&8(C[K(N;%]B@Ko*3fQ3Hc@+XDar[L?#AD8n/-b.MWm %0e%+&W3fe"U0B!-"u+l3*>_^iRGJ?88VnOd-;ppsEm:h)DcKI3V-7Mq:*0ZXc@$BZpr@[?m8Mq6cgMg.*oudb%H];k)k( %L^]ThoH91'NoDPuj#C6(.#ff+2#-*QSTifnRE"m4ke-[lj7poQB;UkqOkkZRDIoQCXiPlK\fY.5j1FQ=Sm>X)aE[;*``NcGCIZA4S@2Mc(AKVSYhaduBE_fc*c-:a#1`+)'](Her`Nt8GQk7nB:o+;2N %?HIpNU;abXYS0#=P;mPM?9f0*EGT(Th89mkgQ`2UHe$&B'?m:@ppL4_nqe]EBPsU3Ps$u(T58UV(C.4+:nc9bYN$aD'/R"kF]n$> %#)]Y6]Ve6ml/6:(k$19dWp^m&B$,Q:DWY1%b%%UUY4c(+V-ZQ"N$GP!P#-$H8hrae+(i*+_X>OB2+%,="QJB(: %'iM5(nY8=K\,V8IL\Hu33:n;?Ao_3aaEiP>$N3N3dsB%J^id>h("M.5##K6J %=&^+R"^uo@(%q(H_g)XRs+gW!k3,%TH]A$.GrW>JW8J3_EJhJXTh#.QnsoI0qih]R;Y]\skNr;'CQH9m@OZ4>_oG[>CskD0+5fq> %0_!kBR\$$.&G/0APKar[%-fY3NPh%jCsAWEiEtuGGV\Q@s.J73mu?5K`mPt*@+XF169jP.;<'f8H?$0Z&a[r]Ebg>n=X1$?)I]Jn %#V3GT=G\oP'%R?3KPYe8k+7[WFB6%cA1Kje4oi$SlQh\*3qNGOLX52Lcj+;++ie<_-kD\+l%H2LIDF?(UighD"/ZQn%S@aB>U0tS %D-QQ5q`;iP^-?WY[6J[P[Qch"8fb@BPb)iWMC#!.VT-Ce=dD?3e01a*Vt;c_f<7KCk!(&<_GZ6[%O=h %6jh;'a=;/i#@,hV-S=Q?U]ih>Ue[43e.L-?3^VOsLWeuJB_oV\80$/OV"?K>l7b%jl=aj;Y+sF4>_f.1\W09$EZLH(6Hu?-5a.IJ %%1?Rp;*Hk^'oXE>aOamJ!(o]*HSV+MV4"ePSr\1rn*P?de;F;Cj7'f+Zm566+5T8f=Qgqlk^#@,"$fa]i,$1Da0XHD81LLB8EfLUc2U\ %4oZ=a2]fU~> %AI9_PrivateDataEnd \ No newline at end of file -- cgit v1.2.3