60806040526009600a6200001491906200098d565b6305f5e100620000259190620009dd565b60015561271060966001546200003c9190620009dd565b62000048919062000a54565b60025561271060966001546200005f9190620009dd565b6200006b919062000a54565b6003556127106096600154620000829190620009dd565b6200008e919062000a54565b6004555f600a60146101000a81548160ff0219169083151502179055505f600b5561015e600c556096600d555f600e555f600f556105dc601055610bb8601155610dac601255612710601355600160145f6101000a81548160ff021916908315150217905550620186a061014f6001546200010a9190620009dd565b62000116919062000a54565b601755620186a0600a6001546200012e9190620009dd565b6200013a919062000a54565b60185573833589fcd6edb6e08f4c7c32d4f71b54bda0291360195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000601e55610e1060245561271060255562055730602655348015620001c3575f80fd5b5033805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505f734752ba5dbc23f44d87826276bf6fd6b1c372ad2490505f8173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000268573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200028e919062000af0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200031a919062000af0565b6040518363ffffffff1660e01b81526004016200033992919062000b31565b6020604051808303815f875af115801562000356573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200037c919062000af0565b90508160095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f73346076156a5859ebdc9e05cacb51dbe38b07fdab73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f73b6b56a7f958514fc227b91e19d585032b675ccad73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f8073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060015460055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600154604051620007eb919062000b6d565b60405180910390a3505062000b88565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000885578086048111156200085d576200085c620007fb565b5b60018516156200086d5780820291505b80810290506200087d8562000828565b94506200083d565b94509492505050565b5f826200089f576001905062000971565b81620008ae575f905062000971565b8160018114620008c75760028114620008d25762000908565b600191505062000971565b60ff841115620008e757620008e6620007fb565b5b8360020a915084821115620009015762000900620007fb565b5b5062000971565b5060208310610133831016604e8410600b8410161715620009425782820a9050838111156200093c576200093b620007fb565b5b62000971565b62000951848484600162000834565b925090508184048111156200096b576200096a620007fb565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620009998262000978565b9150620009a68362000981565b9250620009d57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200088e565b905092915050565b5f620009e98262000978565b9150620009f68362000978565b925082820262000a068162000978565b9150828204841483151762000a205762000a1f620007fb565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000a608262000978565b915062000a6d8362000978565b92508262000a805762000a7f62000a27565b5b828204905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000aba8262000a8f565b9050919050565b62000acc8162000aae565b811462000ad7575f80fd5b50565b5f8151905062000aea8162000ac1565b92915050565b5f6020828403121562000b085762000b0762000a8b565b5b5f62000b178482850162000ada565b91505092915050565b62000b2b8162000aae565b82525050565b5f60408201905062000b465f83018562000b20565b62000b55602083018462000b20565b9392505050565b62000b678162000978565b82525050565b5f60208201905062000b825f83018462000b5c565b92915050565b6147fe8062000b965f395ff3fe6080604052600436106101fc575f3560e01c806370a082311161010c578063c942435d1161009f578063e2d6f94c1161006e578063e2d6f94c14610761578063ef43b02b14610789578063efca2eed146107b1578063f2fde38b146107db578063ffd49c841461080357610203565b8063c942435d14610695578063ca89b899146106ab578063ce7c2ac2146106e7578063dd62ed3e1461072557610203565b806395d89b41116100db57806395d89b41146105db578063997664d714610605578063a8aa1b311461062f578063a9059cbb1461065957610203565b806370a0823114610523578063893d20e81461055f5780638cd4426d146105895780639358928b146105b157610203565b80632f54bf6e1161018f5780633f4218e01161015e5780633f4218e01461042f5780634355855a1461046b57806348ff2b8b146104a75780634fab0ae8146104cf57806360e71962146104f957610203565b80632f54bf6e14610377578063313ce567146103b357806334c5d2ce146103dd5780633a98ef391461040557610203565b8063228cb733116101cb578063228cb733146102bf57806323b872dd146102e957806328fd319814610325578063293230b81461036157610203565b806306fdde0314610207578063095ea7b3146102315780630ca61cb11461026d57806318160ddd1461029557610203565b3661020357005b5f80fd5b348015610212575f80fd5b5061021b61082d565b6040516102289190613795565b60405180910390f35b34801561023c575f80fd5b5061025760048036038101906102529190613846565b61086a565b604051610264919061389e565b60405180910390f35b348015610278575f80fd5b50610293600480360381019061028e91906138b7565b610880565b005b3480156102a0575f80fd5b506102a96108e2565b6040516102b69190613916565b60405180910390f35b3480156102ca575f80fd5b506102d36108eb565b6040516102e0919061393e565b60405180910390f35b3480156102f4575f80fd5b5061030f600480360381019061030a9190613957565b610910565b60405161031c919061389e565b60405180910390f35b348015610330575f80fd5b5061034b600480360381019061034691906139a7565b6109d6565b6040516103589190613916565b60405180910390f35b34801561036c575f80fd5b50610375610ae2565b005b348015610382575f80fd5b5061039d600480360381019061039891906139a7565b610b47565b6040516103aa919061389e565b60405180910390f35b3480156103be575f80fd5b506103c7610b9e565b6040516103d491906139ed565b60405180910390f35b3480156103e8575f80fd5b5061040360048036038101906103fe91906138b7565b610ba6565b005b348015610410575f80fd5b50610419610d02565b6040516104269190613916565b60405180910390f35b34801561043a575f80fd5b50610455600480360381019061045091906139a7565b610d08565b604051610462919061389e565b60405180910390f35b348015610476575f80fd5b50610491600480360381019061048c91906139a7565b610d25565b60405161049e919061389e565b60405180910390f35b3480156104b2575f80fd5b506104cd60048036038101906104c89190613a30565b610d42565b005b3480156104da575f80fd5b506104e3610de2565b6040516104f09190613916565b60405180910390f35b348015610504575f80fd5b5061050d610de8565b60405161051a9190613916565b60405180910390f35b34801561052e575f80fd5b50610549600480360381019061054491906139a7565b610dee565b6040516105569190613916565b60405180910390f35b34801561056a575f80fd5b50610573610e34565b604051610580919061393e565b60405180910390f35b348015610594575f80fd5b506105af60048036038101906105aa9190613846565b610e5b565b005b3480156105bc575f80fd5b506105c5610f23565b6040516105d29190613916565b60405180910390f35b3480156105e6575f80fd5b506105ef610f62565b6040516105fc9190613795565b60405180910390f35b348015610610575f80fd5b50610619610f9f565b6040516106269190613916565b60405180910390f35b34801561063a575f80fd5b50610643610fa5565b604051610650919061393e565b60405180910390f35b348015610664575f80fd5b5061067f600480360381019061067a9190613846565b610fca565b60405161068c919061389e565b60405180910390f35b3480156106a0575f80fd5b506106a9610fe0565b005b3480156106b6575f80fd5b506106d160048036038101906106cc91906139a7565b610feb565b6040516106de9190613916565b60405180910390f35b3480156106f2575f80fd5b5061070d600480360381019061070891906139a7565b611039565b60405161071c93929190613a6e565b60405180910390f35b348015610730575f80fd5b5061074b60048036038101906107469190613aa3565b61105f565b6040516107589190613916565b60405180910390f35b34801561076c575f80fd5b5061078760048036038101906107829190613ae1565b6110e1565b005b348015610794575f80fd5b506107af60048036038101906107aa9190613a30565b61120b565b005b3480156107bc575f80fd5b506107c56112d3565b6040516107d29190613916565b60405180910390f35b3480156107e6575f80fd5b5061080160048036038101906107fc9190613bcd565b6112d9565b005b34801561080e575f80fd5b5061081761139a565b6040516108249190613916565b60405180910390f35b60606040518060400160405280600b81526020017f44656e4f46446567656e73000000000000000000000000000000000000000000815250905090565b5f6108763384846113a0565b6001905092915050565b61088933610b47565b6108c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bf90613c42565b60405180910390fd5b826024819055508160258190555080602681905550505050565b5f600154905090565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61091c848484611563565b6109cb84336109c6856040518060600160405280602881526020016147a16028913960065f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546118719092919063ffffffff16565b6113a0565b600190509392505050565b5f8060225f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015403610a25575f9050610add565b5f610a6e60225f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f01546118c5565b90505f60225f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101549050808211610ac5575f92505050610add565b610ad881836118f690919063ffffffff16565b925050505b919050565b610aeb33610b47565b610b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2190613c42565b60405180910390fd5b6001600a60146101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b5f6009905090565b610baf33610b47565b610bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be590613c42565b60405180910390fd5b5f61271084610bfb6108e2565b610c059190613c8d565b610c0f9190613cfb565b90505f61271084610c1e6108e2565b610c289190613c8d565b610c329190613cfb565b90505f61271084610c416108e2565b610c4b9190613c8d565b610c559190613cfb565b90508260028190555081600381905550806004819055505f610c9c6103e8610c8e6005610c806108e2565b61190b90919063ffffffff16565b61192090919063ffffffff16565b9050808410158015610cae5750808310155b8015610cba5750808210155b610cf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf090613d9b565b60405180910390fd5b50505050505050565b601a5481565b6007602052805f5260405f205f915054906101000a900460ff1681565b6008602052805f5260405f205f915054906101000a900460ff1681565b610d4b33610b47565b610d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8190613c42565b60405180910390fd5b8060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60255481565b60265481565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e6433610b47565b610ea3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9a90613c42565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610ede929190613db9565b6020604051808303815f875af1158015610efa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f1e9190613df4565b505050565b5f610f5d610f305f610dee565b610f4f610f3e61dead610dee565b6001546118f690919063ffffffff16565b6118f690919063ffffffff16565b905090565b60606040518060400160405280600381526020017f444f440000000000000000000000000000000000000000000000000000000000815250905090565b601b5481565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610fd6338484611563565b6001905092915050565b610fe933611935565b565b5f8082905060225f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060020154915050919050565b6022602052805f5260405f205f91509050805f0154908060010154908060020154905083565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6110ea33610b47565b611129576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112090613c42565b60405180910390fd5b87600b8190555086600c8190555085600f8190555084600d8190555083600e81905550826010819055508160118190555080601281905550611177600560135461192090919063ffffffff16565b6010541115801561119f5750611199600560135461192090919063ffffffff16565b60115411155b80156111c257506111bc600560135461192090919063ffffffff16565b60125411155b611201576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f890613e8f565b60405180910390fd5b5050505050505050565b61121433610b47565b611253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124a90613c42565b60405180910390fd5b8060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080156112bc576112b7825f611bb3565b6112cf565b6112ce826112c984610dee565b611bb3565b5b5050565b601c5481565b6112e233610b47565b611321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131890613c42565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161138f9190613f08565b60405180910390a150565b60245481565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361140e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140590613f91565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361147c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114739061401f565b60405180910390fd5b8060065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115569190613916565b60405180910390a3505050565b61156e838383611db0565b6115788383611f1e565b611583838383612015565b61158d83836121e5565b6115988383836122ab565b6115a38383836124d3565b6115f38160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546118f690919063ffffffff16565b60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f61163f84846124fb565b6116495781611655565b6116548484846125a2565b5b90506116a78160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461274390919063ffffffff16565b60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516117459190613916565b60405180910390a360085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166117ae576117ad846117a886610dee565b611bb3565b5b60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661180f5761180e8361180985610dee565b611bb3565b5b5f60225f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015411156118605761185f83611935565b5b61186b602654612758565b50505050565b5f8383111582906118b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118af9190613795565b60405180910390fd5b5082840390509392505050565b5f6118ef601e546118e1601d548561190b90919063ffffffff16565b61192090919063ffffffff16565b9050919050565b5f8183611903919061403d565b905092915050565b5f81836119189190613c8d565b905092915050565b5f818361192d9190613cfb565b905092915050565b5f60225f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f01540315611bb0575f611986826109d6565b90505f811115611bae576119a581601c5461274390919063ffffffff16565b601c8190555060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401611a07929190613db9565b6020604051808303815f875af1158015611a23573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a479190613df4565b504260215f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611add8160225f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206002015461274390919063ffffffff16565b60225f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060020181905550611b6960225f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f01546118c5565b60225f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101819055505b505b50565b5f81118015611c0057505f60225f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154145b15611c1357611c0e82612887565b611c70565b5f81148015611c6057505f60225f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154115b15611c6f57611c6e82612931565b5b5b611cd681611cc860225f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154601a546118f690919063ffffffff16565b61274390919063ffffffff16565b601a819055508060225f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0181905550611d6860225f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f01546118c5565b60225f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101819055505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e15906140e0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e839061416e565b60405180910390fd5b5f8111611ece576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec5906141fc565b60405180910390fd5b611ed783610dee565b811115611f19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f109061428a565b60405180910390fd5b505050565b60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611fbc575060075f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561201157600a60149054906101000a900460ff16612010576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612007906142f2565b60405180910390fd5b5b5050565b60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156120b3575060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561210c5750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612146575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156121e05760045461219e8260055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461274390919063ffffffff16565b11156121df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d69061435a565b60405180910390fd5b5b505050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148015612288575060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156122a757600160155f82825461229f9190614378565b925050819055505b5050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146123e75760035481111580612356575060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806123a7575060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6123e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123dd906143f5565b60405180910390fd5b5b6002548111158061243e575060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8061248f575060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6124ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c5906143f5565b60405180910390fd5b505050565b6124de838383612b26565b156124f6576124ee601754612c57565b5f6015819055505b505050565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561259a575060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b905092915050565b5f806125ae8585612ee0565b1115612738575f6125e56125c28686612ee0565b6125d76013548661192090919063ffffffff16565b61190b90919063ffffffff16565b90506126378160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461274390919063ffffffff16565b60055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516126d59190613916565b60405180910390a35f600f54111561271d5761271c3061dead612717600f546127096013548961192090919063ffffffff16565b61190b90919063ffffffff16565b611563565b5b61273081846118f690919063ffffffff16565b91505061273c565b8190505b9392505050565b5f81836127509190614378565b905092915050565b5f601f8054905090505f810361276e5750612884565b5f805a90505f5b848310801561278357508381105b1561287f578360235410612799575f6023819055505b6127df601f602354815481106127b2576127b1614413565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612fa9565b1561282b5761282a601f602354815481106127fd576127fc614413565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611935565b5b6128506128415a846118f690919063ffffffff16565b8461274390919063ffffffff16565b92505a915060235f81548092919061286790614440565b9190505550808061287790614440565b915050612775565b505050505b50565b601f8054905060205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550601f81908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601f6001601f80549050612945919061403d565b8154811061295657612955614413565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601f60205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054815481106129cf576129ce614413565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060205f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460205f601f6001601f80549050612a69919061403d565b81548110612a7a57612a79614413565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550601f805480612af157612af0614487565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b5f8060185483101590505f601754612b3d30610dee565b1015905060165f9054906101000a900460ff16158015612b68575060145f9054906101000a900460ff165b8015612b805750600a60149054906101000a900460ff165b8015612b895750815b8015612bdc575060075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612c345750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015612c435750600260155410155b8015612c4c5750805b925050509392505050565b600160165f6101000a81548160ff0219169083151502179055505f612cd76002612cc9600d54612cbb600e54612cad600c54612c9f6001600b5461274390919063ffffffff16565b61274390919063ffffffff16565b61274390919063ffffffff16565b61274390919063ffffffff16565b61190b90919063ffffffff16565b90505f612d0182612cf3600b548661190b90919063ffffffff16565b61192090919063ffffffff16565b90505f612d1782856118f690919063ffffffff16565b90505f479050612d2682613013565b5f612d3a82476118f690919063ffffffff16565b90505f612d64612d55600b54886118f690919063ffffffff16565b8361192090919063ffffffff16565b90505f612d7c600b548361190b90919063ffffffff16565b90505f811115612d9157612d908682613249565b5b5f612dba600c54612dac60028661190b90919063ffffffff16565b61190b90919063ffffffff16565b90505f811115612e1d5773b6b56a7f958514fc227b91e19d585032b675ccad73ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612e1b573d5f803e3d5ffd5b505b5f612e46600d54612e3860028761190b90919063ffffffff16565b61190b90919063ffffffff16565b90505f811115612e5a57612e5981613336565b5b5f471115612ebb5773346076156a5859ebdc9e05cacb51dbe38b07fdab73ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015612eb9573d5f803e3d5ffd5b505b5050505050505050505f60165f6101000a81548160ff02191690831515021790555050565b5f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f3f576011549050612fa3565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f9d576010549050612fa3565b60125490505b92915050565b5f4260245460215f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612ff69190614378565b10801561300c575060255461300a836109d6565b115b9050919050565b5f600267ffffffffffffffff81111561302f5761302e6144b4565b5b60405190808252806020026020018201604052801561305d5781602001602082028036833780820191505090505b50905030815f8151811061307457613073614413565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613118573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061313c91906144f5565b816001815181106131505761314f614413565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506131b63060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113a0565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613218959493929190614610565b5f604051808303815f87803b15801561322f575f80fd5b505af1158015613241573d5f803e3d5ffd5b505050505050565b6132753060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113a0565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8073346076156a5859ebdc9e05cacb51dbe38b07fdab426040518863ffffffff1660e01b81526004016132ee96959493929190614668565b60606040518083038185885af115801561330a573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061332f91906146db565b5050505050565b5f60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613391919061393e565b602060405180830381865afa1580156133ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133d0919061472b565b90505f600267ffffffffffffffff8111156133ee576133ed6144b4565b5b60405190808252806020026020018201604052801561341c5781602001602082028036833780820191505090505b50905060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613489573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134ad91906144f5565b815f815181106134c0576134bf614413565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106135305761352f614413565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de95845f8430426040518663ffffffff1660e01b81526004016135cb9493929190614756565b5f604051808303818588803b1580156135e2575f80fd5b505af11580156135f4573d5f803e3d5ffd5b50505050505f6136a58360195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613658919061393e565b602060405180830381865afa158015613673573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613697919061472b565b6118f690919063ffffffff16565b90506136bc81601b5461274390919063ffffffff16565b601b819055506136ff6136ee601a546136e084601e5461190b90919063ffffffff16565b61192090919063ffffffff16565b601d5461274390919063ffffffff16565b601d8190555050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613742578082015181840152602081019050613727565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6137678261370b565b6137718185613715565b9350613781818560208601613725565b61378a8161374d565b840191505092915050565b5f6020820190508181035f8301526137ad818461375d565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6137e2826137b9565b9050919050565b6137f2816137d8565b81146137fc575f80fd5b50565b5f8135905061380d816137e9565b92915050565b5f819050919050565b61382581613813565b811461382f575f80fd5b50565b5f813590506138408161381c565b92915050565b5f806040838503121561385c5761385b6137b5565b5b5f613869858286016137ff565b925050602061387a85828601613832565b9150509250929050565b5f8115159050919050565b61389881613884565b82525050565b5f6020820190506138b15f83018461388f565b92915050565b5f805f606084860312156138ce576138cd6137b5565b5b5f6138db86828701613832565b93505060206138ec86828701613832565b92505060406138fd86828701613832565b9150509250925092565b61391081613813565b82525050565b5f6020820190506139295f830184613907565b92915050565b613938816137d8565b82525050565b5f6020820190506139515f83018461392f565b92915050565b5f805f6060848603121561396e5761396d6137b5565b5b5f61397b868287016137ff565b935050602061398c868287016137ff565b925050604061399d86828701613832565b9150509250925092565b5f602082840312156139bc576139bb6137b5565b5b5f6139c9848285016137ff565b91505092915050565b5f60ff82169050919050565b6139e7816139d2565b82525050565b5f602082019050613a005f8301846139de565b92915050565b613a0f81613884565b8114613a19575f80fd5b50565b5f81359050613a2a81613a06565b92915050565b5f8060408385031215613a4657613a456137b5565b5b5f613a53858286016137ff565b9250506020613a6485828601613a1c565b9150509250929050565b5f606082019050613a815f830186613907565b613a8e6020830185613907565b613a9b6040830184613907565b949350505050565b5f8060408385031215613ab957613ab86137b5565b5b5f613ac6858286016137ff565b9250506020613ad7858286016137ff565b9150509250929050565b5f805f805f805f80610100898b031215613afe57613afd6137b5565b5b5f613b0b8b828c01613832565b9850506020613b1c8b828c01613832565b9750506040613b2d8b828c01613832565b9650506060613b3e8b828c01613832565b9550506080613b4f8b828c01613832565b94505060a0613b608b828c01613832565b93505060c0613b718b828c01613832565b92505060e0613b828b828c01613832565b9150509295985092959890939650565b5f613b9c826137b9565b9050919050565b613bac81613b92565b8114613bb6575f80fd5b50565b5f81359050613bc781613ba3565b92915050565b5f60208284031215613be257613be16137b5565b5b5f613bef84828501613bb9565b91505092915050565b7f214f574e455200000000000000000000000000000000000000000000000000005f82015250565b5f613c2c600683613715565b9150613c3782613bf8565b602082019050919050565b5f6020820190508181035f830152613c5981613c20565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613c9782613813565b9150613ca283613813565b9250828202613cb081613813565b91508282048414831517613cc757613cc6613c60565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613d0582613813565b9150613d1083613813565b925082613d2057613d1f613cce565b5b828204905092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f742062655f8201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b5f613d85602e83613715565b9150613d9082613d2b565b604082019050919050565b5f6020820190508181035f830152613db281613d79565b9050919050565b5f604082019050613dcc5f83018561392f565b613dd96020830184613907565b9392505050565b5f81519050613dee81613a06565b92915050565b5f60208284031215613e0957613e086137b5565b5b5f613e1684828501613de0565b91505092915050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d5f8201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b5f613e79602c83613715565b9150613e8482613e1f565b604082019050919050565b5f6020820190508181035f830152613ea681613e6d565b9050919050565b5f819050919050565b5f613ed0613ecb613ec6846137b9565b613ead565b6137b9565b9050919050565b5f613ee182613eb6565b9050919050565b5f613ef282613ed7565b9050919050565b613f0281613ee8565b82525050565b5f602082019050613f1b5f830184613ef9565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613f7b602483613715565b9150613f8682613f21565b604082019050919050565b5f6020820190508181035f830152613fa881613f6f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614009602283613715565b915061401482613faf565b604082019050919050565b5f6020820190508181035f83015261403681613ffd565b9050919050565b5f61404782613813565b915061405283613813565b925082820390508181111561406a57614069613c60565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6140ca602583613715565b91506140d582614070565b604082019050919050565b5f6020820190508181035f8301526140f7816140be565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614158602383613715565b9150614163826140fe565b604082019050919050565b5f6020820190508181035f8301526141858161414c565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6141e6602983613715565b91506141f18261418c565b604082019050919050565b5f6020820190508181035f830152614213816141da565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f7265205f8201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b5f614274603183613715565b915061427f8261421a565b604082019050919050565b5f6020820190508181035f8301526142a181614268565b9050919050565b7f74726164696e67416c6c6f7765640000000000000000000000000000000000005f82015250565b5f6142dc600e83613715565b91506142e7826142a8565b602082019050919050565b5f6020820190508181035f830152614309816142d0565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00005f82015250565b5f614344601e83613715565b915061434f82614310565b602082019050919050565b5f6020820190508181035f83015261437181614338565b9050919050565b5f61438282613813565b915061438d83613813565b92508282019050808211156143a5576143a4613c60565b5b92915050565b7f5458204c696d69742045786365656465640000000000000000000000000000005f82015250565b5f6143df601183613715565b91506143ea826143ab565b602082019050919050565b5f6020820190508181035f83015261440c816143d3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61444a82613813565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361447c5761447b613c60565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506144ef816137e9565b92915050565b5f6020828403121561450a576145096137b5565b5b5f614517848285016144e1565b91505092915050565b5f819050919050565b5f61454361453e61453984614520565b613ead565b613813565b9050919050565b61455381614529565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61458b816137d8565b82525050565b5f61459c8383614582565b60208301905092915050565b5f602082019050919050565b5f6145be82614559565b6145c88185614563565b93506145d383614573565b805f5b838110156146035781516145ea8882614591565b97506145f5836145a8565b9250506001810190506145d6565b5085935050505092915050565b5f60a0820190506146235f830188613907565b614630602083018761454a565b818103604083015261464281866145b4565b9050614651606083018561392f565b61465e6080830184613907565b9695505050505050565b5f60c08201905061467b5f83018961392f565b6146886020830188613907565b614695604083018761454a565b6146a2606083018661454a565b6146af608083018561392f565b6146bc60a0830184613907565b979650505050505050565b5f815190506146d58161381c565b92915050565b5f805f606084860312156146f2576146f16137b5565b5b5f6146ff868287016146c7565b9350506020614710868287016146c7565b9250506040614721868287016146c7565b9150509250925092565b5f602082840312156147405761473f6137b5565b5b5f61474d848285016146c7565b91505092915050565b5f6080820190506147695f83018761454a565b818103602083015261477b81866145b4565b905061478a604083018561392f565b6147976060830184613907565b9594505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b9191fa380aade08c009ca127fddca800418279ce44d7cd4c054eb3c564e175e64736f6c63430008170033