60806040527380e4929c869102140e69550bbecc20bed61b080c600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006657600080fd5b506040518060400160405280600c81526020017f536d6f6b696e67204170657300000000000000000000000000000000000000008152506040518060400160405280600281526020017f53410000000000000000000000000000000000000000000000000000000000008152508160009080519060200190620000eb9291906200079a565b508060019080519060200190620001049291906200079a565b505050620001276200011b6200021460201b60201c565b6200021c60201b60201c565b600060088190555061022b6009819055506040518060400160405280600a81526020017f697066733a2f2f2e2e2f00000000000000000000000000000000000000000000815250600a9080519060200190620001859291906200079a565b5062000199336000620002e260201b60201c565b6001600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620001eb919062000a52565b9250508190555060016008600082825462000207919062000a52565b9250508190555062000cb4565b600033905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620003048282604051806020016040528060008152506200030860201b60201c565b5050565b6200031a83836200037660201b60201c565b6200032f60008484846200055c60201b60201c565b62000371576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200036890620009bf565b60405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620003e9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003e09062000a03565b60405180910390fd5b620003fa816200071660201b60201c565b156200043d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200043490620009e1565b60405180910390fd5b62000451600083836200078260201b60201c565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620004a3919062000a52565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60006200058a8473ffffffffffffffffffffffffffffffffffffffff166200078760201b620020df1760201c565b1562000709578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02620005bc6200021460201b60201c565b8786866040518563ffffffff1660e01b8152600401620005e094939291906200096b565b602060405180830381600087803b158015620005fb57600080fd5b505af19250505080156200062f57506040513d601f19601f820116820180604052508101906200062c919062000861565b60015b620006b8573d806000811462000662576040519150601f19603f3d011682016040523d82523d6000602084013e62000667565b606091505b50600081511415620006b0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006a790620009bf565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506200070e565b600190505b949350505050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b505050565b600080823b905060008111915050919050565b828054620007a89062000b4f565b90600052602060002090601f016020900481019282620007cc576000855562000818565b82601f10620007e757805160ff191683800117855562000818565b8280016001018555821562000818579182015b8281111562000817578251825591602001919060010190620007fa565b5b5090506200082791906200082b565b5090565b5b80821115620008465760008160009055506001016200082c565b5090565b6000815190506200085b8162000c9a565b92915050565b6000602082840312156200087a576200087962000be3565b5b60006200088a848285016200084a565b91505092915050565b6200089e8162000aaf565b82525050565b6000620008b18262000a25565b620008bd818562000a30565b9350620008cf81856020860162000b19565b620008da8162000be8565b840191505092915050565b6000620008f460328362000a41565b9150620009018262000bf9565b604082019050919050565b60006200091b601c8362000a41565b9150620009288262000c48565b602082019050919050565b60006200094260208362000a41565b91506200094f8262000c71565b602082019050919050565b620009658162000b0f565b82525050565b600060808201905062000982600083018762000893565b62000991602083018662000893565b620009a060408301856200095a565b8181036060830152620009b48184620008a4565b905095945050505050565b60006020820190508181036000830152620009da81620008e5565b9050919050565b60006020820190508181036000830152620009fc816200090c565b9050919050565b6000602082019050818103600083015262000a1e8162000933565b9050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600062000a5f8262000b0f565b915062000a6c8362000b0f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000aa45762000aa362000b85565b5b828201905092915050565b600062000abc8262000aef565b9050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101562000b3957808201518184015260208101905062000b1c565b8381111562000b49576000848401525b50505050565b6000600282049050600182168062000b6857607f821691505b6020821081141562000b7f5762000b7e62000bb4565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b62000ca58162000ac3565b811462000cb157600080fd5b50565b614dfa8062000cc46000396000f3fe6080604052600436106101f25760003560e01c80636352211e1161010d578063b3ab66b0116100a0578063dcd4e7321161006f578063dcd4e732146106d5578063e985e9c5146106f1578063eab417821461072e578063f2fde38b14610745578063ff9849941461076e576101f9565b8063b3ab66b014610628578063b88d4fde14610644578063bdb4b8481461066d578063c87b56dd14610698576101f9565b80638da5cb5b116100dc5780638da5cb5b1461057e57806395d89b41146105a9578063a22cb465146105d4578063b0a1c1c4146105fd576101f9565b80636352211e146104c257806370a08231146104ff578063715018a61461053c5780637501f74114610553576101f9565b80632c74d772116101855780633ccfd60b116101545780633ccfd60b1461042c57806342842e0e146104435780635d351ce71461046c578063603f4d5214610497576101f9565b80632c74d772146103605780633023eba61461038957806332624114146103c657806339a0c6f914610403576101f9565b8063081812fc116101c1578063081812fc146102a6578063095ea7b3146102e357806318160ddd1461030c57806323b872dd14610337576101f9565b80630191a657146101fe57806301ffc9a71461022757806306fdde031461026457806308003f781461028f576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b50610225600480360381019061022091906130eb565b610785565b005b34801561023357600080fd5b5061024e6004803603810190610249919061338d565b610845565b60405161025b9190613b4c565b60405180910390f35b34801561027057600080fd5b50610279610927565b6040516102869190613bc7565b60405180910390f35b34801561029b57600080fd5b506102a46109b9565b005b3480156102b257600080fd5b506102cd60048036038101906102c89190613430565b610a40565b6040516102da9190613ae5565b60405180910390f35b3480156102ef57600080fd5b5061030a6004803603810190610305919061326e565b610ac5565b005b34801561031857600080fd5b50610321610bdd565b60405161032e9190613f89565b60405180910390f35b34801561034357600080fd5b5061035e60048036038101906103599190613158565b610be7565b005b34801561036c57600080fd5b5061038760048036038101906103829190613315565b610c47565b005b34801561039557600080fd5b506103b060048036038101906103ab91906130eb565b610e1a565b6040516103bd9190613f89565b60405180910390f35b3480156103d257600080fd5b506103ed60048036038101906103e891906132ae565b610e32565b6040516103fa9190613b4c565b60405180910390f35b34801561040f57600080fd5b5061042a600480360381019061042591906133e7565b610f30565b005b34801561043857600080fd5b50610441610fc6565b005b34801561044f57600080fd5b5061046a60048036038101906104659190613158565b6110ac565b005b34801561047857600080fd5b506104816110cc565b60405161048e9190613f89565b60405180910390f35b3480156104a357600080fd5b506104ac61115e565b6040516104b99190613bac565b60405180910390f35b3480156104ce57600080fd5b506104e960048036038101906104e49190613430565b61118f565b6040516104f69190613ae5565b60405180910390f35b34801561050b57600080fd5b50610526600480360381019061052191906130eb565b611241565b6040516105339190613f89565b60405180910390f35b34801561054857600080fd5b506105516112f9565b005b34801561055f57600080fd5b50610568611381565b6040516105759190613f89565b60405180910390f35b34801561058a57600080fd5b50610593611386565b6040516105a09190613ae5565b60405180910390f35b3480156105b557600080fd5b506105be6113b0565b6040516105cb9190613bc7565b60405180910390f35b3480156105e057600080fd5b506105fb60048036038101906105f6919061322e565b611442565b005b34801561060957600080fd5b506106126115c3565b60405161061f9190613f89565b60405180910390f35b610642600480360381019061063d9190613430565b611647565b005b34801561065057600080fd5b5061066b600480360381019061066691906131ab565b6118b2565b005b34801561067957600080fd5b50610682611914565b60405161068f9190613f89565b60405180910390f35b3480156106a457600080fd5b506106bf60048036038101906106ba9190613430565b61199e565b6040516106cc9190613bc7565b60405180910390f35b6106ef60048036038101906106ea919061345d565b611a45565b005b3480156106fd57600080fd5b5061071860048036038101906107139190613118565b611d6d565b6040516107259190613b4c565b60405180910390f35b34801561073a57600080fd5b50610743611e01565b005b34801561075157600080fd5b5061076c600480360381019061076791906130eb565b611ef4565b005b34801561077a57600080fd5b50610783611fec565b005b61078d6120f2565b73ffffffffffffffffffffffffffffffffffffffff166107ab611386565b73ffffffffffffffffffffffffffffffffffffffff1614610801576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f890613e29565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061091057507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610920575061091f826120fa565b5b9050919050565b606060008054610936906142d8565b80601f0160208091040260200160405190810160405280929190818152602001828054610962906142d8565b80156109af5780601f10610984576101008083540402835291602001916109af565b820191906000526020600020905b81548152906001019060200180831161099257829003601f168201915b5050505050905090565b6109c16120f2565b73ffffffffffffffffffffffffffffffffffffffff166109df611386565b73ffffffffffffffffffffffffffffffffffffffff1614610a35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2c90613e29565b60405180910390fd5b600854600981905550565b6000610a4b82612164565b610a8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8190613de9565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610ad08261118f565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3890613ec9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610b606120f2565b73ffffffffffffffffffffffffffffffffffffffff161480610b8f5750610b8e81610b896120f2565b611d6d565b5b610bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc590613d29565b60405180910390fd5b610bd883836121d0565b505050565b6000600854905090565b610bf8610bf26120f2565b82612289565b610c37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2e90613f09565b60405180910390fd5b610c42838383612367565b505050565b610c4f6120f2565b73ffffffffffffffffffffffffffffffffffffffff16610c6d611386565b73ffffffffffffffffffffffffffffffffffffffff1614610cc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cba90613e29565b60405180910390fd5b60868251600b54610cd491906140d1565b1115610d15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0c90613ce9565b60405180910390fd5b60005b8251811015610e1557610d5f828281518110610d3757610d3661449f565b5b6020026020010151848381518110610d5257610d5161449f565b5b60200260200101516125c3565b6001600f6000848481518110610d7857610d7761449f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610dc991906140d1565b92505081905550600160086000828254610de391906140d1565b92505081905550600b6000815480929190610dfd9061433b565b91905055508080610e0d9061433b565b915050610d18565b505050565b600f6020528060005260406000206000915090505481565b6000803086604051602001610e48929190613a4f565b604051602081830303815290604052805190602001209050600181604051602001610e739190613aaa565b6040516020818303038152906040528051906020012086868660405160008152602001604052604051610ea99493929190613b67565b6020604051602081039080840390855afa158015610ecb573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614915050949350505050565b610f386120f2565b73ffffffffffffffffffffffffffffffffffffffff16610f56611386565b73ffffffffffffffffffffffffffffffffffffffff1614610fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa390613e29565b60405180910390fd5b80600a9080519060200190610fc2929190612d99565b5050565b610fce6120f2565b73ffffffffffffffffffffffffffffffffffffffff16610fec611386565b73ffffffffffffffffffffffffffffffffffffffff1614611042576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103990613e29565b60405180910390fd5b600061104c6115c3565b905060008111611091576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108890613f69565b60405180910390fd5b6110a961109c611386565b6110a46115c3565b6125e1565b50565b6110c7838383604051806020016040528060008152506118b2565b505050565b60006110d66120f2565b73ffffffffffffffffffffffffffffffffffffffff166110f4611386565b73ffffffffffffffffffffffffffffffffffffffff161461114a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114190613e29565b60405180910390fd5b600b54608661115991906141b2565b905090565b600080600d541415611173576000905061118c565b6000600e541415611187576001905061118c565b600290505b90565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611238576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122f90613d89565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a990613d69565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113016120f2565b73ffffffffffffffffffffffffffffffffffffffff1661131f611386565b73ffffffffffffffffffffffffffffffffffffffff1614611375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136c90613e29565b60405180910390fd5b61137f6000612692565b565b600581565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600180546113bf906142d8565b80601f01602080910402602001604051908101604052809291908181526020018280546113eb906142d8565b80156114385780601f1061140d57610100808354040283529160200191611438565b820191906000526020600020905b81548152906001019060200180831161141b57829003601f168201915b5050505050905090565b61144a6120f2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114af90613c89565b60405180910390fd5b80600560006114c56120f2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166115726120f2565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516115b79190613b4c565b60405180910390a35050565b60006115cd6120f2565b73ffffffffffffffffffffffffffffffffffffffff166115eb611386565b73ffffffffffffffffffffffffffffffffffffffff1614611641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163890613e29565b60405180910390fd5b47905090565b600061165161115e565b905060028081111561166657611665614441565b5b81600281111561167957611678614441565b5b146116b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b090613da9565b60405180910390fd5b600b5460866116c891906141b2565b6009546116d591906141b2565b826008546116e391906140d1565b1115611724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171b90613ca9565b60405180910390fd5b600582600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461177191906140d1565b11156117b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a990613e89565b60405180910390fd5b816117bb611914565b6117c59190614158565b341015611807576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fe90613ea9565b60405180910390fd5b60005b828110156118ad57600061181c612758565b905061182833826125c3565b6001600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461187891906140d1565b9250508190555060016008600082825461189291906140d1565b925050819055505080806118a59061433b565b91505061180a565b505050565b6118c36118bd6120f2565b83612289565b611902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f990613f09565b60405180910390fd5b61190e84848484612785565b50505050565b60008061191f61115e565b90506000600281111561193557611934614441565b5b81600281111561194857611947614441565b5b148061197857506001600281111561196357611962614441565b5b81600281111561197657611975614441565b5b145b1561198e576702c68af0bb14000091505061199b565b670429d069189e00009150505b90565b60606119a982612164565b6119e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119df90613e69565b60405180910390fd5b60006119f26127e1565b90506000815111611a125760405180602001604052806000815250611a3d565b80611a1c84612873565b604051602001611a2d929190613a7b565b6040516020818303038152906040525b915050919050565b828282611a5433848484610e32565b611a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8a90613e09565b60405180910390fd5b6000611a9d61115e565b905060006002811115611ab357611ab2614441565b5b816002811115611ac657611ac5614441565b5b1415611b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afe90613f49565b60405180910390fd5b600280811115611b1a57611b19614441565b5b816002811115611b2d57611b2c614441565b5b1415611b6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6590613d49565b60405180910390fd5b600b546086611b7d91906141b2565b600954611b8a91906141b2565b88600854611b9891906140d1565b1115611bd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd090613ca9565b60405180910390fd5b600588600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c2691906140d1565b1115611c67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5e90613e89565b60405180910390fd5b87611c70611914565b611c7a9190614158565b341015611cbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb390613f29565b60405180910390fd5b60005b88811015611d62576000611cd1612758565b9050611cdd33826125c3565b6001600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d2d91906140d1565b92505081905550600160086000828254611d4791906140d1565b92505081905550508080611d5a9061433b565b915050611cbf565b505050505050505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611e096120f2565b73ffffffffffffffffffffffffffffffffffffffff16611e27611386565b73ffffffffffffffffffffffffffffffffffffffff1614611e7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7490613e29565b60405180910390fd5b60006002811115611e9157611e90614441565b5b611e9961115e565b6002811115611eab57611eaa614441565b5b14611eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee290613d09565b60405180910390fd5b42600d81905550565b611efc6120f2565b73ffffffffffffffffffffffffffffffffffffffff16611f1a611386565b73ffffffffffffffffffffffffffffffffffffffff1614611f70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6790613e29565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611fe0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd790613c09565b60405180910390fd5b611fe981612692565b50565b611ff46120f2565b73ffffffffffffffffffffffffffffffffffffffff16612012611386565b73ffffffffffffffffffffffffffffffffffffffff1614612068576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205f90613e29565b60405180910390fd5b6001600281111561207c5761207b614441565b5b61208461115e565b600281111561209657612095614441565b5b146120d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cd90613ee9565b60405180910390fd5b42600e81905550565b600080823b905060008111915050919050565b600033905090565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166122438361118f565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061229482612164565b6122d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ca90613cc9565b60405180910390fd5b60006122de8361118f565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061234d57508373ffffffffffffffffffffffffffffffffffffffff1661233584610a40565b73ffffffffffffffffffffffffffffffffffffffff16145b8061235e575061235d8185611d6d565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166123878261118f565b73ffffffffffffffffffffffffffffffffffffffff16146123dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d490613e49565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561244d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244490613c69565b60405180910390fd5b6124588383836129d4565b6124636000826121d0565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124b391906141b2565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461250a91906140d1565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6125dd8282604051806020016040528060008152506129d9565b5050565b60008273ffffffffffffffffffffffffffffffffffffffff168260405161260790613ad0565b60006040518083038185875af1925050503d8060008114612644576040519150601f19603f3d011682016040523d82523d6000602084013e612649565b606091505b505090508061268d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268490613c49565b60405180910390fd5b505050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080600b546086612768610bdd565b61277291906140d1565b61277c91906141b2565b90508091505090565b612790848484612367565b61279c84848484612a34565b6127db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d290613be9565b60405180910390fd5b50505050565b6060600a80546127f0906142d8565b80601f016020809104026020016040519081016040528092919081815260200182805461281c906142d8565b80156128695780601f1061283e57610100808354040283529160200191612869565b820191906000526020600020905b81548152906001019060200180831161284c57829003601f168201915b5050505050905090565b606060008214156128bb576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506129cf565b600082905060005b600082146128ed5780806128d69061433b565b915050600a826128e69190614127565b91506128c3565b60008167ffffffffffffffff811115612909576129086144ce565b5b6040519080825280601f01601f19166020018201604052801561293b5781602001600182028036833780820191505090505b5090505b600085146129c85760018261295491906141b2565b9150600a8561296391906143b2565b603061296f91906140d1565b60f81b8183815181106129855761298461449f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856129c19190614127565b945061293f565b8093505050505b919050565b505050565b6129e38383612bcb565b6129f06000848484612a34565b612a2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2690613be9565b60405180910390fd5b505050565b6000612a558473ffffffffffffffffffffffffffffffffffffffff166120df565b15612bbe578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612a7e6120f2565b8786866040518563ffffffff1660e01b8152600401612aa09493929190613b00565b602060405180830381600087803b158015612aba57600080fd5b505af1925050508015612aeb57506040513d601f19601f82011682018060405250810190612ae891906133ba565b60015b612b6e573d8060008114612b1b576040519150601f19603f3d011682016040523d82523d6000602084013e612b20565b606091505b50600081511415612b66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5d90613be9565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612bc3565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3290613dc9565b60405180910390fd5b612c4481612164565b15612c84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7b90613c29565b60405180910390fd5b612c90600083836129d4565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ce091906140d1565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b828054612da5906142d8565b90600052602060002090601f016020900481019282612dc75760008555612e0e565b82601f10612de057805160ff1916838001178555612e0e565b82800160010185558215612e0e579182015b82811115612e0d578251825591602001919060010190612df2565b5b509050612e1b9190612e1f565b5090565b5b80821115612e38576000816000905550600101612e20565b5090565b6000612e4f612e4a84613fc9565b613fa4565b90508083825260208201905082856020860282011115612e7257612e71614502565b5b60005b85811015612ea25781612e888882612fa0565b845260208401935060208301925050600181019050612e75565b5050509392505050565b6000612ebf612eba84613ff5565b613fa4565b90508083825260208201905082856020860282011115612ee257612ee1614502565b5b60005b85811015612f125781612ef888826130c1565b845260208401935060208301925050600181019050612ee5565b5050509392505050565b6000612f2f612f2a84614021565b613fa4565b905082815260208101848484011115612f4b57612f4a614507565b5b612f56848285614296565b509392505050565b6000612f71612f6c84614052565b613fa4565b905082815260208101848484011115612f8d57612f8c614507565b5b612f98848285614296565b509392505050565b600081359050612faf81614d3a565b92915050565b600082601f830112612fca57612fc96144fd565b5b8135612fda848260208601612e3c565b91505092915050565b600082601f830112612ff857612ff76144fd565b5b8135613008848260208601612eac565b91505092915050565b60008135905061302081614d51565b92915050565b60008135905061303581614d68565b92915050565b60008135905061304a81614d7f565b92915050565b60008151905061305f81614d7f565b92915050565b600082601f83011261307a576130796144fd565b5b813561308a848260208601612f1c565b91505092915050565b600082601f8301126130a8576130a76144fd565b5b81356130b8848260208601612f5e565b91505092915050565b6000813590506130d081614d96565b92915050565b6000813590506130e581614dad565b92915050565b60006020828403121561310157613100614511565b5b600061310f84828501612fa0565b91505092915050565b6000806040838503121561312f5761312e614511565b5b600061313d85828601612fa0565b925050602061314e85828601612fa0565b9150509250929050565b60008060006060848603121561317157613170614511565b5b600061317f86828701612fa0565b935050602061319086828701612fa0565b92505060406131a1868287016130c1565b9150509250925092565b600080600080608085870312156131c5576131c4614511565b5b60006131d387828801612fa0565b94505060206131e487828801612fa0565b93505060406131f5878288016130c1565b925050606085013567ffffffffffffffff8111156132165761321561450c565b5b61322287828801613065565b91505092959194509250565b6000806040838503121561324557613244614511565b5b600061325385828601612fa0565b925050602061326485828601613011565b9150509250929050565b6000806040838503121561328557613284614511565b5b600061329385828601612fa0565b92505060206132a4858286016130c1565b9150509250929050565b600080600080608085870312156132c8576132c7614511565b5b60006132d687828801612fa0565b94505060206132e7878288016130d6565b93505060406132f887828801613026565b925050606061330987828801613026565b91505092959194509250565b6000806040838503121561332c5761332b614511565b5b600083013567ffffffffffffffff81111561334a5761334961450c565b5b61335685828601612fe3565b925050602083013567ffffffffffffffff8111156133775761337661450c565b5b61338385828601612fb5565b9150509250929050565b6000602082840312156133a3576133a2614511565b5b60006133b18482850161303b565b91505092915050565b6000602082840312156133d0576133cf614511565b5b60006133de84828501613050565b91505092915050565b6000602082840312156133fd576133fc614511565b5b600082013567ffffffffffffffff81111561341b5761341a61450c565b5b61342784828501613093565b91505092915050565b60006020828403121561344657613445614511565b5b6000613454848285016130c1565b91505092915050565b6000806000806080858703121561347757613476614511565b5b6000613485878288016130c1565b9450506020613496878288016130d6565b93505060406134a787828801613026565b92505060606134b887828801613026565b91505092959194509250565b6134cd816141e6565b82525050565b6134e46134df826141e6565b614384565b82525050565b6134f3816141f8565b82525050565b61350281614204565b82525050565b61351961351482614204565b614396565b82525050565b600061352a82614083565b6135348185614099565b93506135448185602086016142a5565b61354d81614516565b840191505092915050565b61356181614284565b82525050565b60006135728261408e565b61357c81856140b5565b935061358c8185602086016142a5565b61359581614516565b840191505092915050565b60006135ab8261408e565b6135b581856140c6565b93506135c58185602086016142a5565b80840191505092915050565b60006135de601c836140c6565b91506135e982614534565b601c82019050919050565b60006136016032836140b5565b915061360c8261455d565b604082019050919050565b60006136246026836140b5565b915061362f826145ac565b604082019050919050565b6000613647601c836140b5565b9150613652826145fb565b602082019050919050565b600061366a6014836140b5565b915061367582614624565b602082019050919050565b600061368d6024836140b5565b91506136988261464d565b604082019050919050565b60006136b06019836140b5565b91506136bb8261469c565b602082019050919050565b60006136d3601e836140b5565b91506136de826146c5565b602082019050919050565b60006136f6602c836140b5565b9150613701826146ee565b604082019050919050565b60006137196026836140b5565b91506137248261473d565b604082019050919050565b600061373c6015836140b5565b91506137478261478c565b602082019050919050565b600061375f6038836140b5565b915061376a826147b5565b604082019050919050565b6000613782602a836140b5565b915061378d82614804565b604082019050919050565b60006137a5602a836140b5565b91506137b082614853565b604082019050919050565b60006137c86029836140b5565b91506137d3826148a2565b604082019050919050565b60006137eb601c836140b5565b91506137f6826148f1565b602082019050919050565b600061380e6020836140b5565b91506138198261491a565b602082019050919050565b6000613831602c836140b5565b915061383c82614943565b604082019050919050565b60006138546005836140c6565b915061385f82614992565b600582019050919050565b60006138776011836140b5565b9150613882826149bb565b602082019050919050565b600061389a6020836140b5565b91506138a5826149e4565b602082019050919050565b60006138bd6029836140b5565b91506138c882614a0d565b604082019050919050565b60006138e0602f836140b5565b91506138eb82614a5c565b604082019050919050565b60006139036024836140b5565b915061390e82614aab565b604082019050919050565b60006139266050836140b5565b915061393182614afa565b606082019050919050565b60006139496021836140b5565b915061395482614b6f565b604082019050919050565b600061396c6018836140b5565b915061397782614bbe565b602082019050919050565b600061398f6000836140aa565b915061399a82614be7565b600082019050919050565b60006139b26031836140b5565b91506139bd82614bea565b604082019050919050565b60006139d5604c836140b5565b91506139e082614c39565b606082019050919050565b60006139f86015836140b5565b9150613a0382614cae565b602082019050919050565b6000613a1b6022836140b5565b9150613a2682614cd7565b604082019050919050565b613a3a8161426d565b82525050565b613a4981614277565b82525050565b6000613a5b82856134d3565b601482019150613a6b82846134d3565b6014820191508190509392505050565b6000613a8782856135a0565b9150613a9382846135a0565b9150613a9e82613847565b91508190509392505050565b6000613ab5826135d1565b9150613ac18284613508565b60208201915081905092915050565b6000613adb82613982565b9150819050919050565b6000602082019050613afa60008301846134c4565b92915050565b6000608082019050613b1560008301876134c4565b613b2260208301866134c4565b613b2f6040830185613a31565b8181036060830152613b41818461351f565b905095945050505050565b6000602082019050613b6160008301846134ea565b92915050565b6000608082019050613b7c60008301876134f9565b613b896020830186613a40565b613b9660408301856134f9565b613ba360608301846134f9565b95945050505050565b6000602082019050613bc16000830184613558565b92915050565b60006020820190508181036000830152613be18184613567565b905092915050565b60006020820190508181036000830152613c02816135f4565b9050919050565b60006020820190508181036000830152613c2281613617565b9050919050565b60006020820190508181036000830152613c428161363a565b9050919050565b60006020820190508181036000830152613c628161365d565b9050919050565b60006020820190508181036000830152613c8281613680565b9050919050565b60006020820190508181036000830152613ca2816136a3565b9050919050565b60006020820190508181036000830152613cc2816136c6565b9050919050565b60006020820190508181036000830152613ce2816136e9565b9050919050565b60006020820190508181036000830152613d028161370c565b9050919050565b60006020820190508181036000830152613d228161372f565b9050919050565b60006020820190508181036000830152613d4281613752565b9050919050565b60006020820190508181036000830152613d6281613775565b9050919050565b60006020820190508181036000830152613d8281613798565b9050919050565b60006020820190508181036000830152613da2816137bb565b9050919050565b60006020820190508181036000830152613dc2816137de565b9050919050565b60006020820190508181036000830152613de281613801565b9050919050565b60006020820190508181036000830152613e0281613824565b9050919050565b60006020820190508181036000830152613e228161386a565b9050919050565b60006020820190508181036000830152613e428161388d565b9050919050565b60006020820190508181036000830152613e62816138b0565b9050919050565b60006020820190508181036000830152613e82816138d3565b9050919050565b60006020820190508181036000830152613ea2816138f6565b9050919050565b60006020820190508181036000830152613ec281613919565b9050919050565b60006020820190508181036000830152613ee28161393c565b9050919050565b60006020820190508181036000830152613f028161395f565b9050919050565b60006020820190508181036000830152613f22816139a5565b9050919050565b60006020820190508181036000830152613f42816139c8565b9050919050565b60006020820190508181036000830152613f62816139eb565b9050919050565b60006020820190508181036000830152613f8281613a0e565b9050919050565b6000602082019050613f9e6000830184613a31565b92915050565b6000613fae613fbf565b9050613fba828261430a565b919050565b6000604051905090565b600067ffffffffffffffff821115613fe457613fe36144ce565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156140105761400f6144ce565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561403c5761403b6144ce565b5b61404582614516565b9050602081019050919050565b600067ffffffffffffffff82111561406d5761406c6144ce565b5b61407682614516565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006140dc8261426d565b91506140e78361426d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561411c5761411b6143e3565b5b828201905092915050565b60006141328261426d565b915061413d8361426d565b92508261414d5761414c614412565b5b828204905092915050565b60006141638261426d565b915061416e8361426d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156141a7576141a66143e3565b5b828202905092915050565b60006141bd8261426d565b91506141c88361426d565b9250828210156141db576141da6143e3565b5b828203905092915050565b60006141f18261424d565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600081905061424882614d26565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061428f8261423a565b9050919050565b82818337600083830152505050565b60005b838110156142c35780820151818401526020810190506142a8565b838111156142d2576000848401525b50505050565b600060028204905060018216806142f057607f821691505b6020821081141561430457614303614470565b5b50919050565b61431382614516565b810181811067ffffffffffffffff82111715614332576143316144ce565b5b80604052505050565b60006143468261426d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614379576143786143e3565b5b600182019050919050565b600061438f826143a0565b9050919050565b6000819050919050565b60006143ab82614527565b9050919050565b60006143bd8261426d565b91506143c88361426d565b9250826143d8576143d7614412565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4661696c656420746f2073656e64204574686572000000000000000000000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4e6f7420656e6f756768204e465473206c65667420746f206d696e742e2e0000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4e6f7420656e6f75676820496e697469616c204e465473206c65667420746f2060008201527f6d696e742e2e0000000000000000000000000000000000000000000000000000602082015250565b7f53616c6520697320616c7265616479204f70656e210000000000000000000000600082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f50726573616c652068617320636c6f7365642c20436865636b206f757420507560008201527f626c69632053616c652100000000000000000000000000000000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f5075626c69632053616c6520696e206e6f74206f70656e207965742100000000600082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f496e76616c6964205369676e6174757265000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4d6178696d756d2035204d696e747320706572204164647265737320616c6c6f60008201527f7765642100000000000000000000000000000000000000000000000000000000602082015250565b7f4e6f742073756666696369656e7420457468657220746f206d696e742074686960008201527f7320616d6f756e74206f66204e4654732028436f7374203d20302e332065746860208201527f657220666f722065616368204e46542900000000000000000000000000000000604082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f74204f70656e205075626c69632053616c65210000000000000000600082015250565b50565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f4e6f742073756666696369656e7420457468657220746f206d696e742074686960008201527f7320616d6f756e74206f66204e4654732028436f7374203d20302e322065746860208201527f65722065616368204e4654290000000000000000000000000000000000000000604082015250565b7f53616c6520696e206e6f74206f70656e20796574210000000000000000000000600082015250565b7f4e6f2046756e647320746f2077697468647261772c2042616c616e636520697360008201527f2030000000000000000000000000000000000000000000000000000000000000602082015250565b60038110614d3757614d36614441565b5b50565b614d43816141e6565b8114614d4e57600080fd5b50565b614d5a816141f8565b8114614d6557600080fd5b50565b614d7181614204565b8114614d7c57600080fd5b50565b614d888161420e565b8114614d9357600080fd5b50565b614d9f8161426d565b8114614daa57600080fd5b50565b614db681614277565b8114614dc157600080fd5b5056fea2646970667358221220fc2531e0a0b594d2686f03b3bf1d2669921c81fdfbebb2432dd918b736790fe264736f6c63430008070033