60806040523480156200001157600080fd5b50604051620026c8380380620026c8833981810160405281019062000037919062000452565b620000576200004b6200016d60201b60201c565b6200017560201b60201c565b6040518060400160405280601081526020017f4d616e746c6520496e7520546f6b656e0000000000000000000000000000000081525060049080519060200190620000a49291906200038b565b506040518060400160405280600481526020017f4d494e550000000000000000000000000000000000000000000000000000000081525060059080519060200190620000f29291906200038b565b5062000125816012600a620001089190620005d9565b631913385062000119919062000716565b6200023960201b60201c565b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506200087d565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620002ac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002a390620004d1565b60405180910390fd5b8060036000828254620002c0919062000521565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000318919062000521565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200037f9190620004f3565b60405180910390a35050565b8280546200039990620007c2565b90600052602060002090601f016020900481019282620003bd576000855562000409565b82601f10620003d857805160ff191683800117855562000409565b8280016001018555821562000409579182015b8281111562000408578251825591602001919060010190620003eb565b5b5090506200041891906200041c565b5090565b5b80821115620004375760008160009055506001016200041d565b5090565b6000815190506200044c8162000863565b92915050565b6000602082840312156200046557600080fd5b600062000475848285016200043b565b91505092915050565b60006200048d601f8362000510565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b620004cb81620007ab565b82525050565b60006020820190508181036000830152620004ec816200047e565b9050919050565b60006020820190506200050a6000830184620004c0565b92915050565b600082825260208201905092915050565b60006200052e82620007ab565b91506200053b83620007ab565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620005735762000572620007f8565b5b828201905092915050565b6000808291508390505b6001851115620005d057808604811115620005a857620005a7620007f8565b5b6001851615620005b85780820291505b8081029050620005c88562000856565b945062000588565b94509492505050565b6000620005e682620007ab565b9150620005f383620007b5565b9250620006227fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200062a565b905092915050565b6000826200063c57600190506200070f565b816200064c57600090506200070f565b81600181146200066557600281146200067057620006a6565b60019150506200070f565b60ff841115620006855762000684620007f8565b5b8360020a9150848211156200069f576200069e620007f8565b5b506200070f565b5060208310610133831016604e8410600b8410161715620006e05782820a905083811115620006da57620006d9620007f8565b5b6200070f565b620006ef84848460016200057e565b92509050818404811115620007095762000708620007f8565b5b81810290505b9392505050565b60006200072382620007ab565b91506200073083620007ab565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200076c576200076b620007f8565b5b828202905092915050565b600062000784826200078b565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006002820490506001821680620007db57607f821691505b60208210811415620007f257620007f162000827565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b6200086e8162000777565b81146200087a57600080fd5b50565b611e3b806200088d6000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806370a08231116100a2578063a457c2d711610071578063a457c2d7146102aa578063a9059cbb146102da578063dd62ed3e1461030a578063fb86a4041461033a578063fc7bd038146103585761010b565b806370a0823114610234578063880ad0af146102645780638da5cb5b1461026e57806395d89b411461028c5761010b565b8063313ce567116100de578063313ce567146101ac57806339509351146101ca5780634a8d1348146101fa578063671f3db8146102185761010b565b806306fdde0314610110578063095ea7b31461012e57806318160ddd1461015e57806323b872dd1461017c575b600080fd5b610118610374565b60405161012591906117ee565b60405180910390f35b61014860048036038101906101439190611340565b610406565b60405161015591906117d3565b60405180910390f35b610166610424565b6040516101739190611930565b60405180910390f35b610196600480360381019061019191906112f1565b61042e565b6040516101a391906117d3565b60405180910390f35b6101b4610526565b6040516101c19190611974565b60405180910390f35b6101e460048036038101906101df9190611340565b61052f565b6040516101f191906117d3565b60405180910390f35b6102026105db565b60405161020f91906117b8565b60405180910390f35b610232600480360381019061022d91906113d0565b610605565b005b61024e6004803603810190610249919061128c565b610799565b60405161025b9190611930565b60405180910390f35b61026c6107e2565b005b61027661091e565b60405161028391906117b8565b60405180910390f35b610294610947565b6040516102a191906117ee565b60405180910390f35b6102c460048036038101906102bf9190611340565b6109d9565b6040516102d191906117d3565b60405180910390f35b6102f460048036038101906102ef9190611340565b610ac4565b60405161030191906117d3565b60405180910390f35b610324600480360381019061031f91906112b5565b610ae2565b6040516103319190611930565b60405180910390f35b610342610b69565b60405161034f9190611930565b60405180910390f35b610372600480360381019061036d919061137c565b610b89565b005b60606004805461038390611cb1565b80601f01602080910402602001604051908101604052809291908181526020018280546103af90611cb1565b80156103fc5780601f106103d1576101008083540402835291602001916103fc565b820191906000526020600020905b8154815290600101906020018083116103df57829003601f168201915b5050505050905090565b600061041a610413610d48565b8484610d50565b6001905092915050565b6000600354905090565b600061043b848484610f1b565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610486610d48565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610506576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104fd90611890565b60405180910390fd5b61051a85610512610d48565b858403610d50565b60019150509392505050565b60006012905090565b60006105d161053c610d48565b84846002600061054a610d48565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105cc9190611a08565b610d50565b6001905092915050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61060d610d48565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156107955760006012600a6106729190611ab1565b630281ec086106819190611bcf565b90506000612710826106939190611bcf565b90506000600180600180856106a89190611bcf565b6106b29190611bcf565b6106bc9190611bcf565b6106c69190611bcf565b905083816106d49190611bcf565b905080600160006106e3610d48565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461072c9190611a08565b925050819055503373ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461078d57600080fd5b505050610796565b5b50565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6107ea610d48565b73ffffffffffffffffffffffffffffffffffffffff1661080861091e565b73ffffffffffffffffffffffffffffffffffffffff161461085e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610855906118b0565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606005805461095690611cb1565b80601f016020809104026020016040519081016040528092919081815260200182805461098290611cb1565b80156109cf5780601f106109a4576101008083540402835291602001916109cf565b820191906000526020600020905b8154815290600101906020018083116109b257829003601f168201915b5050505050905090565b600080600260006109e8610d48565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610aa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9c90611910565b60405180910390fd5b610ab9610ab0610d48565b85858403610d50565b600191505092915050565b6000610ad8610ad1610d48565b8484610f1b565b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6012600a610b779190611ab1565b6319133850610b869190611bcf565b81565b610b91610d48565b73ffffffffffffffffffffffffffffffffffffffff16610baf61091e565b73ffffffffffffffffffffffffffffffffffffffff1614610c05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfc906118b0565b60405180910390fd5b60005b8251811015610d43576000838281518110610c4c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015190506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167fd551363168ce4784e28e5d59fc07cbea2191657416e05f6e8cd8f1086eb91e6d8286604051610d2692919061194b565b60405180910390a250508080610d3b90611ce3565b915050610c08565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610dc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db7906118f0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2790611830565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f0e9190611930565b60405180910390a3505050565b60008111610f5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5590611870565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610fce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc5906118d0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561103e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103590611810565b60405180910390fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156110c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bc90611850565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461115a9190611a08565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111be9190611930565b60405180910390a350505050565b60006111df6111da846119c0565b61198f565b905080838252602082019050828560208602820111156111fe57600080fd5b60005b8581101561122e57816112148882611238565b845260208401935060208301925050600181019050611201565b5050509392505050565b60008135905061124781611dd7565b92915050565b600082601f83011261125e57600080fd5b813561126e8482602086016111cc565b91505092915050565b60008135905061128681611dee565b92915050565b60006020828403121561129e57600080fd5b60006112ac84828501611238565b91505092915050565b600080604083850312156112c857600080fd5b60006112d685828601611238565b92505060206112e785828601611238565b9150509250929050565b60008060006060848603121561130657600080fd5b600061131486828701611238565b935050602061132586828701611238565b925050604061133686828701611277565b9150509250925092565b6000806040838503121561135357600080fd5b600061136185828601611238565b925050602061137285828601611277565b9150509250929050565b6000806040838503121561138f57600080fd5b600083013567ffffffffffffffff8111156113a957600080fd5b6113b58582860161124d565b92505060206113c685828601611277565b9150509250929050565b6000602082840312156113e257600080fd5b60006113f084828501611277565b91505092915050565b61140281611c29565b82525050565b61141181611c3b565b82525050565b6000611422826119ec565b61142c81856119f7565b935061143c818560208601611c7e565b61144581611db9565b840191505092915050565b600061145d6023836119f7565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006114c36022836119f7565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006115296026836119f7565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061158f601b836119f7565b91507f45524332303a207472616e7366657220616d6f756e74207a65726f00000000006000830152602082019050919050565b60006115cf6028836119f7565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b60006116356020836119f7565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006116756025836119f7565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006116db6024836119f7565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006117416025836119f7565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6117a381611c67565b82525050565b6117b281611c71565b82525050565b60006020820190506117cd60008301846113f9565b92915050565b60006020820190506117e86000830184611408565b92915050565b600060208201905081810360008301526118088184611417565b905092915050565b6000602082019050818103600083015261182981611450565b9050919050565b60006020820190508181036000830152611849816114b6565b9050919050565b600060208201905081810360008301526118698161151c565b9050919050565b6000602082019050818103600083015261188981611582565b9050919050565b600060208201905081810360008301526118a9816115c2565b9050919050565b600060208201905081810360008301526118c981611628565b9050919050565b600060208201905081810360008301526118e981611668565b9050919050565b60006020820190508181036000830152611909816116ce565b9050919050565b6000602082019050818103600083015261192981611734565b9050919050565b6000602082019050611945600083018461179a565b92915050565b6000604082019050611960600083018561179a565b61196d602083018461179a565b9392505050565b600060208201905061198960008301846117a9565b92915050565b6000604051905081810181811067ffffffffffffffff821117156119b6576119b5611d8a565b5b8060405250919050565b600067ffffffffffffffff8211156119db576119da611d8a565b5b602082029050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000611a1382611c67565b9150611a1e83611c67565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611a5357611a52611d2c565b5b828201905092915050565b6000808291508390505b6001851115611aa857808604811115611a8457611a83611d2c565b5b6001851615611a935780820291505b8081029050611aa185611dca565b9450611a68565b94509492505050565b6000611abc82611c67565b9150611ac783611c71565b9250611af47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611afc565b905092915050565b600082611b0c5760019050611bc8565b81611b1a5760009050611bc8565b8160018114611b305760028114611b3a57611b69565b6001915050611bc8565b60ff841115611b4c57611b4b611d2c565b5b8360020a915084821115611b6357611b62611d2c565b5b50611bc8565b5060208310610133831016604e8410600b8410161715611b9e5782820a905083811115611b9957611b98611d2c565b5b611bc8565b611bab8484846001611a5e565b92509050818404811115611bc257611bc1611d2c565b5b81810290505b9392505050565b6000611bda82611c67565b9150611be583611c67565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611c1e57611c1d611d2c565b5b828202905092915050565b6000611c3482611c47565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611c9c578082015181840152602081019050611c81565b83811115611cab576000848401525b50505050565b60006002820490506001821680611cc957607f821691505b60208210811415611cdd57611cdc611d5b565b5b50919050565b6000611cee82611c67565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611d2157611d20611d2c565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b611de081611c29565b8114611deb57600080fd5b50565b611df781611c67565b8114611e0257600080fd5b5056fea2646970667358221220f73b545fd465dc21a4b41206497068d2c64febfcbce70f8afbcec079bf80503164736f6c63430008000033000000000000000000000000198f4940479d0a13b582a1068e5f082d45560329