60806040523480156200001157600080fd5b506040518060400160405280600781526020017f4169416b697461000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f416941000000000000000000000000000000000000000000000000000000000081525081600390816200008f9190620005a5565b508060049081620000a19190620005a5565b505050620000c4620000b8620000e660201b60201c565b620000ee60201b60201c565b620000e0336942869b9f5cddfbddf4c0620001b460201b60201c565b620007a7565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000226576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200021d90620006ed565b60405180910390fd5b6200023a600083836200032160201b60201c565b80600260008282546200024e91906200073e565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200030191906200078a565b60405180910390a36200031d600083836200032660201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620003ad57607f821691505b602082108103620003c357620003c262000365565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200042d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620003ee565b620004398683620003ee565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000486620004806200047a8462000451565b6200045b565b62000451565b9050919050565b6000819050919050565b620004a28362000465565b620004ba620004b1826200048d565b848454620003fb565b825550505050565b600090565b620004d1620004c2565b620004de81848462000497565b505050565b5b818110156200050657620004fa600082620004c7565b600181019050620004e4565b5050565b601f82111562000555576200051f81620003c9565b6200052a84620003de565b810160208510156200053a578190505b620005526200054985620003de565b830182620004e3565b50505b505050565b600082821c905092915050565b60006200057a600019846008026200055a565b1980831691505092915050565b600062000595838362000567565b9150826002028217905092915050565b620005b0826200032b565b67ffffffffffffffff811115620005cc57620005cb62000336565b5b620005d8825462000394565b620005e58282856200050a565b600060209050601f8311600181146200061d576000841562000608578287015190505b62000614858262000587565b86555062000684565b601f1984166200062d86620003c9565b60005b82811015620006575784890151825560018201915060208501945060208101905062000630565b8683101562000677578489015162000673601f89168262000567565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620006d5601f836200068c565b9150620006e2826200069d565b602082019050919050565b600060208201905081810360008301526200070881620006c6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200074b8262000451565b9150620007588362000451565b92508282019050808211156200077357620007726200070f565b5b92915050565b620007848162000451565b82525050565b6000602082019050620007a1600083018462000779565b92915050565b6118bb80620007b76000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063a457c2d711610066578063a457c2d714610276578063a9059cbb146102a6578063dd62ed3e146102d6578063f2fde38b14610306576100f5565b806370a0823114610200578063715018a6146102305780638da5cb5b1461023a57806395d89b4114610258576100f5565b806323b872dd116100d357806323b872dd14610166578063313ce5671461019657806339509351146101b457806340c10f19146101e4576100f5565b806306fdde03146100fa578063095ea7b31461011857806318160ddd14610148575b600080fd5b610102610322565b60405161010f9190610f98565b60405180910390f35b610132600480360381019061012d9190611053565b6103b4565b60405161013f91906110ae565b60405180910390f35b6101506103d7565b60405161015d91906110d8565b60405180910390f35b610180600480360381019061017b91906110f3565b6103e1565b60405161018d91906110ae565b60405180910390f35b61019e610410565b6040516101ab9190611162565b60405180910390f35b6101ce60048036038101906101c99190611053565b610419565b6040516101db91906110ae565b60405180910390f35b6101fe60048036038101906101f99190611053565b610450565b005b61021a6004803603810190610215919061117d565b6104d5565b60405161022791906110d8565b60405180910390f35b61023861051d565b005b610242610531565b60405161024f91906111b9565b60405180910390f35b61026061055b565b60405161026d9190610f98565b60405180910390f35b610290600480360381019061028b9190611053565b6105ed565b60405161029d91906110ae565b60405180910390f35b6102c060048036038101906102bb9190611053565b610664565b6040516102cd91906110ae565b60405180910390f35b6102f060048036038101906102eb91906111d4565b610687565b6040516102fd91906110d8565b60405180910390f35b610320600480360381019061031b919061117d565b61070e565b005b60606003805461033190611243565b80601f016020809104026020016040519081016040528092919081815260200182805461035d90611243565b80156103aa5780601f1061037f576101008083540402835291602001916103aa565b820191906000526020600020905b81548152906001019060200180831161038d57829003601f168201915b5050505050905090565b6000806103bf610791565b90506103cc818585610799565b600191505092915050565b6000600254905090565b6000806103ec610791565b90506103f9858285610962565b6104048585856109ee565b60019150509392505050565b60006006905090565b600080610424610791565b90506104458185856104368589610687565b61044091906112a3565b610799565b600191505092915050565b610458610c64565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036104c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104be90611323565b60405180910390fd5b6104d18282610ce2565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610525610c64565b61052f6000610e38565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461056a90611243565b80601f016020809104026020016040519081016040528092919081815260200182805461059690611243565b80156105e35780601f106105b8576101008083540402835291602001916105e3565b820191906000526020600020905b8154815290600101906020018083116105c657829003601f168201915b5050505050905090565b6000806105f8610791565b905060006106068286610687565b90508381101561064b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610642906113b5565b60405180910390fd5b6106588286868403610799565b60019250505092915050565b60008061066f610791565b905061067c8185856109ee565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610716610c64565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610785576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077c90611447565b60405180910390fd5b61078e81610e38565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610808576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ff906114d9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086e9061156b565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161095591906110d8565b60405180910390a3505050565b600061096e8484610687565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146109e857818110156109da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d1906115d7565b60405180910390fd5b6109e78484848403610799565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5490611669565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610acc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac3906116fb565b60405180910390fd5b610ad7838383610efe565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610b5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b549061178d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c4b91906110d8565b60405180910390a3610c5e848484610f03565b50505050565b610c6c610791565b73ffffffffffffffffffffffffffffffffffffffff16610c8a610531565b73ffffffffffffffffffffffffffffffffffffffff1614610ce0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd7906117f9565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4890611865565b60405180910390fd5b610d5d60008383610efe565b8060026000828254610d6f91906112a3565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e2091906110d8565b60405180910390a3610e3460008383610f03565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610f42578082015181840152602081019050610f27565b60008484015250505050565b6000601f19601f8301169050919050565b6000610f6a82610f08565b610f748185610f13565b9350610f84818560208601610f24565b610f8d81610f4e565b840191505092915050565b60006020820190508181036000830152610fb28184610f5f565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610fea82610fbf565b9050919050565b610ffa81610fdf565b811461100557600080fd5b50565b60008135905061101781610ff1565b92915050565b6000819050919050565b6110308161101d565b811461103b57600080fd5b50565b60008135905061104d81611027565b92915050565b6000806040838503121561106a57611069610fba565b5b600061107885828601611008565b92505060206110898582860161103e565b9150509250929050565b60008115159050919050565b6110a881611093565b82525050565b60006020820190506110c3600083018461109f565b92915050565b6110d28161101d565b82525050565b60006020820190506110ed60008301846110c9565b92915050565b60008060006060848603121561110c5761110b610fba565b5b600061111a86828701611008565b935050602061112b86828701611008565b925050604061113c8682870161103e565b9150509250925092565b600060ff82169050919050565b61115c81611146565b82525050565b60006020820190506111776000830184611153565b92915050565b60006020828403121561119357611192610fba565b5b60006111a184828501611008565b91505092915050565b6111b381610fdf565b82525050565b60006020820190506111ce60008301846111aa565b92915050565b600080604083850312156111eb576111ea610fba565b5b60006111f985828601611008565b925050602061120a85828601611008565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061125b57607f821691505b60208210810361126e5761126d611214565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006112ae8261101d565b91506112b98361101d565b92508282019050808211156112d1576112d0611274565b5b92915050565b7f41646472657373205a45524f2100000000000000000000000000000000000000600082015250565b600061130d600d83610f13565b9150611318826112d7565b602082019050919050565b6000602082019050818103600083015261133c81611300565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061139f602583610f13565b91506113aa82611343565b604082019050919050565b600060208201905081810360008301526113ce81611392565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611431602683610f13565b915061143c826113d5565b604082019050919050565b6000602082019050818103600083015261146081611424565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006114c3602483610f13565b91506114ce82611467565b604082019050919050565b600060208201905081810360008301526114f2816114b6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611555602283610f13565b9150611560826114f9565b604082019050919050565b6000602082019050818103600083015261158481611548565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006115c1601d83610f13565b91506115cc8261158b565b602082019050919050565b600060208201905081810360008301526115f0816115b4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611653602583610f13565b915061165e826115f7565b604082019050919050565b6000602082019050818103600083015261168281611646565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006116e5602383610f13565b91506116f082611689565b604082019050919050565b60006020820190508181036000830152611714816116d8565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611777602683610f13565b91506117828261171b565b604082019050919050565b600060208201905081810360008301526117a68161176a565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006117e3602083610f13565b91506117ee826117ad565b602082019050919050565b60006020820190508181036000830152611812816117d6565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600061184f601f83610f13565b915061185a82611819565b602082019050919050565b6000602082019050818103600083015261187e81611842565b905091905056fea26469706673582212204dae84b19b999c13c8f05a98e808e22aa3fb3fe844745d89e79b961ca5ca399864736f6c63430008110033