0x608060405234801561001057600080fd5b50600436106100885760003560e01c806386d1a69f1161005b57806386d1a69f14610115578063961325211461011f578063be9a65551461013d578063fc0c546a1461015b57610088565b80630a17b06b1461008d5780630fb5a6b4146100bd5780631c31f710146100db57806338af3eed146100f7575b600080fd5b6100a760048036038101906100a291906109be565b610179565b6040516100b49190610a04565b60405180910390f35b6100c5610369565b6040516100d29190610a2e565b60405180910390f35b6100f560048036038101906100f09190610aa7565b61038d565b005b6100ff61052c565b60405161010c9190610ae3565b60405180910390f35b61011d610552565b005b610127610638565b6040516101349190610a04565b60405180910390f35b61014561063e565b6040516101529190610a2e565b60405180910390f35b610163610662565b6040516101709190610ae3565b60405180910390f35b60008060025460008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016101d89190610ae3565b60206040518083038186803b1580156101f057600080fd5b505afa158015610204573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102289190610b2a565b6102329190610b86565b90507f0000000000000000000000000000000000000000000000000000000062e7178067ffffffffffffffff168367ffffffffffffffff16101561027a576000915050610364565b7f0000000000000000000000000000000000000000000000000000000001e191407f0000000000000000000000000000000000000000000000000000000062e717806102c69190610bdc565b67ffffffffffffffff168367ffffffffffffffff1611156102ea5780915050610364565b7f0000000000000000000000000000000000000000000000000000000001e1914067ffffffffffffffff167f0000000000000000000000000000000000000000000000000000000062e71780846103419190610c1a565b67ffffffffffffffff16826103569190610c4e565b6103609190610cd7565b9150505b919050565b7f0000000000000000000000000000000000000000000000000000000001e1914081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461041d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041490610d8b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561048d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048490610e1d565b60405180910390fd5b7f768099735d1c322a05a5b9d7b76d99682a1833d3f7055e5ede25e0f2eeaa8c6d600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826040516104e0929190610e3d565b60405180910390a180600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060025461056042610179565b61056a9190610e66565b905060008111156106355780600260008282546105879190610b86565b925050819055507fc7798891864187665ac6dd119286e44ec13f014527aeeb2b8eb3fd413df9317960008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826040516105df929190610e9a565b60405180910390a161063460008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683610686565b5b50565b60025481565b7f0000000000000000000000000000000000000000000000000000000062e7178081565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107078363a9059cbb60e01b84846040516024016106a5929190610e9a565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061070c565b505050565b600061076e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166107d39092919063ffffffff16565b90506000815111156107ce578080602001905181019061078e9190610efb565b6107cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c490610f9a565b60405180910390fd5b5b505050565b60606107e284846000856107eb565b90509392505050565b606082471015610830576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108279061102c565b60405180910390fd5b610839856108ff565b610878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086f90611098565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516108a19190611132565b60006040518083038185875af1925050503d80600081146108de576040519150601f19603f3d011682016040523d82523d6000602084013e6108e3565b606091505b50915091506108f3828286610912565b92505050949350505050565b600080823b905060008111915050919050565b6060831561092257829050610972565b6000835111156109355782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610969919061119e565b60405180910390fd5b9392505050565b600080fd5b600067ffffffffffffffff82169050919050565b61099b8161097e565b81146109a657600080fd5b50565b6000813590506109b881610992565b92915050565b6000602082840312156109d4576109d3610979565b5b60006109e2848285016109a9565b91505092915050565b6000819050919050565b6109fe816109eb565b82525050565b6000602082019050610a1960008301846109f5565b92915050565b610a288161097e565b82525050565b6000602082019050610a436000830184610a1f565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610a7482610a49565b9050919050565b610a8481610a69565b8114610a8f57600080fd5b50565b600081359050610aa181610a7b565b92915050565b600060208284031215610abd57610abc610979565b5b6000610acb84828501610a92565b91505092915050565b610add81610a69565b82525050565b6000602082019050610af86000830184610ad4565b92915050565b610b07816109eb565b8114610b1257600080fd5b50565b600081519050610b2481610afe565b92915050565b600060208284031215610b4057610b3f610979565b5b6000610b4e84828501610b15565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610b91826109eb565b9150610b9c836109eb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610bd157610bd0610b57565b5b828201905092915050565b6000610be78261097e565b9150610bf28361097e565b92508267ffffffffffffffff03821115610c0f57610c0e610b57565b5b828201905092915050565b6000610c258261097e565b9150610c308361097e565b925082821015610c4357610c42610b57565b5b828203905092915050565b6000610c59826109eb565b9150610c64836109eb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610c9d57610c9c610b57565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610ce2826109eb565b9150610ced836109eb565b925082610cfd57610cfc610ca8565b5b828204905092915050565b600082825260208201905092915050565b7f546f6b656e56657374696e6757616c6c65743a206f6e6c792062656e6566696360008201527f6961727900000000000000000000000000000000000000000000000000000000602082015250565b6000610d75602483610d08565b9150610d8082610d19565b604082019050919050565b60006020820190508181036000830152610da481610d68565b9050919050565b7f546f6b656e56657374696e6757616c6c65743a2062656e65666963696172792060008201527f6973207a65726f20616464726573730000000000000000000000000000000000602082015250565b6000610e07602f83610d08565b9150610e1282610dab565b604082019050919050565b60006020820190508181036000830152610e3681610dfa565b9050919050565b6000604082019050610e526000830185610ad4565b610e5f6020830184610ad4565b9392505050565b6000610e71826109eb565b9150610e7c836109eb565b925082821015610e8f57610e8e610b57565b5b828203905092915050565b6000604082019050610eaf6000830185610ad4565b610ebc60208301846109f5565b9392505050565b60008115159050919050565b610ed881610ec3565b8114610ee357600080fd5b50565b600081519050610ef581610ecf565b92915050565b600060208284031215610f1157610f10610979565b5b6000610f1f84828501610ee6565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b6000610f84602a83610d08565b9150610f8f82610f28565b604082019050919050565b60006020820190508181036000830152610fb381610f77565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b6000611016602683610d08565b915061102182610fba565b604082019050919050565b6000602082019050818103600083015261104581611009565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000611082601d83610d08565b915061108d8261104c565b602082019050919050565b600060208201905081810360008301526110b181611075565b9050919050565b600081519050919050565b600081905092915050565b60005b838110156110ec5780820151818401526020810190506110d1565b838111156110fb576000848401525b50505050565b600061110c826110b8565b61111681856110c3565b93506111268185602086016110ce565b80840191505092915050565b600061113e8284611101565b915081905092915050565b600081519050919050565b6000601f19601f8301169050919050565b600061117082611149565b61117a8185610d08565b935061118a8185602086016110ce565b61119381611154565b840191505092915050565b600060208201905081810360008301526111b88184611165565b90509291505056fea2646970667358221220a8dd068167f6ae9e7665c1cd9167efc50234d36b0b2b0954bcdf79783f84d12a64736f6c63430008090033
0x60c06040523480156200001157600080fd5b50604051620016813803806200168183398181016040528101906200003791906200028f565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415620000aa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a19062000388565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156200011d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001149062000420565b60405180910390fd5b836000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508167ffffffffffffffff1660808167ffffffffffffffff16815250508067ffffffffffffffff1660a08167ffffffffffffffff16815250505050505062000442565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200021282620001e5565b9050919050565b620002248162000205565b81146200023057600080fd5b50565b600081519050620002448162000219565b92915050565b600067ffffffffffffffff82169050919050565b62000269816200024a565b81146200027557600080fd5b50565b60008151905062000289816200025e565b92915050565b60008060008060808587031215620002ac57620002ab620001e0565b5b6000620002bc8782880162000233565b9450506020620002cf8782880162000233565b9350506040620002e28782880162000278565b9250506060620002f58782880162000278565b91505092959194509250565b600082825260208201905092915050565b7f546f6b656e56657374696e6757616c6c65743a20746f6b656e206973207a657260008201527f6f20616464726573730000000000000000000000000000000000000000000000602082015250565b60006200037060298362000301565b91506200037d8262000312565b604082019050919050565b60006020820190508181036000830152620003a38162000361565b9050919050565b7f546f6b656e56657374696e6757616c6c65743a2062656e65666963696172792060008201527f6973207a65726f20616464726573730000000000000000000000000000000000602082015250565b600062000408602f8362000301565b91506200041582620003aa565b604082019050919050565b600060208201905081810360008301526200043b81620003f9565b9050919050565b60805160a0516111f66200048b6000396000818161027c015281816102ec015261036b0152600081816102360152818161029d01528181610317015261064001526111f66000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806386d1a69f1161005b57806386d1a69f14610115578063961325211461011f578063be9a65551461013d578063fc0c546a1461015b57610088565b80630a17b06b1461008d5780630fb5a6b4146100bd5780631c31f710146100db57806338af3eed146100f7575b600080fd5b6100a760048036038101906100a291906109be565b610179565b6040516100b49190610a04565b60405180910390f35b6100c5610369565b6040516100d29190610a2e565b60405180910390f35b6100f560048036038101906100f09190610aa7565b61038d565b005b6100ff61052c565b60405161010c9190610ae3565b60405180910390f35b61011d610552565b005b610127610638565b6040516101349190610a04565b60405180910390f35b61014561063e565b6040516101529190610a2e565b60405180910390f35b610163610662565b6040516101709190610ae3565b60405180910390f35b60008060025460008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016101d89190610ae3565b60206040518083038186803b1580156101f057600080fd5b505afa158015610204573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102289190610b2a565b6102329190610b86565b90507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff168367ffffffffffffffff16101561027a576000915050610364565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006102c69190610bdc565b67ffffffffffffffff168367ffffffffffffffff1611156102ea5780915050610364565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000846103419190610c1a565b67ffffffffffffffff16826103569190610c4e565b6103609190610cd7565b9150505b919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461041d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041490610d8b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561048d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048490610e1d565b60405180910390fd5b7f768099735d1c322a05a5b9d7b76d99682a1833d3f7055e5ede25e0f2eeaa8c6d600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826040516104e0929190610e3d565b60405180910390a180600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060025461056042610179565b61056a9190610e66565b905060008111156106355780600260008282546105879190610b86565b925050819055507fc7798891864187665ac6dd119286e44ec13f014527aeeb2b8eb3fd413df9317960008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826040516105df929190610e9a565b60405180910390a161063460008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683610686565b5b50565b60025481565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107078363a9059cbb60e01b84846040516024016106a5929190610e9a565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061070c565b505050565b600061076e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166107d39092919063ffffffff16565b90506000815111156107ce578080602001905181019061078e9190610efb565b6107cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c490610f9a565b60405180910390fd5b5b505050565b60606107e284846000856107eb565b90509392505050565b606082471015610830576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108279061102c565b60405180910390fd5b610839856108ff565b610878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086f90611098565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516108a19190611132565b60006040518083038185875af1925050503d80600081146108de576040519150601f19603f3d011682016040523d82523d6000602084013e6108e3565b606091505b50915091506108f3828286610912565b92505050949350505050565b600080823b905060008111915050919050565b6060831561092257829050610972565b6000835111156109355782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610969919061119e565b60405180910390fd5b9392505050565b600080fd5b600067ffffffffffffffff82169050919050565b61099b8161097e565b81146109a657600080fd5b50565b6000813590506109b881610992565b92915050565b6000602082840312156109d4576109d3610979565b5b60006109e2848285016109a9565b91505092915050565b6000819050919050565b6109fe816109eb565b82525050565b6000602082019050610a1960008301846109f5565b92915050565b610a288161097e565b82525050565b6000602082019050610a436000830184610a1f565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610a7482610a49565b9050919050565b610a8481610a69565b8114610a8f57600080fd5b50565b600081359050610aa181610a7b565b92915050565b600060208284031215610abd57610abc610979565b5b6000610acb84828501610a92565b91505092915050565b610add81610a69565b82525050565b6000602082019050610af86000830184610ad4565b92915050565b610b07816109eb565b8114610b1257600080fd5b50565b600081519050610b2481610afe565b92915050565b600060208284031215610b4057610b3f610979565b5b6000610b4e84828501610b15565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610b91826109eb565b9150610b9c836109eb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610bd157610bd0610b57565b5b828201905092915050565b6000610be78261097e565b9150610bf28361097e565b92508267ffffffffffffffff03821115610c0f57610c0e610b57565b5b828201905092915050565b6000610c258261097e565b9150610c308361097e565b925082821015610c4357610c42610b57565b5b828203905092915050565b6000610c59826109eb565b9150610c64836109eb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610c9d57610c9c610b57565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610ce2826109eb565b9150610ced836109eb565b925082610cfd57610cfc610ca8565b5b828204905092915050565b600082825260208201905092915050565b7f546f6b656e56657374696e6757616c6c65743a206f6e6c792062656e6566696360008201527f6961727900000000000000000000000000000000000000000000000000000000602082015250565b6000610d75602483610d08565b9150610d8082610d19565b604082019050919050565b60006020820190508181036000830152610da481610d68565b9050919050565b7f546f6b656e56657374696e6757616c6c65743a2062656e65666963696172792060008201527f6973207a65726f20616464726573730000000000000000000000000000000000602082015250565b6000610e07602f83610d08565b9150610e1282610dab565b604082019050919050565b60006020820190508181036000830152610e3681610dfa565b9050919050565b6000604082019050610e526000830185610ad4565b610e5f6020830184610ad4565b9392505050565b6000610e71826109eb565b9150610e7c836109eb565b925082821015610e8f57610e8e610b57565b5b828203905092915050565b6000604082019050610eaf6000830185610ad4565b610ebc60208301846109f5565b9392505050565b60008115159050919050565b610ed881610ec3565b8114610ee357600080fd5b50565b600081519050610ef581610ecf565b92915050565b600060208284031215610f1157610f10610979565b5b6000610f1f84828501610ee6565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b6000610f84602a83610d08565b9150610f8f82610f28565b604082019050919050565b60006020820190508181036000830152610fb381610f77565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b6000611016602683610d08565b915061102182610fba565b604082019050919050565b6000602082019050818103600083015261104581611009565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000611082601d83610d08565b915061108d8261104c565b602082019050919050565b600060208201905081810360008301526110b181611075565b9050919050565b600081519050919050565b600081905092915050565b60005b838110156110ec5780820151818401526020810190506110d1565b838111156110fb576000848401525b50505050565b600061110c826110b8565b61111681856110c3565b93506111268185602086016110ce565b80840191505092915050565b600061113e8284611101565b915081905092915050565b600081519050919050565b6000601f19601f8301169050919050565b600061117082611149565b61117a8185610d08565b935061118a8185602086016110ce565b61119381611154565b840191505092915050565b600060208201905081810360008301526111b88184611165565b90509291505056fea2646970667358221220a8dd068167f6ae9e7665c1cd9167efc50234d36b0b2b0954bcdf79783f84d12a64736f6c6343000809003300000000000000000000000096f5094998a20008839487369012bb4d3c56eafc00000000000000000000000041797b5e0398af475422f6f33f2dc81d9a24ae330000000000000000000000000000000000000000000000000000000062e717800000000000000000000000000000000000000000000000000000000001e19140