60806040523480156200001157600080fd5b5060405162001e7b38038062001e7b833981810160405281019062000037919062000307565b6040518060400160405280601081526020017f504d43205761676e657220546f6b656e000000000000000000000000000000008152506040518060400160405280600481526020017f57475243000000000000000000000000000000000000000000000000000000008152508160039081620000b49190620005a9565b508060049081620000c69190620005a9565b50505033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200013e600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826200014560201b60201c565b50620007ab565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620001b7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001ae90620006f1565b60405180910390fd5b620001cb60008383620002bd60201b60201c565b8060026000828254620001df919062000742565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000236919062000742565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200029d91906200078e565b60405180910390a3620002b960008383620002c260201b60201c565b5050565b505050565b505050565b600080fd5b6000819050919050565b620002e181620002cc565b8114620002ed57600080fd5b50565b6000815190506200030181620002d6565b92915050565b60006020828403121562000320576200031f620002c7565b5b60006200033084828501620002f0565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620003bb57607f821691505b602082108103620003d157620003d062000373565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200043b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620003fc565b620004478683620003fc565b95508019841693508086168417925050509392505050565b6000819050919050565b60006200048a620004846200047e84620002cc565b6200045f565b620002cc565b9050919050565b6000819050919050565b620004a68362000469565b620004be620004b58262000491565b84845462000409565b825550505050565b600090565b620004d5620004c6565b620004e28184846200049b565b505050565b5b818110156200050a57620004fe600082620004cb565b600181019050620004e8565b5050565b601f82111562000559576200052381620003d7565b6200052e84620003ec565b810160208510156200053e578190505b620005566200054d85620003ec565b830182620004e7565b50505b505050565b600082821c905092915050565b60006200057e600019846008026200055e565b1980831691505092915050565b60006200059983836200056b565b9150826002028217905092915050565b620005b48262000339565b67ffffffffffffffff811115620005d057620005cf62000344565b5b620005dc8254620003a2565b620005e98282856200050e565b600060209050601f8311600181146200062157600084156200060c578287015190505b6200061885826200058b565b86555062000688565b601f1984166200063186620003d7565b60005b828110156200065b5784890151825560018201915060208501945060208101905062000634565b868310156200067b578489015162000677601f8916826200056b565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620006d9601f8362000690565b9150620006e682620006a1565b602082019050919050565b600060208201905081810360008301526200070c81620006ca565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200074f82620002cc565b91506200075c83620002cc565b925082820190508082111562000777576200077662000713565b5b92915050565b6200078881620002cc565b82525050565b6000602082019050620007a560008301846200077d565b92915050565b6116c080620007bb6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b411461025f578063a457c2d71461027d578063a9059cbb146102ad578063dd62ed3e146102dd576100ea565b806370a08231146101f557806379cc6790146102255780638da5cb5b14610241576100ea565b806323b872dd116100c857806323b872dd1461015b578063313ce5671461018b57806339509351146101a957806342966c68146101d9576100ea565b806306fdde03146100ef578063095ea7b31461010d57806318160ddd1461013d575b600080fd5b6100f761030d565b6040516101049190610ddc565b60405180910390f35b61012760048036038101906101229190610e97565b61039f565b6040516101349190610ef2565b60405180910390f35b6101456103c2565b6040516101529190610f1c565b60405180910390f35b61017560048036038101906101709190610f37565b6103cc565b6040516101829190610ef2565b60405180910390f35b6101936103fb565b6040516101a09190610fa6565b60405180910390f35b6101c360048036038101906101be9190610e97565b610404565b6040516101d09190610ef2565b60405180910390f35b6101f360048036038101906101ee9190610fc1565b61043b565b005b61020f600480360381019061020a9190610fee565b61044f565b60405161021c9190610f1c565b60405180910390f35b61023f600480360381019061023a9190610e97565b610497565b005b6102496104b7565b604051610256919061103c565b60405180910390f35b6102676104dd565b6040516102749190610ddc565b60405180910390f35b61029760048036038101906102929190610e97565b61056f565b6040516102a49190610ef2565b60405180910390f35b6102c760048036038101906102c29190610e97565b6105e6565b6040516102d49190610ef2565b60405180910390f35b6102f760048036038101906102f29190611057565b610609565b6040516103049190610f1c565b60405180910390f35b60606003805461031c906110c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610348906110c6565b80156103955780601f1061036a57610100808354040283529160200191610395565b820191906000526020600020905b81548152906001019060200180831161037857829003601f168201915b5050505050905090565b6000806103aa610690565b90506103b7818585610698565b600191505092915050565b6000600254905090565b6000806103d7610690565b90506103e4858285610861565b6103ef8585856108ed565b60019150509392505050565b60006012905090565b60008061040f610690565b90506104308185856104218589610609565b61042b9190611126565b610698565b600191505092915050565b61044c610446610690565b82610b6c565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6104a9826104a3610690565b83610861565b6104b38282610b6c565b5050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600480546104ec906110c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610518906110c6565b80156105655780601f1061053a57610100808354040283529160200191610565565b820191906000526020600020905b81548152906001019060200180831161054857829003601f168201915b5050505050905090565b60008061057a610690565b905060006105888286610609565b9050838110156105cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c4906111cc565b60405180910390fd5b6105da8286868403610698565b60019250505092915050565b6000806105f1610690565b90506105fe8185856108ed565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610707576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fe9061125e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076d906112f0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516108549190610f1c565b60405180910390a3505050565b600061086d8484610609565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108e757818110156108d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d09061135c565b60405180910390fd5b6108e68484848403610698565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361095c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610953906113ee565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c290611480565b60405180910390fd5b6109d6838383610d42565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5390611512565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610aef9190611126565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b539190610f1c565b60405180910390a3610b66848484610d47565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd2906115a4565b60405180910390fd5b610be782600083610d42565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6490611636565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254610cc49190611656565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d299190610f1c565b60405180910390a3610d3d83600084610d47565b505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610d86578082015181840152602081019050610d6b565b60008484015250505050565b6000601f19601f8301169050919050565b6000610dae82610d4c565b610db88185610d57565b9350610dc8818560208601610d68565b610dd181610d92565b840191505092915050565b60006020820190508181036000830152610df68184610da3565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610e2e82610e03565b9050919050565b610e3e81610e23565b8114610e4957600080fd5b50565b600081359050610e5b81610e35565b92915050565b6000819050919050565b610e7481610e61565b8114610e7f57600080fd5b50565b600081359050610e9181610e6b565b92915050565b60008060408385031215610eae57610ead610dfe565b5b6000610ebc85828601610e4c565b9250506020610ecd85828601610e82565b9150509250929050565b60008115159050919050565b610eec81610ed7565b82525050565b6000602082019050610f076000830184610ee3565b92915050565b610f1681610e61565b82525050565b6000602082019050610f316000830184610f0d565b92915050565b600080600060608486031215610f5057610f4f610dfe565b5b6000610f5e86828701610e4c565b9350506020610f6f86828701610e4c565b9250506040610f8086828701610e82565b9150509250925092565b600060ff82169050919050565b610fa081610f8a565b82525050565b6000602082019050610fbb6000830184610f97565b92915050565b600060208284031215610fd757610fd6610dfe565b5b6000610fe584828501610e82565b91505092915050565b60006020828403121561100457611003610dfe565b5b600061101284828501610e4c565b91505092915050565b600061102682610e03565b9050919050565b6110368161101b565b82525050565b6000602082019050611051600083018461102d565b92915050565b6000806040838503121561106e5761106d610dfe565b5b600061107c85828601610e4c565b925050602061108d85828601610e4c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806110de57607f821691505b6020821081036110f1576110f0611097565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061113182610e61565b915061113c83610e61565b9250828201905080821115611154576111536110f7565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006111b6602583610d57565b91506111c18261115a565b604082019050919050565b600060208201905081810360008301526111e5816111a9565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611248602483610d57565b9150611253826111ec565b604082019050919050565b600060208201905081810360008301526112778161123b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006112da602283610d57565b91506112e58261127e565b604082019050919050565b60006020820190508181036000830152611309816112cd565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611346601d83610d57565b915061135182611310565b602082019050919050565b6000602082019050818103600083015261137581611339565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006113d8602583610d57565b91506113e38261137c565b604082019050919050565b60006020820190508181036000830152611407816113cb565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061146a602383610d57565b91506114758261140e565b604082019050919050565b600060208201905081810360008301526114998161145d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006114fc602683610d57565b9150611507826114a0565b604082019050919050565b6000602082019050818103600083015261152b816114ef565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061158e602183610d57565b915061159982611532565b604082019050919050565b600060208201905081810360008301526115bd81611581565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000611620602283610d57565b915061162b826115c4565b604082019050919050565b6000602082019050818103600083015261164f81611613565b9050919050565b600061166182610e61565b915061166c83610e61565b9250828203905081811115611684576116836110f7565b5b9291505056fea264697066735822122000aff27d144a1581d4c0252df9d59550df746d3869a2ee2ca2b2ccc53354933364736f6c6343000812003300000000000000000000000000000000000000000052b7d2dcc80cd2e4000000