0x60806040526000600a556064600b556651b660cdd58000600c556005600d55600a600e556055600f557390a84fc95380aecf3f6fd0933647418690f2a84c601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550739aeff3996e54d5661a209be2fd571141a363d68d601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073165a4fe9172ad154b37a97adb5a96293747c5546601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735f4ec3df9cbd43714fe2740f5e3616155c5b8419601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200018957600080fd5b5060405162004b0d38038062004b0d8339818101604052810190620001af919062000447565b6040518060400160405280600681526020017f574d554e465400000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f574d554e4654000000000000000000000000000000000000000000000000000081525081600290816200022c9190620006fe565b5080600390816200023e9190620006fe565b506200024f620002cf60201b60201c565b6000819055505050620002776200026b620002d460201b60201c565b620002dc60201b60201c565b600160098190555081600a8190555080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050620007e5565b600090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b6000819050919050565b620003bc81620003a7565b8114620003c857600080fd5b50565b600081519050620003dc81620003b1565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200040f82620003e2565b9050919050565b620004218162000402565b81146200042d57600080fd5b50565b600081519050620004418162000416565b92915050565b60008060408385031215620004615762000460620003a2565b5b60006200047185828601620003cb565b9250506020620004848582860162000430565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200051057607f821691505b602082108103620005265762000525620004c8565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000551565b6200059c868362000551565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620005df620005d9620005d384620003a7565b620005b4565b620003a7565b9050919050565b6000819050919050565b620005fb83620005be565b620006136200060a82620005e6565b8484546200055e565b825550505050565b600090565b6200062a6200061b565b62000637818484620005f0565b505050565b5b818110156200065f576200065360008262000620565b6001810190506200063d565b5050565b601f821115620006ae5762000678816200052c565b620006838462000541565b8101602085101562000693578190505b620006ab620006a28562000541565b8301826200063c565b50505b505050565b600082821c905092915050565b6000620006d360001984600802620006b3565b1980831691505092915050565b6000620006ee8383620006c0565b9150826002028217905092915050565b62000709826200048e565b67ffffffffffffffff81111562000725576200072462000499565b5b620007318254620004f7565b6200073e82828562000663565b600060209050601f83116001811462000776576000841562000761578287015190505b6200076d8582620006e0565b865550620007dd565b601f19841662000786866200052c565b60005b82811015620007b05784890151825560018201915060208501945060208101905062000789565b86831015620007d05784890151620007cc601f891682620006c0565b8355505b6001600288020188555050505b505050505050565b61431880620007f56000396000f3fe6080604052600436106101e35760003560e01c8063715018a611610102578063a22cb46511610095578063c87b56dd11610064578063c87b56dd146106d2578063e985e9c51461070f578063ec186db31461074c578063f2fde38b14610768576101e3565b8063a22cb46514610625578063b88d4fde1461064e578063ba0c60c91461066a578063c23dc68f14610695576101e3565b80638da5cb5b116100d15780638da5cb5b146105675780638e15f4731461059257806395d89b41146105bd57806399a2557a146105e8576101e3565b8063715018a6146104bd57806381a7927e146104d457806383cfd807146104ff5780638462151c1461052a576101e3565b806332cb6b0c1161017a5780635bbb2177116101495780635bbb2177146103dd5780636352211e1461041a57806366e3e1221461045757806370a0823114610480576101e3565b806332cb6b0c1461034457806342842e0e1461036f57806347457a2c1461038b578063549df2df146103b4576101e3565b806318160ddd116101b657806318160ddd146102a95780631dcfab39146102d457806323b872dd146102fd5780632f48ab7d14610319576101e3565b806301ffc9a7146101e857806306fdde0314610225578063081812fc14610250578063095ea7b31461028d575b600080fd5b3480156101f457600080fd5b5061020f600480360381019061020a9190612e91565b610791565b60405161021c9190612ed9565b60405180910390f35b34801561023157600080fd5b5061023a610823565b6040516102479190612f84565b60405180910390f35b34801561025c57600080fd5b5061027760048036038101906102729190612fdc565b6108b5565b604051610284919061304a565b60405180910390f35b6102a760048036038101906102a29190613091565b610934565b005b3480156102b557600080fd5b506102be610a78565b6040516102cb91906130e0565b60405180910390f35b3480156102e057600080fd5b506102fb60048036038101906102f69190612fdc565b610a8f565b005b610317600480360381019061031291906130fb565b610aa1565b005b34801561032557600080fd5b5061032e610dc3565b60405161033b91906131ad565b60405180910390f35b34801561035057600080fd5b50610359610de9565b60405161036691906130e0565b60405180910390f35b610389600480360381019061038491906130fb565b610dee565b005b34801561039757600080fd5b506103b260048036038101906103ad9190613091565b610e0e565b005b3480156103c057600080fd5b506103db60048036038101906103d69190612fdc565b610f44565b005b3480156103e957600080fd5b5061040460048036038101906103ff919061322d565b610f56565b60405161041191906133dd565b60405180910390f35b34801561042657600080fd5b50610441600480360381019061043c9190612fdc565b611019565b60405161044e919061304a565b60405180910390f35b34801561046357600080fd5b5061047e60048036038101906104799190612fdc565b61102b565b005b34801561048c57600080fd5b506104a760048036038101906104a291906133ff565b61131e565b6040516104b491906130e0565b60405180910390f35b3480156104c957600080fd5b506104d26113d6565b005b3480156104e057600080fd5b506104e96113ea565b6040516104f691906130e0565b60405180910390f35b34801561050b57600080fd5b506105146113f0565b60405161052191906130e0565b60405180910390f35b34801561053657600080fd5b50610551600480360381019061054c91906133ff565b6113f6565b60405161055e91906134ea565b60405180910390f35b34801561057357600080fd5b5061057c611539565b604051610589919061304a565b60405180910390f35b34801561059e57600080fd5b506105a7611563565b6040516105b491906130e0565b60405180910390f35b3480156105c957600080fd5b506105d2611604565b6040516105df9190612f84565b60405180910390f35b3480156105f457600080fd5b5061060f600480360381019061060a919061350c565b611696565b60405161061c91906134ea565b60405180910390f35b34801561063157600080fd5b5061064c6004803603810190610647919061358b565b6118a2565b005b610668600480360381019061066391906136fb565b6119ad565b005b34801561067657600080fd5b5061067f611a20565b60405161068c91906130e0565b60405180910390f35b3480156106a157600080fd5b506106bc60048036038101906106b79190612fdc565b611a26565b6040516106c991906137d3565b60405180910390f35b3480156106de57600080fd5b506106f960048036038101906106f49190612fdc565b611a90565b6040516107069190612f84565b60405180910390f35b34801561071b57600080fd5b50610736600480360381019061073191906137ee565b611b29565b6040516107439190612ed9565b60405180910390f35b61076660048036038101906107619190612fdc565b611bbd565b005b34801561077457600080fd5b5061078f600480360381019061078a91906133ff565b611eff565b005b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107ec57506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061081c5750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6060600280546108329061385d565b80601f016020809104026020016040519081016040528092919081815260200182805461085e9061385d565b80156108ab5780601f10610880576101008083540402835291602001916108ab565b820191906000526020600020905b81548152906001019060200180831161088e57829003601f168201915b5050505050905090565b60006108c082611f82565b6108f6576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061093f82611019565b90508073ffffffffffffffffffffffffffffffffffffffff16610960611fe1565b73ffffffffffffffffffffffffffffffffffffffff16146109c35761098c81610987611fe1565b611b29565b6109c2576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b826006600084815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000610a82611fe9565b6001546000540303905090565b610a97611fee565b80600c8190555050565b6000610aac8261206c565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b13576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610b1f84612138565b91509150610b358187610b30611fe1565b61215f565b610b8157610b4a86610b45611fe1565b611b29565b610b80576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610be7576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bf486868660016121a3565b8015610bff57600082555b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815460010191905081905550610ccd85610ca98888876121a9565b7c0200000000000000000000000000000000000000000000000000000000176121d1565b600460008681526020019081526020016000208190555060007c0200000000000000000000000000000000000000000000000000000000841603610d535760006001850190506000600460008381526020019081526020016000205403610d51576000548114610d50578360046000838152602001908152602001600020819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610dbb86868660016121fc565b505050505050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606481565b610e09838383604051806020016040528060008152506119ad565b505050565b610e16611fee565b610e1e612202565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e84906138da565b60405180910390fd5b600b54811115610ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec990613946565b60405180910390fd5b6000610edc610a78565b905060648282610eec9190613995565b1115610f2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2490613a3b565b60405180910390fd5b610f378383612251565b50610f4061226f565b5050565b610f4c611fee565b80600b8190555050565b6060600083839050905060008167ffffffffffffffff811115610f7c57610f7b6135d0565b5b604051908082528060200260200182016040528015610fb557816020015b610fa2612dd6565b815260200190600190039081610f9a5790505b50905060005b82811461100d57610fe4868683818110610fd857610fd7613a5b565b5b90506020020135611a26565b828281518110610ff757610ff6613a5b565b5b6020026020010181905250806001019050610fbb565b50809250505092915050565b60006110248261206c565b9050919050565b611033612202565b600b54811115611078576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106f90613946565b60405180910390fd5b6000611082610a78565b9050606482826110929190613995565b11156110d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ca90613a3b565b60405180910390fd5b60006110dd611563565b9050600068056bc75e2d631000008285600c546110fa9190613a8a565b6111049190613a8a565b61110e9190613afb565b905061115f333083601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612279909392919063ffffffff16565b60006064600d54836111719190613a8a565b61117b9190613afb565b905060006064600e548461118f9190613a8a565b6111999190613afb565b905060008183856111aa9190613b2c565b6111b49190613b2c565b9050611225601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166123029092919063ffffffff16565b611294601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166123029092919063ffffffff16565b611303601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166123029092919063ffffffff16565b61130d3388612251565b50505050505061131b61226f565b50565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611385576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b6113de611fee565b6113e86000612388565b565b600c5481565b600a5481565b606060008060006114068561131e565b905060008167ffffffffffffffff811115611424576114236135d0565b5b6040519080825280602002602001820160405280156114525781602001602082028036833780820191505090505b50905061145d612dd6565b6000611467611fe9565b90505b83861461152b5761147a8161244e565b9150816040015161152057600073ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16146114c557816000015194505b8773ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361151f578083878060010198508151811061151257611511613a5b565b5b6020026020010181815250505b5b80600101905061146a565b508195505050505050919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156115d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f79190613bed565b5050509150508091505090565b6060600380546116139061385d565b80601f016020809104026020016040519081016040528092919081815260200182805461163f9061385d565b801561168c5780601f106116615761010080835404028352916020019161168c565b820191906000526020600020905b81548152906001019060200180831161166f57829003601f168201915b5050505050905090565b60608183106116d1576040517f32c1995a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806116dc612479565b90506116e6611fe9565b8510156116f8576116f5611fe9565b94505b80841115611704578093505b600061170f8761131e565b90508486101561173257600086860390508181101561172c578091505b50611737565b600090505b60008167ffffffffffffffff811115611753576117526135d0565b5b6040519080825280602002602001820160405280156117815781602001602082028036833780820191505090505b50905060008203611798578094505050505061189b565b60006117a388611a26565b9050600081604001516117b857816000015190505b60008990505b8881141580156117ce5750848714155b1561188d576117dc8161244e565b9250826040015161188257600073ffffffffffffffffffffffffffffffffffffffff16836000015173ffffffffffffffffffffffffffffffffffffffff161461182757826000015191505b8a73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611881578084888060010199508151811061187457611873613a5b565b5b6020026020010181815250505b5b8060010190506117be565b508583528296505050505050505b9392505050565b80600760006118af611fe1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661195c611fe1565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516119a19190612ed9565b60405180910390a35050565b6119b8848484610aa1565b60008373ffffffffffffffffffffffffffffffffffffffff163b14611a1a576119e384848484612482565b611a19576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b600b5481565b611a2e612dd6565b611a36612dd6565b611a3e611fe9565b831080611a525750611a4e612479565b8310155b15611a605780915050611a8b565b611a698361244e565b9050806040015115611a7e5780915050611a8b565b611a87836125d2565b9150505b919050565b6060611a9b82611f82565b611ada576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad190613cb4565b60405180910390fd5b600082612710600a54611aed9190613a8a565b611af79190613995565b9050611b02816125f2565b604051602001611b129190613d82565b604051602081830303815290604052915050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611bc5612202565b600b54811115611c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0190613946565b60405180910390fd5b6000611c14610a78565b905060648282611c249190613995565b1115611c65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5c90613a3b565b60405180910390fd5b81600c54611c739190613a8a565b341015611cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cac90613df0565b60405180910390fd5b60006064600d5484600c54611cca9190613a8a565b611cd49190613a8a565b611cde9190613afb565b905060006064600e5485600c54611cf59190613a8a565b611cff9190613a8a565b611d099190613afb565b905060006064600f5486600c54611d209190613a8a565b611d2a9190613a8a565b611d349190613afb565b9050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015611d9e573d6000803e3d6000fd5b50601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611e07573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e70573d6000803e3d6000fd5b5084600c54611e7f9190613a8a565b341115611ee6573373ffffffffffffffffffffffffffffffffffffffff166108fc86600c54611eae9190613a8a565b34611eb99190613b2c565b9081150290604051600060405180830381858888f19350505050158015611ee4573d6000803e3d6000fd5b505b611ef03386612251565b50505050611efc61226f565b50565b611f07611fee565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6d90613e82565b60405180910390fd5b611f7f81612388565b50565b600081611f8d611fe9565b11158015611f9c575060005482105b8015611fda575060007c0100000000000000000000000000000000000000000000000000000000600460008581526020019081526020016000205416145b9050919050565b600033905090565b600090565b611ff66126c0565b73ffffffffffffffffffffffffffffffffffffffff16612014611539565b73ffffffffffffffffffffffffffffffffffffffff161461206a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206190613eee565b60405180910390fd5b565b6000808290508061207b611fe9565b11612101576000548110156121005760006004600083815260200190815260200160002054905060007c01000000000000000000000000000000000000000000000000000000008216036120fe575b600081036120f45760046000836001900393508381526020019081526020016000205490506120ca565b8092505050612133565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60008060006006600085815260200190815260200160002090508092508254915050915091565b600073ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b60008060e883901c905060e86121c08686846126c8565b62ffffff16901b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b600260095403612247576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223e90613f5a565b60405180910390fd5b6002600981905550565b61226b8282604051806020016040528060008152506126d1565b5050565b6001600981905550565b6122fc846323b872dd60e01b85858560405160240161229a93929190613f7a565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061276e565b50505050565b6123838363a9059cbb60e01b8484604051602401612321929190613fb1565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061276e565b505050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612456612dd6565b6124726004600084815260200190815260200160002054612835565b9050919050565b60008054905090565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a026124a8611fe1565b8786866040518563ffffffff1660e01b81526004016124ca949392919061402f565b6020604051808303816000875af192505050801561250657506040513d601f19601f820116820180604052508101906125039190614090565b60015b61257f573d8060008114612536576040519150601f19603f3d011682016040523d82523d6000602084013e61253b565b606091505b506000815103612577576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6125da612dd6565b6125eb6125e68361206c565b612835565b9050919050565b606060006001612601846128eb565b01905060008167ffffffffffffffff8111156126205761261f6135d0565b5b6040519080825280601f01601f1916602001820160405280156126525781602001600182028036833780820191505090505b509050600082602001820190505b6001156126b5578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816126a9576126a8613acc565b5b04945060008503612660575b819350505050919050565b600033905090565b60009392505050565b6126db8383612a3e565b60008373ffffffffffffffffffffffffffffffffffffffff163b1461276957600080549050600083820390505b61271b6000868380600101945086612482565b612751576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81811061270857816000541461276657600080fd5b50505b505050565b60006127d0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612bf99092919063ffffffff16565b905060008151111561283057808060200190518101906127f091906140d2565b61282f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282690614171565b60405180910390fd5b5b505050565b61283d612dd6565b81816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060a082901c816020019067ffffffffffffffff16908167ffffffffffffffff168152505060007c01000000000000000000000000000000000000000000000000000000008316141581604001901515908115158152505060e882901c816060019062ffffff16908162ffffff1681525050919050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612949577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161293f5761293e613acc565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612986576d04ee2d6d415b85acef8100000000838161297c5761297b613acc565b5b0492506020810190505b662386f26fc1000083106129b557662386f26fc1000083816129ab576129aa613acc565b5b0492506010810190505b6305f5e10083106129de576305f5e10083816129d4576129d3613acc565b5b0492506008810190505b6127108310612a035761271083816129f9576129f8613acc565b5b0492506004810190505b60648310612a265760648381612a1c57612a1b613acc565b5b0492506002810190505b600a8310612a35576001810190505b80915050919050565b60008054905060008203612a7e576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612a8b60008483856121a3565b600160406001901b178202600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550612b0283612af360008660006121a9565b612afc85612c11565b176121d1565b6004600083815260200190815260200160002081905550600080838301905073ffffffffffffffffffffffffffffffffffffffff85169150828260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600183015b818114612ba357808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600181019050612b68565b5060008203612bde576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000819055505050612bf460008483856121fc565b505050565b6060612c088484600085612c21565b90509392505050565b60006001821460e11b9050919050565b606082471015612c66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5d90614203565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612c8f919061425f565b60006040518083038185875af1925050503d8060008114612ccc576040519150601f19603f3d011682016040523d82523d6000602084013e612cd1565b606091505b5091509150612ce287838387612cee565b92505050949350505050565b60608315612d50576000835103612d4857612d0885612d63565b612d47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3e906142c2565b60405180910390fd5b5b829050612d5b565b612d5a8383612d86565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082511115612d995781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dcd9190612f84565b60405180910390fd5b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff168152602001600015158152602001600062ffffff1681525090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612e6e81612e39565b8114612e7957600080fd5b50565b600081359050612e8b81612e65565b92915050565b600060208284031215612ea757612ea6612e2f565b5b6000612eb584828501612e7c565b91505092915050565b60008115159050919050565b612ed381612ebe565b82525050565b6000602082019050612eee6000830184612eca565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f2e578082015181840152602081019050612f13565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f5682612ef4565b612f608185612eff565b9350612f70818560208601612f10565b612f7981612f3a565b840191505092915050565b60006020820190508181036000830152612f9e8184612f4b565b905092915050565b6000819050919050565b612fb981612fa6565b8114612fc457600080fd5b50565b600081359050612fd681612fb0565b92915050565b600060208284031215612ff257612ff1612e2f565b5b600061300084828501612fc7565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061303482613009565b9050919050565b61304481613029565b82525050565b600060208201905061305f600083018461303b565b92915050565b61306e81613029565b811461307957600080fd5b50565b60008135905061308b81613065565b92915050565b600080604083850312156130a8576130a7612e2f565b5b60006130b68582860161307c565b92505060206130c785828601612fc7565b9150509250929050565b6130da81612fa6565b82525050565b60006020820190506130f560008301846130d1565b92915050565b60008060006060848603121561311457613113612e2f565b5b60006131228682870161307c565b93505060206131338682870161307c565b925050604061314486828701612fc7565b9150509250925092565b6000819050919050565b600061317361316e61316984613009565b61314e565b613009565b9050919050565b600061318582613158565b9050919050565b60006131978261317a565b9050919050565b6131a78161318c565b82525050565b60006020820190506131c2600083018461319e565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126131ed576131ec6131c8565b5b8235905067ffffffffffffffff81111561320a576132096131cd565b5b602083019150836020820283011115613226576132256131d2565b5b9250929050565b6000806020838503121561324457613243612e2f565b5b600083013567ffffffffffffffff81111561326257613261612e34565b5b61326e858286016131d7565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6132af81613029565b82525050565b600067ffffffffffffffff82169050919050565b6132d2816132b5565b82525050565b6132e181612ebe565b82525050565b600062ffffff82169050919050565b6132ff816132e7565b82525050565b60808201600082015161331b60008501826132a6565b50602082015161332e60208501826132c9565b50604082015161334160408501826132d8565b50606082015161335460608501826132f6565b50505050565b60006133668383613305565b60808301905092915050565b6000602082019050919050565b600061338a8261327a565b6133948185613285565b935061339f83613296565b8060005b838110156133d05781516133b7888261335a565b97506133c283613372565b9250506001810190506133a3565b5085935050505092915050565b600060208201905081810360008301526133f7818461337f565b905092915050565b60006020828403121561341557613414612e2f565b5b60006134238482850161307c565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61346181612fa6565b82525050565b60006134738383613458565b60208301905092915050565b6000602082019050919050565b60006134978261342c565b6134a18185613437565b93506134ac83613448565b8060005b838110156134dd5781516134c48882613467565b97506134cf8361347f565b9250506001810190506134b0565b5085935050505092915050565b60006020820190508181036000830152613504818461348c565b905092915050565b60008060006060848603121561352557613524612e2f565b5b60006135338682870161307c565b935050602061354486828701612fc7565b925050604061355586828701612fc7565b9150509250925092565b61356881612ebe565b811461357357600080fd5b50565b6000813590506135858161355f565b92915050565b600080604083850312156135a2576135a1612e2f565b5b60006135b08582860161307c565b92505060206135c185828601613576565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61360882612f3a565b810181811067ffffffffffffffff82111715613627576136266135d0565b5b80604052505050565b600061363a612e25565b905061364682826135ff565b919050565b600067ffffffffffffffff821115613666576136656135d0565b5b61366f82612f3a565b9050602081019050919050565b82818337600083830152505050565b600061369e6136998461364b565b613630565b9050828152602081018484840111156136ba576136b96135cb565b5b6136c584828561367c565b509392505050565b600082601f8301126136e2576136e16131c8565b5b81356136f284826020860161368b565b91505092915050565b6000806000806080858703121561371557613714612e2f565b5b60006137238782880161307c565b94505060206137348782880161307c565b935050604061374587828801612fc7565b925050606085013567ffffffffffffffff81111561376657613765612e34565b5b613772878288016136cd565b91505092959194509250565b60808201600082015161379460008501826132a6565b5060208201516137a760208501826132c9565b5060408201516137ba60408501826132d8565b5060608201516137cd60608501826132f6565b50505050565b60006080820190506137e8600083018461377e565b92915050565b6000806040838503121561380557613804612e2f565b5b60006138138582860161307c565b92505060206138248582860161307c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061387557607f821691505b6020821081036138885761388761382e565b5b50919050565b7f616464722073686f756c64206e6f74206265203078302e000000000000000000600082015250565b60006138c4601783612eff565b91506138cf8261388e565b602082019050919050565b600060208201905081810360008301526138f3816138b7565b9050919050565b7f457863656564656420746865206c696d69740000000000000000000000000000600082015250565b6000613930601283612eff565b915061393b826138fa565b602082019050919050565b6000602082019050818103600083015261395f81613923565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006139a082612fa6565b91506139ab83612fa6565b92508282019050808211156139c3576139c2613966565b5b92915050565b7f53616c6520697320616c6d6f737420646f6e6520616e6420776520646f6e277460008201527f206861766520656e6f75676874204e465473206c6566742e0000000000000000602082015250565b6000613a25603883612eff565b9150613a30826139c9565b604082019050919050565b60006020820190508181036000830152613a5481613a18565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613a9582612fa6565b9150613aa083612fa6565b9250828202613aae81612fa6565b91508282048414831517613ac557613ac4613966565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613b0682612fa6565b9150613b1183612fa6565b925082613b2157613b20613acc565b5b828204905092915050565b6000613b3782612fa6565b9150613b4283612fa6565b9250828203905081811115613b5a57613b59613966565b5b92915050565b600069ffffffffffffffffffff82169050919050565b613b7f81613b60565b8114613b8a57600080fd5b50565b600081519050613b9c81613b76565b92915050565b6000819050919050565b613bb581613ba2565b8114613bc057600080fd5b50565b600081519050613bd281613bac565b92915050565b600081519050613be781612fb0565b92915050565b600080600080600060a08688031215613c0957613c08612e2f565b5b6000613c1788828901613b8d565b9550506020613c2888828901613bc3565b9450506040613c3988828901613bd8565b9350506060613c4a88828901613bd8565b9250506080613c5b88828901613b8d565b9150509295509295909350565b7f54686973204e465420646f65736e27742065786973742e000000000000000000600082015250565b6000613c9e601783612eff565b9150613ca982613c68565b602082019050919050565b60006020820190508181036000830152613ccd81613c91565b9050919050565b600081905092915050565b7f68747470733a2f2f736572766963652e65636f6e66742e636f2e6b722f6d657460008201527f612d776d752d6e66742e7068703f69643d000000000000000000000000000000602082015250565b6000613d3b603183613cd4565b9150613d4682613cdf565b603182019050919050565b6000613d5c82612ef4565b613d668185613cd4565b9350613d76818560208601612f10565b80840191505092915050565b6000613d8d82613d2e565b9150613d998284613d51565b915081905092915050565b7f4e6f7420656e6f7567682065746865722073656e740000000000000000000000600082015250565b6000613dda601583612eff565b9150613de582613da4565b602082019050919050565b60006020820190508181036000830152613e0981613dcd565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613e6c602683612eff565b9150613e7782613e10565b604082019050919050565b60006020820190508181036000830152613e9b81613e5f565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613ed8602083612eff565b9150613ee382613ea2565b602082019050919050565b60006020820190508181036000830152613f0781613ecb565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000613f44601f83612eff565b9150613f4f82613f0e565b602082019050919050565b60006020820190508181036000830152613f7381613f37565b9050919050565b6000606082019050613f8f600083018661303b565b613f9c602083018561303b565b613fa960408301846130d1565b949350505050565b6000604082019050613fc6600083018561303b565b613fd360208301846130d1565b9392505050565b600081519050919050565b600082825260208201905092915050565b600061400182613fda565b61400b8185613fe5565b935061401b818560208601612f10565b61402481612f3a565b840191505092915050565b6000608082019050614044600083018761303b565b614051602083018661303b565b61405e60408301856130d1565b81810360608301526140708184613ff6565b905095945050505050565b60008151905061408a81612e65565b92915050565b6000602082840312156140a6576140a5612e2f565b5b60006140b48482850161407b565b91505092915050565b6000815190506140cc8161355f565b92915050565b6000602082840312156140e8576140e7612e2f565b5b60006140f6848285016140bd565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b600061415b602a83612eff565b9150614166826140ff565b604082019050919050565b6000602082019050818103600083015261418a8161414e565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b60006141ed602683612eff565b91506141f882614191565b604082019050919050565b6000602082019050818103600083015261421c816141e0565b9050919050565b600081905092915050565b600061423982613fda565b6142438185614223565b9350614253818560208601612f10565b80840191505092915050565b600061426b828461422e565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b60006142ac601d83612eff565b91506142b782614276565b602082019050919050565b600060208201905081810360008301526142db8161429f565b905091905056fea264697066735822122036a339c52c3877f41dd4d87d4804e1135a979d66eedcfa5133f56a44bbf0e1b664736f6c634300081100330000000000000000000000000000000000000000000000000000000000000007000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7