608060405234801562000010575f80fd5b506040516200286d3803806200286d8339818101604052810190620000369190620003d5565b620000566200004a6200015d60201b60201c565b6200016460201b60201c565b6040518060400160405280600c81526020017f4e696269727520436861696e0000000000000000000000000000000000000000815250600490816200009c919062000669565b506040518060400160405280600481526020017f4e4942490000000000000000000000000000000000000000000000000000000081525060059081620000e3919062000669565b5062000116816012600a620000f99190620008d6565b6359682f006200010a919062000926565b6200022560201b60201c565b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000a54565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000296576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200028d90620009ce565b60405180910390fd5b8060035f828254620002a99190620009ee565b925050819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254620002fe9190620009ee565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000364919062000a39565b60405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200039f8262000374565b9050919050565b620003b18162000393565b8114620003bc575f80fd5b50565b5f81519050620003cf81620003a6565b92915050565b5f60208284031215620003ed57620003ec62000370565b5b5f620003fc84828501620003bf565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200048157607f821691505b6020821081036200049757620004966200043c565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620004fb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620004be565b620005078683620004be565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620005516200054b62000545846200051f565b62000528565b6200051f565b9050919050565b5f819050919050565b6200056c8362000531565b620005846200057b8262000558565b848454620004ca565b825550505050565b5f90565b6200059a6200058c565b620005a781848462000561565b505050565b5b81811015620005ce57620005c25f8262000590565b600181019050620005ad565b5050565b601f8211156200061d57620005e7816200049d565b620005f284620004af565b8101602085101562000602578190505b6200061a6200061185620004af565b830182620005ac565b50505b505050565b5f82821c905092915050565b5f6200063f5f198460080262000622565b1980831691505092915050565b5f6200065983836200062e565b9150826002028217905092915050565b620006748262000405565b67ffffffffffffffff81111562000690576200068f6200040f565b5b6200069c825462000469565b620006a9828285620005d2565b5f60209050601f831160018114620006df575f8415620006ca578287015190505b620006d685826200064c565b86555062000745565b601f198416620006ef866200049d565b5f5b828110156200071857848901518255600182019150602085019450602081019050620006f1565b8683101562000738578489015162000734601f8916826200062e565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620007d757808604811115620007af57620007ae6200074d565b5b6001851615620007bf5780820291505b8081029050620007cf856200077a565b94506200078f565b94509492505050565b5f82620007f15760019050620008c3565b8162000800575f9050620008c3565b816001811462000819576002811462000824576200085a565b6001915050620008c3565b60ff8411156200083957620008386200074d565b5b8360020a9150848211156200085357620008526200074d565b5b50620008c3565b5060208310610133831016604e8410600b8410161715620008945782820a9050838111156200088e576200088d6200074d565b5b620008c3565b620008a3848484600162000786565b92509050818404811115620008bd57620008bc6200074d565b5b81810290505b9392505050565b5f60ff82169050919050565b5f620008e2826200051f565b9150620008ef83620008ca565b92506200091e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620007e0565b905092915050565b5f62000932826200051f565b91506200093f836200051f565b92508282026200094f816200051f565b915082820484148315176200096957620009686200074d565b5b5092915050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f620009b6601f8362000970565b9150620009c38262000980565b602082019050919050565b5f6020820190508181035f830152620009e781620009a8565b9050919050565b5f620009fa826200051f565b915062000a07836200051f565b925082820190508082111562000a225762000a216200074d565b5b92915050565b62000a33816200051f565b82525050565b5f60208201905062000a4e5f83018462000a28565b92915050565b611e0b8062000a625f395ff3fe608060405234801561000f575f80fd5b5060043610610109575f3560e01c806370a08231116100a0578063a457c2d71161006f578063a457c2d7146102a7578063a9059cbb146102d7578063dd62ed3e14610307578063fb86a40414610337578063fc7bd0381461035557610109565b806370a0823114610231578063880ad0af146102615780638da5cb5b1461026b57806395d89b411461028957610109565b8063313ce567116100dc578063313ce567146101a957806339509351146101c75780634a8d1348146101f7578063671f3db81461021557610109565b806306fdde031461010d578063095ea7b31461012b57806318160ddd1461015b57806323b872dd14610179575b5f80fd5b610115610371565b60405161012291906111e0565b60405180910390f35b6101456004803603810190610140919061129e565b610401565b60405161015291906112f6565b60405180910390f35b61016361041e565b604051610170919061131e565b60405180910390f35b610193600480360381019061018e9190611337565b610427565b6040516101a091906112f6565b60405180910390f35b6101b1610519565b6040516101be91906113a2565b60405180910390f35b6101e160048036038101906101dc919061129e565b610521565b6040516101ee91906112f6565b60405180910390f35b6101ff6105c8565b60405161020c91906113ca565b60405180910390f35b61022f600480360381019061022a91906113e3565b6105f0565b005b61024b6004803603810190610246919061140e565b61077a565b604051610258919061131e565b60405180910390f35b6102696107c0565b005b6102736108fa565b60405161028091906113ca565b60405180910390f35b610291610921565b60405161029e91906111e0565b60405180910390f35b6102c160048036038101906102bc919061129e565b6109b1565b6040516102ce91906112f6565b60405180910390f35b6102f160048036038101906102ec919061129e565b610a97565b6040516102fe91906112f6565b60405180910390f35b610321600480360381019061031c9190611439565b610ab4565b60405161032e919061131e565b60405180910390f35b61033f610b36565b60405161034c919061131e565b60405180910390f35b61036f600480360381019061036a91906115b7565b610b56565b005b6060600480546103809061163e565b80601f01602080910402602001604051908101604052809291908181526020018280546103ac9061163e565b80156103f75780601f106103ce576101008083540402835291602001916103f7565b820191905f5260205f20905b8154815290600101906020018083116103da57829003601f168201915b5050505050905090565b5f61041461040d610ce8565b8484610cef565b6001905092915050565b5f600354905090565b5f610433848484610eb2565b5f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61047a610ce8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156104f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104f0906116de565b60405180910390fd5b61050d85610505610ce8565b858403610cef565b60019150509392505050565b5f6012905090565b5f6105be61052d610ce8565b848460025f61053a610ce8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546105b99190611729565b610cef565b6001905092915050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6105f8610ce8565b73ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610776575f6012600a61065a919061188b565b6305f5e10061066991906118d5565b90505f6127108261067a91906118d5565b90505f6001806001808561068e91906118d5565b61069891906118d5565b6106a291906118d5565b6106ac91906118d5565b905083816106ba91906118d5565b90508060015f6106c8610ce8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461070f9190611729565b925050819055503373ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461076e575f80fd5b505050610777565b5b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6107c8610ce8565b73ffffffffffffffffffffffffffffffffffffffff166107e66108fa565b73ffffffffffffffffffffffffffffffffffffffff161461083c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083390611960565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead5f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600580546109309061163e565b80601f016020809104026020016040519081016040528092919081815260200182805461095c9061163e565b80156109a75780601f1061097e576101008083540402835291602001916109a7565b820191905f5260205f20905b81548152906001019060200180831161098a57829003601f168201915b5050505050905090565b5f8060025f6109be610ce8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610a78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6f906119ee565b60405180910390fd5b610a8c610a83610ce8565b85858403610cef565b600191505092915050565b5f610aaa610aa3610ce8565b8484610eb2565b6001905092915050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6012600a610b44919061188b565b6359682f00610b5391906118d5565b81565b610b5e610ce8565b73ffffffffffffffffffffffffffffffffffffffff16610b7c6108fa565b73ffffffffffffffffffffffffffffffffffffffff1614610bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc990611960565b60405180910390fd5b5f5b8251811015610ce3575f838281518110610bf157610bf0611a0c565b5b602002602001015190505f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508360015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff167fd551363168ce4784e28e5d59fc07cbea2191657416e05f6e8cd8f1086eb91e6d8286604051610cc6929190611a39565b60405180910390a250508080610cdb90611a60565b915050610bd4565b505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5490611b17565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc290611ba5565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ea5919061131e565b60405180910390a3505050565b5f8111610ef4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eeb90611c0d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5990611c9b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc790611d29565b60405180910390fd5b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104b90611db7565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546110e49190611729565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611148919061131e565b60405180910390a350505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561118d578082015181840152602081019050611172565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6111b282611156565b6111bc8185611160565b93506111cc818560208601611170565b6111d581611198565b840191505092915050565b5f6020820190508181035f8301526111f881846111a8565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61123a82611211565b9050919050565b61124a81611230565b8114611254575f80fd5b50565b5f8135905061126581611241565b92915050565b5f819050919050565b61127d8161126b565b8114611287575f80fd5b50565b5f8135905061129881611274565b92915050565b5f80604083850312156112b4576112b3611209565b5b5f6112c185828601611257565b92505060206112d28582860161128a565b9150509250929050565b5f8115159050919050565b6112f0816112dc565b82525050565b5f6020820190506113095f8301846112e7565b92915050565b6113188161126b565b82525050565b5f6020820190506113315f83018461130f565b92915050565b5f805f6060848603121561134e5761134d611209565b5b5f61135b86828701611257565b935050602061136c86828701611257565b925050604061137d8682870161128a565b9150509250925092565b5f60ff82169050919050565b61139c81611387565b82525050565b5f6020820190506113b55f830184611393565b92915050565b6113c481611230565b82525050565b5f6020820190506113dd5f8301846113bb565b92915050565b5f602082840312156113f8576113f7611209565b5b5f6114058482850161128a565b91505092915050565b5f6020828403121561142357611422611209565b5b5f61143084828501611257565b91505092915050565b5f806040838503121561144f5761144e611209565b5b5f61145c85828601611257565b925050602061146d85828601611257565b9150509250929050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6114b182611198565b810181811067ffffffffffffffff821117156114d0576114cf61147b565b5b80604052505050565b5f6114e2611200565b90506114ee82826114a8565b919050565b5f67ffffffffffffffff82111561150d5761150c61147b565b5b602082029050602081019050919050565b5f80fd5b5f61153461152f846114f3565b6114d9565b905080838252602082019050602084028301858111156115575761155661151e565b5b835b81811015611580578061156c8882611257565b845260208401935050602081019050611559565b5050509392505050565b5f82601f83011261159e5761159d611477565b5b81356115ae848260208601611522565b91505092915050565b5f80604083850312156115cd576115cc611209565b5b5f83013567ffffffffffffffff8111156115ea576115e961120d565b5b6115f68582860161158a565b92505060206116078582860161128a565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061165557607f821691505b60208210810361166857611667611611565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6116c8602883611160565b91506116d38261166e565b604082019050919050565b5f6020820190508181035f8301526116f5816116bc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6117338261126b565b915061173e8361126b565b9250828201905080821115611756576117556116fc565b5b92915050565b5f8160011c9050919050565b5f808291508390505b60018511156117b15780860481111561178d5761178c6116fc565b5b600185161561179c5780820291505b80810290506117aa8561175c565b9450611771565b94509492505050565b5f826117c95760019050611884565b816117d6575f9050611884565b81600181146117ec57600281146117f657611825565b6001915050611884565b60ff841115611808576118076116fc565b5b8360020a91508482111561181f5761181e6116fc565b5b50611884565b5060208310610133831016604e8410600b841016171561185a5782820a905083811115611855576118546116fc565b5b611884565b6118678484846001611768565b9250905081840481111561187e5761187d6116fc565b5b81810290505b9392505050565b5f6118958261126b565b91506118a083611387565b92506118cd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846117ba565b905092915050565b5f6118df8261126b565b91506118ea8361126b565b92508282026118f88161126b565b9150828204841483151761190f5761190e6116fc565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61194a602083611160565b915061195582611916565b602082019050919050565b5f6020820190508181035f8301526119778161193e565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6119d8602583611160565b91506119e38261197e565b604082019050919050565b5f6020820190508181035f830152611a05816119cc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f604082019050611a4c5f83018561130f565b611a59602083018461130f565b9392505050565b5f611a6a8261126b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611a9c57611a9b6116fc565b5b600182019050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f611b01602483611160565b9150611b0c82611aa7565b604082019050919050565b5f6020820190508181035f830152611b2e81611af5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f611b8f602283611160565b9150611b9a82611b35565b604082019050919050565b5f6020820190508181035f830152611bbc81611b83565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74207a65726f00000000005f82015250565b5f611bf7601b83611160565b9150611c0282611bc3565b602082019050919050565b5f6020820190508181035f830152611c2481611beb565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f611c85602583611160565b9150611c9082611c2b565b604082019050919050565b5f6020820190508181035f830152611cb281611c79565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f611d13602383611160565b9150611d1e82611cb9565b604082019050919050565b5f6020820190508181035f830152611d4081611d07565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f611da1602683611160565b9150611dac82611d47565b604082019050919050565b5f6020820190508181035f830152611dce81611d95565b905091905056fea26469706673582212206920d30c7b74fdc82b83c185f8fa1a0dde92be065940e6e3342eb6b0aeb9181964736f6c634300081500330000000000000000000000004e5e88401c6c6801321e7fc82d50f30b3319f9a5