0x60806040526009600a610012919061088d565b64174876e80061002291906108d7565b6001555f600760146101000a81548160ff0219169083151502179055506001600760156101000a81548160ff0219169083151502179055506001600a55620186a06103e860015461007391906108d7565b61007d9190610945565b600b55620186a0600a60015461009391906108d7565b61009d9190610945565b600c555f600d555f600e556103e8600f555f60105561083460115561083460125561083460135561271060145573edf646b301f0aab814af6cedf4f7a3cbff746be360155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073edf646b301f0aab814af6cedf4f7a3cbff746be360165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073edf646b301f0aab814af6cedf4f7a3cbff746be360175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061271060966001546101d891906108d7565b6101e29190610945565b60185561271060966001546101f791906108d7565b6102019190610945565b601955612710609660015461021691906108d7565b6102209190610945565b601a5534801561022e575f80fd5b5033805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f8173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102f691906109d3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561035b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061037f91906109d3565b6040518363ffffffff1660e01b815260040161039c929190610a0d565b6020604051808303815f875af11580156103b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103dc91906109d3565b90508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060015460025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60015460405161070d9190610a43565b60405180910390a35050610a5c565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561079e5780860481111561077a5761077961071c565b5b60018516156107895780820291505b808102905061079785610749565b945061075e565b94509492505050565b5f826107b65760019050610871565b816107c3575f9050610871565b81600181146107d957600281146107e357610812565b6001915050610871565b60ff8411156107f5576107f461071c565b5b8360020a91508482111561080c5761080b61071c565b5b50610871565b5060208310610133831016604e8410600b84101617156108475782820a9050838111156108425761084161071c565b5b610871565b6108548484846001610755565b9250905081840481111561086b5761086a61071c565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f61089782610878565b91506108a283610881565b92506108cf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846107a7565b905092915050565b5f6108e182610878565b91506108ec83610878565b92508282026108fa81610878565b915082820484148315176109115761091061071c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61094f82610878565b915061095a83610878565b92508261096a57610969610918565b5b828204905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6109a282610979565b9050919050565b6109b281610998565b81146109bc575f80fd5b50565b5f815190506109cd816109a9565b92915050565b5f602082840312156109e8576109e7610975565b5b5f6109f5848285016109bf565b91505092915050565b610a0781610998565b82525050565b5f604082019050610a205f8301856109fe565b610a2d60208301846109fe565b9392505050565b610a3d81610878565b82525050565b5f602082019050610a565f830184610a34565b92915050565b61394280610a695f395ff3fe608060405260043610610184575f3560e01c80637c9f5bfd116100d0578063a8aa1b3111610089578063c9567bf911610063578063c9567bf914610577578063da1473051461058d578063dd62ed3e146105b5578063f2fde38b146105f15761018b565b8063a8aa1b31146104e9578063a9059cbb14610513578063b9c12a8b1461054f5761018b565b80637c9f5bfd146103f15780637cca52fe146104195780637d1db4a514610443578063893d20e81461046d5780638cd4426d1461049757806395d89b41146104bf5761018b565b8063313ce5671161013d57806348ff2b8b1161011757806348ff2b8b1461034d57806351bc3c851461037557806370a082311461038b57806378109e54146103c75761018b565b8063313ce567146102bf578063334c1439146102e95780633f4218e0146103115761018b565b806303db7abc1461018f57806306fdde03146101b7578063095ea7b3146101e157806318160ddd1461021d57806323b872dd146102475780632f54bf6e146102835761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101b560048036038101906101b0919061298a565b610619565b005b3480156101c2575f80fd5b506101cb6106fc565b6040516101d89190612a57565b60405180910390f35b3480156101ec575f80fd5b5061020760048036038101906102029190612b04565b610739565b6040516102149190612b51565b60405180910390f35b348015610228575f80fd5b5061023161074f565b60405161023e9190612b79565b60405180910390f35b348015610252575f80fd5b5061026d60048036038101906102689190612b92565b61078e565b60405161027a9190612b51565b60405180910390f35b34801561028e575f80fd5b506102a960048036038101906102a49190612be2565b610854565b6040516102b69190612b51565b60405180910390f35b3480156102ca575f80fd5b506102d36108ab565b6040516102e09190612c28565b60405180910390f35b3480156102f4575f80fd5b5061030f600480360381019061030a9190612c41565b6108b3565b005b34801561031c575f80fd5b5061033760048036038101906103329190612be2565b610abf565b6040516103449190612b51565b60405180910390f35b348015610358575f80fd5b50610373600480360381019061036e9190612c91565b610adc565b005b348015610380575f80fd5b50610389610b7c565b005b348015610396575f80fd5b506103b160048036038101906103ac9190612be2565b610bd1565b6040516103be9190612b79565b60405180910390f35b3480156103d2575f80fd5b506103db610c17565b6040516103e89190612b79565b60405180910390f35b3480156103fc575f80fd5b5061041760048036038101906104129190612ccf565b610c1d565b005b348015610424575f80fd5b5061042d610d3f565b60405161043a9190612b79565b60405180910390f35b34801561044e575f80fd5b50610457610d45565b6040516104649190612b79565b60405180910390f35b348015610478575f80fd5b50610481610d4b565b60405161048e9190612d7b565b60405180910390f35b3480156104a2575f80fd5b506104bd60048036038101906104b89190612b04565b610d72565b005b3480156104ca575f80fd5b506104d3610efc565b6040516104e09190612a57565b60405180910390f35b3480156104f4575f80fd5b506104fd610f39565b60405161050a9190612d7b565b60405180910390f35b34801561051e575f80fd5b5061053960048036038101906105349190612b04565b610f5e565b6040516105469190612b51565b60405180910390f35b34801561055a575f80fd5b5061057560048036038101906105709190612d94565b610f74565b005b348015610582575f80fd5b5061058b6110eb565b005b348015610598575f80fd5b506105b360048036038101906105ae9190612d94565b611150565b005b3480156105c0575f80fd5b506105db60048036038101906105d69190612de4565b611204565b6040516105e89190612b79565b60405180910390f35b3480156105fc575f80fd5b5061061760048036038101906106129190612e5d565b611286565b005b61062233610854565b610661576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065890612ed2565b60405180910390fd5b5f5b838390508110156106f6578160055f86868581811061068557610684612ef0565b5b905060200201602081019061069a9190612be2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610663565b50505050565b60606040518060400160405280601281526020017f736368697a6f6d617878696e672d70696c6c0000000000000000000000000000815250905090565b5f610745338484611347565b6001905092915050565b5f61078961075c5f610bd1565b61077b61076a61dead610bd1565b60015461150a90919063ffffffff16565b61150a90919063ffffffff16565b905090565b5f61079a84848461151f565b6108498433610844856040518060600160405280602881526020016138e56028913960035f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611dbc9092919063ffffffff16565b611347565b600190509392505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b5f6009905090565b6108bc33610854565b6108fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f290612ed2565b60405180910390fd5b8260165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505050565b6004602052805f5260405f205f915054906101000a900460ff1681565b610ae533610854565b610b24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1b90612ed2565b60405180910390fd5b8060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b610b8533610854565b610bc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbb90612ed2565b60405180910390fd5b610bcf600b54611e10565b565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b601a5481565b610c2633610854565b610c65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5c90612ed2565b60405180910390fd5b86600d8190555085600e819055508460108190555083600f81905550826011819055508160128190555080601381905550610cac600160145461206690919063ffffffff16565b60115411158015610cd45750610cce600160145461206690919063ffffffff16565b60125411155b8015610cf75750610cf1600160145461206690919063ffffffff16565b60135411155b610d36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2d90612f8d565b60405180910390fd5b50505050505050565b60195481565b60185481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610d7b33610854565b610dba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db190612ed2565b60405180910390fd5b5f610e586064610e4a848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610dfd9190612d7b565b602060405180830381865afa158015610e18573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e3c9190612fbf565b61207b90919063ffffffff16565b61206690919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610eb6929190612fea565b6020604051808303815f875af1158015610ed2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ef69190613025565b50505050565b60606040518060400160405280600a81526020017f736368697a6f50494c4c00000000000000000000000000000000000000000000815250905090565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610f6a33848461151f565b6001905092915050565b610f7d33610854565b610fbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb390612ed2565b60405180910390fd5b5f610fe6612710610fd88660015461207b90919063ffffffff16565b61206690919063ffffffff16565b90505f6110126127106110048660015461207b90919063ffffffff16565b61206690919063ffffffff16565b90505f61103e6127106110308660015461207b90919063ffffffff16565b61206690919063ffffffff16565b9050826018819055508160198190555080601a819055505f6110856103e8611077600561106961074f565b61207b90919063ffffffff16565b61206690919063ffffffff16565b90508084101580156110975750808310155b80156110a35750808210155b6110e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d9906130c0565b60405180910390fd5b50505050505050565b6110f433610854565b611133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112a90612ed2565b60405180910390fd5b6001600760146101000a81548160ff021916908315150217905550565b61115933610854565b611198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118f90612ed2565b60405180910390fd5b82600a819055506111c9620186a06111bb8460015461207b90919063ffffffff16565b61206690919063ffffffff16565b600b819055506111f9620186a06111eb8360015461207b90919063ffffffff16565b61206690919063ffffffff16565b600c81905550505050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61128f33610854565b6112ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c590612ed2565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161133c9190613139565b60405180910390a150565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ac906131c2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611423576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141a90613250565b60405180910390fd5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114fd9190612b79565b60405180910390a3505050565b5f8183611517919061329b565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361158d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115849061333e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f2906133cc565b60405180910390fd5b61160483610bd1565b811115611646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163d9061345a565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156116e4575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561173957600760149054906101000a900460ff16611738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172f906134c2565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156117d7575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611830575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561186a575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561190457601a546118c28260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461209090919063ffffffff16565b1115611903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fa9061352a565b60405180910390fd5b5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a4057601954811115806119af575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611a00575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3690613592565b60405180910390fd5b5b60185481111580611a97575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611ae8575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611b27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1e90613592565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611bca575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611be957600160085f828254611be191906135b0565b925050819055505b611bf48383836120a5565b15611c0c57611c04600b54611e10565b5f6008819055505b611c5c8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461150a90919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f611ca884846121d8565b611cb25781611cbe565b611cbd84848461227f565b5b9050611d108160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461209090919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611dae9190612b79565b60405180910390a350505050565b5f838311158290611e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfa9190612a57565b60405180910390fd5b5082840390509392505050565b600160095f6101000a81548160ff0219169083151502179055505f611e7c6002611e6e600f54611e60600e54611e526001600d5461209090919063ffffffff16565b61209090919063ffffffff16565b61209090919063ffffffff16565b61207b90919063ffffffff16565b90505f611ea682611e98600d548661207b90919063ffffffff16565b61206690919063ffffffff16565b90505f611ebc828561150a90919063ffffffff16565b90505f479050611ecb82612436565b5f611edf824761150a90919063ffffffff16565b90505f611f09611efa600d548861150a90919063ffffffff16565b8361206690919063ffffffff16565b90505f611f21600d548361207b90919063ffffffff16565b90505f811115611f3657611f35868261266c565b5b5f611f5f600e54611f5160028661207b90919063ffffffff16565b61207b90919063ffffffff16565b90505f811115611fcf5760165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611fcd573d5f803e3d5ffd5b505b5f4790505f8111156120415760155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561203f573d5f803e3d5ffd5b505b5050505050505050505f60095f6101000a81548160ff02191690831515021790555050565b5f81836120739190613610565b905092915050565b5f81836120889190613640565b905092915050565b5f818361209d91906135b0565b905092915050565b5f80600c5483101590505f600b546120bc30610bd1565b1015905060095f9054906101000a900460ff161580156120e85750600760159054906101000a900460ff165b80156121005750600760149054906101000a900460ff165b80156121095750815b801561215c575060045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156121b4575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80156121c45750600a5460085410155b80156121cd5750805b925050509392505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612277575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b905092915050565b5f8061228b8585612766565b111561242b575f6122c261229f8686612766565b6122b46014548661206690919063ffffffff16565b61207b90919063ffffffff16565b90506123148160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461209090919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123b29190612b79565b60405180910390a35f6010541180156123d557506010546123d38686612766565b115b156124105761240f3061dead61240a6010546123fc6014548961206690919063ffffffff16565b61207b90919063ffffffff16565b61151f565b5b612423818461150a90919063ffffffff16565b91505061242f565b8190505b9392505050565b5f600267ffffffffffffffff81111561245257612451613681565b5b6040519080825280602002602001820160405280156124805781602001602082028036833780820191505090505b50905030815f8151811061249757612496612ef0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561253b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061255f91906136c2565b8160018151811061257357612572612ef0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125d93060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611347565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161263b9594939291906137dd565b5f604051808303815f87803b158015612652575f80fd5b505af1158015612664573d5f803e3d5ffd5b505050505050565b6126983060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611347565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161271e96959493929190613835565b60606040518083038185885af115801561273a573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061275f9190613894565b5050505050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612802575060055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156128245761281d606460145461150a90919063ffffffff16565b90506128e6565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128825760125490506128e6565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128e05760115490506128e6565b60135490505b92915050565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612915576129146128f4565b5b8235905067ffffffffffffffff811115612932576129316128f8565b5b60208301915083602082028301111561294e5761294d6128fc565b5b9250929050565b5f8115159050919050565b61296981612955565b8114612973575f80fd5b50565b5f8135905061298481612960565b92915050565b5f805f604084860312156129a1576129a06128ec565b5b5f84013567ffffffffffffffff8111156129be576129bd6128f0565b5b6129ca86828701612900565b935093505060206129dd86828701612976565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612a29826129e7565b612a3381856129f1565b9350612a43818560208601612a01565b612a4c81612a0f565b840191505092915050565b5f6020820190508181035f830152612a6f8184612a1f565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612aa082612a77565b9050919050565b612ab081612a96565b8114612aba575f80fd5b50565b5f81359050612acb81612aa7565b92915050565b5f819050919050565b612ae381612ad1565b8114612aed575f80fd5b50565b5f81359050612afe81612ada565b92915050565b5f8060408385031215612b1a57612b196128ec565b5b5f612b2785828601612abd565b9250506020612b3885828601612af0565b9150509250929050565b612b4b81612955565b82525050565b5f602082019050612b645f830184612b42565b92915050565b612b7381612ad1565b82525050565b5f602082019050612b8c5f830184612b6a565b92915050565b5f805f60608486031215612ba957612ba86128ec565b5b5f612bb686828701612abd565b9350506020612bc786828701612abd565b9250506040612bd886828701612af0565b9150509250925092565b5f60208284031215612bf757612bf66128ec565b5b5f612c0484828501612abd565b91505092915050565b5f60ff82169050919050565b612c2281612c0d565b82525050565b5f602082019050612c3b5f830184612c19565b92915050565b5f805f60608486031215612c5857612c576128ec565b5b5f612c6586828701612abd565b9350506020612c7686828701612abd565b9250506040612c8786828701612abd565b9150509250925092565b5f8060408385031215612ca757612ca66128ec565b5b5f612cb485828601612abd565b9250506020612cc585828601612976565b9150509250929050565b5f805f805f805f60e0888a031215612cea57612ce96128ec565b5b5f612cf78a828b01612af0565b9750506020612d088a828b01612af0565b9650506040612d198a828b01612af0565b9550506060612d2a8a828b01612af0565b9450506080612d3b8a828b01612af0565b93505060a0612d4c8a828b01612af0565b92505060c0612d5d8a828b01612af0565b91505092959891949750929550565b612d7581612a96565b82525050565b5f602082019050612d8e5f830184612d6c565b92915050565b5f805f60608486031215612dab57612daa6128ec565b5b5f612db886828701612af0565b9350506020612dc986828701612af0565b9250506040612dda86828701612af0565b9150509250925092565b5f8060408385031215612dfa57612df96128ec565b5b5f612e0785828601612abd565b9250506020612e1885828601612abd565b9150509250929050565b5f612e2c82612a77565b9050919050565b612e3c81612e22565b8114612e46575f80fd5b50565b5f81359050612e5781612e33565b92915050565b5f60208284031215612e7257612e716128ec565b5b5f612e7f84828501612e49565b91505092915050565b7f214f574e455200000000000000000000000000000000000000000000000000005f82015250565b5f612ebc6006836129f1565b9150612ec782612e88565b602082019050919050565b5f6020820190508181035f830152612ee981612eb0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d5f8201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b5f612f77602c836129f1565b9150612f8282612f1d565b604082019050919050565b5f6020820190508181035f830152612fa481612f6b565b9050919050565b5f81519050612fb981612ada565b92915050565b5f60208284031215612fd457612fd36128ec565b5b5f612fe184828501612fab565b91505092915050565b5f604082019050612ffd5f830185612d6c565b61300a6020830184612b6a565b9392505050565b5f8151905061301f81612960565b92915050565b5f6020828403121561303a576130396128ec565b5b5f61304784828501613011565b91505092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f742062655f8201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b5f6130aa602e836129f1565b91506130b582613050565b604082019050919050565b5f6020820190508181035f8301526130d78161309e565b9050919050565b5f819050919050565b5f6131016130fc6130f784612a77565b6130de565b612a77565b9050919050565b5f613112826130e7565b9050919050565b5f61312382613108565b9050919050565b61313381613119565b82525050565b5f60208201905061314c5f83018461312a565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6131ac6024836129f1565b91506131b782613152565b604082019050919050565b5f6020820190508181035f8301526131d9816131a0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61323a6022836129f1565b9150613245826131e0565b604082019050919050565b5f6020820190508181035f8301526132678161322e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6132a582612ad1565b91506132b083612ad1565b92508282039050818111156132c8576132c761326e565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6133286025836129f1565b9150613333826132ce565b604082019050919050565b5f6020820190508181035f8301526133558161331c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6133b66023836129f1565b91506133c18261335c565b604082019050919050565b5f6020820190508181035f8301526133e3816133aa565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f7265205f8201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b5f6134446031836129f1565b915061344f826133ea565b604082019050919050565b5f6020820190508181035f83015261347181613438565b9050919050565b7f74726164696e67416c6c6f7765640000000000000000000000000000000000005f82015250565b5f6134ac600e836129f1565b91506134b782613478565b602082019050919050565b5f6020820190508181035f8301526134d9816134a0565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00005f82015250565b5f613514601e836129f1565b915061351f826134e0565b602082019050919050565b5f6020820190508181035f83015261354181613508565b9050919050565b7f5458204c696d69742045786365656465640000000000000000000000000000005f82015250565b5f61357c6011836129f1565b915061358782613548565b602082019050919050565b5f6020820190508181035f8301526135a981613570565b9050919050565b5f6135ba82612ad1565b91506135c583612ad1565b92508282019050808211156135dd576135dc61326e565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61361a82612ad1565b915061362583612ad1565b925082613635576136346135e3565b5b828204905092915050565b5f61364a82612ad1565b915061365583612ad1565b925082820261366381612ad1565b9150828204841483151761367a5761367961326e565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506136bc81612aa7565b92915050565b5f602082840312156136d7576136d66128ec565b5b5f6136e4848285016136ae565b91505092915050565b5f819050919050565b5f61371061370b613706846136ed565b6130de565b612ad1565b9050919050565b613720816136f6565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61375881612a96565b82525050565b5f613769838361374f565b60208301905092915050565b5f602082019050919050565b5f61378b82613726565b6137958185613730565b93506137a083613740565b805f5b838110156137d05781516137b7888261375e565b97506137c283613775565b9250506001810190506137a3565b5085935050505092915050565b5f60a0820190506137f05f830188612b6a565b6137fd6020830187613717565b818103604083015261380f8186613781565b905061381e6060830185612d6c565b61382b6080830184612b6a565b9695505050505050565b5f60c0820190506138485f830189612d6c565b6138556020830188612b6a565b6138626040830187613717565b61386f6060830186613717565b61387c6080830185612d6c565b61388960a0830184612b6a565b979650505050505050565b5f805f606084860312156138ab576138aa6128ec565b5b5f6138b886828701612fab565b93505060206138c986828701612fab565b92505060406138da86828701612fab565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220255e46c2c5bf2dd70d3ff9db988d6359936e94d223cc7d2a7ca9d6d286983ec364736f6c63430008190033