0x60806040523480156200001157600080fd5b5060405162004e6038038062004e60833981016040819052620000349162000206565b6001600160a01b0384166200005c5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038316620000845760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038216620000ac5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038116620000d45760405163d92e233d60e01b815260040160405180910390fd5b620000e160003362000135565b600480546001600160a01b039586166001600160a01b031991821617909155600280549486169482169490941790935560018054928516928416929092179091556006805491909316911617905562000263565b62000141828262000145565b5050565b60008281526003602090815260408083206001600160a01b038516845290915290205460ff16620001415760008281526003602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620001a53390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b80516001600160a01b03811681146200020157600080fd5b919050565b600080600080608085870312156200021d57600080fd5b6200022885620001e9565b93506200023860208601620001e9565b92506200024860408601620001e9565b91506200025860608601620001e9565b905092959194509250565b614bed80620002736000396000f3fe6080604052600436106101bb5760003560e01c80639e99ec39116100ec578063d4ee1d901161008a578063e2a4ac2d11610064578063e2a4ac2d146105a9578063e738aa8d146105d6578063f2fde38b146105e9578063f9636f301461060957600080fd5b8063d4ee1d901461053c578063d547741f14610569578063da6689f01461058957600080fd5b8063ac9650d8116100c6578063ac9650d81461048c578063adb88982146104b9578063c75a57e4146104d9578063d00a2d5f1461051c57600080fd5b80639e99ec391461042a578063a217fddf1461044a578063a2625efc1461045f57600080fd5b8063285f94a01161015957806336568abe1161013357806336568abe146103755780634e71e0c8146103955780637fe68917146103aa57806391d14854146103d757600080fd5b8063285f94a0146102d65780632e476337146103285780632f2ff15d1461035557600080fd5b80631696516011610195578063169651601461025357806318137a4114610273578063183d9c9514610293578063248a9ca3146102a657600080fd5b806301ffc9a7146101c757806306135b7c146101fc578063086efdc41461021157600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101e76101e2366004613956565b61061e565b60405190151581526020015b60405180910390f35b61020f61020a366004613ddf565b6106b7565b005b34801561021d57600080fd5b506102457fafffb39e42e2a1496bc4305c8783f904fa76641e3895205b6002a03336ee097581565b6040519081526020016101f3565b34801561025f57600080fd5b5061020f61026e366004613eae565b610a41565b34801561027f57600080fd5b5061020f61028e366004613ede565b610b7f565b6102456102a1366004613efb565b610c57565b3480156102b257600080fd5b506102456102c1366004613fc2565b60009081526003602052604090206001015490565b3480156102e257600080fd5b506005546103039073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101f3565b34801561033457600080fd5b506002546103039073ffffffffffffffffffffffffffffffffffffffff1681565b34801561036157600080fd5b5061020f610370366004613eae565b610d01565b34801561038157600080fd5b5061020f610390366004613eae565b610d2b565b3480156103a157600080fd5b5061020f610de3565b3480156103b657600080fd5b506004546103039073ffffffffffffffffffffffffffffffffffffffff1681565b3480156103e357600080fd5b506101e76103f2366004613eae565b600091825260036020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b34801561043657600080fd5b5061020f610445366004613ede565b610e74565b34801561045657600080fd5b50610245600081565b34801561046b57600080fd5b506006546103039073ffffffffffffffffffffffffffffffffffffffff1681565b34801561049857600080fd5b506104ac6104a7366004613fdb565b610f44565b6040516101f39190614113565b3480156104c557600080fd5b5061020f6104d4366004613ede565b611039565b3480156104e557600080fd5b506103036104f4366004613fc2565b60086020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b34801561052857600080fd5b5061020f610537366004614126565b611180565b34801561054857600080fd5b506007546103039073ffffffffffffffffffffffffffffffffffffffff1681565b34801561057557600080fd5b5061020f610584366004613eae565b611202565b34801561059557600080fd5b5061020f6105a436600461417f565b611227565b3480156105b557600080fd5b506001546103039073ffffffffffffffffffffffffffffffffffffffff1681565b6102456105e43660046141ad565b61134f565b3480156105f557600080fd5b5061020f610604366004613ede565b6113f9565b34801561061557600080fd5b50610245600181565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806106b157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6106de826000015183602001518460400151856060015186608001518760a00151306114c4565b5081518051600091906106f39060019061429f565b81518110610703576107036142b2565b602002602001015190508560ff1660000361086157600061073a73ffffffffffffffffffffffffffffffffffffffff8316306119da565b6004549091506107649073ffffffffffffffffffffffffffffffffffffffff848116911683611a9f565b60045473ffffffffffffffffffffffffffffffffffffffff9081169063f452ed4d90610791908516611ac3565b61079c57600061079e565b825b6040518060c001604052808f81526020018581526020018a866107c1919061429f565b81526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018e8152508760e001518d8d6040518663ffffffff1660e01b8152600401610828949392919061432a565b6000604051808303818588803b15801561084157600080fd5b505af1158015610855573d6000803e3d6000fd5b50505050505050610a36565b8560ff16600103610a0457600061088e73ffffffffffffffffffffffffffffffffffffffff8316306119da565b60045460408601519192506108bd9173ffffffffffffffffffffffffffffffffffffffff858116921690611a9f565b60045473ffffffffffffffffffffffffffffffffffffffff90811690630421caf0906108ea908516611ac3565b6108f55760006108f7565b825b6040518060c001604052808f8152602001886040015181526020018a8960400151610922919061429f565b81526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018e8152508760e001518d8d8b6040518763ffffffff1660e01b815260040161098b9594939291906143b1565b6000604051808303818588803b1580156109a457600080fd5b505af11580156109b8573d6000803e3d6000fd5b505050505083604001518111156109fd576109fb838560400151836109dd919061429f565b73ffffffffffffffffffffffffffffffffffffffff85169190611b16565b505b5050610a36565b6040517f26667fc400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050505050565b7fafffb39e42e2a1496bc4305c8783f904fa76641e3895205b6002a03336ee0975610a6b81611bc8565b82600003610aa5576040517f196de28b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610af2576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008381526008602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86169081179091558251868152918201527f11f5b5361c420666dc3452b8107601e1702f94b951f15bd93c26262c8147874e91015b60405180910390a1505050565b6000610b8a81611bc8565b73ffffffffffffffffffffffffffffffffffffffff8216610bd7576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416908117909155604080519182523360208301527f61b6fe2922f0180b98d305419bf3dcf432f5d8df894388c61c1f599c2194ec1d91015b60405180910390a15050565b6000610c688989898989898961134f565b6040517f73776170496e53616d65436861696e0000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8416903390600f0160405180910390207fe3716b48e7d01d727d68472c873c69c2c4407365e4f68b2b6c8dd4569cd16dc78c8c868c89604051610ced9594939291906144da565b60405180910390a498975050505050505050565b600082815260036020526040902060010154610d1c81611bc8565b610d268383611bd5565b505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610dd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b610ddf8282611cc9565b5050565b60075473ffffffffffffffffffffffffffffffffffffffff163314610e34576040517f48f5c3ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e3f600033611d84565b6040513381527f85a8c8100c1d48466310240af79644f50cdae7d09cb4820d60dfc5b2462f0fd09060200160405180910390a1565b6000610e7f81611bc8565b73ffffffffffffffffffffffffffffffffffffffff8216610ecc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416908117909155604080519182523360208301527f45085069ced50a4d2e82656a82ba8f5a1a28694489d8ea262252e40899a930a29101610c4b565b60608167ffffffffffffffff811115610f5f57610f5f6139f7565b604051908082528060200260200182016040528015610f9257816020015b6060815260200190600190039081610f7d5790505b50905060005b828110156110325761100230858584818110610fb657610fb66142b2565b9050602002810190610fc8919061451e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d8e92505050565b828281518110611014576110146142b2565b6020026020010181905250808061102a90614583565b915050610f98565b5092915050565b600061104481611bc8565b73ffffffffffffffffffffffffffffffffffffffff8216611091576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081527f3ab9add546f7e3b43565da9bc7e65e47b969d3856bb01a7dcac7bc8ff5080cbd602052604090205460ff1615611110576040517fe4e970d000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61113a7fafffb39e42e2a1496bc4305c8783f904fa76641e3895205b6002a03336ee097583611d84565b60405173ffffffffffffffffffffffffffffffffffffffff831681527fd2b69bde5a989d23ef605a0dd4e0edf7662105058ab69f2559e482857b599ed890602001610c4b565b60045473ffffffffffffffffffffffffffffffffffffffff1633148015906111c0575060055473ffffffffffffffffffffffffffffffffffffffff163314155b156111f7576040517f48f5c3ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d26838383611db3565b60008281526003602052604090206001015461121d81611bc8565b610d268383611cc9565b600061123281611bc8565b73ffffffffffffffffffffffffffffffffffffffff831661127f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166112cc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002805473ffffffffffffffffffffffffffffffffffffffff8581167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556001805492851692909116821790556040519081527fcc4166d40cf68104cdf710f65ce022efd296742868a22b42e4695f89b886363690602001610b72565b6000611360888888888888886114c4565b6040517f737761704d756c746957697468526563697069656e7400000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff831690339060160160405180910390207fc40fae9d5f584875c393ac222c6f88b6c9dced1e9cc6251483648ac2e902c8b08b8b868b60006040516113e69594939291906144da565b60405180910390a4979650505050505050565b600061140481611bc8565b73ffffffffffffffffffffffffffffffffffffffff8216611451576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527fcfaaa26691e16e66e73290fc725eee1a6b4e0e693a1640484937aac25ffb55a490602001610c4b565b600073ffffffffffffffffffffffffffffffffffffffff8216611513576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845160018951611523919061429f565b1461155a576040517fcc513c7200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826116225761159888600081518110611575576115756142b2565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16611ac3565b1580156115a457503415155b156115db576040517f694b150300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116223330898b6000815181106115f4576115f46142b2565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16612126909392919063ffffffff16565b6116653089600081518110611639576116396142b2565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166119da90919063ffffffff16565b905060008860018a51611678919061429f565b81518110611688576116886142b2565b602002602001015190506000600190505b89518110156117be578981815181106116b4576116b46142b2565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168a6001836116e0919061429f565b815181106116f0576116f06142b2565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603156117ac576117a98a61172360018461429f565b81518110611733576117336142b2565b60200260200101518b838151811061174d5761174d6142b2565b60200260200101518560008b600187611766919061429f565b81518110611776576117766142b2565b60200260200101518b60018861178c919061429f565b8151811061179c5761179c6142b2565b6020026020010151612306565b92505b806117b681614583565b915050611699565b506117de8173ffffffffffffffffffffffffffffffffffffffff16611ac3565b156118fb576001546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015611851573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061187591906145bb565b6001546040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526004810183905291935073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b1580156118e257600080fd5b505af11580156118f6573d6000803e3d6000fd5b505050505b73ffffffffffffffffffffffffffffffffffffffff831630146119ce57600061193a73ffffffffffffffffffffffffffffffffffffffff8316856119da565b905061195d73ffffffffffffffffffffffffffffffffffffffff83168585611b16565b50600061198073ffffffffffffffffffffffffffffffffffffffff8416866119da565b9050600061198e838361429f565b90508981116119c9576040517f1fbaba3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b935050505b50979650505050505050565b60006119e583611ac3565b15611a08575073ffffffffffffffffffffffffffffffffffffffff8116316106b1565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301528416906370a0823190602401602060405180830381865afa158015611a74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9891906145bb565b90506106b1565b611aa883611ac3565b610d2657611ab883836000612321565b610d26838383612321565b600073ffffffffffffffffffffffffffffffffffffffff821615806106b1575073ffffffffffffffffffffffffffffffffffffffff821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1492915050565b600081600003611b2857506001611bc1565b611b3184611ac3565b15611bb25760008373ffffffffffffffffffffffffffffffffffffffff168360405160006040518083038185875af1925050503d8060008114611b90576040519150601f19603f3d011682016040523d82523d6000602084013e611b95565b606091505b5090915050600181151514611bac57611bac6145d4565b50611bc1565b611bbd8484846124b7565b5060015b9392505050565b611bd28133612646565b50565b600082815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610ddf57600082815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611c6b3390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600082815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1615610ddf57600082815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b610ddf8282611bd5565b6060611bc18383604051806060016040528060278152602001614b9160279139612700565b600080600080600080600087806020019051810190611dd2919061479d565b965096509650965096509650965086600081518110611df357611df36142b2565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614611e5f576040517f198b098900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606060003073ffffffffffffffffffffffffffffffffffffffff1663e738aa8d60e01b8a8d8b8a8c60018c604051602401611ea09796959493929190614875565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611f2991906148ec565b6000604051808303816000865af19150503d8060008114611f66576040519150601f19603f3d011682016040523d82523d6000602084013e611f6b565b606091505b509250905080611fbc57611fba858c8b600081518110611f8d57611f8d6142b2565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16611b169092919063ffffffff16565b505b831561211857600081611fcf578b611fd8565b611fd883614908565b9050600082611fe7578d61200f565b8a60018c51611ff6919061429f565b81518110612006576120066142b2565b60200260200101515b90508673ffffffffffffffffffffffffffffffffffffffff1663d00a2d5f60e01b8284886040516024016120459392919061494d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290516120ce91906148ec565b6000604051808303816000865af19150503d806000811461210b576040519150601f19603f3d011682016040523d82523d6000602084013e612110565b606091505b509450925050505b505050505050505050505050565b80156123005761213584611ac3565b156122f45773ffffffffffffffffffffffffffffffffffffffff83163314801561215f5750803410155b6121eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f57726f6e67207573616765206f66204554482e756e6976657273616c5472616e60448201527f7366657246726f6d2829000000000000000000000000000000000000000000006064820152608401610dcc565b73ffffffffffffffffffffffffffffffffffffffff821630146122805760008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114612262576040519150601f19603f3d011682016040523d82523d6000602084013e612267565b606091505b509091505060018115151461227e5761227e6145d4565b505b803411156122ef576000336122953484612785565b604051600081818185875af1925050503d80600081146122d1576040519150601f19603f3d011682016040523d82523d6000602084013e6122d6565b606091505b50909150506001811515146122ed576122ed6145d4565b505b612300565b61230084848484612791565b50505050565b6000612316878787878787612930565b979650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905291516000928392908716916123b891906148ec565b6000604051808303816000865af19150503d80600081146123f5576040519150601f19603f3d011682016040523d82523d6000602084013e6123fa565b606091505b5091509150818015612424575080511580612424575080806020019051810190612424919061498b565b6124b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f5472616e7366657248656c7065723a3a73616665417070726f76653a2061707060448201527f726f7665206661696c65640000000000000000000000000000000000000000006064820152608401610dcc565b5050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052915160009283929087169161254e91906148ec565b6000604051808303816000865af19150503d806000811461258b576040519150601f19603f3d011682016040523d82523d6000602084013e612590565b606091505b50915091508180156125ba5750805115806125ba5750808060200190518101906125ba919061498b565b6124b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201527f616e73666572206661696c6564000000000000000000000000000000000000006064820152608401610dcc565b600082815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610ddf57612686816129dc565b6126918360206129fb565b6040516020016126a29291906149a8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252610dcc91600401614a29565b60606000808573ffffffffffffffffffffffffffffffffffffffff168560405161272a91906148ec565b600060405180830381855af49150503d8060008114612765576040519150601f19603f3d011682016040523d82523d6000602084013e61276a565b606091505b509150915061277b86838387612c3e565b9695505050505050565b6000611bc1828461429f565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052915160009283929088169161283091906148ec565b6000604051808303816000865af19150503d806000811461286d576040519150601f19603f3d011682016040523d82523d6000602084013e612872565b606091505b509150915081801561289c57508051158061289c57508080602001905181019061289c919061498b565b612928576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a20747260448201527f616e7366657246726f6d206661696c65640000000000000000000000000000006064820152608401610dcc565b505050505050565b60008573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff160361296c57508361277b565b61394c61297884612ce6565b9050600061299c73ffffffffffffffffffffffffffffffffffffffff8a16306119da565b90506129af89898387898763ffffffff16565b6129cf73ffffffffffffffffffffffffffffffffffffffff8916306119da565b9998505050505050505050565b60606106b173ffffffffffffffffffffffffffffffffffffffff831660145b60606000612a0a836002614a3c565b612a15906002614a53565b67ffffffffffffffff811115612a2d57612a2d6139f7565b6040519080825280601f01601f191660200182016040528015612a57576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110612a8e57612a8e6142b2565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110612af157612af16142b2565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000612b2d846002614a3c565b612b38906001614a53565b90505b6001811115612bd5577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110612b7957612b796142b2565b1a60f81b828281518110612b8f57612b8f6142b2565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c93612bce81614a66565b9050612b3b565b508315611bc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610dcc565b60608315612cd4578251600003612ccd5773ffffffffffffffffffffffffffffffffffffffff85163b612ccd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610dcc565b5081612cde565b612cde8383612d24565b949350505050565b61394c6103e982108015612cfb575060018210155b15612d095750612d68919050565b816107d203612d1b5750612d74919050565b50612ffd919050565b815115612d345781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcc9190614a29565b61292885858584613169565b60008181526008602052604090205473ffffffffffffffffffffffffffffffffffffffff1680612dd0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612def8673ffffffffffffffffffffffffffffffffffffffff16611ac3565b15612e7857600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b158015612e5e57600080fd5b505af1158015612e72573d6000803e3d6000fd5b50505050505b6000612e998773ffffffffffffffffffffffffffffffffffffffff16611ac3565b612ea35786612ebd565b60015473ffffffffffffffffffffffffffffffffffffffff165b9050612f4f8273ffffffffffffffffffffffffffffffffffffffff1663d2c4b5986040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f319190614a9b565b73ffffffffffffffffffffffffffffffffffffffff83169087611a9f565b60008273ffffffffffffffffffffffffffffffffffffffff1685604051612f7691906148ec565b6000604051808303816000865af19150503d8060008114612fb3576040519150601f19603f3d011682016040523d82523d6000602084013e612fb8565b606091505b5050905080612ff3576040517f5987947500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050505050565b60008181526008602052604090205473ffffffffffffffffffffffffffffffffffffffff1680613059576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6130788673ffffffffffffffffffffffffffffffffffffffff16611ac3565b1561310157600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b1580156130e757600080fd5b505af11580156130fb573d6000803e3d6000fd5b50505050505b60006131228773ffffffffffffffffffffffffffffffffffffffff16611ac3565b61312c5786613146565b60015473ffffffffffffffffffffffffffffffffffffffff165b9050612f4f73ffffffffffffffffffffffffffffffffffffffff82168387611a9f565b600061318a8573ffffffffffffffffffffffffffffffffffffffff16611ac3565b1561321357600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b1580156131f957600080fd5b505af115801561320d573d6000803e3d6000fd5b50505050505b60008281526008602052604090205473ffffffffffffffffffffffffffffffffffffffff168061329f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f52413a2045786368616e6765206e6f7420666f756e64000000000000000000006044820152606401610dcc565b8060006132c173ffffffffffffffffffffffffffffffffffffffff8916611ac3565b6132cb57876132e5565b60015473ffffffffffffffffffffffffffffffffffffffff165b905060006133088873ffffffffffffffffffffffffffffffffffffffff16611ac3565b613312578761332c565b60015473ffffffffffffffffffffffffffffffffffffffff165b90508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361336d5786945050505050612cde565b6040517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015282811660248301526000919085169063e6a4390590604401602060405180830381865afa1580156133e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134099190614a9b565b905073ffffffffffffffffffffffffffffffffffffffff8116613458576040517f2083cd4000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008061347d73ffffffffffffffffffffffffffffffffffffffff841686868d61371c565b9199509250905081156134ef578273ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156134d257600080fd5b505af11580156134e6573d6000803e3d6000fd5b5050505061357b565b801561357b576006546040517fbc25cf7700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529084169063bc25cf7790602401600060405180830381600087803b15801561356257600080fd5b505af1158015613576573d6000803e3d6000fd5b505050505b61359c73ffffffffffffffffffffffffffffffffffffffff8616848c611b16565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161015613671576040517f022c0d9f000000000000000000000000000000000000000000000000000000008152600060048201819052602482018a905230604483015260806064830152608482015273ffffffffffffffffffffffffffffffffffffffff84169063022c0d9f9060a401600060405180830381600087803b15801561365457600080fd5b505af1158015613668573d6000803e3d6000fd5b5050505061370d565b6040517f022c0d9f0000000000000000000000000000000000000000000000000000000081526004810189905260006024820181905230604483015260806064830152608482015273ffffffffffffffffffffffffffffffffffffffff84169063022c0d9f9060a401600060405180830381600087803b1580156136f457600080fd5b505af1158015613708573d6000803e3d6000fd5b505050505b50505050505050949350505050565b600080808061374173ffffffffffffffffffffffffffffffffffffffff8816896119da565b9050600061376573ffffffffffffffffffffffffffffffffffffffff88168a6119da565b90506000808a73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156137b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137d99190614ad6565b50915091508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff16111561381457905b816dffffffffffffffffffffffffffff168410806138415750806dffffffffffffffffffffffffffff1683105b9550851580156138795750816dffffffffffffffffffffffffffff168411806138795750806dffffffffffffffffffffffffffff1683115b94506000613889896103e5613912565b905060006138b16138aa86856dffffffffffffffffffffffffffff1661391e565b8390613912565b905060006138e5836138df6103e86138d98b8a6dffffffffffffffffffffffffffff1661391e565b90613912565b90613934565b905080156138fc576138f78282613940565b6138ff565b60005b9950505050505050509450945094915050565b6000611bc18284614a3c565b600081831061392d5781611bc1565b5090919050565b6000611bc18284614a53565b6000611bc18284614b26565b613954614b61565b565b60006020828403121561396857600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611bc157600080fd5b60008083601f8401126139aa57600080fd5b50813567ffffffffffffffff8111156139c257600080fd5b6020830191508360208285010111156139da57600080fd5b9250929050565b803560ff811681146139f257600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff81118282101715613a4a57613a4a6139f7565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613a9757613a976139f7565b604052919050565b600067ffffffffffffffff821115613ab957613ab96139f7565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112613af657600080fd5b8135613b09613b0482613a9f565b613a50565b818152846020838601011115613b1e57600080fd5b816020850160208301376000918101602001919091529392505050565b600067ffffffffffffffff821115613b5557613b556139f7565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff81168114611bd257600080fd5b600082601f830112613b9257600080fd5b81356020613ba2613b0483613b3b565b82815260059290921b84018101918181019086841115613bc157600080fd5b8286015b84811015613be5578035613bd881613b5f565b8352918301918301613bc5565b509695505050505050565b600082601f830112613c0157600080fd5b81356020613c11613b0483613b3b565b82815260059290921b84018101918181019086841115613c3057600080fd5b8286015b84811015613be55780358352918301918301613c34565b600082601f830112613c5c57600080fd5b81356020613c6c613b0483613b3b565b82815260059290921b84018101918181019086841115613c8b57600080fd5b8286015b84811015613be557803567ffffffffffffffff811115613caf5760008081fd5b613cbd8986838b0101613ae5565b845250918301918301613c8f565b8015158114611bd257600080fd5b80356139f281613ccb565b80356139f281613b5f565b60006101008284031215613d0257600080fd5b613d0a613a26565b9050813567ffffffffffffffff80821115613d2457600080fd5b613d3085838601613b81565b835260208401356020840152604084013560408401526060840135915080821115613d5a57600080fd5b613d6685838601613bf0565b60608401526080840135915080821115613d7f57600080fd5b613d8b85838601613c4b565b6080840152613d9c60a08501613cd9565b60a0840152613dad60c08501613ce4565b60c084015260e0840135915080821115613dc657600080fd5b50613dd384828501613ae5565b60e08301525092915050565b60008060008060008060008060006101008a8c031215613dfe57600080fd5b8935985060208a0135975060408a013567ffffffffffffffff80821115613e2457600080fd5b613e308d838e01613998565b9099509750879150613e4460608d016139e1565b965060808c0135955060a08c0135915080821115613e6157600080fd5b613e6d8d838e01613ae5565b945060c08c0135915080821115613e8357600080fd5b50613e908c828d01613cef565b925050613e9f60e08b01613ce4565b90509295985092959850929598565b60008060408385031215613ec157600080fd5b823591506020830135613ed381613b5f565b809150509250929050565b600060208284031215613ef057600080fd5b8135611bc181613b5f565b600080600080600080600080610100898b031215613f1857600080fd5b883567ffffffffffffffff80821115613f3057600080fd5b613f3c8c838d01613b81565b995060208b0135985060408b0135975060608b0135915080821115613f6057600080fd5b613f6c8c838d01613bf0565b965060808b0135915080821115613f8257600080fd5b50613f8f8b828c01613c4b565b945050613f9e60a08a01613cd9565b9250613fac60c08a01613ce4565b915060e089013590509295985092959890939650565b600060208284031215613fd457600080fd5b5035919050565b60008060208385031215613fee57600080fd5b823567ffffffffffffffff8082111561400657600080fd5b818501915085601f83011261401a57600080fd5b81358181111561402957600080fd5b8660208260051b850101111561403e57600080fd5b60209290920196919550909350505050565b60005b8381101561406b578181015183820152602001614053565b50506000910152565b6000815180845261408c816020860160208601614050565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600081518084526020808501808196508360051b8101915082860160005b858110156141065782840389526140f4848351614074565b988501989350908401906001016140dc565b5091979650505050505050565b602081526000611bc160208301846140be565b60008060006060848603121561413b57600080fd5b833561414681613b5f565b925060208401359150604084013567ffffffffffffffff81111561416957600080fd5b61417586828701613ae5565b9150509250925092565b6000806040838503121561419257600080fd5b823561419d81613b5f565b91506020830135613ed381613b5f565b600080600080600080600060e0888a0312156141c857600080fd5b873567ffffffffffffffff808211156141e057600080fd5b6141ec8b838c01613b81565b985060208a0135975060408a0135965060608a013591508082111561421057600080fd5b61421c8b838c01613bf0565b955060808a013591508082111561423257600080fd5b5061423f8a828b01613c4b565b93505060a088013561425081613ccb565b915060c088013561426081613b5f565b8091505092959891949750929550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156106b1576106b1614270565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600061010061438a8388805182526020810151602083015260408101516040830152606081015173ffffffffffffffffffffffffffffffffffffffff8082166060850152806080840151166080850152505060a081015160a08301525050565b8060c084015261439c81840187614074565b905082810360e08401526123168185876142e1565b60006101206144118389805182526020810151602083015260408101516040830152606081015173ffffffffffffffffffffffffffffffffffffffff8082166060850152806080840151166080850152505060a081015160a08301525050565b8060c084015261442381840188614074565b905082810360e08401526144388186886142e1565b905082810361010084015261444d8185614074565b98975050505050505050565b600081518084526020808501945080840160005b8381101561449f57815173ffffffffffffffffffffffffffffffffffffffff168752958201959082019060010161446d565b509495945050505050565b600081518084526020808501945080840160005b8381101561449f578151875295820195908201906001016144be565b60a0815260006144ed60a0830188614459565b866020840152856040840152828103606084015261450b81866144aa565b9150508260808301529695505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261455357600080fd5b83018035915067ffffffffffffffff82111561456e57600080fd5b6020019150368190038213156139da57600080fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036145b4576145b4614270565b5060010190565b6000602082840312156145cd57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b600082601f83011261461457600080fd5b81516020614624613b0483613b3b565b82815260059290921b8401810191818101908684111561464357600080fd5b8286015b84811015613be557805161465a81613b5f565b8352918301918301614647565b600082601f83011261467857600080fd5b8151614686613b0482613a9f565b81815284602083860101111561469b57600080fd5b612cde826020830160208701614050565b600082601f8301126146bd57600080fd5b815160206146cd613b0483613b3b565b82815260059290921b840181019181810190868411156146ec57600080fd5b8286015b84811015613be557805167ffffffffffffffff8111156147105760008081fd5b61471e8986838b0101614667565b8452509183019183016146f0565b600082601f83011261473d57600080fd5b8151602061474d613b0483613b3b565b82815260059290921b8401810191818101908684111561476c57600080fd5b8286015b84811015613be55780518352918301918301614770565b80516139f281613b5f565b80516139f281613ccb565b600080600080600080600060e0888a0312156147b857600080fd5b875167ffffffffffffffff808211156147d057600080fd5b6147dc8b838c01614603565b985060208a0151975060408a01519150808211156147f957600080fd5b6148058b838c016146ac565b965060608a015191508082111561481b57600080fd5b6148278b838c0161472c565b955061483560808b01614787565b945061484360a08b01614792565b935060c08a015191508082111561485957600080fd5b506148668a828b01614667565b91505092959891949750929550565b60e08152600061488860e083018a614459565b88602084015287604084015282810360608401526148a681886144aa565b905082810360808401526148ba81876140be565b94151560a0840152505073ffffffffffffffffffffffffffffffffffffffff9190911660c09091015295945050505050565b600082516148fe818460208701614050565b9190910192915050565b80516020808301519190811015614947577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8160200360031b1b821691505b50919050565b73ffffffffffffffffffffffffffffffffffffffff841681528260208201526060604082015260006149826060830184614074565b95945050505050565b60006020828403121561499d57600080fd5b8151611bc181613ccb565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516149e0816017850160208801614050565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351614a1d816028840160208801614050565b01602801949350505050565b602081526000611bc16020830184614074565b80820281158282048414176106b1576106b1614270565b808201808211156106b1576106b1614270565b600081614a7557614a75614270565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b600060208284031215614aad57600080fd5b8151611bc181613b5f565b80516dffffffffffffffffffffffffffff811681146139f257600080fd5b600080600060608486031215614aeb57600080fd5b614af484614ab8565b9250614b0260208501614ab8565b9150604084015163ffffffff81168114614b1b57600080fd5b809150509250925092565b600082614b5c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052605160045260246000fdfe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220667ac059a0acc5b99aa3add2e75c027461eea9a4ba55a48717961d869be2ddd864736f6c6343000814003300000000000000000000000001b4ce0d48ce91eb6bcaf5db33870c65d641b894000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000005300000000000000000000000000000000000004000000000000000000000000b1b64005b11350a94c4d069eff4215592d98f2e2