git.delta.rocks / unique-network / refs/commits / 79b6c1593ae3

difftreelog

Merge pull request #47 from usetech-llc/update_license

usetech-llc2020-12-22parents: #da457a0 #0333d12.patch.diff
in: master
Update license information

25 files changed

modifiedLICENSEdiffbeforeafterboth
--- a/LICENSE
+++ b/LICENSE
@@ -1,24 +1,15 @@
-This is free and unencumbered software released into the public domain.
-
-Anyone is free to copy, modify, publish, use, compile, sell, or
-distribute this software, either in source code form or as a compiled
-binary, for any purpose, commercial or non-commercial, and by any
-means.
-
-In jurisdictions that recognize copyright laws, the author or authors
-of this software dedicate any and all copyright interest in the
-software to the public domain. We make this dedication for the benefit
-of the public at large and to the detriment of our heirs and
-successors. We intend this dedication to be an overt act of
-relinquishment in perpetuity of all present and future rights to this
-software under copyright law.
+USETECH PROFESSIONAL CONFIDENTIAL
+__________________
 
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
+ [2019] - [2020] UseTech Professional LTD. 
+ All Rights Reserved.
 
-For more information, please refer to <http://unlicense.org>
+NOTICE:  All information contained herein is, and remains
+the property of UseTech Professional LTD. and its suppliers,
+if any. The intellectual and technical concepts contained
+herein are proprietary to UseTech Professional LTD.
+and its suppliers and may be covered by U.S. and Foreign Patents,
+patents in process, and are protected by trade secret or copyright law.
+Dissemination of this information or reproduction of this material
+is strictly forbidden unless prior written permission is obtained
+from UseTech Professional LTD..
modifiednode/build.rsdiffbeforeafterboth
--- a/node/build.rs
+++ b/node/build.rs
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 use substrate_build_script_utils::{generate_cargo_keys, rerun_if_git_head_changed};
 
 fn main() {
modifiednode/src/chain_spec.rsdiffbeforeafterboth
--- a/node/src/chain_spec.rs
+++ b/node/src/chain_spec.rs
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 // use nft_runtime::{
 //     AccountId, AuraConfig, BalancesConfig, GenesisConfig, GrandpaConfig, Signature, SudoConfig,
 //     SystemConfig, WASM_BINARY,
modifiednode/src/main.rsdiffbeforeafterboth
--- a/node/src/main.rs
+++ b/node/src/main.rs
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 //! Substrate Node Template CLI library.
 #![warn(missing_docs)]
 
modifiednode/src/service.rsdiffbeforeafterboth
--- a/node/src/service.rs
+++ b/node/src/service.rs
@@ -1,5 +1,10 @@
 //! Service and ServiceFactory implementation. Specialized wrapper over substrate service.
 
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 use std::sync::Arc;
 use std::time::Duration;
 use sc_client_api::{ExecutorProvider, RemoteBackend};
modifiedpallets/nft/src/lib.rsdiffbeforeafterboth
--- a/pallets/nft/src/lib.rs
+++ b/pallets/nft/src/lib.rs
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 #![recursion_limit = "1024"]
 
 #![cfg_attr(not(feature = "std"), no_std)]
modifiedruntime/src/lib.rsdiffbeforeafterboth
--- a/runtime/src/lib.rs
+++ b/runtime/src/lib.rs
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 //! The Substrate Node Template runtime. This can be compiled with `#[no_std]`, ready for Wasm.
 
 #![cfg_attr(not(feature = "std"), no_std)]
modifiedruntime/src/nft_weights.rsdiffbeforeafterboth
before · runtime/src/nft_weights.rs
1use frame_support::weights::{Weight, constants::RocksDbWeight as DbWeight};23pub struct WeightInfo;4impl pallet_nft::WeightInfo for WeightInfo {5	fn create_collection() -> Weight {6		(70_000_000 as Weight)7			.saturating_add(DbWeight::get().reads(7 as Weight))8			.saturating_add(DbWeight::get().writes(5 as Weight))9	}10	fn destroy_collection() -> Weight {11		(90_000_000 as Weight)12			.saturating_add(DbWeight::get().reads(2 as Weight))13			.saturating_add(DbWeight::get().writes(5 as Weight))14	}15	fn add_to_white_list() -> Weight {16		(30_000_000 as Weight)17			.saturating_add(DbWeight::get().reads(3 as Weight))18			.saturating_add(DbWeight::get().writes(1 as Weight))19    }20    fn remove_from_white_list() -> Weight {21		(35_000_000 as Weight)22			.saturating_add(DbWeight::get().reads(3 as Weight))23			.saturating_add(DbWeight::get().writes(1 as Weight))24	}25	fn set_public_access_mode() -> Weight {26		(27_000_000 as Weight)27			.saturating_add(DbWeight::get().reads(1 as Weight))28			.saturating_add(DbWeight::get().writes(1 as Weight))29	}30	fn set_mint_permission() -> Weight {31		(27_000_000 as Weight)32			.saturating_add(DbWeight::get().reads(1 as Weight))33			.saturating_add(DbWeight::get().writes(1 as Weight))34	}35	fn change_collection_owner() -> Weight {36		(27_000_000 as Weight)37			.saturating_add(DbWeight::get().reads(1 as Weight))38			.saturating_add(DbWeight::get().writes(1 as Weight))39	}40	fn add_collection_admin() -> Weight {41        (32_000_000 as Weight)42            .saturating_add(DbWeight::get().reads(3 as Weight))43            .saturating_add(DbWeight::get().writes(1 as Weight))44	}45	fn remove_collection_admin() -> Weight {46		(50_000_000 as Weight)47            .saturating_add(DbWeight::get().reads(2 as Weight))48            .saturating_add(DbWeight::get().writes(1 as Weight))49    }50    fn set_collection_sponsor() -> Weight {51		(32_000_000 as Weight)52            .saturating_add(DbWeight::get().reads(2 as Weight))53            .saturating_add(DbWeight::get().writes(1 as Weight))54    }  55    fn confirm_sponsorship() -> Weight {56		(22_000_000 as Weight)57            .saturating_add(DbWeight::get().reads(1 as Weight))58            .saturating_add(DbWeight::get().writes(1 as Weight))59    }  60    fn remove_collection_sponsor() -> Weight {61		(24_000_000 as Weight)62            .saturating_add(DbWeight::get().reads(1 as Weight))63            .saturating_add(DbWeight::get().writes(1 as Weight))64    }  65    fn create_item(s: usize, ) -> Weight {66        (130_000_000 as Weight)67            .saturating_add((2135 as Weight).saturating_mul(s as Weight).saturating_mul(500 as Weight)) // 500 is temparary multiplier, fee for storage68            .saturating_add(DbWeight::get().reads(10 as Weight))69            .saturating_add(DbWeight::get().writes(8 as Weight))70    }  71    fn burn_item() -> Weight {72		(170_000_000 as Weight)73            .saturating_add(DbWeight::get().reads(9 as Weight))74            .saturating_add(DbWeight::get().writes(7 as Weight))75    }  76    fn transfer() -> Weight {77        (125_000_000 as Weight)78            .saturating_add(DbWeight::get().reads(7 as Weight))79            .saturating_add(DbWeight::get().writes(7 as Weight))80    }  81    fn approve() -> Weight {82        (45_000_000 as Weight)83            .saturating_add(DbWeight::get().reads(3 as Weight))84            .saturating_add(DbWeight::get().writes(1 as Weight))85    }86    fn transfer_from() -> Weight {87        (150_000_000 as Weight)88            .saturating_add(DbWeight::get().reads(9 as Weight))89            .saturating_add(DbWeight::get().writes(8 as Weight))90    }91    fn set_offchain_schema() -> Weight {92        (33_000_000 as Weight)93            .saturating_add(DbWeight::get().reads(2 as Weight))94            .saturating_add(DbWeight::get().writes(1 as Weight))95    }96    fn set_const_on_chain_schema() -> Weight {97        (11_100_000 as Weight)98            .saturating_add(DbWeight::get().reads(2 as Weight))99            .saturating_add(DbWeight::get().writes(1 as Weight))100    }101    fn set_variable_on_chain_schema() -> Weight {102        (11_100_000 as Weight)103            .saturating_add(DbWeight::get().reads(2 as Weight))104            .saturating_add(DbWeight::get().writes(1 as Weight))105    }106    fn set_variable_meta_data() -> Weight {107        (17_500_000 as Weight)108            .saturating_add(DbWeight::get().reads(2 as Weight))109            .saturating_add(DbWeight::get().writes(1 as Weight))110    }111    // fn set_chain_limits() -> Weight {112    //     (0 as Weight)113    //         .saturating_add(DbWeight::get().reads(1 as Weight))114    //         .saturating_add(DbWeight::get().writes(1 as Weight))115    // }116    fn enable_contract_sponsoring() -> Weight {117        (13_000_000 as Weight)118            .saturating_add(DbWeight::get().reads(1 as Weight))119            .saturating_add(DbWeight::get().writes(1 as Weight))120    }121    // fn set_contract_sponsoring_rate_limit() -> Weight {122    //     (0 as Weight)123    //         .saturating_add(DbWeight::get().reads(1 as Weight))124    //         .saturating_add(DbWeight::get().writes(1 as Weight))125    // }126}
after · runtime/src/nft_weights.rs
1//2// This file is subject to the terms and conditions defined in3// file 'LICENSE', which is part of this source code package.4//56use frame_support::weights::{Weight, constants::RocksDbWeight as DbWeight};78pub struct WeightInfo;9impl pallet_nft::WeightInfo for WeightInfo {10	fn create_collection() -> Weight {11		(70_000_000 as Weight)12			.saturating_add(DbWeight::get().reads(7 as Weight))13			.saturating_add(DbWeight::get().writes(5 as Weight))14	}15	fn destroy_collection() -> Weight {16		(90_000_000 as Weight)17			.saturating_add(DbWeight::get().reads(2 as Weight))18			.saturating_add(DbWeight::get().writes(5 as Weight))19	}20	fn add_to_white_list() -> Weight {21		(30_000_000 as Weight)22			.saturating_add(DbWeight::get().reads(3 as Weight))23			.saturating_add(DbWeight::get().writes(1 as Weight))24    }25    fn remove_from_white_list() -> Weight {26		(35_000_000 as Weight)27			.saturating_add(DbWeight::get().reads(3 as Weight))28			.saturating_add(DbWeight::get().writes(1 as Weight))29	}30	fn set_public_access_mode() -> Weight {31		(27_000_000 as Weight)32			.saturating_add(DbWeight::get().reads(1 as Weight))33			.saturating_add(DbWeight::get().writes(1 as Weight))34	}35	fn set_mint_permission() -> Weight {36		(27_000_000 as Weight)37			.saturating_add(DbWeight::get().reads(1 as Weight))38			.saturating_add(DbWeight::get().writes(1 as Weight))39	}40	fn change_collection_owner() -> Weight {41		(27_000_000 as Weight)42			.saturating_add(DbWeight::get().reads(1 as Weight))43			.saturating_add(DbWeight::get().writes(1 as Weight))44	}45	fn add_collection_admin() -> Weight {46        (32_000_000 as Weight)47            .saturating_add(DbWeight::get().reads(3 as Weight))48            .saturating_add(DbWeight::get().writes(1 as Weight))49	}50	fn remove_collection_admin() -> Weight {51		(50_000_000 as Weight)52            .saturating_add(DbWeight::get().reads(2 as Weight))53            .saturating_add(DbWeight::get().writes(1 as Weight))54    }55    fn set_collection_sponsor() -> Weight {56		(32_000_000 as Weight)57            .saturating_add(DbWeight::get().reads(2 as Weight))58            .saturating_add(DbWeight::get().writes(1 as Weight))59    }  60    fn confirm_sponsorship() -> Weight {61		(22_000_000 as Weight)62            .saturating_add(DbWeight::get().reads(1 as Weight))63            .saturating_add(DbWeight::get().writes(1 as Weight))64    }  65    fn remove_collection_sponsor() -> Weight {66		(24_000_000 as Weight)67            .saturating_add(DbWeight::get().reads(1 as Weight))68            .saturating_add(DbWeight::get().writes(1 as Weight))69    }  70    fn create_item(s: usize, ) -> Weight {71        (130_000_000 as Weight)72            .saturating_add((2135 as Weight).saturating_mul(s as Weight).saturating_mul(500 as Weight)) // 500 is temparary multiplier, fee for storage73            .saturating_add(DbWeight::get().reads(10 as Weight))74            .saturating_add(DbWeight::get().writes(8 as Weight))75    }  76    fn burn_item() -> Weight {77		(170_000_000 as Weight)78            .saturating_add(DbWeight::get().reads(9 as Weight))79            .saturating_add(DbWeight::get().writes(7 as Weight))80    }  81    fn transfer() -> Weight {82        (125_000_000 as Weight)83            .saturating_add(DbWeight::get().reads(7 as Weight))84            .saturating_add(DbWeight::get().writes(7 as Weight))85    }  86    fn approve() -> Weight {87        (45_000_000 as Weight)88            .saturating_add(DbWeight::get().reads(3 as Weight))89            .saturating_add(DbWeight::get().writes(1 as Weight))90    }91    fn transfer_from() -> Weight {92        (150_000_000 as Weight)93            .saturating_add(DbWeight::get().reads(9 as Weight))94            .saturating_add(DbWeight::get().writes(8 as Weight))95    }96    fn set_offchain_schema() -> Weight {97        (33_000_000 as Weight)98            .saturating_add(DbWeight::get().reads(2 as Weight))99            .saturating_add(DbWeight::get().writes(1 as Weight))100    }101    fn set_const_on_chain_schema() -> Weight {102        (11_100_000 as Weight)103            .saturating_add(DbWeight::get().reads(2 as Weight))104            .saturating_add(DbWeight::get().writes(1 as Weight))105    }106    fn set_variable_on_chain_schema() -> Weight {107        (11_100_000 as Weight)108            .saturating_add(DbWeight::get().reads(2 as Weight))109            .saturating_add(DbWeight::get().writes(1 as Weight))110    }111    fn set_variable_meta_data() -> Weight {112        (17_500_000 as Weight)113            .saturating_add(DbWeight::get().reads(2 as Weight))114            .saturating_add(DbWeight::get().writes(1 as Weight))115    }116    // fn set_chain_limits() -> Weight {117    //     (0 as Weight)118    //         .saturating_add(DbWeight::get().reads(1 as Weight))119    //         .saturating_add(DbWeight::get().writes(1 as Weight))120    // }121    fn enable_contract_sponsoring() -> Weight {122        (13_000_000 as Weight)123            .saturating_add(DbWeight::get().reads(1 as Weight))124            .saturating_add(DbWeight::get().writes(1 as Weight))125    }126    // fn set_contract_sponsoring_rate_limit() -> Weight {127    //     (0 as Weight)128    //         .saturating_add(DbWeight::get().reads(1 as Weight))129    //         .saturating_add(DbWeight::get().writes(1 as Weight))130    // }131}
modifiedtests/src/accounts.tsdiffbeforeafterboth
--- a/tests/src/accounts.ts
+++ b/tests/src/accounts.ts
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 export const bobsPublicKey = '5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty';
 export const alicesPublicKey = '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY';
 export const ferdiesPublicKey = '5CiPPseXPECbkjWCa6MnjNokrgYjMqmKndv2rSnekmSK2DjL';
modifiedtests/src/blocks-production.test.tsdiffbeforeafterboth
--- a/tests/src/blocks-production.test.ts
+++ b/tests/src/blocks-production.test.ts
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 import usingApi from "./substrate/substrate-api";
 import promisifySubstrate from "./substrate/promisify-substrate";
 import { expect } from "chai";
modifiedtests/src/config.tsdiffbeforeafterboth
--- a/tests/src/config.ts
+++ b/tests/src/config.ts
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 import process from 'process';
 
 const config = {
modifiedtests/src/connection.test.tsdiffbeforeafterboth
--- a/tests/src/connection.test.ts
+++ b/tests/src/connection.test.ts
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 import usingApi from "./substrate/substrate-api";
 import { WsProvider } from '@polkadot/api';
 import * as chai from 'chai';
modifiedtests/src/contracts.test.tsdiffbeforeafterboth
--- a/tests/src/contracts.test.ts
+++ b/tests/src/contracts.test.ts
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 import { ApiPromise } from "@polkadot/api";
 import { expect } from "chai";
 import { default as usingApi, submitTransactionAsync } from "./substrate/substrate-api";
modifiedtests/src/createCollection.test.tsdiffbeforeafterboth
--- a/tests/src/createCollection.test.ts
+++ b/tests/src/createCollection.test.ts
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
 import { default as usingApi } from "./substrate/substrate-api";
modifiedtests/src/createMultipleItems.test.tsdiffbeforeafterboth
--- a/tests/src/createMultipleItems.test.ts
+++ b/tests/src/createMultipleItems.test.ts
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 import { assert } from 'chai';
 import { alicesPublicKey } from './accounts';
 import privateKey from './substrate/privateKey';
modifiedtests/src/creditFeesToTreasury.test.tsdiffbeforeafterboth
--- a/tests/src/creditFeesToTreasury.test.ts
+++ b/tests/src/creditFeesToTreasury.test.ts
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
 import { default as usingApi, submitTransactionAsync } from "./substrate/substrate-api";
modifiedtests/src/pallet-presence.test.tsdiffbeforeafterboth
--- a/tests/src/pallet-presence.test.ts
+++ b/tests/src/pallet-presence.test.ts
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 import { ApiPromise } from "@polkadot/api";
 import { expect } from "chai";
 import usingApi from "./substrate/substrate-api";
modifiedtests/src/substrate/get-balance.tsdiffbeforeafterboth
--- a/tests/src/substrate/get-balance.ts
+++ b/tests/src/substrate/get-balance.ts
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 import { ApiPromise } from "@polkadot/api";
 import promisifySubstrate from "./promisify-substrate";
 import {AccountInfo} from "@polkadot/types/interfaces/system";
modifiedtests/src/substrate/privateKey.tsdiffbeforeafterboth
--- a/tests/src/substrate/privateKey.ts
+++ b/tests/src/substrate/privateKey.ts
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 import { Keyring } from "@polkadot/api";
 import { IKeyringPair } from "@polkadot/types/types";
 
modifiedtests/src/substrate/promisify-substrate.tsdiffbeforeafterboth
--- a/tests/src/substrate/promisify-substrate.ts
+++ b/tests/src/substrate/promisify-substrate.ts
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 import ApiPromise from "@polkadot/api/promise/Api";
 
 type PromiseType<T> = T extends PromiseLike<infer TInner> ? TInner : T;
modifiedtests/src/substrate/substrate-api.tsdiffbeforeafterboth
--- a/tests/src/substrate/substrate-api.ts
+++ b/tests/src/substrate/substrate-api.ts
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 import { WsProvider, ApiPromise } from "@polkadot/api";
 import type { AccountId, Address, ApplyExtrinsicResult, DispatchError, DispatchInfo, EventRecord, Extrinsic, ExtrinsicStatus, Hash, RuntimeDispatchInfo } from '@polkadot/types/interfaces';
 import { IKeyringPair } from "@polkadot/types/types";
modifiedtests/src/substrate/wait-new-blocks.tsdiffbeforeafterboth
--- a/tests/src/substrate/wait-new-blocks.ts
+++ b/tests/src/substrate/wait-new-blocks.ts
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 import { ApiPromise } from "@polkadot/api";
 
 export default function waitNewBlocks(api: ApiPromise, blocksCount: number = 1): Promise<void> {
modifiedtests/src/transfer.test.tsdiffbeforeafterboth
--- a/tests/src/transfer.test.ts
+++ b/tests/src/transfer.test.ts
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 import { expect, assert } from "chai";
 import { default as usingApi, submitTransactionAsync } from "./substrate/substrate-api";
 import { alicesPublicKey, bobsPublicKey, ferdiesPublicKey } from "./accounts";
modifiedtests/src/util/helpers.tsdiffbeforeafterboth
--- a/tests/src/util/helpers.ts
+++ b/tests/src/util/helpers.ts
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
 import type { AccountId, EventRecord } from '@polkadot/types/interfaces';
modifiedtests/src/util/util.tsdiffbeforeafterboth
--- a/tests/src/util/util.ts
+++ b/tests/src/util/util.ts
@@ -1,3 +1,8 @@
+//
+// This file is subject to the terms and conditions defined in
+// file 'LICENSE', which is part of this source code package.
+//
+
 export function strToUTF16(str: string): any {
   let buf: number[] = [];
   for (let i=0, strLen=str.length; i < strLen; i++) {