DaiFactory.ts 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600
  1. /* Generated by ts-generator ver. 0.0.8 */
  2. /* tslint:disable */
  3. import { Signer, BigNumberish } from "ethers";
  4. import { Provider, TransactionRequest } from "@ethersproject/providers";
  5. import { Contract, ContractFactory, Overrides } from "@ethersproject/contracts";
  6. import { Dai } from "./Dai";
  7. export class DaiFactory extends ContractFactory {
  8. constructor(signer?: Signer) {
  9. super(_abi, _bytecode, signer);
  10. }
  11. deploy(chainId_: BigNumberish, overrides?: Overrides): Promise<Dai> {
  12. return super.deploy(chainId_, overrides || {}) as Promise<Dai>;
  13. }
  14. getDeployTransaction(
  15. chainId_: BigNumberish,
  16. overrides?: Overrides
  17. ): TransactionRequest {
  18. return super.getDeployTransaction(chainId_, overrides || {});
  19. }
  20. attach(address: string): Dai {
  21. return super.attach(address) as Dai;
  22. }
  23. connect(signer: Signer): DaiFactory {
  24. return super.connect(signer) as DaiFactory;
  25. }
  26. static connect(address: string, signerOrProvider: Signer | Provider): Dai {
  27. return new Contract(address, _abi, signerOrProvider) as Dai;
  28. }
  29. }
  30. const _abi = [
  31. {
  32. inputs: [
  33. {
  34. internalType: "uint256",
  35. name: "chainId_",
  36. type: "uint256"
  37. }
  38. ],
  39. payable: false,
  40. stateMutability: "nonpayable",
  41. type: "constructor"
  42. },
  43. {
  44. anonymous: false,
  45. inputs: [
  46. {
  47. indexed: true,
  48. internalType: "address",
  49. name: "src",
  50. type: "address"
  51. },
  52. {
  53. indexed: true,
  54. internalType: "address",
  55. name: "guy",
  56. type: "address"
  57. },
  58. {
  59. indexed: false,
  60. internalType: "uint256",
  61. name: "wad",
  62. type: "uint256"
  63. }
  64. ],
  65. name: "Approval",
  66. type: "event"
  67. },
  68. {
  69. anonymous: true,
  70. inputs: [
  71. {
  72. indexed: true,
  73. internalType: "bytes4",
  74. name: "sig",
  75. type: "bytes4"
  76. },
  77. {
  78. indexed: true,
  79. internalType: "address",
  80. name: "usr",
  81. type: "address"
  82. },
  83. {
  84. indexed: true,
  85. internalType: "bytes32",
  86. name: "arg1",
  87. type: "bytes32"
  88. },
  89. {
  90. indexed: true,
  91. internalType: "bytes32",
  92. name: "arg2",
  93. type: "bytes32"
  94. },
  95. {
  96. indexed: false,
  97. internalType: "bytes",
  98. name: "data",
  99. type: "bytes"
  100. }
  101. ],
  102. name: "LogNote",
  103. type: "event"
  104. },
  105. {
  106. anonymous: false,
  107. inputs: [
  108. {
  109. indexed: true,
  110. internalType: "address",
  111. name: "src",
  112. type: "address"
  113. },
  114. {
  115. indexed: true,
  116. internalType: "address",
  117. name: "dst",
  118. type: "address"
  119. },
  120. {
  121. indexed: false,
  122. internalType: "uint256",
  123. name: "wad",
  124. type: "uint256"
  125. }
  126. ],
  127. name: "Transfer",
  128. type: "event"
  129. },
  130. {
  131. constant: true,
  132. inputs: [],
  133. name: "DOMAIN_SEPARATOR",
  134. outputs: [
  135. {
  136. internalType: "bytes32",
  137. name: "",
  138. type: "bytes32"
  139. }
  140. ],
  141. payable: false,
  142. stateMutability: "view",
  143. type: "function"
  144. },
  145. {
  146. constant: true,
  147. inputs: [],
  148. name: "PERMIT_TYPEHASH",
  149. outputs: [
  150. {
  151. internalType: "bytes32",
  152. name: "",
  153. type: "bytes32"
  154. }
  155. ],
  156. payable: false,
  157. stateMutability: "view",
  158. type: "function"
  159. },
  160. {
  161. constant: true,
  162. inputs: [
  163. {
  164. internalType: "address",
  165. name: "",
  166. type: "address"
  167. },
  168. {
  169. internalType: "address",
  170. name: "",
  171. type: "address"
  172. }
  173. ],
  174. name: "allowance",
  175. outputs: [
  176. {
  177. internalType: "uint256",
  178. name: "",
  179. type: "uint256"
  180. }
  181. ],
  182. payable: false,
  183. stateMutability: "view",
  184. type: "function"
  185. },
  186. {
  187. constant: false,
  188. inputs: [
  189. {
  190. internalType: "address",
  191. name: "usr",
  192. type: "address"
  193. },
  194. {
  195. internalType: "uint256",
  196. name: "wad",
  197. type: "uint256"
  198. }
  199. ],
  200. name: "approve",
  201. outputs: [
  202. {
  203. internalType: "bool",
  204. name: "",
  205. type: "bool"
  206. }
  207. ],
  208. payable: false,
  209. stateMutability: "nonpayable",
  210. type: "function"
  211. },
  212. {
  213. constant: true,
  214. inputs: [
  215. {
  216. internalType: "address",
  217. name: "",
  218. type: "address"
  219. }
  220. ],
  221. name: "balanceOf",
  222. outputs: [
  223. {
  224. internalType: "uint256",
  225. name: "",
  226. type: "uint256"
  227. }
  228. ],
  229. payable: false,
  230. stateMutability: "view",
  231. type: "function"
  232. },
  233. {
  234. constant: false,
  235. inputs: [
  236. {
  237. internalType: "address",
  238. name: "usr",
  239. type: "address"
  240. },
  241. {
  242. internalType: "uint256",
  243. name: "wad",
  244. type: "uint256"
  245. }
  246. ],
  247. name: "burn",
  248. outputs: [],
  249. payable: false,
  250. stateMutability: "nonpayable",
  251. type: "function"
  252. },
  253. {
  254. constant: true,
  255. inputs: [],
  256. name: "decimals",
  257. outputs: [
  258. {
  259. internalType: "uint8",
  260. name: "",
  261. type: "uint8"
  262. }
  263. ],
  264. payable: false,
  265. stateMutability: "view",
  266. type: "function"
  267. },
  268. {
  269. constant: false,
  270. inputs: [
  271. {
  272. internalType: "address",
  273. name: "guy",
  274. type: "address"
  275. }
  276. ],
  277. name: "deny",
  278. outputs: [],
  279. payable: false,
  280. stateMutability: "nonpayable",
  281. type: "function"
  282. },
  283. {
  284. constant: false,
  285. inputs: [
  286. {
  287. internalType: "address",
  288. name: "usr",
  289. type: "address"
  290. },
  291. {
  292. internalType: "uint256",
  293. name: "wad",
  294. type: "uint256"
  295. }
  296. ],
  297. name: "mint",
  298. outputs: [],
  299. payable: false,
  300. stateMutability: "nonpayable",
  301. type: "function"
  302. },
  303. {
  304. constant: false,
  305. inputs: [
  306. {
  307. internalType: "address",
  308. name: "src",
  309. type: "address"
  310. },
  311. {
  312. internalType: "address",
  313. name: "dst",
  314. type: "address"
  315. },
  316. {
  317. internalType: "uint256",
  318. name: "wad",
  319. type: "uint256"
  320. }
  321. ],
  322. name: "move",
  323. outputs: [],
  324. payable: false,
  325. stateMutability: "nonpayable",
  326. type: "function"
  327. },
  328. {
  329. constant: true,
  330. inputs: [],
  331. name: "name",
  332. outputs: [
  333. {
  334. internalType: "string",
  335. name: "",
  336. type: "string"
  337. }
  338. ],
  339. payable: false,
  340. stateMutability: "view",
  341. type: "function"
  342. },
  343. {
  344. constant: true,
  345. inputs: [
  346. {
  347. internalType: "address",
  348. name: "",
  349. type: "address"
  350. }
  351. ],
  352. name: "nonces",
  353. outputs: [
  354. {
  355. internalType: "uint256",
  356. name: "",
  357. type: "uint256"
  358. }
  359. ],
  360. payable: false,
  361. stateMutability: "view",
  362. type: "function"
  363. },
  364. {
  365. constant: false,
  366. inputs: [
  367. {
  368. internalType: "address",
  369. name: "holder",
  370. type: "address"
  371. },
  372. {
  373. internalType: "address",
  374. name: "spender",
  375. type: "address"
  376. },
  377. {
  378. internalType: "uint256",
  379. name: "nonce",
  380. type: "uint256"
  381. },
  382. {
  383. internalType: "uint256",
  384. name: "expiry",
  385. type: "uint256"
  386. },
  387. {
  388. internalType: "bool",
  389. name: "allowed",
  390. type: "bool"
  391. },
  392. {
  393. internalType: "uint8",
  394. name: "v",
  395. type: "uint8"
  396. },
  397. {
  398. internalType: "bytes32",
  399. name: "r",
  400. type: "bytes32"
  401. },
  402. {
  403. internalType: "bytes32",
  404. name: "s",
  405. type: "bytes32"
  406. }
  407. ],
  408. name: "permit",
  409. outputs: [],
  410. payable: false,
  411. stateMutability: "nonpayable",
  412. type: "function"
  413. },
  414. {
  415. constant: false,
  416. inputs: [
  417. {
  418. internalType: "address",
  419. name: "usr",
  420. type: "address"
  421. },
  422. {
  423. internalType: "uint256",
  424. name: "wad",
  425. type: "uint256"
  426. }
  427. ],
  428. name: "pull",
  429. outputs: [],
  430. payable: false,
  431. stateMutability: "nonpayable",
  432. type: "function"
  433. },
  434. {
  435. constant: false,
  436. inputs: [
  437. {
  438. internalType: "address",
  439. name: "usr",
  440. type: "address"
  441. },
  442. {
  443. internalType: "uint256",
  444. name: "wad",
  445. type: "uint256"
  446. }
  447. ],
  448. name: "push",
  449. outputs: [],
  450. payable: false,
  451. stateMutability: "nonpayable",
  452. type: "function"
  453. },
  454. {
  455. constant: false,
  456. inputs: [
  457. {
  458. internalType: "address",
  459. name: "guy",
  460. type: "address"
  461. }
  462. ],
  463. name: "rely",
  464. outputs: [],
  465. payable: false,
  466. stateMutability: "nonpayable",
  467. type: "function"
  468. },
  469. {
  470. constant: true,
  471. inputs: [],
  472. name: "symbol",
  473. outputs: [
  474. {
  475. internalType: "string",
  476. name: "",
  477. type: "string"
  478. }
  479. ],
  480. payable: false,
  481. stateMutability: "view",
  482. type: "function"
  483. },
  484. {
  485. constant: true,
  486. inputs: [],
  487. name: "totalSupply",
  488. outputs: [
  489. {
  490. internalType: "uint256",
  491. name: "",
  492. type: "uint256"
  493. }
  494. ],
  495. payable: false,
  496. stateMutability: "view",
  497. type: "function"
  498. },
  499. {
  500. constant: false,
  501. inputs: [
  502. {
  503. internalType: "address",
  504. name: "dst",
  505. type: "address"
  506. },
  507. {
  508. internalType: "uint256",
  509. name: "wad",
  510. type: "uint256"
  511. }
  512. ],
  513. name: "transfer",
  514. outputs: [
  515. {
  516. internalType: "bool",
  517. name: "",
  518. type: "bool"
  519. }
  520. ],
  521. payable: false,
  522. stateMutability: "nonpayable",
  523. type: "function"
  524. },
  525. {
  526. constant: false,
  527. inputs: [
  528. {
  529. internalType: "address",
  530. name: "src",
  531. type: "address"
  532. },
  533. {
  534. internalType: "address",
  535. name: "dst",
  536. type: "address"
  537. },
  538. {
  539. internalType: "uint256",
  540. name: "wad",
  541. type: "uint256"
  542. }
  543. ],
  544. name: "transferFrom",
  545. outputs: [
  546. {
  547. internalType: "bool",
  548. name: "",
  549. type: "bool"
  550. }
  551. ],
  552. payable: false,
  553. stateMutability: "nonpayable",
  554. type: "function"
  555. },
  556. {
  557. constant: true,
  558. inputs: [],
  559. name: "version",
  560. outputs: [
  561. {
  562. internalType: "string",
  563. name: "",
  564. type: "string"
  565. }
  566. ],
  567. payable: false,
  568. stateMutability: "view",
  569. type: "function"
  570. },
  571. {
  572. constant: true,
  573. inputs: [
  574. {
  575. internalType: "address",
  576. name: "",
  577. type: "address"
  578. }
  579. ],
  580. name: "wards",
  581. outputs: [
  582. {
  583. internalType: "uint256",
  584. name: "",
  585. type: "uint256"
  586. }
  587. ],
  588. payable: false,
  589. stateMutability: "view",
  590. type: "function"
  591. }
  592. ];
  593. const _bytecode =
  594. "0x608060405234801561001057600080fd5b506040516120d33803806120d38339818101604052602081101561003357600080fd5b810190808051906020019092919050505060016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550604051808061208160529139605201905060405180910390206040518060400160405280600e81526020017f44616920537461626c65636f696e000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001208330604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001955050505050506040516020818303038152906040528051906020012060058190555050611ee0806101a16000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80637ecebe00116100b8578063a9059cbb1161007c578063a9059cbb146106b4578063b753a98c1461071a578063bb35783b14610768578063bf353dbb146107d6578063dd62ed3e1461082e578063f2d5d56b146108a657610142565b80637ecebe00146104a15780638fcbaf0c146104f957806395d89b411461059f5780639c52a7f1146106225780639dc29fac1461066657610142565b8063313ce5671161010a578063313ce567146102f25780633644e5151461031657806340c10f191461033457806354fd4d501461038257806365fae35e1461040557806370a082311461044957610142565b806306fdde0314610147578063095ea7b3146101ca57806318160ddd1461023057806323b872dd1461024e57806330adf81f146102d4575b600080fd5b61014f6108f4565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561018f578082015181840152602081019050610174565b50505050905090810190601f1680156101bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610216600480360360408110156101e057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061092d565b604051808215151515815260200191505060405180910390f35b610238610a1f565b6040518082815260200191505060405180910390f35b6102ba6004803603606081101561026457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a25565b604051808215151515815260200191505060405180910390f35b6102dc610f3a565b6040518082815260200191505060405180910390f35b6102fa610f61565b604051808260ff1660ff16815260200191505060405180910390f35b61031e610f66565b6040518082815260200191505060405180910390f35b6103806004803603604081101561034a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f6c565b005b61038a611128565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103ca5780820151818401526020810190506103af565b50505050905090810190601f1680156103f75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104476004803603602081101561041b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611161565b005b61048b6004803603602081101561045f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061128f565b6040518082815260200191505060405180910390f35b6104e3600480360360208110156104b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112a7565b6040518082815260200191505060405180910390f35b61059d600480360361010081101561051057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803515159060200190929190803560ff16906020019092919080359060200190929190803590602001909291905050506112bf565b005b6105a76117fa565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105e75780820151818401526020810190506105cc565b50505050905090810190601f1680156106145780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106646004803603602081101561063857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611833565b005b6106b26004803603604081101561067c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611961565b005b610700600480360360408110156106ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611df4565b604051808215151515815260200191505060405180910390f35b6107666004803603604081101561073057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e09565b005b6107d46004803603606081101561077e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e19565b005b610818600480360360208110156107ec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e2a565b6040518082815260200191505060405180910390f35b6108906004803603604081101561084457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e42565b6040518082815260200191505060405180910390f35b6108f2600480360360408110156108bc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e67565b005b6040518060400160405280600e81526020017f44616920537461626c65636f696e00000000000000000000000000000000000081525081565b600081600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60015481565b600081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610adc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4461692f696e73756666696369656e742d62616c616e6365000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015610bb457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b15610db25781600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610cab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4461692f696e73756666696369656e742d616c6c6f77616e636500000000000081525060200191505060405180910390fd5b610d31600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611e77565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610dfb600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611e77565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e87600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611e91565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b7fea2aa0a1be11a07ed86d755c93467f4f82362b452371d1ba94d1715123511acb60001b81565b601281565b60055481565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611020576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4461692f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b611069600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611e91565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506110b860015482611e91565b6001819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611215576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4461692f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60016000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b60026020528060005260406000206000915090505481565b60046020528060005260406000206000915090505481565b60006005547fea2aa0a1be11a07ed86d755c93467f4f82362b452371d1ba94d1715123511acb60001b8a8a8a8a8a604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018215151515815260200196505050505050506040516020818303038152906040528051906020012060405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141561148c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4461692f696e76616c69642d616464726573732d30000000000000000000000081525060200191505060405180910390fd5b60018185858560405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156114e9573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614611593576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4461692f696e76616c69642d7065726d6974000000000000000000000000000081525060200191505060405180910390fd5b60008614806115a25750854211155b611614576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4461692f7065726d69742d65787069726564000000000000000000000000000081525060200191505060405180910390fd5b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505587146116d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4461692f696e76616c69642d6e6f6e636500000000000000000000000000000081525060200191505060405180910390fd5b6000856116e4576000611706565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b905080600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a350505050505050505050565b6040518060400160405280600381526020017f444149000000000000000000000000000000000000000000000000000000000081525081565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4461692f6e6f742d617574686f72697a6564000000000000000000000000000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505961012081016040526020815260e0602082015260e0600060408301376024356004353360003560e01c60e01b61012085a45050565b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611a16576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4461692f696e73756666696369656e742d62616c616e6365000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611aee57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b15611cec5780600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611be5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4461692f696e73756666696369656e742d616c6c6f77616e636500000000000081525060200191505060405180910390fd5b611c6b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611e77565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611d35600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611e77565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d8460015482611e77565b600181905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000611e01338484610a25565b905092915050565b611e14338383610a25565b505050565b611e24838383610a25565b50505050565b60006020528060005260406000206000915090505481565b6003602052816000526040600020602052806000526040600020600091509150505481565b611e72823383610a25565b505050565b6000828284039150811115611e8b57600080fd5b92915050565b6000828284019150811015611ea557600080fd5b9291505056fea265627a7a7231582018054e95f93ca2d7c69482e730dc46cce409cbfe84843e3e7a4e6b92a1ae693164736f6c634300050c0032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429";