@1inch/solidity-utils 3.8.2 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +3 -1
- package/README.md +5 -0
- package/contracts/interfaces/IERC7597Permit.sol +13 -0
- package/contracts/libraries/AddressArray.sol +133 -52
- package/contracts/libraries/AddressSet.sol +36 -10
- package/contracts/libraries/BySigTraits.sol +46 -0
- package/contracts/libraries/SafeERC20.sol +7 -3
- package/dist/src/permit.d.ts +3 -1
- package/dist/src/permit.js +12 -1
- package/dist/src/permit.js.map +1 -1
- package/dist/typechain-types/@openzeppelin/contracts/utils/Address.d.ts +20 -0
- package/dist/typechain-types/@openzeppelin/contracts/utils/Address.js +3 -0
- package/dist/typechain-types/@openzeppelin/contracts/utils/Address.js.map +1 -0
- package/dist/typechain-types/@openzeppelin/contracts/utils/index.d.ts +1 -0
- package/dist/typechain-types/contracts/index.d.ts +2 -3
- package/dist/typechain-types/contracts/interfaces/IERC7597Permit.d.ts +41 -0
- package/dist/typechain-types/contracts/interfaces/IERC7597Permit.js +3 -0
- package/dist/typechain-types/contracts/interfaces/IERC7597Permit.js.map +1 -0
- package/dist/typechain-types/contracts/interfaces/index.d.ts +1 -0
- package/dist/typechain-types/contracts/libraries/BySigTraits.d.ts +20 -0
- package/dist/typechain-types/contracts/libraries/BySigTraits.js +3 -0
- package/dist/typechain-types/contracts/libraries/BySigTraits.js.map +1 -0
- package/dist/typechain-types/contracts/libraries/index.d.ts +1 -0
- package/dist/typechain-types/contracts/mixins/BySig.d.ts +214 -0
- package/dist/typechain-types/contracts/mixins/BySig.js +3 -0
- package/dist/typechain-types/contracts/mixins/BySig.js.map +1 -0
- package/dist/typechain-types/contracts/{EthReceiver.d.ts → mixins/EthReceiver.d.ts} +1 -1
- package/dist/typechain-types/contracts/mixins/EthReceiver.js.map +1 -0
- package/dist/typechain-types/contracts/{OnlyWethReceiver.d.ts → mixins/OnlyWethReceiver.d.ts} +1 -1
- package/dist/typechain-types/contracts/mixins/OnlyWethReceiver.js.map +1 -0
- package/dist/typechain-types/contracts/{PermitAndCall.d.ts → mixins/PermitAndCall.d.ts} +1 -1
- package/dist/typechain-types/contracts/mixins/PermitAndCall.js.map +1 -0
- package/dist/typechain-types/contracts/mixins/index.d.ts +4 -0
- package/dist/typechain-types/contracts/mixins/index.js +3 -0
- package/dist/typechain-types/contracts/mixins/index.js.map +1 -0
- package/dist/typechain-types/contracts/tests/mocks/AddressSetMock.d.ts +5 -1
- package/dist/typechain-types/contracts/tests/mocks/BySigTraitsMock.d.ts +47 -0
- package/dist/typechain-types/contracts/tests/mocks/BySigTraitsMock.js +3 -0
- package/dist/typechain-types/contracts/tests/mocks/BySigTraitsMock.js.map +1 -0
- package/dist/typechain-types/contracts/tests/mocks/TokenWithBySig.d.ts +422 -0
- package/dist/typechain-types/contracts/tests/mocks/TokenWithBySig.js +3 -0
- package/dist/typechain-types/contracts/tests/mocks/TokenWithBySig.js.map +1 -0
- package/dist/typechain-types/contracts/tests/mocks/USDCLikePermitMock.d.ts +260 -0
- package/dist/typechain-types/contracts/tests/mocks/USDCLikePermitMock.js +3 -0
- package/dist/typechain-types/contracts/tests/mocks/USDCLikePermitMock.js.map +1 -0
- package/dist/typechain-types/contracts/tests/mocks/index.d.ts +3 -0
- package/dist/typechain-types/factories/@openzeppelin/contracts/utils/Address__factory.d.ts +42 -0
- package/dist/typechain-types/factories/@openzeppelin/contracts/utils/Address__factory.js +67 -0
- package/dist/typechain-types/factories/@openzeppelin/contracts/utils/Address__factory.js.map +1 -0
- package/dist/typechain-types/factories/@openzeppelin/contracts/utils/index.d.ts +1 -0
- package/dist/typechain-types/factories/@openzeppelin/contracts/utils/index.js +3 -1
- package/dist/typechain-types/factories/@openzeppelin/contracts/utils/index.js.map +1 -1
- package/dist/typechain-types/factories/contracts/index.d.ts +1 -3
- package/dist/typechain-types/factories/contracts/index.js +2 -7
- package/dist/typechain-types/factories/contracts/index.js.map +1 -1
- package/dist/typechain-types/factories/contracts/interfaces/IERC7597Permit__factory.d.ts +33 -0
- package/dist/typechain-types/factories/contracts/interfaces/IERC7597Permit__factory.js +53 -0
- package/dist/typechain-types/factories/contracts/interfaces/IERC7597Permit__factory.js.map +1 -0
- package/dist/typechain-types/factories/contracts/interfaces/index.d.ts +1 -0
- package/dist/typechain-types/factories/contracts/interfaces/index.js +3 -1
- package/dist/typechain-types/factories/contracts/interfaces/index.js.map +1 -1
- package/dist/typechain-types/factories/contracts/libraries/AddressArray__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/libraries/AddressArray__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/libraries/BySigTraits__factory.d.ts +26 -0
- package/dist/typechain-types/factories/contracts/libraries/BySigTraits__factory.js +45 -0
- package/dist/typechain-types/factories/contracts/libraries/BySigTraits__factory.js.map +1 -0
- package/dist/typechain-types/factories/contracts/libraries/SafeERC20__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/libraries/SafeERC20__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/libraries/UniERC20__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/libraries/UniERC20__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/libraries/index.d.ts +1 -0
- package/dist/typechain-types/factories/contracts/libraries/index.js +3 -1
- package/dist/typechain-types/factories/contracts/libraries/index.js.map +1 -1
- package/dist/typechain-types/factories/contracts/mixins/BySig__factory.d.ts +286 -0
- package/dist/typechain-types/factories/contracts/mixins/BySig__factory.js +385 -0
- package/dist/typechain-types/factories/contracts/mixins/BySig__factory.js.map +1 -0
- package/dist/typechain-types/factories/contracts/{EthReceiver__factory.d.ts → mixins/EthReceiver__factory.d.ts} +1 -1
- package/dist/typechain-types/factories/contracts/mixins/EthReceiver__factory.js.map +1 -0
- package/dist/typechain-types/factories/contracts/{OnlyWethReceiver__factory.d.ts → mixins/OnlyWethReceiver__factory.d.ts} +1 -1
- package/dist/typechain-types/factories/contracts/mixins/OnlyWethReceiver__factory.js.map +1 -0
- package/dist/typechain-types/factories/contracts/{PermitAndCall__factory.d.ts → mixins/PermitAndCall__factory.d.ts} +1 -1
- package/dist/typechain-types/factories/contracts/mixins/PermitAndCall__factory.js.map +1 -0
- package/dist/typechain-types/factories/contracts/mixins/index.d.ts +4 -0
- package/dist/typechain-types/factories/contracts/mixins/index.js +15 -0
- package/dist/typechain-types/factories/contracts/mixins/index.js.map +1 -0
- package/dist/typechain-types/factories/contracts/tests/mocks/AddressArrayMock__factory.d.ts +1 -5
- package/dist/typechain-types/factories/contracts/tests/mocks/AddressArrayMock__factory.js +1 -6
- package/dist/typechain-types/factories/contracts/tests/mocks/AddressArrayMock__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/AddressSetMock__factory.d.ts +11 -5
- package/dist/typechain-types/factories/contracts/tests/mocks/AddressSetMock__factory.js +14 -6
- package/dist/typechain-types/factories/contracts/tests/mocks/AddressSetMock__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/BySigTraitsMock__factory.d.ts +86 -0
- package/dist/typechain-types/factories/contracts/tests/mocks/BySigTraitsMock__factory.js +126 -0
- package/dist/typechain-types/factories/contracts/tests/mocks/BySigTraitsMock__factory.js.map +1 -0
- package/dist/typechain-types/factories/contracts/tests/mocks/EthReceiverMock__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/EthReceiverMock__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/PermitAndCallMock__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/PermitAndCallMock__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/PermitAndCallMock__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/PermitableMock__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/PermitableMock__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/PermitableMock__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20NoReturnMock__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20NoReturnMock__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20PermitNoRevertMock__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20PermitNoRevertMock__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ReturnFalseMock__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ReturnFalseMock__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ReturnTrueMock__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ReturnTrueMock__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ThroughZeroApprove__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20ThroughZeroApprove__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20WithSafeBalance__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/ERC20WithSafeBalance__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/Permit2ReturnTrueMock__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/Permit2ReturnTrueMock__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/SafeERC20Wrapper__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/SafeERC20Wrapper__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/SafeERC20Wrapper__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/SafeWETHWrapper__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/SafeERC20Helper.sol/SafeWETHWrapper__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/TokenWithBySig__factory.d.ts +675 -0
- package/dist/typechain-types/factories/contracts/tests/mocks/TokenWithBySig__factory.js +893 -0
- package/dist/typechain-types/factories/contracts/tests/mocks/TokenWithBySig__factory.js.map +1 -0
- package/dist/typechain-types/factories/contracts/tests/mocks/USDCLikePermitMock__factory.d.ts +481 -0
- package/dist/typechain-types/factories/contracts/tests/mocks/USDCLikePermitMock__factory.js +640 -0
- package/dist/typechain-types/factories/contracts/tests/mocks/USDCLikePermitMock__factory.js.map +1 -0
- package/dist/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ERC20Capitals__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ERC20Capitals__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ERC20bytes32Capitals__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ERC20bytes32Capitals__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ERC20bytes32__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ERC20bytes32__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ETHBadReceiver__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/ETHBadReceiver__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/UniERC20Wrapper__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/UniERC20Helper.sol/UniERC20Wrapper__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/WethReceiverMock__factory.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/WethReceiverMock__factory.js +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/index.d.ts +3 -0
- package/dist/typechain-types/factories/contracts/tests/mocks/index.js +7 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/index.js.map +1 -1
- package/dist/typechain-types/index.d.ts +20 -6
- package/dist/typechain-types/index.js +22 -8
- package/dist/typechain-types/index.js.map +1 -1
- package/package.json +1 -1
- package/utils/docify.utils.js +1 -1
- package/contracts/EthReceiver.sol +0 -16
- package/contracts/OnlyWethReceiver.sol +0 -17
- package/contracts/PermitAndCall.sol +0 -28
- package/dist/typechain-types/contracts/EthReceiver.js.map +0 -1
- package/dist/typechain-types/contracts/OnlyWethReceiver.js.map +0 -1
- package/dist/typechain-types/contracts/PermitAndCall.js.map +0 -1
- package/dist/typechain-types/factories/contracts/EthReceiver__factory.js.map +0 -1
- package/dist/typechain-types/factories/contracts/OnlyWethReceiver__factory.js.map +0 -1
- package/dist/typechain-types/factories/contracts/PermitAndCall__factory.js.map +0 -1
- /package/dist/typechain-types/contracts/{EthReceiver.js → mixins/EthReceiver.js} +0 -0
- /package/dist/typechain-types/contracts/{OnlyWethReceiver.js → mixins/OnlyWethReceiver.js} +0 -0
- /package/dist/typechain-types/contracts/{PermitAndCall.js → mixins/PermitAndCall.js} +0 -0
- /package/dist/typechain-types/factories/contracts/{EthReceiver__factory.js → mixins/EthReceiver__factory.js} +0 -0
- /package/dist/typechain-types/factories/contracts/{OnlyWethReceiver__factory.js → mixins/OnlyWethReceiver__factory.js} +0 -0
- /package/dist/typechain-types/factories/contracts/{PermitAndCall__factory.js → mixins/PermitAndCall__factory.js} +0 -0
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: MIT
|
|
2
|
-
|
|
3
|
-
pragma solidity ^0.8.0;
|
|
4
|
-
|
|
5
|
-
import "./EthReceiver.sol";
|
|
6
|
-
|
|
7
|
-
abstract contract OnlyWethReceiver is EthReceiver {
|
|
8
|
-
address private immutable _WETH; // solhint-disable-line var-name-mixedcase
|
|
9
|
-
|
|
10
|
-
constructor(address weth) {
|
|
11
|
-
_WETH = address(weth);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
function _receive() internal virtual override {
|
|
15
|
-
if (msg.sender != _WETH) revert EthDepositRejected();
|
|
16
|
-
}
|
|
17
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: MIT
|
|
2
|
-
|
|
3
|
-
pragma solidity ^0.8.0;
|
|
4
|
-
|
|
5
|
-
import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
|
|
6
|
-
import { SafeERC20 } from "./libraries/SafeERC20.sol";
|
|
7
|
-
|
|
8
|
-
abstract contract PermitAndCall {
|
|
9
|
-
using SafeERC20 for IERC20;
|
|
10
|
-
|
|
11
|
-
function permitAndCall(bytes calldata permit, bytes calldata action) external payable {
|
|
12
|
-
IERC20(address(bytes20(permit))).tryPermit(permit[20:]);
|
|
13
|
-
// solhint-disable-next-line no-inline-assembly
|
|
14
|
-
assembly ("memory-safe") {
|
|
15
|
-
let ptr := mload(0x40)
|
|
16
|
-
calldatacopy(ptr, action.offset, action.length)
|
|
17
|
-
let success := delegatecall(gas(), address(), ptr, action.length, 0, 0)
|
|
18
|
-
returndatacopy(ptr, 0, returndatasize())
|
|
19
|
-
switch success
|
|
20
|
-
case 0 {
|
|
21
|
-
revert(ptr, returndatasize())
|
|
22
|
-
}
|
|
23
|
-
default {
|
|
24
|
-
return(ptr, returndatasize())
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EthReceiver.js","sourceRoot":"","sources":["../../../typechain-types/contracts/EthReceiver.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OnlyWethReceiver.js","sourceRoot":"","sources":["../../../typechain-types/contracts/OnlyWethReceiver.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PermitAndCall.js","sourceRoot":"","sources":["../../../typechain-types/contracts/PermitAndCall.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EthReceiver__factory.js","sourceRoot":"","sources":["../../../../typechain-types/factories/contracts/EthReceiver__factory.ts"],"names":[],"mappings":";AAAA,+CAA+C;AAC/C,oBAAoB;AACpB,oBAAoB;;;AAEpB,mCAAkE;AAMlE,MAAM,IAAI,GAAG;IACX;QACE,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,OAAO;KACd;IACD;QACE,eAAe,EAAE,SAAS;QAC1B,IAAI,EAAE,SAAS;KAChB;CACO,CAAC;AAEX,MAAa,oBAAoB;IAE/B,MAAM,CAAC,eAAe;QACpB,OAAO,IAAI,kBAAS,CAAC,IAAI,CAAyB,CAAC;IACrD,CAAC;IACD,MAAM,CAAC,OAAO,CAAC,OAAe,EAAE,MAA8B;QAC5D,OAAO,IAAI,iBAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAA2B,CAAC;IACvE,CAAC;;AAPH,oDAQC;AAPiB,wBAAG,GAAG,IAAI,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OnlyWethReceiver__factory.js","sourceRoot":"","sources":["../../../../typechain-types/factories/contracts/OnlyWethReceiver__factory.ts"],"names":[],"mappings":";AAAA,+CAA+C;AAC/C,oBAAoB;AACpB,oBAAoB;;;AAEpB,mCAAkE;AAMlE,MAAM,IAAI,GAAG;IACX;QACE,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,OAAO;KACd;IACD;QACE,eAAe,EAAE,SAAS;QAC1B,IAAI,EAAE,SAAS;KAChB;CACO,CAAC;AAEX,MAAa,yBAAyB;IAEpC,MAAM,CAAC,eAAe;QACpB,OAAO,IAAI,kBAAS,CAAC,IAAI,CAA8B,CAAC;IAC1D,CAAC;IACD,MAAM,CAAC,OAAO,CACZ,OAAe,EACf,MAA8B;QAE9B,OAAO,IAAI,iBAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAgC,CAAC;IAC5E,CAAC;;AAVH,8DAWC;AAViB,6BAAG,GAAG,IAAI,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PermitAndCall__factory.js","sourceRoot":"","sources":["../../../../typechain-types/factories/contracts/PermitAndCall__factory.ts"],"names":[],"mappings":";AAAA,+CAA+C;AAC/C,oBAAoB;AACpB,oBAAoB;;;AAEpB,mCAAkE;AAMlE,MAAM,IAAI,GAAG;IACX;QACE,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,OAAO;gBACrB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,OAAO;aACd;YACD;gBACE,YAAY,EAAE,OAAO;gBACrB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,OAAO;aACd;SACF;QACD,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,EAAE;QACX,eAAe,EAAE,SAAS;QAC1B,IAAI,EAAE,UAAU;KACjB;CACO,CAAC;AAEX,MAAa,sBAAsB;IAEjC,MAAM,CAAC,eAAe;QACpB,OAAO,IAAI,kBAAS,CAAC,IAAI,CAA2B,CAAC;IACvD,CAAC;IACD,MAAM,CAAC,OAAO,CACZ,OAAe,EACf,MAA8B;QAE9B,OAAO,IAAI,iBAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAA6B,CAAC;IACzE,CAAC;;AAVH,wDAWC;AAViB,0BAAG,GAAG,IAAI,CAAC"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|