60c06040525f600560156101000a81548160ff021916908315150217905550600160085f6101000a81548160ff0219169083151502179055506001600860016101000a81548160ff0219169083151502179055505f600d60146101000a81548160ff02191690831515021790555034801562000079575f80fd5b506040518060400160405280600b81526020017f53706f6f6b7920506570650000000000000000000000000000000000000000008152506040518060400160405280600481526020017f53504b50000000000000000000000000000000000000000000000000000000008152508160039081620000f7919062002073565b50806004908162000109919062002073565b5050506200012c62000120620005db60201b60201c565b620005e260201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d905062000157816001620006a560201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001fb9190620021bc565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000261573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002879190620021bc565b6040518363ffffffff1660e01b8152600401620002a6929190620021fd565b6020604051808303815f875af1158015620002c3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002e99190620021bc565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200033160a0516001620006a560201b60201c565b6200034660a05160016200078c60201b60201c565b5f6b033b2e3c9fd0803ce80000009050606460028262000367919062002255565b620003739190620022cc565b600a8190555060646002826200038a919062002255565b620003969190620022cc565b600981905550612710600582620003ae919062002255565b620003ba9190620022cc565b6006819055506064600782620003d1919062002255565b620003dd9190620022cc565b6007819055506019600f819055505f601081905550601054600f5462000404919062002303565b600e8190555060236012819055505f6013819055506013546012546200042b919062002303565b6011819055507314b1f105997b64b329bd2459f44a7bb2d7bfdda4600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004e7620004d96200082a60201b60201c565b60016200085260201b60201c565b620004fa3060016200085260201b60201c565b6200050f61dead60016200085260201b60201c565b62000543600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200085260201b60201c565b62000565620005576200082a60201b60201c565b6001620006a560201b60201c565b62000578306001620006a560201b60201c565b6200058d61dead6001620006a560201b60201c565b620005c1600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006a560201b60201c565b620005d333826200098960201b60201c565b50506200294a565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620006b5620005db60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620006db6200082a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000734576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200072b906200239b565b60405180910390fd5b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f02d59e6bf2c101e2d8367c2a27c51357eccfebcca0d09aa27c00e24e946c0d6a60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000862620005db60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620008886200082a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620008e1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008d8906200239b565b60405180910390fd5b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f43e5678c2fcaa42d15df6505520f417a1fbf973324cb2f7c106ebdbd662d0c3d826040516200097d9190620023d7565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009fc575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401620009f39190620023f2565b60405180910390fd5b62000a0f5f838362000a1360201b60201c565b5050565b5f810362000a345762000a2e83835f6200159760201b60201c565b62001592565b60085f9054906101000a900460ff1615620010f15762000a596200082a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801562000ad0575062000aa06200082a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801562000b0957505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801562000b44575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801562000b5e5750600560149054906101000a900460ff16155b15620010f057600d60149054906101000a900460ff1662000c585760165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168062000c15575060165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b62000c57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c4e906200245b565b60405180910390fd5b5b600860019054906101000a900460ff161562000def5762000c7e6200082a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801562000ce8575060805173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801562000d23575060a05173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1562000dee5743600b5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541062000dab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000da29062002515565b60405180910390fd5b43600b5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801562000e8d575060175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1562000f4657600a5481111562000edb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ed290620025a9565b60405180910390fd5b60095462000eef83620017bb60201b60201c565b8262000efc919062002303565b111562000f40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000f379062002617565b60405180910390fd5b620010ef565b60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801562000fe4575060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156200103857600a5481111562001032576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200102990620026ab565b60405180910390fd5b620010ee565b60175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16620010ed576009546200109b83620017bb60201b60201c565b82620010a8919062002303565b1115620010ec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620010e39062002617565b60405180910390fd5b5b5b5b5b5b5f6200110330620017bb60201b60201c565b90505f6006548210159050808015620011285750600560159054906101000a900460ff165b8015620011425750600560149054906101000a900460ff16155b801562001196575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015620011ea575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156200123e575060165f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156200128a576001600560146101000a81548160ff0219169083151502179055506200126f6200180060201b60201c565b5f600560146101000a81548160ff0219169083151502179055505b5f600560149054906101000a900460ff1615905060165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806200133a575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1562001344575f90505b5f81156200157a5760185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015620013a457505f601154115b156200144e57620013d66064620013c760115488620019e660201b90919060201c565b620019fd60201b90919060201c565b905060115460135482620013eb919062002255565b620013f79190620022cc565b60155f82825462001409919062002303565b925050819055506011546012548262001423919062002255565b6200142f9190620022cc565b60145f82825462001441919062002303565b925050819055506200154c565b60185f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015620014a657505f600e54115b156200154b57620014d86064620014c9600e5488620019e660201b90919060201c565b620019fd60201b90919060201c565b9050600e5460105482620014ed919062002255565b620014f99190620022cc565b60155f8282546200150b919062002303565b92505081905550600e54600f548262001525919062002255565b620015319190620022cc565b60145f82825462001543919062002303565b925050819055505b5b5f8111156200156957620015688730836200159760201b60201c565b5b8085620015779190620026cb565b94505b6200158d8787876200159760201b60201c565b505050505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620015eb578060025f828254620015de919062002303565b92505081905550620016bc565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101562001677578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016200166e9392919062002716565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362001705578060025f82825403925050819055506200174f565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620017ae919062002751565b60405180910390a3505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f6200181230620017bb60201b60201c565b90505f60155460145462001827919062002303565b90505f808314806200183857505f82145b156200184757505050620019e4565b600754831115620018585760075492505b5f4790506200186d8462001a1460201b60201c565b5f62001883824762001c0660201b90919060201c565b90505f620018b185620018a260155485620019e660201b90919060201c565b620019fd60201b90919060201c565b90505f6014819055505f601581905550600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405162001908906200279d565b5f6040518083038185875af1925050503d805f811462001944576040519150601f19603f3d011682016040523d82523d5f602084013e62001949565b606091505b505080945050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405162001996906200279d565b5f6040518083038185875af1925050503d805f8114620019d2576040519150601f19603f3d011682016040523d82523d5f602084013e620019d7565b606091505b5050809450505050505050505b565b5f8183620019f5919062002255565b905092915050565b5f818362001a0c9190620022cc565b905092915050565b5f600267ffffffffffffffff81111562001a335762001a3262001e19565b5b60405190808252806020026020018201604052801562001a625781602001602082028036833780820191505090505b50905030815f8151811062001a7c5762001a7b620027b3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060805173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001b02573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001b289190620021bc565b8160018151811062001b3f5762001b3e620027b3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505062001b8e306080518462001c1d60201b60201c565b60805173ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040162001bd3959493929190620028e8565b5f604051808303815f87803b15801562001beb575f80fd5b505af115801562001bfe573d5f803e3d5ffd5b505050505050565b5f818362001c159190620026cb565b905092915050565b62001c32838383600162001c3760201b60201c565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160362001caa575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040162001ca19190620023f2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362001d1d575f6040517f94280d6200000000000000000000000000000000000000000000000000000000815260040162001d149190620023f2565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550801562001e09578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405162001e00919062002751565b60405180910390a35b50505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062001e8b57607f821691505b60208210810362001ea15762001ea062001e46565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262001f057fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262001ec8565b62001f11868362001ec8565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62001f5b62001f5562001f4f8462001f29565b62001f32565b62001f29565b9050919050565b5f819050919050565b62001f768362001f3b565b62001f8e62001f858262001f62565b84845462001ed4565b825550505050565b5f90565b62001fa462001f96565b62001fb181848462001f6b565b505050565b5b8181101562001fd85762001fcc5f8262001f9a565b60018101905062001fb7565b5050565b601f821115620020275762001ff18162001ea7565b62001ffc8462001eb9565b810160208510156200200c578190505b620020246200201b8562001eb9565b83018262001fb6565b50505b505050565b5f82821c905092915050565b5f620020495f19846008026200202c565b1980831691505092915050565b5f62002063838362002038565b9150826002028217905092915050565b6200207e8262001e0f565b67ffffffffffffffff8111156200209a576200209962001e19565b5b620020a6825462001e73565b620020b382828562001fdc565b5f60209050601f831160018114620020e9575f8415620020d4578287015190505b620020e0858262002056565b8655506200214f565b601f198416620020f98662001ea7565b5f5b828110156200212257848901518255600182019150602085019450602081019050620020fb565b868310156200214257848901516200213e601f89168262002038565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62002186826200215b565b9050919050565b62002198816200217a565b8114620021a3575f80fd5b50565b5f81519050620021b6816200218d565b92915050565b5f60208284031215620021d457620021d362002157565b5b5f620021e384828501620021a6565b91505092915050565b620021f7816200217a565b82525050565b5f604082019050620022125f830185620021ec565b620022216020830184620021ec565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620022618262001f29565b91506200226e8362001f29565b92508282026200227e8162001f29565b9150828204841483151762002298576200229762002228565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620022d88262001f29565b9150620022e58362001f29565b925082620022f857620022f76200229f565b5b828204905092915050565b5f6200230f8262001f29565b91506200231c8362001f29565b925082820190508082111562002337576200233662002228565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f620023836020836200233d565b915062002390826200234d565b602082019050919050565b5f6020820190508181035f830152620023b48162002375565b9050919050565b5f8115159050919050565b620023d181620023bb565b82525050565b5f602082019050620023ec5f830184620023c6565b92915050565b5f602082019050620024075f830184620021ec565b92915050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f620024436016836200233d565b915062002450826200240d565b602082019050919050565b5f6020820190508181035f830152620024748162002435565b9050919050565b7f5f7570646174653a3a205472616e736665722044656c617920656e61626c65645f8201527f2e20204f6e6c79206f6e652070757263686173652070657220626c6f636b206160208201527f6c6c6f7765642e00000000000000000000000000000000000000000000000000604082015250565b5f620024fd6047836200233d565b91506200250a826200247b565b606082019050919050565b5f6020820190508181035f8301526200252e81620024ef565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f5f6d6178546f6b656e735065725472616e736665722e00000000000000000000602082015250565b5f620025916036836200233d565b91506200259e8262002535565b604082019050919050565b5f6020820190508181035f830152620025c28162002583565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f620025ff6013836200233d565b91506200260c82620025c9565b602082019050919050565b5f6020820190508181035f8301526200263081620025f1565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f205f6d6178546f6b656e735065725472616e736665722e000000000000000000602082015250565b5f620026936037836200233d565b9150620026a08262002637565b604082019050919050565b5f6020820190508181035f830152620026c48162002685565b9050919050565b5f620026d78262001f29565b9150620026e48362001f29565b9250828203905081811115620026ff57620026fe62002228565b5b92915050565b620027108162001f29565b82525050565b5f6060820190506200272b5f830186620021ec565b6200273a602083018562002705565b62002749604083018462002705565b949350505050565b5f602082019050620027665f83018462002705565b92915050565b5f81905092915050565b50565b5f620027865f836200276c565b9150620027938262002776565b5f82019050919050565b5f620027a98262002779565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f6200280962002803620027fd84620027e0565b62001f32565b62001f29565b9050919050565b6200281b81620027e9565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b62002855816200217a565b82525050565b5f6200286883836200284a565b60208301905092915050565b5f602082019050919050565b5f6200288c8262002821565b6200289881856200282b565b9350620028a5836200283b565b805f5b83811015620028db578151620028bf88826200285b565b9750620028cc8362002874565b925050600181019050620028a8565b5085935050505092915050565b5f60a082019050620028fd5f83018862002705565b6200290c602083018762002810565b818103604083015262002920818662002880565b9050620029316060830185620021ec565b62002940608083018462002705565b9695505050505050565b60805160a051614731620029965f395f818161117e01528181611459015261284901525f81816114ab015281816127f10152818161353201528181613611015261363801526147315ff3fe608060405260043610610302575f3560e01c80637361eda31161018f578063bbd6d962116100db578063cb3cd3f911610094578063dd62ed3e1161006e578063dd62ed3e14610b79578063f043106a14610bb5578063f2fde38b14610bdd578063f99e0bf714610c0557610309565b8063cb3cd3f914610aeb578063d3f2d9bd14610b27578063d910be0c14610b4f57610309565b8063bbd6d962146109cd578063c1cdddad146109f7578063c2bf1b6914610a33578063c3c884b414610a6f578063c3e5c04714610a97578063c437c39614610ac157610309565b80639c83c37811610148578063a9059cbb11610122578063a9059cbb14610919578063b1b5910114610955578063b2967e021461097d578063bb27b8b8146109a557610309565b80639c83c378146108895780639e50e47c146108b3578063a457c2d7146108dd57610309565b80637361eda31461077b5780638bcea939146107b75780638da5cb5b146107e157806395087af91461080b578063958c2e521461083557806395d89b411461085f57610309565b80633c0946b71161024e57806353d6ece311610207578063656a0ff1116101e1578063656a0ff1146106d557806367a7601c146106ff57806370a0823114610729578063715018a61461076557610309565b806353d6ece314610659578063622bbb23146106835780636350d400146106ab57610309565b80633c0946b71461054d5780633d508e0f146105775780633e2db054146105b3578063413f7505146105db57806352185cc8146106055780635348f9b21461062f57610309565b80631fbd1c92116102bb5780632b0cc3f2116102955780632b0cc3f214610493578063313ce567146104bd578063377c6643146104e7578063395093511461051157610309565b80631fbd1c9214610405578063232050f91461042d57806323b872dd1461045757610309565b806306fdde031461030d5780630886f8df14610337578063095ea7b31461035f5780630f9cdeb71461039b5780630faeb408146103c557806318160ddd146103db57610309565b3661030957005b5f80fd5b348015610318575f80fd5b50610321610c2f565b60405161032e9190613767565b60405180910390f35b348015610342575f80fd5b5061035d600480360381019061035891906137c0565b610cbf565b005b34801561036a575f80fd5b5061038560048036038101906103809190613878565b610d58565b60405161039291906138c5565b60405180910390f35b3480156103a6575f80fd5b506103af610d7a565b6040516103bc91906138ed565b60405180910390f35b3480156103d0575f80fd5b506103d9610d80565b005b3480156103e6575f80fd5b506103ef610e34565b6040516103fc91906138ed565b60405180910390f35b348015610410575f80fd5b5061042b60048036038101906104269190613906565b610e3d565b005b348015610438575f80fd5b50610441610f11565b60405161044e91906138c5565b60405180910390f35b348015610462575f80fd5b5061047d60048036038101906104789190613944565b610fae565b60405161048a91906138c5565b60405180910390f35b34801561049e575f80fd5b506104a7610fdc565b6040516104b491906139a3565b60405180910390f35b3480156104c8575f80fd5b506104d1611001565b6040516104de91906139d7565b60405180910390f35b3480156104f2575f80fd5b506104fb611009565b60405161050891906138c5565b60405180910390f35b34801561051c575f80fd5b5061053760048036038101906105329190613878565b6110a7565b60405161054491906138c5565b60405180910390f35b348015610558575f80fd5b506105616110dd565b60405161056e91906138ed565b60405180910390f35b348015610582575f80fd5b5061059d600480360381019061059891906139f0565b6110e3565b6040516105aa91906138c5565b60405180910390f35b3480156105be575f80fd5b506105d960048036038101906105d49190613906565b611100565b005b3480156105e6575f80fd5b506105ef611218565b6040516105fc91906138ed565b60405180910390f35b348015610610575f80fd5b5061061961121e565b60405161062691906138ed565b60405180910390f35b34801561063a575f80fd5b50610643611224565b60405161065091906138ed565b60405180910390f35b348015610664575f80fd5b5061066d61122a565b60405161067a91906138ed565b60405180910390f35b34801561068e575f80fd5b506106a960048036038101906106a49190613a1b565b611230565b005b3480156106b6575f80fd5b506106bf61131a565b6040516106cc91906138ed565b60405180910390f35b3480156106e0575f80fd5b506106e9611320565b6040516106f691906138c5565b60405180910390f35b34801561070a575f80fd5b50610713611333565b60405161072091906138ed565b60405180910390f35b348015610734575f80fd5b5061074f600480360381019061074a91906139f0565b611339565b60405161075c91906138ed565b60405180910390f35b348015610770575f80fd5b5061077961137e565b005b348015610786575f80fd5b506107a1600480360381019061079c91906139f0565b611405565b6040516107ae91906138c5565b60405180910390f35b3480156107c2575f80fd5b506107cb611457565b6040516107d891906139a3565b60405180910390f35b3480156107ec575f80fd5b506107f561147b565b60405161080291906139a3565b60405180910390f35b348015610816575f80fd5b5061081f6114a3565b60405161082c91906138ed565b60405180910390f35b348015610840575f80fd5b506108496114a9565b6040516108569190613ab4565b60405180910390f35b34801561086a575f80fd5b506108736114cd565b6040516108809190613767565b60405180910390f35b348015610894575f80fd5b5061089d61155d565b6040516108aa91906138c5565b60405180910390f35b3480156108be575f80fd5b506108c7611570565b6040516108d491906138ed565b60405180910390f35b3480156108e8575f80fd5b5061090360048036038101906108fe9190613878565b611576565b60405161091091906138c5565b60405180910390f35b348015610924575f80fd5b5061093f600480360381019061093a9190613878565b6115f1565b60405161094c91906138c5565b60405180910390f35b348015610960575f80fd5b5061097b60048036038101906109769190613acd565b611613565b005b348015610988575f80fd5b506109a3600480360381019061099e9190613acd565b6116fc565b005b3480156109b0575f80fd5b506109cb60048036038101906109c69190613906565b6117e5565b005b3480156109d8575f80fd5b506109e1611907565b6040516109ee91906138ed565b60405180910390f35b348015610a02575f80fd5b50610a1d6004803603810190610a189190613acd565b61190d565b604051610a2a91906138c5565b60405180910390f35b348015610a3e575f80fd5b50610a596004803603810190610a549190613acd565b611a9c565b604051610a6691906138c5565b60405180910390f35b348015610a7a575f80fd5b50610a956004803603810190610a9091906139f0565b611b6e565b005b348015610aa2575f80fd5b50610aab611ca8565b604051610ab891906138c5565b60405180910390f35b348015610acc575f80fd5b50610ad5611cba565b604051610ae291906138ed565b60405180910390f35b348015610af6575f80fd5b50610b116004803603810190610b0c91906139f0565b611cc0565b604051610b1e91906138c5565b60405180910390f35b348015610b32575f80fd5b50610b4d6004803603810190610b4891906139f0565b611cdd565b005b348015610b5a575f80fd5b50610b63611e17565b604051610b7091906138c5565b60405180910390f35b348015610b84575f80fd5b50610b9f6004803603810190610b9a9190613af8565b611e2a565b604051610bac91906138ed565b60405180910390f35b348015610bc0575f80fd5b50610bdb6004803603810190610bd69190613a1b565b611eac565b005b348015610be8575f80fd5b50610c036004803603810190610bfe91906139f0565b611f96565b005b348015610c10575f80fd5b50610c1961208c565b604051610c2691906139a3565b60405180910390f35b606060038054610c3e90613b63565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6a90613b63565b8015610cb55780601f10610c8c57610100808354040283529160200191610cb5565b820191905f5260205f20905b815481529060010190602001808311610c9857829003601f168201915b5050505050905090565b610cc76120b1565b73ffffffffffffffffffffffffffffffffffffffff16610ce561147b565b73ffffffffffffffffffffffffffffffffffffffff1614610d3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3290613bdd565b60405180910390fd5b80600560156101000a81548160ff02191690831515021790555050565b5f80610d626120b1565b9050610d6f8185856120b8565b600191505092915050565b60115481565b610d886120b1565b73ffffffffffffffffffffffffffffffffffffffff16610da661147b565b73ffffffffffffffffffffffffffffffffffffffff1614610dfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df390613bdd565b60405180910390fd5b6001600d60146101000a81548160ff0219169083151502179055506001600560156101000a81548160ff021916908315150217905550565b5f600254905090565b610e456120b1565b73ffffffffffffffffffffffffffffffffffffffff16610e6361147b565b73ffffffffffffffffffffffffffffffffffffffff1614610eb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb090613bdd565b60405180910390fd5b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f610f1a6120b1565b73ffffffffffffffffffffffffffffffffffffffff16610f3861147b565b73ffffffffffffffffffffffffffffffffffffffff1614610f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8590613bdd565b60405180910390fd5b5f60085f6101000a81548160ff0219169083151502179055506001905090565b5f80610fb86120b1565b9050610fc58582856120ca565b610fd085858561215c565b60019150509392505050565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6012905090565b5f6110126120b1565b73ffffffffffffffffffffffffffffffffffffffff1661103061147b565b73ffffffffffffffffffffffffffffffffffffffff1614611086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107d90613bdd565b60405180910390fd5b5f600860016101000a81548160ff0219169083151502179055506001905090565b5f806110b16120b1565b90506110d28185856110c38589611e2a565b6110cd9190613c28565b6120b8565b600191505092915050565b60125481565b6018602052805f5260405f205f915054906101000a900460ff1681565b6111086120b1565b73ffffffffffffffffffffffffffffffffffffffff1661112661147b565b73ffffffffffffffffffffffffffffffffffffffff161461117c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117390613bdd565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361120a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120190613ccb565b60405180910390fd5b611214828261224c565b5050565b600e5481565b60135481565b60145481565b60075481565b6112386120b1565b73ffffffffffffffffffffffffffffffffffffffff1661125661147b565b73ffffffffffffffffffffffffffffffffffffffff16146112ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a390613bdd565b60405180910390fd5b81600f8190555080601081905550601054600f546112ca9190613c28565b600e81905550600c600e541115611316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130d90613d33565b60405180910390fd5b5050565b600f5481565b600560159054906101000a900460ff1681565b60155481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6113866120b1565b73ffffffffffffffffffffffffffffffffffffffff166113a461147b565b73ffffffffffffffffffffffffffffffffffffffff16146113fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f190613bdd565b60405180910390fd5b6114035f6122ea565b565b5f60165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60095481565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060600480546114dc90613b63565b80601f016020809104026020016040519081016040528092919081815260200182805461150890613b63565b80156115535780601f1061152a57610100808354040283529160200191611553565b820191905f5260205f20905b81548152906001019060200180831161153657829003601f168201915b5050505050905090565b600d60149054906101000a900460ff1681565b60105481565b5f806115806120b1565b90505f61158d8286611e2a565b9050838110156115d8578481856040517fa60f030c0000000000000000000000000000000000000000000000000000000081526004016115cf93929190613d51565b60405180910390fd5b6115e582868684036120b8565b60019250505092915050565b5f806115fb6120b1565b905061160881858561215c565b600191505092915050565b61161b6120b1565b73ffffffffffffffffffffffffffffffffffffffff1661163961147b565b73ffffffffffffffffffffffffffffffffffffffff161461168f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168690613bdd565b60405180910390fd5b60028110156116d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ca90613df6565b60405180910390fd5b6103e86116de610e34565b826116e99190613e14565b6116f39190613e82565b600a8190555050565b6117046120b1565b73ffffffffffffffffffffffffffffffffffffffff1661172261147b565b73ffffffffffffffffffffffffffffffffffffffff1614611778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176f90613bdd565b60405180910390fd5b60058110156117bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b390613f22565b60405180910390fd5b6103e86117c7610e34565b826117d29190613e14565b6117dc9190613e82565b60098190555050565b6117ed6120b1565b73ffffffffffffffffffffffffffffffffffffffff1661180b61147b565b73ffffffffffffffffffffffffffffffffffffffff1614611861576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185890613bdd565b60405180910390fd5b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f43e5678c2fcaa42d15df6505520f417a1fbf973324cb2f7c106ebdbd662d0c3d826040516118fb91906138c5565b60405180910390a25050565b60065481565b5f6119166120b1565b73ffffffffffffffffffffffffffffffffffffffff1661193461147b565b73ffffffffffffffffffffffffffffffffffffffff161461198a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198190613bdd565b60405180910390fd5b620186a0611996610e34565b6119a09190613e82565b8210156119e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d990613fb0565b60405180910390fd5b620186a06119ee610e34565b6101f46119fb9190613e14565b611a059190613e82565b821115611a47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3e9061403e565b60405180910390fd5b600754821115611a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a83906140cc565b60405180910390fd5b8160068190555060019050919050565b5f611aa56120b1565b73ffffffffffffffffffffffffffffffffffffffff16611ac361147b565b73ffffffffffffffffffffffffffffffffffffffff1614611b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1090613bdd565b60405180910390fd5b600654821015611b5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b559061415a565b60405180910390fd5b8160078190555060019050919050565b611b766120b1565b73ffffffffffffffffffffffffffffffffffffffff16611b9461147b565b73ffffffffffffffffffffffffffffffffffffffff1614611bea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be190613bdd565b60405180910390fd5b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fb84ab223ec14c96484dc94cd1b5e9325788b491e5dd2718b54adce84eeede51160405160405180910390a380600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60085f9054906101000a900460ff1681565b600a5481565b6017602052805f5260405f205f915054906101000a900460ff1681565b611ce56120b1565b73ffffffffffffffffffffffffffffffffffffffff16611d0361147b565b73ffffffffffffffffffffffffffffffffffffffff1614611d59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5090613bdd565b60405180910390fd5b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f854264b92ce4ebf173b90dbb6d1c80cb903427f5a9ec01a9b6d0bb69f1a8b0ad60405160405180910390a380600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600860019054906101000a900460ff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611eb46120b1565b73ffffffffffffffffffffffffffffffffffffffff16611ed261147b565b73ffffffffffffffffffffffffffffffffffffffff1614611f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1f90613bdd565b60405180910390fd5b8160128190555080601381905550601354601254611f469190613c28565b601181905550600c6011541115611f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8990613d33565b60405180910390fd5b5050565b611f9e6120b1565b73ffffffffffffffffffffffffffffffffffffffff16611fbc61147b565b73ffffffffffffffffffffffffffffffffffffffff1614612012576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200990613bdd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612080576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612077906141e8565b60405180910390fd5b612089816122ea565b50565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f33905090565b6120c583838360016123ad565b505050565b5f6120d58484611e2a565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146121565781811015612147578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161213e93929190613d51565b60405180910390fd5b61215584848484035f6123ad565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121cc575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016121c391906139a3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361223c575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161223391906139a3565b60405180910390fd5b61224783838361257c565b505050565b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f02d59e6bf2c101e2d8367c2a27c51357eccfebcca0d09aa27c00e24e946c0d6a60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361241d575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161241491906139a3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361248d575f6040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161248491906139a3565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015612576578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161256d91906138ed565b60405180910390a35b50505050565b5f81036125935761258e83835f613090565b61308b565b60085f9054906101000a900460ff1615612c3b576125af61147b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561261d57506125ed61147b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561265557505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561268f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126a85750600560149054906101000a900460ff16155b15612c3a57600d60149054906101000a900460ff1661279c5760165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061275c575060165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61279b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279290614250565b60405180910390fd5b5b600860019054906101000a900460ff1615612960576127b961147b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561284057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561289857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561295f5743600b5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541061291c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291390614304565b60405180910390fd5b43600b5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156129fd575060175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612aa457600a54811115612a47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3e90614392565b60405180910390fd5b600954612a5383611339565b82612a5e9190613c28565b1115612a9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a96906143fa565b60405180910390fd5b612c39565b60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612b41575060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612b9057600a54811115612b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8290614488565b60405180910390fd5b612c38565b60175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612c3757600954612bea83611339565b82612bf59190613c28565b1115612c36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2d906143fa565b60405180910390fd5b5b5b5b5b5b5f612c4530611339565b90505f6006548210159050808015612c695750600560159054906101000a900460ff165b8015612c825750600560149054906101000a900460ff16155b8015612cd5575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612d28575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612d7b575060165f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612dbe576001600560146101000a81548160ff021916908315150217905550612da36132a9565b5f600560146101000a81548160ff0219169083151502179055505b5f600560149054906101000a900460ff1615905060165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612e6d575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612e76575f90505b5f811561307b5760185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612ed457505f601154115b15612f6c57612f016064612ef36011548861346b90919063ffffffff16565b61348090919063ffffffff16565b905060115460135482612f149190613e14565b612f1e9190613e82565b60155f828254612f2e9190613c28565b9250508190555060115460125482612f469190613e14565b612f509190613e82565b60145f828254612f609190613c28565b92505081905550613058565b60185f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612fc357505f600e54115b1561305757612ff06064612fe2600e548861346b90919063ffffffff16565b61348090919063ffffffff16565b9050600e54601054826130039190613e14565b61300d9190613e82565b60155f82825461301d9190613c28565b92505081905550600e54600f54826130359190613e14565b61303f9190613e82565b60145f82825461304f9190613c28565b925050819055505b5b5f81111561306c5761306b873083613090565b5b808561307891906144a6565b94505b613086878787613090565b505050505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036130e0578060025f8282546130d49190613c28565b925050819055506131ae565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613169578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161316093929190613d51565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036131f5578060025f828254039250508190555061323f565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161329c91906138ed565b60405180910390a3505050565b5f6132b330611339565b90505f6015546014546132c69190613c28565b90505f808314806132d657505f82145b156132e357505050613469565b6007548311156132f35760075492505b5f47905061330084613495565b5f61331482476136c890919063ffffffff16565b90505f61333e856133306015548561346b90919063ffffffff16565b61348090919063ffffffff16565b90505f6014819055505f601581905550600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161339390614506565b5f6040518083038185875af1925050503d805f81146133cd576040519150601f19603f3d011682016040523d82523d5f602084013e6133d2565b606091505b505080945050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161341d90614506565b5f6040518083038185875af1925050503d805f8114613457576040519150601f19603f3d011682016040523d82523d5f602084013e61345c565b606091505b5050809450505050505050505b565b5f81836134789190613e14565b905092915050565b5f818361348d9190613e82565b905092915050565b5f600267ffffffffffffffff8111156134b1576134b061451a565b5b6040519080825280602002602001820160405280156134df5781602001602082028036833780820191505090505b50905030815f815181106134f6576134f5614547565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613599573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135bd9190614588565b816001815181106135d1576135d0614547565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613636307f0000000000000000000000000000000000000000000000000000000000000000846120b8565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016136979594939291906146a3565b5f604051808303815f87803b1580156136ae575f80fd5b505af11580156136c0573d5f803e3d5ffd5b505050505050565b5f81836136d591906144a6565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156137145780820151818401526020810190506136f9565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613739826136dd565b61374381856136e7565b93506137538185602086016136f7565b61375c8161371f565b840191505092915050565b5f6020820190508181035f83015261377f818461372f565b905092915050565b5f80fd5b5f8115159050919050565b61379f8161378b565b81146137a9575f80fd5b50565b5f813590506137ba81613796565b92915050565b5f602082840312156137d5576137d4613787565b5b5f6137e2848285016137ac565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613814826137eb565b9050919050565b6138248161380a565b811461382e575f80fd5b50565b5f8135905061383f8161381b565b92915050565b5f819050919050565b61385781613845565b8114613861575f80fd5b50565b5f813590506138728161384e565b92915050565b5f806040838503121561388e5761388d613787565b5b5f61389b85828601613831565b92505060206138ac85828601613864565b9150509250929050565b6138bf8161378b565b82525050565b5f6020820190506138d85f8301846138b6565b92915050565b6138e781613845565b82525050565b5f6020820190506139005f8301846138de565b92915050565b5f806040838503121561391c5761391b613787565b5b5f61392985828601613831565b925050602061393a858286016137ac565b9150509250929050565b5f805f6060848603121561395b5761395a613787565b5b5f61396886828701613831565b935050602061397986828701613831565b925050604061398a86828701613864565b9150509250925092565b61399d8161380a565b82525050565b5f6020820190506139b65f830184613994565b92915050565b5f60ff82169050919050565b6139d1816139bc565b82525050565b5f6020820190506139ea5f8301846139c8565b92915050565b5f60208284031215613a0557613a04613787565b5b5f613a1284828501613831565b91505092915050565b5f8060408385031215613a3157613a30613787565b5b5f613a3e85828601613864565b9250506020613a4f85828601613864565b9150509250929050565b5f819050919050565b5f613a7c613a77613a72846137eb565b613a59565b6137eb565b9050919050565b5f613a8d82613a62565b9050919050565b5f613a9e82613a83565b9050919050565b613aae81613a94565b82525050565b5f602082019050613ac75f830184613aa5565b92915050565b5f60208284031215613ae257613ae1613787565b5b5f613aef84828501613864565b91505092915050565b5f8060408385031215613b0e57613b0d613787565b5b5f613b1b85828601613831565b9250506020613b2c85828601613831565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613b7a57607f821691505b602082108103613b8d57613b8c613b36565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613bc76020836136e7565b9150613bd282613b93565b602082019050919050565b5f6020820190508181035f830152613bf481613bbb565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613c3282613845565b9150613c3d83613845565b9250828201905080821115613c5557613c54613bfb565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f5f69734465785061697200000000000000000000000000000000000000000000602082015250565b5f613cb5602a836136e7565b9150613cc082613c5b565b604082019050919050565b5f6020820190508181035f830152613ce281613ca9565b9050919050565b7f4d757374206b656570206665657320617420313225206f72206c6573730000005f82015250565b5f613d1d601d836136e7565b9150613d2882613ce9565b602082019050919050565b5f6020820190508181035f830152613d4a81613d11565b9050919050565b5f606082019050613d645f830186613994565b613d7160208301856138de565b613d7e60408301846138de565b949350505050565b7f43616e6e6f7420736574205f6d6178546f6b656e735065725472616e736665725f8201527f206c6f776572207468616e20302e322500000000000000000000000000000000602082015250565b5f613de06030836136e7565b9150613deb82613d86565b604082019050919050565b5f6020820190508181035f830152613e0d81613dd4565b9050919050565b5f613e1e82613845565b9150613e2983613845565b9250828202613e3781613845565b91508282048414831517613e4e57613e4d613bfb565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613e8c82613845565b9150613e9783613845565b925082613ea757613ea6613e55565b5b828204905092915050565b7f43616e6e6f7420736574205f6d617857616c6c657450657241646472657373205f8201527f6c6f776572207468616e20302e35250000000000000000000000000000000000602082015250565b5f613f0c602f836136e7565b9150613f1782613eb2565b604082019050919050565b5f6020820190508181035f830152613f3981613f00565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f613f9a6035836136e7565b9150613fa582613f40565b604082019050919050565b5f6020820190508181035f830152613fc781613f8e565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f6140286034836136e7565b915061403382613fce565b604082019050919050565b5f6020820190508181035f8301526140558161401c565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e205f6d6178537761706261636b4c696d697400000000000000000000000000602082015250565b5f6140b66033836136e7565b91506140c18261405c565b604082019050919050565b5f6020820190508181035f8301526140e3816140aa565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f205f6d696e537761706261636b54726573686f6c640000000000000000000000602082015250565b5f6141446035836136e7565b915061414f826140ea565b604082019050919050565b5f6020820190508181035f83015261417181614138565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6141d26026836136e7565b91506141dd82614178565b604082019050919050565b5f6020820190508181035f8301526141ff816141c6565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f61423a6016836136e7565b915061424582614206565b602082019050919050565b5f6020820190508181035f8301526142678161422e565b9050919050565b7f5f7570646174653a3a205472616e736665722044656c617920656e61626c65645f8201527f2e20204f6e6c79206f6e652070757263686173652070657220626c6f636b206160208201527f6c6c6f7765642e00000000000000000000000000000000000000000000000000604082015250565b5f6142ee6047836136e7565b91506142f98261426e565b606082019050919050565b5f6020820190508181035f83015261431b816142e2565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f5f6d6178546f6b656e735065725472616e736665722e00000000000000000000602082015250565b5f61437c6036836136e7565b915061438782614322565b604082019050919050565b5f6020820190508181035f8301526143a981614370565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6143e46013836136e7565b91506143ef826143b0565b602082019050919050565b5f6020820190508181035f830152614411816143d8565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f205f6d6178546f6b656e735065725472616e736665722e000000000000000000602082015250565b5f6144726037836136e7565b915061447d82614418565b604082019050919050565b5f6020820190508181035f83015261449f81614466565b9050919050565b5f6144b082613845565b91506144bb83613845565b92508282039050818111156144d3576144d2613bfb565b5b92915050565b5f81905092915050565b50565b5f6144f15f836144d9565b91506144fc826144e3565b5f82019050919050565b5f614510826144e6565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506145828161381b565b92915050565b5f6020828403121561459d5761459c613787565b5b5f6145aa84828501614574565b91505092915050565b5f819050919050565b5f6145d66145d16145cc846145b3565b613a59565b613845565b9050919050565b6145e6816145bc565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61461e8161380a565b82525050565b5f61462f8383614615565b60208301905092915050565b5f602082019050919050565b5f614651826145ec565b61465b81856145f6565b935061466683614606565b805f5b8381101561469657815161467d8882614624565b97506146888361463b565b925050600181019050614669565b5085935050505092915050565b5f60a0820190506146b65f8301886138de565b6146c360208301876145dd565b81810360408301526146d58186614647565b90506146e46060830185613994565b6146f160808301846138de565b969550505050505056fea2646970667358221220f212d3c26606c079b2bb4be50f4c6cb361e1318adf86b96d73a43edf2e7ad81664736f6c63430008150033