Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

Add Proof Size to Weight Output #11637

Merged
merged 114 commits into from
Jan 26, 2023
Merged

Conversation

shawntabrizi
Copy link
Member

@shawntabrizi shawntabrizi commented Jun 10, 2022

This updates the frame-benchmarking-cli to output estimated Proof-of-Validity sizes which are needed for chromatic weights.

🚨 Ensure to use your own weight templates if you don't want to integrate this change right away.
Integration guide (this can happen at your own pace):

  • If you have a custom weight template; update it according to the changes in this MR.
  • Re-benchmark all your pallets to generate new weights.
  • Ensure that the outputted proof sizes will not overflow your block limit for important tasks like democracy.
    THIS IS IMPORTANT TO NOT STUCK YOUR CHAIN
    Runtime upgrades itself should still work since they run in on_initialize which is mandatory and thereby not weight limited.

Changelog

Breaking changes:

  • Removed --record-proof since it now happens implicitly.
  • pallet-scheduler and pallet-whitelist benchmarks consider partially measured proof sizes.

(All other changes are backwards compatible)

Added:

  • --worst-case-map-values set the number of maximal elements in a StorageMap (if no MaxElements is given).
  • --additional-trie-layers set the number of additional trie layers that the should be used to calculate the trie overhead.
  • --output-pov-analysis select a custom analysis method besides the choice for Timing and DB access.
  • --default-pov-mode select the default PoV mode if no pov_mode is present (defaults to MaxEncodedLen).
  • pov_mode attribute for benchmarks (see below).

Changed:

  • Weight template to output PoV sizes
  • Fixed a panic in the proof-retrieval logic when there was no proof available.

Main logic changes are in utils/frame/benchmarking-cli/src/pallet/{command, writer}.rs.

pov_mode Syntax Extension

The PoV calculation can be influenced on a (benchmark, storage-key) level with the new pov_mode attribute.
It looks like this:

#[pov_mode = Measured]
my_benchmark_with_length_witness {
}
#[pov_mode = MaxEncodedLen {
	// Use MaxEncodedLen for all except Preimage::PreimageFor which uses Measured instead.
	Preimage::PreimageFor: Measured
	// ...
}]
service_task_fetched {}

The first mode after the = is the default for all storage accesses by this benchmark. The following optional syntax can then overwrite the mode for specific storage keys.
It is also possible to overwrite on a prefix basis like Pallet::ALL but this should be considered experimental.
The default for when no attribute is given is determined by --default-pov-mode which defaults to MaxEncodedLen. The default CLI option is not a hard requirement in this case and the benchmarking will fallback to Measured if the type does not implement MEL. In the case that the attribute is present; no fallback will be used and the benchmark will error.

Mode: Measured

The proof size of each benchmark is measured. On top of this measured size we add add an overhead for every read, and another overhead for every newly accessed prefix.
The first overhead is calculated from the number of elements in the StorageMap. If none is given, 1M is used unless specified with --map-size. StorageValues always have at most one element.
The second overhead can be configured with --additional-trie-layers. Each trie layer adds 15 * 33 bytes per distinct accessed prefix to the proof size. The number of trie layers depends on how many StorageMaps and other Storage* items are deployed in the runtime. It should be set to log16(storage-items). A value of 2 to 3 is normally sufficient.

Optimizations can be made by this mode as demonstrated in the Whitelist and Scheduler pallet when a length witness is used.

Mode: MaxEncodedLen

Similar to Measured but instead of the measure length it uses the MaxEncoded. This should be used in most cases since it uses safe bounds. Keep in mind that the PoV weights MUST NEVER underestimate the actual required proof size.

Mode: Ignored

This mode is best suited as top-level mode which will then effectively disable the PoV benchmarking and always report zero.
It is also possible to define this on specific keys, but because of how the proof size is currently recorded that will not be entirely correct result. It is therefore best to use it only as top-level, which makes it exclusive as well. See the contracts pallet for an example.

TODO

Follow Ups

  • Use the information that the measured benchmark provide a bit better. Currently there is either measured or worst-case. We need a hybrid mode which uses the measure information instead of the MEL but then still calculates an estimated PoV in between these two extremes.
  • The estimations make an assumption about how many storage items (StorageMap/StorageValue) are currently in the runtime. With growing number of storage items, the PoV size will increase. A CLI flag should be added to account for this.
  • Take node re-using into account since the current design it will massively over-estimate for large numbers of reads.
  • Analyze Polkadot proof blobs to estimate how far off our estimations are.
  • Add the ability to import a polkadot snapshot and run the benches with that. Does not work since the benches require a sanitized state.
  • Try to make proof recording component-independent, currently we use one Proof recorder for the whole benchmark instead of a per-key basis. This is would only optimize the PoV estimations downwards, so for now it should be fine with over-estimations.
  • Update swc @coderobe the new weight formulas will break it until I update it.

@github-actions github-actions bot added the A0-please_review Pull request needs code review. label Jun 10, 2022
@shawntabrizi
Copy link
Member Author

/benchmark runtime pallet pallet_assets

@parity-benchapp
Copy link

parity-benchapp bot commented Jun 11, 2022

Benchmark Runtime Pallet for branch "shawntabrizi-pov-in-cli" with command cargo run --quiet --profile=production --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_assets --extrinsic="*" --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/assets/src/weights.rs --template=./.maintain/frame-weight-template.hbs

Toolchain: stable-x86_64-unknown-linux-gnu (default)
rustc 1.60.0 (7737e0b5c 2022-04-04)

Results
Pallet: "pallet_assets", Extrinsic: "create", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Assets Asset (r:1 w:1)

-- Proof Sizes --

1715 bytes
1715 bytes
1715 bytes
1715 bytes
1715 bytes
1715 bytes
1715 bytes
1715 bytes
1715 bytes
1715 bytes
1715 bytes
1715 bytes
1715 bytes
1715 bytes
1715 bytes
1715 bytes
1715 bytes
1715 bytes
1715 bytes
1715 bytes

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    26.01
              µs

Reads = 1
Writes = 1
Proof Size = 1715

Min Squares Analysis
========
-- Extrinsic Time --

Model:
Time ~=    26.01
              µs

Reads = 1
Writes = 1
Proof Size = 1715

Pallet: "pallet_assets", Extrinsic: "force_create", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Assets Asset (r:1 w:1)

-- Proof Sizes --

1191 bytes
1191 bytes
1191 bytes
1191 bytes
1191 bytes
1191 bytes
1191 bytes
1191 bytes
1191 bytes
1191 bytes
1191 bytes
1191 bytes
1191 bytes
1191 bytes
1191 bytes
1191 bytes
1191 bytes
1191 bytes
1191 bytes
1191 bytes

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=     14.8
              µs

Reads = 1
Writes = 1
Proof Size = 1191

Min Squares Analysis
========
-- Extrinsic Time --

Model:
Time ~=     14.8
              µs

Reads = 1
Writes = 1
Proof Size = 1191

Pallet: "pallet_assets", Extrinsic: "destroy", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Assets Asset (r:1 w:1)
Storage: Assets Account (r:5002 w:5001)
Storage: System Account (r:5000 w:5000)
Storage Proof Skipped: System Account
Storage: Assets Metadata (r:1 w:0)
Storage: Assets Approvals (r:501 w:500)

-- Proof Sizes --

1263806 bytes
1263806 bytes
1263806 bytes
1263806 bytes
1263806 bytes
1263806 bytes
1263806 bytes
1263806 bytes
1263806 bytes
1263806 bytes
1263806 bytes
1263806 bytes
1263806 bytes
1263806 bytes
1263806 bytes
1263806 bytes
1263806 bytes
1263806 bytes
1263806 bytes
1263806 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1311891 bytes
1311891 bytes
1311891 bytes
1311891 bytes
1311891 bytes
1311891 bytes
1311891 bytes
1311891 bytes
1311891 bytes
1311891 bytes
1311891 bytes
1311891 bytes
1311891 bytes
1311891 bytes
1311891 bytes
1311891 bytes
1311891 bytes
1311891 bytes
1311891 bytes
1311891 bytes
1335925 bytes
1335925 bytes
1335925 bytes
1335925 bytes
1335925 bytes
1335925 bytes
1335925 bytes
1335925 bytes
1335925 bytes
1335925 bytes
1335925 bytes
1335925 bytes
1335925 bytes
1335925 bytes
1335925 bytes
1335925 bytes
1335925 bytes
1335925 bytes
1335925 bytes
1335925 bytes
1359921 bytes
1359921 bytes
1359921 bytes
1359921 bytes
1359921 bytes
1359921 bytes
1359921 bytes
1359921 bytes
1359921 bytes
1359921 bytes
1359921 bytes
1359921 bytes
1359921 bytes
1359921 bytes
1359921 bytes
1359921 bytes
1359921 bytes
1359921 bytes
1359921 bytes
1359921 bytes
1383887 bytes
1383887 bytes
1383887 bytes
1383887 bytes
1383887 bytes
1383887 bytes
1383887 bytes
1383887 bytes
1383887 bytes
1383887 bytes
1383887 bytes
1383887 bytes
1383887 bytes
1383887 bytes
1383887 bytes
1383887 bytes
1383887 bytes
1383887 bytes
1383887 bytes
1383887 bytes
1407871 bytes
1407871 bytes
1407871 bytes
1407871 bytes
1407871 bytes
1407871 bytes
1407871 bytes
1407871 bytes
1407871 bytes
1407871 bytes
1407871 bytes
1407871 bytes
1407871 bytes
1407871 bytes
1407871 bytes
1407871 bytes
1407871 bytes
1407871 bytes
1407871 bytes
1407871 bytes
1431919 bytes
1431919 bytes
1431919 bytes
1431919 bytes
1431919 bytes
1431919 bytes
1431919 bytes
1431919 bytes
1431919 bytes
1431919 bytes
1431919 bytes
1431919 bytes
1431919 bytes
1431919 bytes
1431919 bytes
1431919 bytes
1431919 bytes
1431919 bytes
1431919 bytes
1431919 bytes
1455956 bytes
1455956 bytes
1455956 bytes
1455956 bytes
1455956 bytes
1455956 bytes
1455956 bytes
1455956 bytes
1455956 bytes
1455956 bytes
1455956 bytes
1455956 bytes
1455956 bytes
1455956 bytes
1455956 bytes
1455956 bytes
1455956 bytes
1455956 bytes
1455956 bytes
1455956 bytes
1479973 bytes
1479973 bytes
1479973 bytes
1479973 bytes
1479973 bytes
1479973 bytes
1479973 bytes
1479973 bytes
1479973 bytes
1479973 bytes
1479973 bytes
1479973 bytes
1479973 bytes
1479973 bytes
1479973 bytes
1479973 bytes
1479973 bytes
1479973 bytes
1479973 bytes
1479973 bytes
1503981 bytes
1503981 bytes
1503981 bytes
1503981 bytes
1503981 bytes
1503981 bytes
1503981 bytes
1503981 bytes
1503981 bytes
1503981 bytes
1503981 bytes
1503981 bytes
1503981 bytes
1503981 bytes
1503981 bytes
1503981 bytes
1503981 bytes
1503981 bytes
1503981 bytes
1503981 bytes
1527998 bytes
1527998 bytes
1527998 bytes
1527998 bytes
1527998 bytes
1527998 bytes
1527998 bytes
1527998 bytes
1527998 bytes
1527998 bytes
1527998 bytes
1527998 bytes
1527998 bytes
1527998 bytes
1527998 bytes
1527998 bytes
1527998 bytes
1527998 bytes
1527998 bytes
1527998 bytes
1551994 bytes
1551994 bytes
1551994 bytes
1551994 bytes
1551994 bytes
1551994 bytes
1551994 bytes
1551994 bytes
1551994 bytes
1551994 bytes
1551994 bytes
1551994 bytes
1551994 bytes
1551994 bytes
1551994 bytes
1551994 bytes
1551994 bytes
1551994 bytes
1551994 bytes
1551994 bytes
1576035 bytes
1576035 bytes
1576035 bytes
1576035 bytes
1576035 bytes
1576035 bytes
1576035 bytes
1576035 bytes
1576035 bytes
1576035 bytes
1576035 bytes
1576035 bytes
1576035 bytes
1576035 bytes
1576035 bytes
1576035 bytes
1576035 bytes
1576035 bytes
1576035 bytes
1576035 bytes
1600017 bytes
1600017 bytes
1600017 bytes
1600017 bytes
1600017 bytes
1600017 bytes
1600017 bytes
1600017 bytes
1600017 bytes
1600017 bytes
1600017 bytes
1600017 bytes
1600017 bytes
1600017 bytes
1600017 bytes
1600017 bytes
1600017 bytes
1600017 bytes
1600017 bytes
1600017 bytes
1623985 bytes
1623985 bytes
1623985 bytes
1623985 bytes
1623985 bytes
1623985 bytes
1623985 bytes
1623985 bytes
1623985 bytes
1623985 bytes
1623985 bytes
1623985 bytes
1623985 bytes
1623985 bytes
1623985 bytes
1623985 bytes
1623985 bytes
1623985 bytes
1623985 bytes
1623985 bytes
1647993 bytes
1647993 bytes
1647993 bytes
1647993 bytes
1647993 bytes
1647993 bytes
1647993 bytes
1647993 bytes
1647993 bytes
1647993 bytes
1647993 bytes
1647993 bytes
1647993 bytes
1647993 bytes
1647993 bytes
1647993 bytes
1647993 bytes
1647993 bytes
1647993 bytes
1647993 bytes
1672023 bytes
1672023 bytes
1672023 bytes
1672023 bytes
1672023 bytes
1672023 bytes
1672023 bytes
1672023 bytes
1672023 bytes
1672023 bytes
1672023 bytes
1672023 bytes
1672023 bytes
1672023 bytes
1672023 bytes
1672023 bytes
1672023 bytes
1672023 bytes
1672023 bytes
1672023 bytes
1696004 bytes
1696004 bytes
1696004 bytes
1696004 bytes
1696004 bytes
1696004 bytes
1696004 bytes
1696004 bytes
1696004 bytes
1696004 bytes
1696004 bytes
1696004 bytes
1696004 bytes
1696004 bytes
1696004 bytes
1696004 bytes
1696004 bytes
1696004 bytes
1696004 bytes
1696004 bytes
1720018 bytes
1720018 bytes
1720018 bytes
1720018 bytes
1720018 bytes
1720018 bytes
1720018 bytes
1720018 bytes
1720018 bytes
1720018 bytes
1720018 bytes
1720018 bytes
1720018 bytes
1720018 bytes
1720018 bytes
1720018 bytes
1720018 bytes
1720018 bytes
1720018 bytes
1720018 bytes
1743985 bytes
1743985 bytes
1743985 bytes
1743985 bytes
1743985 bytes
1743985 bytes
1743985 bytes
1743985 bytes
1743985 bytes
1743985 bytes
1743985 bytes
1743985 bytes
1743985 bytes
1743985 bytes
1743985 bytes
1743985 bytes
1743985 bytes
1743985 bytes
1743985 bytes
1743985 bytes
1767949 bytes
1767949 bytes
1767949 bytes
1767949 bytes
1767949 bytes
1767949 bytes
1767949 bytes
1767949 bytes
1767949 bytes
1767949 bytes
1767949 bytes
1767949 bytes
1767949 bytes
1767949 bytes
1767949 bytes
1767949 bytes
1767949 bytes
1767949 bytes
1767949 bytes
1767949 bytes
1791852 bytes
1791852 bytes
1791852 bytes
1791852 bytes
1791852 bytes
1791852 bytes
1791852 bytes
1791852 bytes
1791852 bytes
1791852 bytes
1791852 bytes
1791852 bytes
1791852 bytes
1791852 bytes
1791852 bytes
1791852 bytes
1791852 bytes
1791852 bytes
1791852 bytes
1791852 bytes
1815808 bytes
1815808 bytes
1815808 bytes
1815808 bytes
1815808 bytes
1815808 bytes
1815808 bytes
1815808 bytes
1815808 bytes
1815808 bytes
1815808 bytes
1815808 bytes
1815808 bytes
1815808 bytes
1815808 bytes
1815808 bytes
1815808 bytes
1815808 bytes
1815808 bytes
1815808 bytes
1839830 bytes
1839830 bytes
1839830 bytes
1839830 bytes
1839830 bytes
1839830 bytes
1839830 bytes
1839830 bytes
1839830 bytes
1839830 bytes
1839830 bytes
1839830 bytes
1839830 bytes
1839830 bytes
1839830 bytes
1839830 bytes
1839830 bytes
1839830 bytes
1839830 bytes
1839830 bytes
1863811 bytes
1863811 bytes
1863811 bytes
1863811 bytes
1863811 bytes
1863811 bytes
1863811 bytes
1863811 bytes
1863811 bytes
1863811 bytes
1863811 bytes
1863811 bytes
1863811 bytes
1863811 bytes
1863811 bytes
1863811 bytes
1863811 bytes
1863811 bytes
1863811 bytes
1863811 bytes
1887770 bytes
1887770 bytes
1887770 bytes
1887770 bytes
1887770 bytes
1887770 bytes
1887770 bytes
1887770 bytes
1887770 bytes
1887770 bytes
1887770 bytes
1887770 bytes
1887770 bytes
1887770 bytes
1887770 bytes
1887770 bytes
1887770 bytes
1887770 bytes
1887770 bytes
1887770 bytes
1911810 bytes
1911810 bytes
1911810 bytes
1911810 bytes
1911810 bytes
1911810 bytes
1911810 bytes
1911810 bytes
1911810 bytes
1911810 bytes
1911810 bytes
1911810 bytes
1911810 bytes
1911810 bytes
1911810 bytes
1911810 bytes
1911810 bytes
1911810 bytes
1911810 bytes
1911810 bytes
1935727 bytes
1935727 bytes
1935727 bytes
1935727 bytes
1935727 bytes
1935727 bytes
1935727 bytes
1935727 bytes
1935727 bytes
1935727 bytes
1935727 bytes
1935727 bytes
1935727 bytes
1935727 bytes
1935727 bytes
1935727 bytes
1935727 bytes
1935727 bytes
1935727 bytes
1935727 bytes
1959678 bytes
1959678 bytes
1959678 bytes
1959678 bytes
1959678 bytes
1959678 bytes
1959678 bytes
1959678 bytes
1959678 bytes
1959678 bytes
1959678 bytes
1959678 bytes
1959678 bytes
1959678 bytes
1959678 bytes
1959678 bytes
1959678 bytes
1959678 bytes
1959678 bytes
1959678 bytes
1983666 bytes
1983666 bytes
1983666 bytes
1983666 bytes
1983666 bytes
1983666 bytes
1983666 bytes
1983666 bytes
1983666 bytes
1983666 bytes
1983666 bytes
1983666 bytes
1983666 bytes
1983666 bytes
1983666 bytes
1983666 bytes
1983666 bytes
1983666 bytes
1983666 bytes
1983666 bytes
2007569 bytes
2007569 bytes
2007569 bytes
2007569 bytes
2007569 bytes
2007569 bytes
2007569 bytes
2007569 bytes
2007569 bytes
2007569 bytes
2007569 bytes
2007569 bytes
2007569 bytes
2007569 bytes
2007569 bytes
2007569 bytes
2007569 bytes
2007569 bytes
2007569 bytes
2007569 bytes
2031553 bytes
2031553 bytes
2031553 bytes
2031553 bytes
2031553 bytes
2031553 bytes
2031553 bytes
2031553 bytes
2031553 bytes
2031553 bytes
2031553 bytes
2031553 bytes
2031553 bytes
2031553 bytes
2031553 bytes
2031553 bytes
2031553 bytes
2031553 bytes
2031553 bytes
2031553 bytes
2055505 bytes
2055505 bytes
2055505 bytes
2055505 bytes
2055505 bytes
2055505 bytes
2055505 bytes
2055505 bytes
2055505 bytes
2055505 bytes
2055505 bytes
2055505 bytes
2055505 bytes
2055505 bytes
2055505 bytes
2055505 bytes
2055505 bytes
2055505 bytes
2055505 bytes
2055505 bytes
2079466 bytes
2079466 bytes
2079466 bytes
2079466 bytes
2079466 bytes
2079466 bytes
2079466 bytes
2079466 bytes
2079466 bytes
2079466 bytes
2079466 bytes
2079466 bytes
2079466 bytes
2079466 bytes
2079466 bytes
2079466 bytes
2079466 bytes
2079466 bytes
2079466 bytes
2079466 bytes
2103404 bytes
2103404 bytes
2103404 bytes
2103404 bytes
2103404 bytes
2103404 bytes
2103404 bytes
2103404 bytes
2103404 bytes
2103404 bytes
2103404 bytes
2103404 bytes
2103404 bytes
2103404 bytes
2103404 bytes
2103404 bytes
2103404 bytes
2103404 bytes
2103404 bytes
2103404 bytes
2127380 bytes
2127380 bytes
2127380 bytes
2127380 bytes
2127380 bytes
2127380 bytes
2127380 bytes
2127380 bytes
2127380 bytes
2127380 bytes
2127380 bytes
2127380 bytes
2127380 bytes
2127380 bytes
2127380 bytes
2127380 bytes
2127380 bytes
2127380 bytes
2127380 bytes
2127380 bytes
2151319 bytes
2151319 bytes
2151319 bytes
2151319 bytes
2151319 bytes
2151319 bytes
2151319 bytes
2151319 bytes
2151319 bytes
2151319 bytes
2151319 bytes
2151319 bytes
2151319 bytes
2151319 bytes
2151319 bytes
2151319 bytes
2151319 bytes
2151319 bytes
2151319 bytes
2151319 bytes
2175215 bytes
2175215 bytes
2175215 bytes
2175215 bytes
2175215 bytes
2175215 bytes
2175215 bytes
2175215 bytes
2175215 bytes
2175215 bytes
2175215 bytes
2175215 bytes
2175215 bytes
2175215 bytes
2175215 bytes
2175215 bytes
2175215 bytes
2175215 bytes
2175215 bytes
2175215 bytes
2199175 bytes
2199175 bytes
2199175 bytes
2199175 bytes
2199175 bytes
2199175 bytes
2199175 bytes
2199175 bytes
2199175 bytes
2199175 bytes
2199175 bytes
2199175 bytes
2199175 bytes
2199175 bytes
2199175 bytes
2199175 bytes
2199175 bytes
2199175 bytes
2199175 bytes
2199175 bytes
2223091 bytes
2223091 bytes
2223091 bytes
2223091 bytes
2223091 bytes
2223091 bytes
2223091 bytes
2223091 bytes
2223091 bytes
2223091 bytes
2223091 bytes
2223091 bytes
2223091 bytes
2223091 bytes
2223091 bytes
2223091 bytes
2223091 bytes
2223091 bytes
2223091 bytes
2223091 bytes
2247029 bytes
2247029 bytes
2247029 bytes
2247029 bytes
2247029 bytes
2247029 bytes
2247029 bytes
2247029 bytes
2247029 bytes
2247029 bytes
2247029 bytes
2247029 bytes
2247029 bytes
2247029 bytes
2247029 bytes
2247029 bytes
2247029 bytes
2247029 bytes
2247029 bytes
2247029 bytes
2270968 bytes
2270968 bytes
2270968 bytes
2270968 bytes
2270968 bytes
2270968 bytes
2270968 bytes
2270968 bytes
2270968 bytes
2270968 bytes
2270968 bytes
2270968 bytes
2270968 bytes
2270968 bytes
2270968 bytes
2270968 bytes
2270968 bytes
2270968 bytes
2270968 bytes
2270968 bytes
2294901 bytes
2294901 bytes
2294901 bytes
2294901 bytes
2294901 bytes
2294901 bytes
2294901 bytes
2294901 bytes
2294901 bytes
2294901 bytes
2294901 bytes
2294901 bytes
2294901 bytes
2294901 bytes
2294901 bytes
2294901 bytes
2294901 bytes
2294901 bytes
2294901 bytes
2294901 bytes
2318797 bytes
2318797 bytes
2318797 bytes
2318797 bytes
2318797 bytes
2318797 bytes
2318797 bytes
2318797 bytes
2318797 bytes
2318797 bytes
2318797 bytes
2318797 bytes
2318797 bytes
2318797 bytes
2318797 bytes
2318797 bytes
2318797 bytes
2318797 bytes
2318797 bytes
2318797 bytes
2342733 bytes
2342733 bytes
2342733 bytes
2342733 bytes
2342733 bytes
2342733 bytes
2342733 bytes
2342733 bytes
2342733 bytes
2342733 bytes
2342733 bytes
2342733 bytes
2342733 bytes
2342733 bytes
2342733 bytes
2342733 bytes
2342733 bytes
2342733 bytes
2342733 bytes
2342733 bytes
2366641 bytes
2366641 bytes
2366641 bytes
2366641 bytes
2366641 bytes
2366641 bytes
2366641 bytes
2366641 bytes
2366641 bytes
2366641 bytes
2366641 bytes
2366641 bytes
2366641 bytes
2366641 bytes
2366641 bytes
2366641 bytes
2366641 bytes
2366641 bytes
2366641 bytes
2366641 bytes
2390536 bytes
2390536 bytes
2390536 bytes
2390536 bytes
2390536 bytes
2390536 bytes
2390536 bytes
2390536 bytes
2390536 bytes
2390536 bytes
2390536 bytes
2390536 bytes
2390536 bytes
2390536 bytes
2390536 bytes
2390536 bytes
2390536 bytes
2390536 bytes
2390536 bytes
2390536 bytes
2414463 bytes
2414463 bytes
2414463 bytes
2414463 bytes
2414463 bytes
2414463 bytes
2414463 bytes
2414463 bytes
2414463 bytes
2414463 bytes
2414463 bytes
2414463 bytes
2414463 bytes
2414463 bytes
2414463 bytes
2414463 bytes
2414463 bytes
2414463 bytes
2414463 bytes
2414463 bytes
2438436 bytes
2438436 bytes
2438436 bytes
2438436 bytes
2438436 bytes
2438436 bytes
2438436 bytes
2438436 bytes
2438436 bytes
2438436 bytes
2438436 bytes
2438436 bytes
2438436 bytes
2438436 bytes
2438436 bytes
2438436 bytes
2438436 bytes
2438436 bytes
2438436 bytes
2438436 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
1263796 bytes
1263796 bytes
1263796 bytes
1263796 bytes
1263796 bytes
1263796 bytes
1263796 bytes
1263796 bytes
1263796 bytes
1263796 bytes
1263796 bytes
1263796 bytes
1263796 bytes
1263796 bytes
1263796 bytes
1263796 bytes
1263796 bytes
1263796 bytes
1263796 bytes
1263796 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1311931 bytes
1311931 bytes
1311931 bytes
1311931 bytes
1311931 bytes
1311931 bytes
1311931 bytes
1311931 bytes
1311931 bytes
1311931 bytes
1311931 bytes
1311931 bytes
1311931 bytes
1311931 bytes
1311931 bytes
1311931 bytes
1311931 bytes
1311931 bytes
1311931 bytes
1311931 bytes
1335955 bytes
1335955 bytes
1335955 bytes
1335955 bytes
1335955 bytes
1335955 bytes
1335955 bytes
1335955 bytes
1335955 bytes
1335955 bytes
1335955 bytes
1335955 bytes
1335955 bytes
1335955 bytes
1335955 bytes
1335955 bytes
1335955 bytes
1335955 bytes
1335955 bytes
1335955 bytes
1360014 bytes
1360014 bytes
1360014 bytes
1360014 bytes
1360014 bytes
1360014 bytes
1360014 bytes
1360014 bytes
1360014 bytes
1360014 bytes
1360014 bytes
1360014 bytes
1360014 bytes
1360014 bytes
1360014 bytes
1360014 bytes
1360014 bytes
1360014 bytes
1360014 bytes
1360014 bytes
1383985 bytes
1383985 bytes
1383985 bytes
1383985 bytes
1383985 bytes
1383985 bytes
1383985 bytes
1383985 bytes
1383985 bytes
1383985 bytes
1383985 bytes
1383985 bytes
1383985 bytes
1383985 bytes
1383985 bytes
1383985 bytes
1383985 bytes
1383985 bytes
1383985 bytes
1383985 bytes
1407974 bytes
1407974 bytes
1407974 bytes
1407974 bytes
1407974 bytes
1407974 bytes
1407974 bytes
1407974 bytes
1407974 bytes
1407974 bytes
1407974 bytes
1407974 bytes
1407974 bytes
1407974 bytes
1407974 bytes
1407974 bytes
1407974 bytes
1407974 bytes
1407974 bytes
1407974 bytes
1431997 bytes
1431997 bytes
1431997 bytes
1431997 bytes
1431997 bytes
1431997 bytes
1431997 bytes
1431997 bytes
1431997 bytes
1431997 bytes
1431997 bytes
1431997 bytes
1431997 bytes
1431997 bytes
1431997 bytes
1431997 bytes
1431997 bytes
1431997 bytes
1431997 bytes
1431997 bytes
1456009 bytes
1456009 bytes
1456009 bytes
1456009 bytes
1456009 bytes
1456009 bytes
1456009 bytes
1456009 bytes
1456009 bytes
1456009 bytes
1456009 bytes
1456009 bytes
1456009 bytes
1456009 bytes
1456009 bytes
1456009 bytes
1456009 bytes
1456009 bytes
1456009 bytes
1456009 bytes
1479967 bytes
1479967 bytes
1479967 bytes
1479967 bytes
1479967 bytes
1479967 bytes
1479967 bytes
1479967 bytes
1479967 bytes
1479967 bytes
1479967 bytes
1479967 bytes
1479967 bytes
1479967 bytes
1479967 bytes
1479967 bytes
1479967 bytes
1479967 bytes
1479967 bytes
1479967 bytes
1503978 bytes
1503978 bytes
1503978 bytes
1503978 bytes
1503978 bytes
1503978 bytes
1503978 bytes
1503978 bytes
1503978 bytes
1503978 bytes
1503978 bytes
1503978 bytes
1503978 bytes
1503978 bytes
1503978 bytes
1503978 bytes
1503978 bytes
1503978 bytes
1503978 bytes
1503978 bytes
1527950 bytes
1527950 bytes
1527950 bytes
1527950 bytes
1527950 bytes
1527950 bytes
1527950 bytes
1527950 bytes
1527950 bytes
1527950 bytes
1527950 bytes
1527950 bytes
1527950 bytes
1527950 bytes
1527950 bytes
1527950 bytes
1527950 bytes
1527950 bytes
1527950 bytes
1527950 bytes
1551968 bytes
1551968 bytes
1551968 bytes
1551968 bytes
1551968 bytes
1551968 bytes
1551968 bytes
1551968 bytes
1551968 bytes
1551968 bytes
1551968 bytes
1551968 bytes
1551968 bytes
1551968 bytes
1551968 bytes
1551968 bytes
1551968 bytes
1551968 bytes
1551968 bytes
1551968 bytes
1575982 bytes
1575982 bytes
1575982 bytes
1575982 bytes
1575982 bytes
1575982 bytes
1575982 bytes
1575982 bytes
1575982 bytes
1575982 bytes
1575982 bytes
1575982 bytes
1575982 bytes
1575982 bytes
1575982 bytes
1575982 bytes
1575982 bytes
1575982 bytes
1575982 bytes
1575982 bytes
1599946 bytes
1599946 bytes
1599946 bytes
1599946 bytes
1599946 bytes
1599946 bytes
1599946 bytes
1599946 bytes
1599946 bytes
1599946 bytes
1599946 bytes
1599946 bytes
1599946 bytes
1599946 bytes
1599946 bytes
1599946 bytes
1599946 bytes
1599946 bytes
1599946 bytes
1599946 bytes
1623959 bytes
1623959 bytes
1623959 bytes
1623959 bytes
1623959 bytes
1623959 bytes
1623959 bytes
1623959 bytes
1623959 bytes
1623959 bytes
1623959 bytes
1623959 bytes
1623959 bytes
1623959 bytes
1623959 bytes
1623959 bytes
1623959 bytes
1623959 bytes
1623959 bytes
1623959 bytes
1647980 bytes
1647980 bytes
1647980 bytes
1647980 bytes
1647980 bytes
1647980 bytes
1647980 bytes
1647980 bytes
1647980 bytes
1647980 bytes
1647980 bytes
1647980 bytes
1647980 bytes
1647980 bytes
1647980 bytes
1647980 bytes
1647980 bytes
1647980 bytes
1647980 bytes
1647980 bytes
1672021 bytes
1672021 bytes
1672021 bytes
1672021 bytes
1672021 bytes
1672021 bytes
1672021 bytes
1672021 bytes
1672021 bytes
1672021 bytes
1672021 bytes
1672021 bytes
1672021 bytes
1672021 bytes
1672021 bytes
1672021 bytes
1672021 bytes
1672021 bytes
1672021 bytes
1672021 bytes
1695941 bytes
1695941 bytes
1695941 bytes
1695941 bytes
1695941 bytes
1695941 bytes
1695941 bytes
1695941 bytes
1695941 bytes
1695941 bytes
1695941 bytes
1695941 bytes
1695941 bytes
1695941 bytes
1695941 bytes
1695941 bytes
1695941 bytes
1695941 bytes
1695941 bytes
1695941 bytes
1719871 bytes
1719871 bytes
1719871 bytes
1719871 bytes
1719871 bytes
1719871 bytes
1719871 bytes
1719871 bytes
1719871 bytes
1719871 bytes
1719871 bytes
1719871 bytes
1719871 bytes
1719871 bytes
1719871 bytes
1719871 bytes
1719871 bytes
1719871 bytes
1719871 bytes
1719871 bytes
1743741 bytes
1743741 bytes
1743741 bytes
1743741 bytes
1743741 bytes
1743741 bytes
1743741 bytes
1743741 bytes
1743741 bytes
1743741 bytes
1743741 bytes
1743741 bytes
1743741 bytes
1743741 bytes
1743741 bytes
1743741 bytes
1743741 bytes
1743741 bytes
1743741 bytes
1743741 bytes
1767720 bytes
1767720 bytes
1767720 bytes
1767720 bytes
1767720 bytes
1767720 bytes
1767720 bytes
1767720 bytes
1767720 bytes
1767720 bytes
1767720 bytes
1767720 bytes
1767720 bytes
1767720 bytes
1767720 bytes
1767720 bytes
1767720 bytes
1767720 bytes
1767720 bytes
1767720 bytes
1791667 bytes
1791667 bytes
1791667 bytes
1791667 bytes
1791667 bytes
1791667 bytes
1791667 bytes
1791667 bytes
1791667 bytes
1791667 bytes
1791667 bytes
1791667 bytes
1791667 bytes
1791667 bytes
1791667 bytes
1791667 bytes
1791667 bytes
1791667 bytes
1791667 bytes
1791667 bytes
1815631 bytes
1815631 bytes
1815631 bytes
1815631 bytes
1815631 bytes
1815631 bytes
1815631 bytes
1815631 bytes
1815631 bytes
1815631 bytes
1815631 bytes
1815631 bytes
1815631 bytes
1815631 bytes
1815631 bytes
1815631 bytes
1815631 bytes
1815631 bytes
1815631 bytes
1815631 bytes
1839617 bytes
1839617 bytes
1839617 bytes
1839617 bytes
1839617 bytes
1839617 bytes
1839617 bytes
1839617 bytes
1839617 bytes
1839617 bytes
1839617 bytes
1839617 bytes
1839617 bytes
1839617 bytes
1839617 bytes
1839617 bytes
1839617 bytes
1839617 bytes
1839617 bytes
1839617 bytes
1863587 bytes
1863587 bytes
1863587 bytes
1863587 bytes
1863587 bytes
1863587 bytes
1863587 bytes
1863587 bytes
1863587 bytes
1863587 bytes
1863587 bytes
1863587 bytes
1863587 bytes
1863587 bytes
1863587 bytes
1863587 bytes
1863587 bytes
1863587 bytes
1863587 bytes
1863587 bytes
1887516 bytes
1887516 bytes
1887516 bytes
1887516 bytes
1887516 bytes
1887516 bytes
1887516 bytes
1887516 bytes
1887516 bytes
1887516 bytes
1887516 bytes
1887516 bytes
1887516 bytes
1887516 bytes
1887516 bytes
1887516 bytes
1887516 bytes
1887516 bytes
1887516 bytes
1887516 bytes
1911536 bytes
1911536 bytes
1911536 bytes
1911536 bytes
1911536 bytes
1911536 bytes
1911536 bytes
1911536 bytes
1911536 bytes
1911536 bytes
1911536 bytes
1911536 bytes
1911536 bytes
1911536 bytes
1911536 bytes
1911536 bytes
1911536 bytes
1911536 bytes
1911536 bytes
1911536 bytes
1935485 bytes
1935485 bytes
1935485 bytes
1935485 bytes
1935485 bytes
1935485 bytes
1935485 bytes
1935485 bytes
1935485 bytes
1935485 bytes
1935485 bytes
1935485 bytes
1935485 bytes
1935485 bytes
1935485 bytes
1935485 bytes
1935485 bytes
1935485 bytes
1935485 bytes
1935485 bytes
1959429 bytes
1959429 bytes
1959429 bytes
1959429 bytes
1959429 bytes
1959429 bytes
1959429 bytes
1959429 bytes
1959429 bytes
1959429 bytes
1959429 bytes
1959429 bytes
1959429 bytes
1959429 bytes
1959429 bytes
1959429 bytes
1959429 bytes
1959429 bytes
1959429 bytes
1959429 bytes
1983379 bytes
1983379 bytes
1983379 bytes
1983379 bytes
1983379 bytes
1983379 bytes
1983379 bytes
1983379 bytes
1983379 bytes
1983379 bytes
1983379 bytes
1983379 bytes
1983379 bytes
1983379 bytes
1983379 bytes
1983379 bytes
1983379 bytes
1983379 bytes
1983379 bytes
1983379 bytes
2007344 bytes
2007344 bytes
2007344 bytes
2007344 bytes
2007344 bytes
2007344 bytes
2007344 bytes
2007344 bytes
2007344 bytes
2007344 bytes
2007344 bytes
2007344 bytes
2007344 bytes
2007344 bytes
2007344 bytes
2007344 bytes
2007344 bytes
2007344 bytes
2007344 bytes
2007344 bytes
2031235 bytes
2031235 bytes
2031235 bytes
2031235 bytes
2031235 bytes
2031235 bytes
2031235 bytes
2031235 bytes
2031235 bytes
2031235 bytes
2031235 bytes
2031235 bytes
2031235 bytes
2031235 bytes
2031235 bytes
2031235 bytes
2031235 bytes
2031235 bytes
2031235 bytes
2031235 bytes
2055235 bytes
2055235 bytes
2055235 bytes
2055235 bytes
2055235 bytes
2055235 bytes
2055235 bytes
2055235 bytes
2055235 bytes
2055235 bytes
2055235 bytes
2055235 bytes
2055235 bytes
2055235 bytes
2055235 bytes
2055235 bytes
2055235 bytes
2055235 bytes
2055235 bytes
2055235 bytes
2079207 bytes
2079207 bytes
2079207 bytes
2079207 bytes
2079207 bytes
2079207 bytes
2079207 bytes
2079207 bytes
2079207 bytes
2079207 bytes
2079207 bytes
2079207 bytes
2079207 bytes
2079207 bytes
2079207 bytes
2079207 bytes
2079207 bytes
2079207 bytes
2079207 bytes
2079207 bytes
2103237 bytes
2103237 bytes
2103237 bytes
2103237 bytes
2103237 bytes
2103237 bytes
2103237 bytes
2103237 bytes
2103237 bytes
2103237 bytes
2103237 bytes
2103237 bytes
2103237 bytes
2103237 bytes
2103237 bytes
2103237 bytes
2103237 bytes
2103237 bytes
2103237 bytes
2103237 bytes
2127206 bytes
2127206 bytes
2127206 bytes
2127206 bytes
2127206 bytes
2127206 bytes
2127206 bytes
2127206 bytes
2127206 bytes
2127206 bytes
2127206 bytes
2127206 bytes
2127206 bytes
2127206 bytes
2127206 bytes
2127206 bytes
2127206 bytes
2127206 bytes
2127206 bytes
2127206 bytes
2151151 bytes
2151151 bytes
2151151 bytes
2151151 bytes
2151151 bytes
2151151 bytes
2151151 bytes
2151151 bytes
2151151 bytes
2151151 bytes
2151151 bytes
2151151 bytes
2151151 bytes
2151151 bytes
2151151 bytes
2151151 bytes
2151151 bytes
2151151 bytes
2151151 bytes
2151151 bytes
2175137 bytes
2175137 bytes
2175137 bytes
2175137 bytes
2175137 bytes
2175137 bytes
2175137 bytes
2175137 bytes
2175137 bytes
2175137 bytes
2175137 bytes
2175137 bytes
2175137 bytes
2175137 bytes
2175137 bytes
2175137 bytes
2175137 bytes
2175137 bytes
2175137 bytes
2175137 bytes
2199076 bytes
2199076 bytes
2199076 bytes
2199076 bytes
2199076 bytes
2199076 bytes
2199076 bytes
2199076 bytes
2199076 bytes
2199076 bytes
2199076 bytes
2199076 bytes
2199076 bytes
2199076 bytes
2199076 bytes
2199076 bytes
2199076 bytes
2199076 bytes
2199076 bytes
2199076 bytes
2223042 bytes
2223042 bytes
2223042 bytes
2223042 bytes
2223042 bytes
2223042 bytes
2223042 bytes
2223042 bytes
2223042 bytes
2223042 bytes
2223042 bytes
2223042 bytes
2223042 bytes
2223042 bytes
2223042 bytes
2223042 bytes
2223042 bytes
2223042 bytes
2223042 bytes
2223042 bytes
2246964 bytes
2246964 bytes
2246964 bytes
2246964 bytes
2246964 bytes
2246964 bytes
2246964 bytes
2246964 bytes
2246964 bytes
2246964 bytes
2246964 bytes
2246964 bytes
2246964 bytes
2246964 bytes
2246964 bytes
2246964 bytes
2246964 bytes
2246964 bytes
2246964 bytes
2246964 bytes
2270946 bytes
2270946 bytes
2270946 bytes
2270946 bytes
2270946 bytes
2270946 bytes
2270946 bytes
2270946 bytes
2270946 bytes
2270946 bytes
2270946 bytes
2270946 bytes
2270946 bytes
2270946 bytes
2270946 bytes
2270946 bytes
2270946 bytes
2270946 bytes
2270946 bytes
2270946 bytes
2294899 bytes
2294899 bytes
2294899 bytes
2294899 bytes
2294899 bytes
2294899 bytes
2294899 bytes
2294899 bytes
2294899 bytes
2294899 bytes
2294899 bytes
2294899 bytes
2294899 bytes
2294899 bytes
2294899 bytes
2294899 bytes
2294899 bytes
2294899 bytes
2294899 bytes
2294899 bytes
2318809 bytes
2318809 bytes
2318809 bytes
2318809 bytes
2318809 bytes
2318809 bytes
2318809 bytes
2318809 bytes
2318809 bytes
2318809 bytes
2318809 bytes
2318809 bytes
2318809 bytes
2318809 bytes
2318809 bytes
2318809 bytes
2318809 bytes
2318809 bytes
2318809 bytes
2318809 bytes
2342704 bytes
2342704 bytes
2342704 bytes
2342704 bytes
2342704 bytes
2342704 bytes
2342704 bytes
2342704 bytes
2342704 bytes
2342704 bytes
2342704 bytes
2342704 bytes
2342704 bytes
2342704 bytes
2342704 bytes
2342704 bytes
2342704 bytes
2342704 bytes
2342704 bytes
2342704 bytes
2366575 bytes
2366575 bytes
2366575 bytes
2366575 bytes
2366575 bytes
2366575 bytes
2366575 bytes
2366575 bytes
2366575 bytes
2366575 bytes
2366575 bytes
2366575 bytes
2366575 bytes
2366575 bytes
2366575 bytes
2366575 bytes
2366575 bytes
2366575 bytes
2366575 bytes
2366575 bytes
2390547 bytes
2390547 bytes
2390547 bytes
2390547 bytes
2390547 bytes
2390547 bytes
2390547 bytes
2390547 bytes
2390547 bytes
2390547 bytes
2390547 bytes
2390547 bytes
2390547 bytes
2390547 bytes
2390547 bytes
2390547 bytes
2390547 bytes
2390547 bytes
2390547 bytes
2390547 bytes
2414488 bytes
2414488 bytes
2414488 bytes
2414488 bytes
2414488 bytes
2414488 bytes
2414488 bytes
2414488 bytes
2414488 bytes
2414488 bytes
2414488 bytes
2414488 bytes
2414488 bytes
2414488 bytes
2414488 bytes
2414488 bytes
2414488 bytes
2414488 bytes
2414488 bytes
2414488 bytes
2438388 bytes
2438388 bytes
2438388 bytes
2438388 bytes
2438388 bytes
2438388 bytes
2438388 bytes
2438388 bytes
2438388 bytes
2438388 bytes
2438388 bytes
2438388 bytes
2438388 bytes
2438388 bytes
2438388 bytes
2438388 bytes
2438388 bytes
2438388 bytes
2438388 bytes
2438388 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2401689 bytes
2401689 bytes
2401689 bytes
2401689 bytes
2401689 bytes
2401689 bytes
2401689 bytes
2401689 bytes
2401689 bytes
2401689 bytes
2401689 bytes
2401689 bytes
2401689 bytes
2401689 bytes
2401689 bytes
2401689 bytes
2401689 bytes
2401689 bytes
2401689 bytes
2401689 bytes
2402993 bytes
2402993 bytes
2402993 bytes
2402993 bytes
2402993 bytes
2402993 bytes
2402993 bytes
2402993 bytes
2402993 bytes
2402993 bytes
2402993 bytes
2402993 bytes
2402993 bytes
2402993 bytes
2402993 bytes
2402993 bytes
2402993 bytes
2402993 bytes
2402993 bytes
2402993 bytes
2404210 bytes
2404210 bytes
2404210 bytes
2404210 bytes
2404210 bytes
2404210 bytes
2404210 bytes
2404210 bytes
2404210 bytes
2404210 bytes
2404210 bytes
2404210 bytes
2404210 bytes
2404210 bytes
2404210 bytes
2404210 bytes
2404210 bytes
2404210 bytes
2404210 bytes
2404210 bytes
2405409 bytes
2405409 bytes
2405409 bytes
2405409 bytes
2405409 bytes
2405409 bytes
2405409 bytes
2405409 bytes
2405409 bytes
2405409 bytes
2405409 bytes
2405409 bytes
2405409 bytes
2405409 bytes
2405409 bytes
2405409 bytes
2405409 bytes
2405409 bytes
2405409 bytes
2405409 bytes
2406620 bytes
2406620 bytes
2406620 bytes
2406620 bytes
2406620 bytes
2406620 bytes
2406620 bytes
2406620 bytes
2406620 bytes
2406620 bytes
2406620 bytes
2406620 bytes
2406620 bytes
2406620 bytes
2406620 bytes
2406620 bytes
2406620 bytes
2406620 bytes
2406620 bytes
2406620 bytes
2407825 bytes
2407825 bytes
2407825 bytes
2407825 bytes
2407825 bytes
2407825 bytes
2407825 bytes
2407825 bytes
2407825 bytes
2407825 bytes
2407825 bytes
2407825 bytes
2407825 bytes
2407825 bytes
2407825 bytes
2407825 bytes
2407825 bytes
2407825 bytes
2407825 bytes
2407825 bytes
2409044 bytes
2409044 bytes
2409044 bytes
2409044 bytes
2409044 bytes
2409044 bytes
2409044 bytes
2409044 bytes
2409044 bytes
2409044 bytes
2409044 bytes
2409044 bytes
2409044 bytes
2409044 bytes
2409044 bytes
2409044 bytes
2409044 bytes
2409044 bytes
2409044 bytes
2409044 bytes
2410246 bytes
2410246 bytes
2410246 bytes
2410246 bytes
2410246 bytes
2410246 bytes
2410246 bytes
2410246 bytes
2410246 bytes
2410246 bytes
2410246 bytes
2410246 bytes
2410246 bytes
2410246 bytes
2410246 bytes
2410246 bytes
2410246 bytes
2410246 bytes
2410246 bytes
2410246 bytes
2411452 bytes
2411452 bytes
2411452 bytes
2411452 bytes
2411452 bytes
2411452 bytes
2411452 bytes
2411452 bytes
2411452 bytes
2411452 bytes
2411452 bytes
2411452 bytes
2411452 bytes
2411452 bytes
2411452 bytes
2411452 bytes
2411452 bytes
2411452 bytes
2411452 bytes
2411452 bytes
2412659 bytes
2412659 bytes
2412659 bytes
2412659 bytes
2412659 bytes
2412659 bytes
2412659 bytes
2412659 bytes
2412659 bytes
2412659 bytes
2412659 bytes
2412659 bytes
2412659 bytes
2412659 bytes
2412659 bytes
2412659 bytes
2412659 bytes
2412659 bytes
2412659 bytes
2412659 bytes
2413864 bytes
2413864 bytes
2413864 bytes
2413864 bytes
2413864 bytes
2413864 bytes
2413864 bytes
2413864 bytes
2413864 bytes
2413864 bytes
2413864 bytes
2413864 bytes
2413864 bytes
2413864 bytes
2413864 bytes
2413864 bytes
2413864 bytes
2413864 bytes
2413864 bytes
2413864 bytes
2415059 bytes
2415059 bytes
2415059 bytes
2415059 bytes
2415059 bytes
2415059 bytes
2415059 bytes
2415059 bytes
2415059 bytes
2415059 bytes
2415059 bytes
2415059 bytes
2415059 bytes
2415059 bytes
2415059 bytes
2415059 bytes
2415059 bytes
2415059 bytes
2415059 bytes
2415059 bytes
2416260 bytes
2416260 bytes
2416260 bytes
2416260 bytes
2416260 bytes
2416260 bytes
2416260 bytes
2416260 bytes
2416260 bytes
2416260 bytes
2416260 bytes
2416260 bytes
2416260 bytes
2416260 bytes
2416260 bytes
2416260 bytes
2416260 bytes
2416260 bytes
2416260 bytes
2416260 bytes
2417477 bytes
2417477 bytes
2417477 bytes
2417477 bytes
2417477 bytes
2417477 bytes
2417477 bytes
2417477 bytes
2417477 bytes
2417477 bytes
2417477 bytes
2417477 bytes
2417477 bytes
2417477 bytes
2417477 bytes
2417477 bytes
2417477 bytes
2417477 bytes
2417477 bytes
2417477 bytes
2418685 bytes
2418685 bytes
2418685 bytes
2418685 bytes
2418685 bytes
2418685 bytes
2418685 bytes
2418685 bytes
2418685 bytes
2418685 bytes
2418685 bytes
2418685 bytes
2418685 bytes
2418685 bytes
2418685 bytes
2418685 bytes
2418685 bytes
2418685 bytes
2418685 bytes
2418685 bytes
2419889 bytes
2419889 bytes
2419889 bytes
2419889 bytes
2419889 bytes
2419889 bytes
2419889 bytes
2419889 bytes
2419889 bytes
2419889 bytes
2419889 bytes
2419889 bytes
2419889 bytes
2419889 bytes
2419889 bytes
2419889 bytes
2419889 bytes
2419889 bytes
2419889 bytes
2419889 bytes
2421102 bytes
2421102 bytes
2421102 bytes
2421102 bytes
2421102 bytes
2421102 bytes
2421102 bytes
2421102 bytes
2421102 bytes
2421102 bytes
2421102 bytes
2421102 bytes
2421102 bytes
2421102 bytes
2421102 bytes
2421102 bytes
2421102 bytes
2421102 bytes
2421102 bytes
2421102 bytes
2422334 bytes
2422334 bytes
2422334 bytes
2422334 bytes
2422334 bytes
2422334 bytes
2422334 bytes
2422334 bytes
2422334 bytes
2422334 bytes
2422334 bytes
2422334 bytes
2422334 bytes
2422334 bytes
2422334 bytes
2422334 bytes
2422334 bytes
2422334 bytes
2422334 bytes
2422334 bytes
2423570 bytes
2423570 bytes
2423570 bytes
2423570 bytes
2423570 bytes
2423570 bytes
2423570 bytes
2423570 bytes
2423570 bytes
2423570 bytes
2423570 bytes
2423570 bytes
2423570 bytes
2423570 bytes
2423570 bytes
2423570 bytes
2423570 bytes
2423570 bytes
2423570 bytes
2423570 bytes
2424789 bytes
2424789 bytes
2424789 bytes
2424789 bytes
2424789 bytes
2424789 bytes
2424789 bytes
2424789 bytes
2424789 bytes
2424789 bytes
2424789 bytes
2424789 bytes
2424789 bytes
2424789 bytes
2424789 bytes
2424789 bytes
2424789 bytes
2424789 bytes
2424789 bytes
2424789 bytes
2425998 bytes
2425998 bytes
2425998 bytes
2425998 bytes
2425998 bytes
2425998 bytes
2425998 bytes
2425998 bytes
2425998 bytes
2425998 bytes
2425998 bytes
2425998 bytes
2425998 bytes
2425998 bytes
2425998 bytes
2425998 bytes
2425998 bytes
2425998 bytes
2425998 bytes
2425998 bytes
2427215 bytes
2427215 bytes
2427215 bytes
2427215 bytes
2427215 bytes
2427215 bytes
2427215 bytes
2427215 bytes
2427215 bytes
2427215 bytes
2427215 bytes
2427215 bytes
2427215 bytes
2427215 bytes
2427215 bytes
2427215 bytes
2427215 bytes
2427215 bytes
2427215 bytes
2427215 bytes
2428415 bytes
2428415 bytes
2428415 bytes
2428415 bytes
2428415 bytes
2428415 bytes
2428415 bytes
2428415 bytes
2428415 bytes
2428415 bytes
2428415 bytes
2428415 bytes
2428415 bytes
2428415 bytes
2428415 bytes
2428415 bytes
2428415 bytes
2428415 bytes
2428415 bytes
2428415 bytes
2429615 bytes
2429615 bytes
2429615 bytes
2429615 bytes
2429615 bytes
2429615 bytes
2429615 bytes
2429615 bytes
2429615 bytes
2429615 bytes
2429615 bytes
2429615 bytes
2429615 bytes
2429615 bytes
2429615 bytes
2429615 bytes
2429615 bytes
2429615 bytes
2429615 bytes
2429615 bytes
2430819 bytes
2430819 bytes
2430819 bytes
2430819 bytes
2430819 bytes
2430819 bytes
2430819 bytes
2430819 bytes
2430819 bytes
2430819 bytes
2430819 bytes
2430819 bytes
2430819 bytes
2430819 bytes
2430819 bytes
2430819 bytes
2430819 bytes
2430819 bytes
2430819 bytes
2430819 bytes
2432037 bytes
2432037 bytes
2432037 bytes
2432037 bytes
2432037 bytes
2432037 bytes
2432037 bytes
2432037 bytes
2432037 bytes
2432037 bytes
2432037 bytes
2432037 bytes
2432037 bytes
2432037 bytes
2432037 bytes
2432037 bytes
2432037 bytes
2432037 bytes
2432037 bytes
2432037 bytes
2433235 bytes
2433235 bytes
2433235 bytes
2433235 bytes
2433235 bytes
2433235 bytes
2433235 bytes
2433235 bytes
2433235 bytes
2433235 bytes
2433235 bytes
2433235 bytes
2433235 bytes
2433235 bytes
2433235 bytes
2433235 bytes
2433235 bytes
2433235 bytes
2433235 bytes
2433235 bytes
2434434 bytes
2434434 bytes
2434434 bytes
2434434 bytes
2434434 bytes
2434434 bytes
2434434 bytes
2434434 bytes
2434434 bytes
2434434 bytes
2434434 bytes
2434434 bytes
2434434 bytes
2434434 bytes
2434434 bytes
2434434 bytes
2434434 bytes
2434434 bytes
2434434 bytes
2434434 bytes
2435651 bytes
2435651 bytes
2435651 bytes
2435651 bytes
2435651 bytes
2435651 bytes
2435651 bytes
2435651 bytes
2435651 bytes
2435651 bytes
2435651 bytes
2435651 bytes
2435651 bytes
2435651 bytes
2435651 bytes
2435651 bytes
2435651 bytes
2435651 bytes
2435651 bytes
2435651 bytes
2436867 bytes
2436867 bytes
2436867 bytes
2436867 bytes
2436867 bytes
2436867 bytes
2436867 bytes
2436867 bytes
2436867 bytes
2436867 bytes
2436867 bytes
2436867 bytes
2436867 bytes
2436867 bytes
2436867 bytes
2436867 bytes
2436867 bytes
2436867 bytes
2436867 bytes
2436867 bytes
2438092 bytes
2438092 bytes
2438092 bytes
2438092 bytes
2438092 bytes
2438092 bytes
2438092 bytes
2438092 bytes
2438092 bytes
2438092 bytes
2438092 bytes
2438092 bytes
2438092 bytes
2438092 bytes
2438092 bytes
2438092 bytes
2438092 bytes
2438092 bytes
2438092 bytes
2438092 bytes
2439315 bytes
2439315 bytes
2439315 bytes
2439315 bytes
2439315 bytes
2439315 bytes
2439315 bytes
2439315 bytes
2439315 bytes
2439315 bytes
2439315 bytes
2439315 bytes
2439315 bytes
2439315 bytes
2439315 bytes
2439315 bytes
2439315 bytes
2439315 bytes
2439315 bytes
2439315 bytes
2440530 bytes
2440530 bytes
2440530 bytes
2440530 bytes
2440530 bytes
2440530 bytes
2440530 bytes
2440530 bytes
2440530 bytes
2440530 bytes
2440530 bytes
2440530 bytes
2440530 bytes
2440530 bytes
2440530 bytes
2440530 bytes
2440530 bytes
2440530 bytes
2440530 bytes
2440530 bytes
2441732 bytes
2441732 bytes
2441732 bytes
2441732 bytes
2441732 bytes
2441732 bytes
2441732 bytes
2441732 bytes
2441732 bytes
2441732 bytes
2441732 bytes
2441732 bytes
2441732 bytes
2441732 bytes
2441732 bytes
2441732 bytes
2441732 bytes
2441732 bytes
2441732 bytes
2441732 bytes
2442959 bytes
2442959 bytes
2442959 bytes
2442959 bytes
2442959 bytes
2442959 bytes
2442959 bytes
2442959 bytes
2442959 bytes
2442959 bytes
2442959 bytes
2442959 bytes
2442959 bytes
2442959 bytes
2442959 bytes
2442959 bytes
2442959 bytes
2442959 bytes
2442959 bytes
2442959 bytes
2444147 bytes
2444147 bytes
2444147 bytes
2444147 bytes
2444147 bytes
2444147 bytes
2444147 bytes
2444147 bytes
2444147 bytes
2444147 bytes
2444147 bytes
2444147 bytes
2444147 bytes
2444147 bytes
2444147 bytes
2444147 bytes
2444147 bytes
2444147 bytes
2444147 bytes
2444147 bytes
2445329 bytes
2445329 bytes
2445329 bytes
2445329 bytes
2445329 bytes
2445329 bytes
2445329 bytes
2445329 bytes
2445329 bytes
2445329 bytes
2445329 bytes
2445329 bytes
2445329 bytes
2445329 bytes
2445329 bytes
2445329 bytes
2445329 bytes
2445329 bytes
2445329 bytes
2445329 bytes
2446536 bytes
2446536 bytes
2446536 bytes
2446536 bytes
2446536 bytes
2446536 bytes
2446536 bytes
2446536 bytes
2446536 bytes
2446536 bytes
2446536 bytes
2446536 bytes
2446536 bytes
2446536 bytes
2446536 bytes
2446536 bytes
2446536 bytes
2446536 bytes
2446536 bytes
2446536 bytes
2447739 bytes
2447739 bytes
2447739 bytes
2447739 bytes
2447739 bytes
2447739 bytes
2447739 bytes
2447739 bytes
2447739 bytes
2447739 bytes
2447739 bytes
2447739 bytes
2447739 bytes
2447739 bytes
2447739 bytes
2447739 bytes
2447739 bytes
2447739 bytes
2447739 bytes
2447739 bytes
2448961 bytes
2448961 bytes
2448961 bytes
2448961 bytes
2448961 bytes
2448961 bytes
2448961 bytes
2448961 bytes
2448961 bytes
2448961 bytes
2448961 bytes
2448961 bytes
2448961 bytes
2448961 bytes
2448961 bytes
2448961 bytes
2448961 bytes
2448961 bytes
2448961 bytes
2448961 bytes
2450180 bytes
2450180 bytes
2450180 bytes
2450180 bytes
2450180 bytes
2450180 bytes
2450180 bytes
2450180 bytes
2450180 bytes
2450180 bytes
2450180 bytes
2450180 bytes
2450180 bytes
2450180 bytes
2450180 bytes
2450180 bytes
2450180 bytes
2450180 bytes
2450180 bytes
2450180 bytes
2451403 bytes
2451403 bytes
2451403 bytes
2451403 bytes
2451403 bytes
2451403 bytes
2451403 bytes
2451403 bytes
2451403 bytes
2451403 bytes
2451403 bytes
2451403 bytes
2451403 bytes
2451403 bytes
2451403 bytes
2451403 bytes
2451403 bytes
2451403 bytes
2451403 bytes
2451403 bytes
2452621 bytes
2452621 bytes
2452621 bytes
2452621 bytes
2452621 bytes
2452621 bytes
2452621 bytes
2452621 bytes
2452621 bytes
2452621 bytes
2452621 bytes
2452621 bytes
2452621 bytes
2452621 bytes
2452621 bytes
2452621 bytes
2452621 bytes
2452621 bytes
2452621 bytes
2452621 bytes
2453833 bytes
2453833 bytes
2453833 bytes
2453833 bytes
2453833 bytes
2453833 bytes
2453833 bytes
2453833 bytes
2453833 bytes
2453833 bytes
2453833 bytes
2453833 bytes
2453833 bytes
2453833 bytes
2453833 bytes
2453833 bytes
2453833 bytes
2453833 bytes
2453833 bytes
2453833 bytes
2455040 bytes
2455040 bytes
2455040 bytes
2455040 bytes
2455040 bytes
2455040 bytes
2455040 bytes
2455040 bytes
2455040 bytes
2455040 bytes
2455040 bytes
2455040 bytes
2455040 bytes
2455040 bytes
2455040 bytes
2455040 bytes
2455040 bytes
2455040 bytes
2455040 bytes
2455040 bytes
2456267 bytes
2456267 bytes
2456267 bytes
2456267 bytes
2456267 bytes
2456267 bytes
2456267 bytes
2456267 bytes
2456267 bytes
2456267 bytes
2456267 bytes
2456267 bytes
2456267 bytes
2456267 bytes
2456267 bytes
2456267 bytes
2456267 bytes
2456267 bytes
2456267 bytes
2456267 bytes
2457469 bytes
2457469 bytes
2457469 bytes
2457469 bytes
2457469 bytes
2457469 bytes
2457469 bytes
2457469 bytes
2457469 bytes
2457469 bytes
2457469 bytes
2457469 bytes
2457469 bytes
2457469 bytes
2457469 bytes
2457469 bytes
2457469 bytes
2457469 bytes
2457469 bytes
2457469 bytes
2458673 bytes
2458673 bytes
2458673 bytes
2458673 bytes
2458673 bytes
2458673 bytes
2458673 bytes
2458673 bytes
2458673 bytes
2458673 bytes
2458673 bytes
2458673 bytes
2458673 bytes
2458673 bytes
2458673 bytes
2458673 bytes
2458673 bytes
2458673 bytes
2458673 bytes
2458673 bytes
2459884 bytes
2459884 bytes
2459884 bytes
2459884 bytes
2459884 bytes
2459884 bytes
2459884 bytes
2459884 bytes
2459884 bytes
2459884 bytes
2459884 bytes
2459884 bytes
2459884 bytes
2459884 bytes
2459884 bytes
2459884 bytes
2459884 bytes
2459884 bytes
2459884 bytes
2459884 bytes
2461090 bytes
2461090 bytes
2461090 bytes
2461090 bytes
2461090 bytes
2461090 bytes
2461090 bytes
2461090 bytes
2461090 bytes
2461090 bytes
2461090 bytes
2461090 bytes
2461090 bytes
2461090 bytes
2461090 bytes
2461090 bytes
2461090 bytes
2461090 bytes
2461090 bytes
2461090 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=        0
    + c    17.04
    + s     19.4
    + a    15.11
              µs

Reads = 5 + (2 * c) + (2 * s) + (1 * a)
Writes = 2 + (2 * c) + (2 * s) + (1 * a)
Proof Size = 5664 + (239 * c) + (239 * s) + (121 * a)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    c     s     a   mean µs  sigma µs       %
    0  5000   500     89140     241.4    0.2%
  100  5000   500     91670     298.8    0.3%
  200  5000   500     92640     418.8    0.4%
  300  5000   500     96080     482.3    0.5%
  400  5000   500     96980     350.2    0.3%
  500  5000   500     98580     448.2    0.4%
  600  5000   500    100000     325.2    0.3%
  700  5000   500    101800     226.6    0.2%
  800  5000   500    102900     245.9    0.2%
  900  5000   500    103500     635.1    0.6%
 1000  5000   500    106200       704    0.6%
 1100  5000   500    108800     455.1    0.4%
 1200  5000   500    109400     251.4    0.2%
 1300  5000   500    110700     453.8    0.4%
 1400  5000   500    113900     625.3    0.5%
 1500  5000   500    115000       621    0.5%
 1600  5000   500    116000     342.3    0.2%
 1700  5000   500    113900       131    0.1%
 1800  5000   500    116700     350.9    0.3%
 1900  5000   500    121400     483.4    0.3%
 2000  5000   500    125200     373.4    0.2%
 2100  5000   500    126200     702.7    0.5%
 2200  5000   500    127200       603    0.4%
 2300  5000   500    130200     318.3    0.2%
 2400  5000   500    131500     497.6    0.3%
 2500  5000   500    133900     497.9    0.3%
 2600  5000   500    135000     360.9    0.2%
 2700  5000   500    134900     362.3    0.2%
 2800  5000   500    135300     223.3    0.1%
 2900  5000   500    139900     213.8    0.1%
 3000  5000   500    140800     526.9    0.3%
 3100  5000   500    141700     511.5    0.3%
 3200  5000   500    143600     337.9    0.2%
 3300  5000   500    147000     431.5    0.2%
 3400  5000   500    148200       383    0.2%
 3500  5000   500    147400     507.7    0.3%
 3600  5000   500    151600       561    0.3%
 3700  5000   500    153600     337.2    0.2%
 3800  5000   500    154600     339.7    0.2%
 3900  5000   500    156500     435.3    0.2%
 4000  5000   500    158600     427.2    0.2%
 4100  5000   500    158900     338.3    0.2%
 4200  5000   500    160800     716.9    0.4%
 4300  5000   500    160600     418.9    0.2%
 4400  5000   500    163400     545.4    0.3%
 4500  5000   500    167100     501.6    0.3%
 4600  5000   500    168300     631.9    0.3%
 4700  5000   500    169800     798.8    0.4%
 4800  5000   500    172000     678.3    0.3%
 4900  5000   500    167400     416.5    0.2%
 5000     0   500     78980       384    0.4%
 5000   100   500     80420     387.7    0.4%
 5000   200   500     82640     453.8    0.5%
 5000   300   500     83090     287.2    0.3%
 5000   400   500     86670     220.8    0.2%
 5000   500   500     85460     220.2    0.2%
 5000   600   500     89840     395.6    0.4%
 5000   700   500     90670     298.3    0.3%
 5000   800   500     94290     339.6    0.3%
 5000   900   500     96370     429.8    0.4%
 5000  1000   500     94780     451.8    0.4%
 5000  1100   500     99030       255    0.2%
 5000  1200   500    100700     264.5    0.2%
 5000  1300   500    101700     397.7    0.3%
 5000  1400   500    101900     191.8    0.1%
 5000  1500   500    104900     643.4    0.6%
 5000  1600   500    104900     221.7    0.2%
 5000  1700   500    110000     397.5    0.3%
 5000  1800   500    110700     466.5    0.4%
 5000  1900   500    115000     308.8    0.2%
 5000  2000   500    115100     456.1    0.3%
 5000  2100   500    119000     472.1    0.3%
 5000  2200   500    120600     443.1    0.3%
 5000  2300   500    122500     464.1    0.3%
 5000  2400   500    126000     607.3    0.4%
 5000  2500   500    128000     518.2    0.4%
 5000  2600   500    129400     347.2    0.2%
 5000  2700   500    131500     374.2    0.2%
 5000  2800   500    133500     355.1    0.2%
 5000  2900   500    135800     486.8    0.3%
 5000  3000   500    137400     486.8    0.3%
 5000  3100   500    136500     543.6    0.3%
 5000  3200   500    140400     493.1    0.3%
 5000  3300   500    141200     321.9    0.2%
 5000  3400   500    146000     836.4    0.5%
 5000  3500   500    145500     377.5    0.2%
 5000  3600   500    147300     223.6    0.1%
 5000  3700   500    150500       386    0.2%
 5000  3800   500    152700     578.6    0.3%
 5000  3900   500    148600     413.5    0.2%
 5000  4000   500    155400     859.3    0.5%
 5000  4100   500    157300     373.4    0.2%
 5000  4200   500    160600     441.9    0.2%
 5000  4300   500    161300     404.9    0.2%
 5000  4400   500    157700     428.4    0.2%
 5000  4500   500    165300     739.2    0.4%
 5000  4600   500    162900     547.5    0.3%
 5000  4700   500    168200     677.3    0.4%
 5000  4800   500    168700     557.7    0.3%
 5000  4900   500    173100     458.3    0.2%
 5000  5000     0    166200     461.5    0.2%
 5000  5000    10    168300     370.4    0.2%
 5000  5000    20    167800     570.5    0.3%
 5000  5000    30    168100     299.1    0.1%
 5000  5000    40    164500     414.9    0.2%
 5000  5000    50    165900     429.4    0.2%
 5000  5000    60    167700     640.9    0.3%
 5000  5000    70    161900     726.3    0.4%
 5000  5000    80    168100     554.3    0.3%
 5000  5000    90    164500     309.9    0.1%
 5000  5000   100    164900     457.5    0.2%
 5000  5000   110    166300       765    0.4%
 5000  5000   120    166200     698.2    0.4%
 5000  5000   130    167400     361.8    0.2%
 5000  5000   140    167800     562.9    0.3%
 5000  5000   150    170200     897.1    0.5%
 5000  5000   160    168500     664.7    0.3%
 5000  5000   170    168800     510.5    0.3%
 5000  5000   180    162300     491.4    0.3%
 5000  5000   190    169400       591    0.3%
 5000  5000   200    168300     401.6    0.2%
 5000  5000   210    169700     570.9    0.3%
 5000  5000   220    169300     497.7    0.2%
 5000  5000   230    166300     533.2    0.3%
 5000  5000   240    169400       614    0.3%
 5000  5000   250    170900     521.6    0.3%
 5000  5000   260    169900     738.5    0.4%
 5000  5000   270    171800     311.3    0.1%
 5000  5000   280    171300      1032    0.6%
 5000  5000   290    169600       397    0.2%
 5000  5000   300    173000     679.2    0.3%
 5000  5000   310    171600     576.3    0.3%
 5000  5000   320    171100     396.5    0.2%
 5000  5000   330    170300     566.7    0.3%
 5000  5000   340    172400     488.1    0.2%
 5000  5000   350    167500     430.6    0.2%
 5000  5000   360    172100       376    0.2%
 5000  5000   370    171900     524.9    0.3%
 5000  5000   380    169800     419.7    0.2%
 5000  5000   390    171700     546.5    0.3%
 5000  5000   400    169200     512.7    0.3%
 5000  5000   410    172900     903.7    0.5%
 5000  5000   420    173400     660.4    0.3%
 5000  5000   430    172200     573.9    0.3%
 5000  5000   440    171700     754.3    0.4%
 5000  5000   450    168800     574.6    0.3%
 5000  5000   460    174600     654.8    0.3%
 5000  5000   470    170300     536.1    0.3%
 5000  5000   480    172000     518.5    0.3%
 5000  5000   490    171400     498.9    0.2%
 5000  5000   500    175200     392.4    0.2%

Quality and confidence:
param     error
c         0.038
s         0.038
a         0.386

Model:
Time ~=        0
    + c    16.81
    + s    19.19
    + a    17.36
              µs

Reads = 5 + (2 * c) + (2 * s) + (1 * a)
Writes = 2 + (2 * c) + (2 * s) + (1 * a)
Proof Size = 5149 + (240 * c) + (240 * s) + (122 * a)

Pallet: "pallet_assets", Extrinsic: "mint", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Assets Asset (r:1 w:1)
Storage: Assets Account (r:1 w:1)

-- Proof Sizes --

1865 bytes
1865 bytes
1865 bytes
1865 bytes
1865 bytes
1865 bytes
1865 bytes
1865 bytes
1865 bytes
1865 bytes
1865 bytes
1865 bytes
1865 bytes
1865 bytes
1865 bytes
1865 bytes
1865 bytes
1865 bytes
1865 bytes
1865 bytes

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    29.93
              µs

Reads = 2
Writes = 2
Proof Size = 1865

Min Squares Analysis
========
-- Extrinsic Time --

Model:
Time ~=    29.93
              µs

Reads = 2
Writes = 2
Proof Size = 1865

Pallet: "pallet_assets", Extrinsic: "burn", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Assets Asset (r:1 w:1)
Storage: Assets Account (r:1 w:1)

-- Proof Sizes --

2093 bytes
2093 bytes
2093 bytes
2093 bytes
2093 bytes
2093 bytes
2093 bytes
2093 bytes
2093 bytes
2093 bytes
2093 bytes
2093 bytes
2093 bytes
2093 bytes
2093 bytes
2093 bytes
2093 bytes
2093 bytes
2093 bytes
2093 bytes

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    33.53
              µs

Reads = 2
Writes = 2
Proof Size = 2093

Min Squares Analysis
========
-- Extrinsic Time --

Model:
Time ~=    33.53
              µs

Reads = 2
Writes = 2
Proof Size = 2093

Pallet: "pallet_assets", Extrinsic: "transfer", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Assets Asset (r:1 w:1)
Storage: Assets Account (r:2 w:2)
Storage: System Account (r:1 w:1)
Storage Proof Skipped: System Account

-- Proof Sizes --

2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    47.49
              µs

Reads = 4
Writes = 4
Proof Size = 2132

Min Squares Analysis
========
-- Extrinsic Time --

Model:
Time ~=    47.49
              µs

Reads = 4
Writes = 4
Proof Size = 2132

Pallet: "pallet_assets", Extrinsic: "transfer_keep_alive", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Assets Asset (r:1 w:1)
Storage: Assets Account (r:2 w:2)
Storage: System Account (r:1 w:1)
Storage Proof Skipped: System Account

-- Proof Sizes --

1960 bytes
1960 bytes
1960 bytes
1960 bytes
1960 bytes
1960 bytes
1960 bytes
1960 bytes
1960 bytes
1960 bytes
1960 bytes
1960 bytes
1960 bytes
1960 bytes
1960 bytes
1960 bytes
1960 bytes
1960 bytes
1960 bytes
1960 bytes

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    40.69
              µs

Reads = 4
Writes = 4
Proof Size = 1960

Min Squares Analysis
========
-- Extrinsic Time --

Model:
Time ~=    40.69
              µs

Reads = 4
Writes = 4
Proof Size = 1960

Pallet: "pallet_assets", Extrinsic: "force_transfer", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Assets Asset (r:1 w:1)
Storage: Assets Account (r:2 w:2)
Storage: System Account (r:1 w:1)
Storage Proof Skipped: System Account

-- Proof Sizes --

2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    47.11
              µs

Reads = 4
Writes = 4
Proof Size = 2132

Min Squares Analysis
========
-- Extrinsic Time --

Model:
Time ~=    47.11
              µs

Reads = 4
Writes = 4
Proof Size = 2132

Pallet: "pallet_assets", Extrinsic: "freeze", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Assets Asset (r:1 w:0)
Storage: Assets Account (r:1 w:1)

-- Proof Sizes --

1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    21.19
              µs

Reads = 2
Writes = 1
Proof Size = 1569

Min Squares Analysis
========
-- Extrinsic Time --

Model:
Time ~=    21.19
              µs

Reads = 2
Writes = 1
Proof Size = 1569

Pallet: "pallet_assets", Extrinsic: "thaw", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Assets Asset (r:1 w:0)
Storage: Assets Account (r:1 w:1)

-- Proof Sizes --

1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    21.27
              µs

Reads = 2
Writes = 1
Proof Size = 1569

Min Squares Analysis
========
-- Extrinsic Time --

Model:
Time ~=    21.27
              µs

Reads = 2
Writes = 1
Proof Size = 1569

Pallet: "pallet_assets", Extrinsic: "freeze_asset", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Assets Asset (r:1 w:1)

-- Proof Sizes --

1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    17.69
              µs

Reads = 1
Writes = 1
Proof Size = 1495

Min Squares Analysis
========
-- Extrinsic Time --

Model:
Time ~=    17.69
              µs

Reads = 1
Writes = 1
Proof Size = 1495

Pallet: "pallet_assets", Extrinsic: "thaw_asset", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Assets Asset (r:1 w:1)

-- Proof Sizes --

1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    17.78
              µs

Reads = 1
Writes = 1
Proof Size = 1495

Min Squares Analysis
========
-- Extrinsic Time --

Model:
Time ~=    17.78
              µs

Reads = 1
Writes = 1
Proof Size = 1495

Pallet: "pallet_assets", Extrinsic: "transfer_ownership", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Assets Asset (r:1 w:1)
Storage: Assets Metadata (r:1 w:0)

-- Proof Sizes --

1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    19.15
              µs

Reads = 2
Writes = 1
Proof Size = 1461

Min Squares Analysis
========
-- Extrinsic Time --

Model:
Time ~=    19.15
              µs

Reads = 2
Writes = 1
Proof Size = 1461

Pallet: "pallet_assets", Extrinsic: "set_team", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Assets Asset (r:1 w:1)

-- Proof Sizes --

1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    17.97
              µs

Reads = 1
Writes = 1
Proof Size = 1461

Min Squares Analysis
========
-- Extrinsic Time --

Model:
Time ~=    17.97
              µs

Reads = 1
Writes = 1
Proof Size = 1461

Pallet: "pallet_assets", Extrinsic: "set_metadata", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Assets Asset (r:1 w:0)
Storage: Assets Metadata (r:1 w:1)

-- Proof Sizes --

1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 byt<truncated>...

Parity Bot and others added 9 commits June 11, 2022 15:08
…--manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_assets --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/assets/src/weights.rs --template=./.maintain/frame-weight-template.hbs
@shawntabrizi
Copy link
Member Author

/benchmark runtime pallet pallet_assets

@parity-benchapp
Copy link

parity-benchapp bot commented Jun 12, 2022

Benchmark Runtime Pallet for branch "shawntabrizi-pov-in-cli" with command cargo run --quiet --profile=production --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_assets --extrinsic="*" --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/assets/src/weights.rs --template=./.maintain/frame-weight-template.hbs

Toolchain: stable-x86_64-unknown-linux-gnu (default)
rustc 1.60.0 (7737e0b5c 2022-04-04)

Results
Pallet: "pallet_assets", Extrinsic: "create", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Assets Asset (r:1 w:1)
Proof: Assets Asset (max_values: None, max_size: Some(210), added: 2770)

-- Proof Sizes --

1715 bytes
1715 bytes
1715 bytes
1715 bytes
1715 bytes
1715 bytes
1715 bytes
1715 bytes
1715 bytes
1715 bytes
1715 bytes
1715 bytes
1715 bytes
1715 bytes
1715 bytes
1715 bytes
1715 bytes
1715 bytes
1715 bytes
1715 bytes

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    26.25
              µs

Reads = 1
Writes = 1
Proof Size = 1715

Min Squares Analysis
========
-- Extrinsic Time --

Model:
Time ~=    26.25
              µs

Reads = 1
Writes = 1
Proof Size = 1715

Pallet: "pallet_assets", Extrinsic: "force_create", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Assets Asset (r:1 w:1)
Proof: Assets Asset (max_values: None, max_size: Some(210), added: 2770)

-- Proof Sizes --

1191 bytes
1191 bytes
1191 bytes
1191 bytes
1191 bytes
1191 bytes
1191 bytes
1191 bytes
1191 bytes
1191 bytes
1191 bytes
1191 bytes
1191 bytes
1191 bytes
1191 bytes
1191 bytes
1191 bytes
1191 bytes
1191 bytes
1191 bytes

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    15.18
              µs

Reads = 1
Writes = 1
Proof Size = 1191

Min Squares Analysis
========
-- Extrinsic Time --

Model:
Time ~=    15.18
              µs

Reads = 1
Writes = 1
Proof Size = 1191

Pallet: "pallet_assets", Extrinsic: "destroy", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Assets Asset (r:1 w:1)
Proof: Assets Asset (max_values: None, max_size: Some(210), added: 2770)
Storage: Assets Account (r:5002 w:5001)
Proof: Assets Account (max_values: None, max_size: Some(102), added: 2662)
Storage: System Account (r:5000 w:5000)
Proof Skipped: System Account (max_values: None, max_size: None)
Storage: Assets Metadata (r:1 w:0)
Proof: Assets Metadata (max_values: None, max_size: Some(140), added: 2700)
Storage: Assets Approvals (r:501 w:500)
Proof: Assets Approvals (max_values: None, max_size: Some(148), added: 2708)

-- Proof Sizes --

1263806 bytes
1263806 bytes
1263806 bytes
1263806 bytes
1263806 bytes
1263806 bytes
1263806 bytes
1263806 bytes
1263806 bytes
1263806 bytes
1263806 bytes
1263806 bytes
1263806 bytes
1263806 bytes
1263806 bytes
1263806 bytes
1263806 bytes
1263806 bytes
1263806 bytes
1263806 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1311891 bytes
1311891 bytes
1311891 bytes
1311891 bytes
1311891 bytes
1311891 bytes
1311891 bytes
1311891 bytes
1311891 bytes
1311891 bytes
1311891 bytes
1311891 bytes
1311891 bytes
1311891 bytes
1311891 bytes
1311891 bytes
1311891 bytes
1311891 bytes
1311891 bytes
1311891 bytes
1335925 bytes
1335925 bytes
1335925 bytes
1335925 bytes
1335925 bytes
1335925 bytes
1335925 bytes
1335925 bytes
1335925 bytes
1335925 bytes
1335925 bytes
1335925 bytes
1335925 bytes
1335925 bytes
1335925 bytes
1335925 bytes
1335925 bytes
1335925 bytes
1335925 bytes
1335925 bytes
1359921 bytes
1359921 bytes
1359921 bytes
1359921 bytes
1359921 bytes
1359921 bytes
1359921 bytes
1359921 bytes
1359921 bytes
1359921 bytes
1359921 bytes
1359921 bytes
1359921 bytes
1359921 bytes
1359921 bytes
1359921 bytes
1359921 bytes
1359921 bytes
1359921 bytes
1359921 bytes
1383887 bytes
1383887 bytes
1383887 bytes
1383887 bytes
1383887 bytes
1383887 bytes
1383887 bytes
1383887 bytes
1383887 bytes
1383887 bytes
1383887 bytes
1383887 bytes
1383887 bytes
1383887 bytes
1383887 bytes
1383887 bytes
1383887 bytes
1383887 bytes
1383887 bytes
1383887 bytes
1407871 bytes
1407871 bytes
1407871 bytes
1407871 bytes
1407871 bytes
1407871 bytes
1407871 bytes
1407871 bytes
1407871 bytes
1407871 bytes
1407871 bytes
1407871 bytes
1407871 bytes
1407871 bytes
1407871 bytes
1407871 bytes
1407871 bytes
1407871 bytes
1407871 bytes
1407871 bytes
1431919 bytes
1431919 bytes
1431919 bytes
1431919 bytes
1431919 bytes
1431919 bytes
1431919 bytes
1431919 bytes
1431919 bytes
1431919 bytes
1431919 bytes
1431919 bytes
1431919 bytes
1431919 bytes
1431919 bytes
1431919 bytes
1431919 bytes
1431919 bytes
1431919 bytes
1431919 bytes
1455956 bytes
1455956 bytes
1455956 bytes
1455956 bytes
1455956 bytes
1455956 bytes
1455956 bytes
1455956 bytes
1455956 bytes
1455956 bytes
1455956 bytes
1455956 bytes
1455956 bytes
1455956 bytes
1455956 bytes
1455956 bytes
1455956 bytes
1455956 bytes
1455956 bytes
1455956 bytes
1479973 bytes
1479973 bytes
1479973 bytes
1479973 bytes
1479973 bytes
1479973 bytes
1479973 bytes
1479973 bytes
1479973 bytes
1479973 bytes
1479973 bytes
1479973 bytes
1479973 bytes
1479973 bytes
1479973 bytes
1479973 bytes
1479973 bytes
1479973 bytes
1479973 bytes
1479973 bytes
1503981 bytes
1503981 bytes
1503981 bytes
1503981 bytes
1503981 bytes
1503981 bytes
1503981 bytes
1503981 bytes
1503981 bytes
1503981 bytes
1503981 bytes
1503981 bytes
1503981 bytes
1503981 bytes
1503981 bytes
1503981 bytes
1503981 bytes
1503981 bytes
1503981 bytes
1503981 bytes
1527998 bytes
1527998 bytes
1527998 bytes
1527998 bytes
1527998 bytes
1527998 bytes
1527998 bytes
1527998 bytes
1527998 bytes
1527998 bytes
1527998 bytes
1527998 bytes
1527998 bytes
1527998 bytes
1527998 bytes
1527998 bytes
1527998 bytes
1527998 bytes
1527998 bytes
1527998 bytes
1551994 bytes
1551994 bytes
1551994 bytes
1551994 bytes
1551994 bytes
1551994 bytes
1551994 bytes
1551994 bytes
1551994 bytes
1551994 bytes
1551994 bytes
1551994 bytes
1551994 bytes
1551994 bytes
1551994 bytes
1551994 bytes
1551994 bytes
1551994 bytes
1551994 bytes
1551994 bytes
1576035 bytes
1576035 bytes
1576035 bytes
1576035 bytes
1576035 bytes
1576035 bytes
1576035 bytes
1576035 bytes
1576035 bytes
1576035 bytes
1576035 bytes
1576035 bytes
1576035 bytes
1576035 bytes
1576035 bytes
1576035 bytes
1576035 bytes
1576035 bytes
1576035 bytes
1576035 bytes
1600017 bytes
1600017 bytes
1600017 bytes
1600017 bytes
1600017 bytes
1600017 bytes
1600017 bytes
1600017 bytes
1600017 bytes
1600017 bytes
1600017 bytes
1600017 bytes
1600017 bytes
1600017 bytes
1600017 bytes
1600017 bytes
1600017 bytes
1600017 bytes
1600017 bytes
1600017 bytes
1623985 bytes
1623985 bytes
1623985 bytes
1623985 bytes
1623985 bytes
1623985 bytes
1623985 bytes
1623985 bytes
1623985 bytes
1623985 bytes
1623985 bytes
1623985 bytes
1623985 bytes
1623985 bytes
1623985 bytes
1623985 bytes
1623985 bytes
1623985 bytes
1623985 bytes
1623985 bytes
1647993 bytes
1647993 bytes
1647993 bytes
1647993 bytes
1647993 bytes
1647993 bytes
1647993 bytes
1647993 bytes
1647993 bytes
1647993 bytes
1647993 bytes
1647993 bytes
1647993 bytes
1647993 bytes
1647993 bytes
1647993 bytes
1647993 bytes
1647993 bytes
1647993 bytes
1647993 bytes
1672023 bytes
1672023 bytes
1672023 bytes
1672023 bytes
1672023 bytes
1672023 bytes
1672023 bytes
1672023 bytes
1672023 bytes
1672023 bytes
1672023 bytes
1672023 bytes
1672023 bytes
1672023 bytes
1672023 bytes
1672023 bytes
1672023 bytes
1672023 bytes
1672023 bytes
1672023 bytes
1696004 bytes
1696004 bytes
1696004 bytes
1696004 bytes
1696004 bytes
1696004 bytes
1696004 bytes
1696004 bytes
1696004 bytes
1696004 bytes
1696004 bytes
1696004 bytes
1696004 bytes
1696004 bytes
1696004 bytes
1696004 bytes
1696004 bytes
1696004 bytes
1696004 bytes
1696004 bytes
1720018 bytes
1720018 bytes
1720018 bytes
1720018 bytes
1720018 bytes
1720018 bytes
1720018 bytes
1720018 bytes
1720018 bytes
1720018 bytes
1720018 bytes
1720018 bytes
1720018 bytes
1720018 bytes
1720018 bytes
1720018 bytes
1720018 bytes
1720018 bytes
1720018 bytes
1720018 bytes
1743985 bytes
1743985 bytes
1743985 bytes
1743985 bytes
1743985 bytes
1743985 bytes
1743985 bytes
1743985 bytes
1743985 bytes
1743985 bytes
1743985 bytes
1743985 bytes
1743985 bytes
1743985 bytes
1743985 bytes
1743985 bytes
1743985 bytes
1743985 bytes
1743985 bytes
1743985 bytes
1767949 bytes
1767949 bytes
1767949 bytes
1767949 bytes
1767949 bytes
1767949 bytes
1767949 bytes
1767949 bytes
1767949 bytes
1767949 bytes
1767949 bytes
1767949 bytes
1767949 bytes
1767949 bytes
1767949 bytes
1767949 bytes
1767949 bytes
1767949 bytes
1767949 bytes
1767949 bytes
1791852 bytes
1791852 bytes
1791852 bytes
1791852 bytes
1791852 bytes
1791852 bytes
1791852 bytes
1791852 bytes
1791852 bytes
1791852 bytes
1791852 bytes
1791852 bytes
1791852 bytes
1791852 bytes
1791852 bytes
1791852 bytes
1791852 bytes
1791852 bytes
1791852 bytes
1791852 bytes
1815808 bytes
1815808 bytes
1815808 bytes
1815808 bytes
1815808 bytes
1815808 bytes
1815808 bytes
1815808 bytes
1815808 bytes
1815808 bytes
1815808 bytes
1815808 bytes
1815808 bytes
1815808 bytes
1815808 bytes
1815808 bytes
1815808 bytes
1815808 bytes
1815808 bytes
1815808 bytes
1839830 bytes
1839830 bytes
1839830 bytes
1839830 bytes
1839830 bytes
1839830 bytes
1839830 bytes
1839830 bytes
1839830 bytes
1839830 bytes
1839830 bytes
1839830 bytes
1839830 bytes
1839830 bytes
1839830 bytes
1839830 bytes
1839830 bytes
1839830 bytes
1839830 bytes
1839830 bytes
1863811 bytes
1863811 bytes
1863811 bytes
1863811 bytes
1863811 bytes
1863811 bytes
1863811 bytes
1863811 bytes
1863811 bytes
1863811 bytes
1863811 bytes
1863811 bytes
1863811 bytes
1863811 bytes
1863811 bytes
1863811 bytes
1863811 bytes
1863811 bytes
1863811 bytes
1863811 bytes
1887770 bytes
1887770 bytes
1887770 bytes
1887770 bytes
1887770 bytes
1887770 bytes
1887770 bytes
1887770 bytes
1887770 bytes
1887770 bytes
1887770 bytes
1887770 bytes
1887770 bytes
1887770 bytes
1887770 bytes
1887770 bytes
1887770 bytes
1887770 bytes
1887770 bytes
1887770 bytes
1911810 bytes
1911810 bytes
1911810 bytes
1911810 bytes
1911810 bytes
1911810 bytes
1911810 bytes
1911810 bytes
1911810 bytes
1911810 bytes
1911810 bytes
1911810 bytes
1911810 bytes
1911810 bytes
1911810 bytes
1911810 bytes
1911810 bytes
1911810 bytes
1911810 bytes
1911810 bytes
1935727 bytes
1935727 bytes
1935727 bytes
1935727 bytes
1935727 bytes
1935727 bytes
1935727 bytes
1935727 bytes
1935727 bytes
1935727 bytes
1935727 bytes
1935727 bytes
1935727 bytes
1935727 bytes
1935727 bytes
1935727 bytes
1935727 bytes
1935727 bytes
1935727 bytes
1935727 bytes
1959678 bytes
1959678 bytes
1959678 bytes
1959678 bytes
1959678 bytes
1959678 bytes
1959678 bytes
1959678 bytes
1959678 bytes
1959678 bytes
1959678 bytes
1959678 bytes
1959678 bytes
1959678 bytes
1959678 bytes
1959678 bytes
1959678 bytes
1959678 bytes
1959678 bytes
1959678 bytes
1983666 bytes
1983666 bytes
1983666 bytes
1983666 bytes
1983666 bytes
1983666 bytes
1983666 bytes
1983666 bytes
1983666 bytes
1983666 bytes
1983666 bytes
1983666 bytes
1983666 bytes
1983666 bytes
1983666 bytes
1983666 bytes
1983666 bytes
1983666 bytes
1983666 bytes
1983666 bytes
2007569 bytes
2007569 bytes
2007569 bytes
2007569 bytes
2007569 bytes
2007569 bytes
2007569 bytes
2007569 bytes
2007569 bytes
2007569 bytes
2007569 bytes
2007569 bytes
2007569 bytes
2007569 bytes
2007569 bytes
2007569 bytes
2007569 bytes
2007569 bytes
2007569 bytes
2007569 bytes
2031553 bytes
2031553 bytes
2031553 bytes
2031553 bytes
2031553 bytes
2031553 bytes
2031553 bytes
2031553 bytes
2031553 bytes
2031553 bytes
2031553 bytes
2031553 bytes
2031553 bytes
2031553 bytes
2031553 bytes
2031553 bytes
2031553 bytes
2031553 bytes
2031553 bytes
2031553 bytes
2055505 bytes
2055505 bytes
2055505 bytes
2055505 bytes
2055505 bytes
2055505 bytes
2055505 bytes
2055505 bytes
2055505 bytes
2055505 bytes
2055505 bytes
2055505 bytes
2055505 bytes
2055505 bytes
2055505 bytes
2055505 bytes
2055505 bytes
2055505 bytes
2055505 bytes
2055505 bytes
2079466 bytes
2079466 bytes
2079466 bytes
2079466 bytes
2079466 bytes
2079466 bytes
2079466 bytes
2079466 bytes
2079466 bytes
2079466 bytes
2079466 bytes
2079466 bytes
2079466 bytes
2079466 bytes
2079466 bytes
2079466 bytes
2079466 bytes
2079466 bytes
2079466 bytes
2079466 bytes
2103404 bytes
2103404 bytes
2103404 bytes
2103404 bytes
2103404 bytes
2103404 bytes
2103404 bytes
2103404 bytes
2103404 bytes
2103404 bytes
2103404 bytes
2103404 bytes
2103404 bytes
2103404 bytes
2103404 bytes
2103404 bytes
2103404 bytes
2103404 bytes
2103404 bytes
2103404 bytes
2127380 bytes
2127380 bytes
2127380 bytes
2127380 bytes
2127380 bytes
2127380 bytes
2127380 bytes
2127380 bytes
2127380 bytes
2127380 bytes
2127380 bytes
2127380 bytes
2127380 bytes
2127380 bytes
2127380 bytes
2127380 bytes
2127380 bytes
2127380 bytes
2127380 bytes
2127380 bytes
2151319 bytes
2151319 bytes
2151319 bytes
2151319 bytes
2151319 bytes
2151319 bytes
2151319 bytes
2151319 bytes
2151319 bytes
2151319 bytes
2151319 bytes
2151319 bytes
2151319 bytes
2151319 bytes
2151319 bytes
2151319 bytes
2151319 bytes
2151319 bytes
2151319 bytes
2151319 bytes
2175215 bytes
2175215 bytes
2175215 bytes
2175215 bytes
2175215 bytes
2175215 bytes
2175215 bytes
2175215 bytes
2175215 bytes
2175215 bytes
2175215 bytes
2175215 bytes
2175215 bytes
2175215 bytes
2175215 bytes
2175215 bytes
2175215 bytes
2175215 bytes
2175215 bytes
2175215 bytes
2199175 bytes
2199175 bytes
2199175 bytes
2199175 bytes
2199175 bytes
2199175 bytes
2199175 bytes
2199175 bytes
2199175 bytes
2199175 bytes
2199175 bytes
2199175 bytes
2199175 bytes
2199175 bytes
2199175 bytes
2199175 bytes
2199175 bytes
2199175 bytes
2199175 bytes
2199175 bytes
2223091 bytes
2223091 bytes
2223091 bytes
2223091 bytes
2223091 bytes
2223091 bytes
2223091 bytes
2223091 bytes
2223091 bytes
2223091 bytes
2223091 bytes
2223091 bytes
2223091 bytes
2223091 bytes
2223091 bytes
2223091 bytes
2223091 bytes
2223091 bytes
2223091 bytes
2223091 bytes
2247029 bytes
2247029 bytes
2247029 bytes
2247029 bytes
2247029 bytes
2247029 bytes
2247029 bytes
2247029 bytes
2247029 bytes
2247029 bytes
2247029 bytes
2247029 bytes
2247029 bytes
2247029 bytes
2247029 bytes
2247029 bytes
2247029 bytes
2247029 bytes
2247029 bytes
2247029 bytes
2270968 bytes
2270968 bytes
2270968 bytes
2270968 bytes
2270968 bytes
2270968 bytes
2270968 bytes
2270968 bytes
2270968 bytes
2270968 bytes
2270968 bytes
2270968 bytes
2270968 bytes
2270968 bytes
2270968 bytes
2270968 bytes
2270968 bytes
2270968 bytes
2270968 bytes
2270968 bytes
2294901 bytes
2294901 bytes
2294901 bytes
2294901 bytes
2294901 bytes
2294901 bytes
2294901 bytes
2294901 bytes
2294901 bytes
2294901 bytes
2294901 bytes
2294901 bytes
2294901 bytes
2294901 bytes
2294901 bytes
2294901 bytes
2294901 bytes
2294901 bytes
2294901 bytes
2294901 bytes
2318797 bytes
2318797 bytes
2318797 bytes
2318797 bytes
2318797 bytes
2318797 bytes
2318797 bytes
2318797 bytes
2318797 bytes
2318797 bytes
2318797 bytes
2318797 bytes
2318797 bytes
2318797 bytes
2318797 bytes
2318797 bytes
2318797 bytes
2318797 bytes
2318797 bytes
2318797 bytes
2342733 bytes
2342733 bytes
2342733 bytes
2342733 bytes
2342733 bytes
2342733 bytes
2342733 bytes
2342733 bytes
2342733 bytes
2342733 bytes
2342733 bytes
2342733 bytes
2342733 bytes
2342733 bytes
2342733 bytes
2342733 bytes
2342733 bytes
2342733 bytes
2342733 bytes
2342733 bytes
2366641 bytes
2366641 bytes
2366641 bytes
2366641 bytes
2366641 bytes
2366641 bytes
2366641 bytes
2366641 bytes
2366641 bytes
2366641 bytes
2366641 bytes
2366641 bytes
2366641 bytes
2366641 bytes
2366641 bytes
2366641 bytes
2366641 bytes
2366641 bytes
2366641 bytes
2366641 bytes
2390536 bytes
2390536 bytes
2390536 bytes
2390536 bytes
2390536 bytes
2390536 bytes
2390536 bytes
2390536 bytes
2390536 bytes
2390536 bytes
2390536 bytes
2390536 bytes
2390536 bytes
2390536 bytes
2390536 bytes
2390536 bytes
2390536 bytes
2390536 bytes
2390536 bytes
2390536 bytes
2414463 bytes
2414463 bytes
2414463 bytes
2414463 bytes
2414463 bytes
2414463 bytes
2414463 bytes
2414463 bytes
2414463 bytes
2414463 bytes
2414463 bytes
2414463 bytes
2414463 bytes
2414463 bytes
2414463 bytes
2414463 bytes
2414463 bytes
2414463 bytes
2414463 bytes
2414463 bytes
2438436 bytes
2438436 bytes
2438436 bytes
2438436 bytes
2438436 bytes
2438436 bytes
2438436 bytes
2438436 bytes
2438436 bytes
2438436 bytes
2438436 bytes
2438436 bytes
2438436 bytes
2438436 bytes
2438436 bytes
2438436 bytes
2438436 bytes
2438436 bytes
2438436 bytes
2438436 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
1263796 bytes
1263796 bytes
1263796 bytes
1263796 bytes
1263796 bytes
1263796 bytes
1263796 bytes
1263796 bytes
1263796 bytes
1263796 bytes
1263796 bytes
1263796 bytes
1263796 bytes
1263796 bytes
1263796 bytes
1263796 bytes
1263796 bytes
1263796 bytes
1263796 bytes
1263796 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1287829 bytes
1311931 bytes
1311931 bytes
1311931 bytes
1311931 bytes
1311931 bytes
1311931 bytes
1311931 bytes
1311931 bytes
1311931 bytes
1311931 bytes
1311931 bytes
1311931 bytes
1311931 bytes
1311931 bytes
1311931 bytes
1311931 bytes
1311931 bytes
1311931 bytes
1311931 bytes
1311931 bytes
1335955 bytes
1335955 bytes
1335955 bytes
1335955 bytes
1335955 bytes
1335955 bytes
1335955 bytes
1335955 bytes
1335955 bytes
1335955 bytes
1335955 bytes
1335955 bytes
1335955 bytes
1335955 bytes
1335955 bytes
1335955 bytes
1335955 bytes
1335955 bytes
1335955 bytes
1335955 bytes
1360014 bytes
1360014 bytes
1360014 bytes
1360014 bytes
1360014 bytes
1360014 bytes
1360014 bytes
1360014 bytes
1360014 bytes
1360014 bytes
1360014 bytes
1360014 bytes
1360014 bytes
1360014 bytes
1360014 bytes
1360014 bytes
1360014 bytes
1360014 bytes
1360014 bytes
1360014 bytes
1383985 bytes
1383985 bytes
1383985 bytes
1383985 bytes
1383985 bytes
1383985 bytes
1383985 bytes
1383985 bytes
1383985 bytes
1383985 bytes
1383985 bytes
1383985 bytes
1383985 bytes
1383985 bytes
1383985 bytes
1383985 bytes
1383985 bytes
1383985 bytes
1383985 bytes
1383985 bytes
1407974 bytes
1407974 bytes
1407974 bytes
1407974 bytes
1407974 bytes
1407974 bytes
1407974 bytes
1407974 bytes
1407974 bytes
1407974 bytes
1407974 bytes
1407974 bytes
1407974 bytes
1407974 bytes
1407974 bytes
1407974 bytes
1407974 bytes
1407974 bytes
1407974 bytes
1407974 bytes
1431997 bytes
1431997 bytes
1431997 bytes
1431997 bytes
1431997 bytes
1431997 bytes
1431997 bytes
1431997 bytes
1431997 bytes
1431997 bytes
1431997 bytes
1431997 bytes
1431997 bytes
1431997 bytes
1431997 bytes
1431997 bytes
1431997 bytes
1431997 bytes
1431997 bytes
1431997 bytes
1456009 bytes
1456009 bytes
1456009 bytes
1456009 bytes
1456009 bytes
1456009 bytes
1456009 bytes
1456009 bytes
1456009 bytes
1456009 bytes
1456009 bytes
1456009 bytes
1456009 bytes
1456009 bytes
1456009 bytes
1456009 bytes
1456009 bytes
1456009 bytes
1456009 bytes
1456009 bytes
1479967 bytes
1479967 bytes
1479967 bytes
1479967 bytes
1479967 bytes
1479967 bytes
1479967 bytes
1479967 bytes
1479967 bytes
1479967 bytes
1479967 bytes
1479967 bytes
1479967 bytes
1479967 bytes
1479967 bytes
1479967 bytes
1479967 bytes
1479967 bytes
1479967 bytes
1479967 bytes
1503978 bytes
1503978 bytes
1503978 bytes
1503978 bytes
1503978 bytes
1503978 bytes
1503978 bytes
1503978 bytes
1503978 bytes
1503978 bytes
1503978 bytes
1503978 bytes
1503978 bytes
1503978 bytes
1503978 bytes
1503978 bytes
1503978 bytes
1503978 bytes
1503978 bytes
1503978 bytes
1527950 bytes
1527950 bytes
1527950 bytes
1527950 bytes
1527950 bytes
1527950 bytes
1527950 bytes
1527950 bytes
1527950 bytes
1527950 bytes
1527950 bytes
1527950 bytes
1527950 bytes
1527950 bytes
1527950 bytes
1527950 bytes
1527950 bytes
1527950 bytes
1527950 bytes
1527950 bytes
1551968 bytes
1551968 bytes
1551968 bytes
1551968 bytes
1551968 bytes
1551968 bytes
1551968 bytes
1551968 bytes
1551968 bytes
1551968 bytes
1551968 bytes
1551968 bytes
1551968 bytes
1551968 bytes
1551968 bytes
1551968 bytes
1551968 bytes
1551968 bytes
1551968 bytes
1551968 bytes
1575982 bytes
1575982 bytes
1575982 bytes
1575982 bytes
1575982 bytes
1575982 bytes
1575982 bytes
1575982 bytes
1575982 bytes
1575982 bytes
1575982 bytes
1575982 bytes
1575982 bytes
1575982 bytes
1575982 bytes
1575982 bytes
1575982 bytes
1575982 bytes
1575982 bytes
1575982 bytes
1599946 bytes
1599946 bytes
1599946 bytes
1599946 bytes
1599946 bytes
1599946 bytes
1599946 bytes
1599946 bytes
1599946 bytes
1599946 bytes
1599946 bytes
1599946 bytes
1599946 bytes
1599946 bytes
1599946 bytes
1599946 bytes
1599946 bytes
1599946 bytes
1599946 bytes
1599946 bytes
1623959 bytes
1623959 bytes
1623959 bytes
1623959 bytes
1623959 bytes
1623959 bytes
1623959 bytes
1623959 bytes
1623959 bytes
1623959 bytes
1623959 bytes
1623959 bytes
1623959 bytes
1623959 bytes
1623959 bytes
1623959 bytes
1623959 bytes
1623959 bytes
1623959 bytes
1623959 bytes
1647980 bytes
1647980 bytes
1647980 bytes
1647980 bytes
1647980 bytes
1647980 bytes
1647980 bytes
1647980 bytes
1647980 bytes
1647980 bytes
1647980 bytes
1647980 bytes
1647980 bytes
1647980 bytes
1647980 bytes
1647980 bytes
1647980 bytes
1647980 bytes
1647980 bytes
1647980 bytes
1672021 bytes
1672021 bytes
1672021 bytes
1672021 bytes
1672021 bytes
1672021 bytes
1672021 bytes
1672021 bytes
1672021 bytes
1672021 bytes
1672021 bytes
1672021 bytes
1672021 bytes
1672021 bytes
1672021 bytes
1672021 bytes
1672021 bytes
1672021 bytes
1672021 bytes
1672021 bytes
1695941 bytes
1695941 bytes
1695941 bytes
1695941 bytes
1695941 bytes
1695941 bytes
1695941 bytes
1695941 bytes
1695941 bytes
1695941 bytes
1695941 bytes
1695941 bytes
1695941 bytes
1695941 bytes
1695941 bytes
1695941 bytes
1695941 bytes
1695941 bytes
1695941 bytes
1695941 bytes
1719871 bytes
1719871 bytes
1719871 bytes
1719871 bytes
1719871 bytes
1719871 bytes
1719871 bytes
1719871 bytes
1719871 bytes
1719871 bytes
1719871 bytes
1719871 bytes
1719871 bytes
1719871 bytes
1719871 bytes
1719871 bytes
1719871 bytes
1719871 bytes
1719871 bytes
1719871 bytes
1743741 bytes
1743741 bytes
1743741 bytes
1743741 bytes
1743741 bytes
1743741 bytes
1743741 bytes
1743741 bytes
1743741 bytes
1743741 bytes
1743741 bytes
1743741 bytes
1743741 bytes
1743741 bytes
1743741 bytes
1743741 bytes
1743741 bytes
1743741 bytes
1743741 bytes
1743741 bytes
1767720 bytes
1767720 bytes
1767720 bytes
1767720 bytes
1767720 bytes
1767720 bytes
1767720 bytes
1767720 bytes
1767720 bytes
1767720 bytes
1767720 bytes
1767720 bytes
1767720 bytes
1767720 bytes
1767720 bytes
1767720 bytes
1767720 bytes
1767720 bytes
1767720 bytes
1767720 bytes
1791667 bytes
1791667 bytes
1791667 bytes
1791667 bytes
1791667 bytes
1791667 bytes
1791667 bytes
1791667 bytes
1791667 bytes
1791667 bytes
1791667 bytes
1791667 bytes
1791667 bytes
1791667 bytes
1791667 bytes
1791667 bytes
1791667 bytes
1791667 bytes
1791667 bytes
1791667 bytes
1815631 bytes
1815631 bytes
1815631 bytes
1815631 bytes
1815631 bytes
1815631 bytes
1815631 bytes
1815631 bytes
1815631 bytes
1815631 bytes
1815631 bytes
1815631 bytes
1815631 bytes
1815631 bytes
1815631 bytes
1815631 bytes
1815631 bytes
1815631 bytes
1815631 bytes
1815631 bytes
1839617 bytes
1839617 bytes
1839617 bytes
1839617 bytes
1839617 bytes
1839617 bytes
1839617 bytes
1839617 bytes
1839617 bytes
1839617 bytes
1839617 bytes
1839617 bytes
1839617 bytes
1839617 bytes
1839617 bytes
1839617 bytes
1839617 bytes
1839617 bytes
1839617 bytes
1839617 bytes
1863587 bytes
1863587 bytes
1863587 bytes
1863587 bytes
1863587 bytes
1863587 bytes
1863587 bytes
1863587 bytes
1863587 bytes
1863587 bytes
1863587 bytes
1863587 bytes
1863587 bytes
1863587 bytes
1863587 bytes
1863587 bytes
1863587 bytes
1863587 bytes
1863587 bytes
1863587 bytes
1887516 bytes
1887516 bytes
1887516 bytes
1887516 bytes
1887516 bytes
1887516 bytes
1887516 bytes
1887516 bytes
1887516 bytes
1887516 bytes
1887516 bytes
1887516 bytes
1887516 bytes
1887516 bytes
1887516 bytes
1887516 bytes
1887516 bytes
1887516 bytes
1887516 bytes
1887516 bytes
1911536 bytes
1911536 bytes
1911536 bytes
1911536 bytes
1911536 bytes
1911536 bytes
1911536 bytes
1911536 bytes
1911536 bytes
1911536 bytes
1911536 bytes
1911536 bytes
1911536 bytes
1911536 bytes
1911536 bytes
1911536 bytes
1911536 bytes
1911536 bytes
1911536 bytes
1911536 bytes
1935485 bytes
1935485 bytes
1935485 bytes
1935485 bytes
1935485 bytes
1935485 bytes
1935485 bytes
1935485 bytes
1935485 bytes
1935485 bytes
1935485 bytes
1935485 bytes
1935485 bytes
1935485 bytes
1935485 bytes
1935485 bytes
1935485 bytes
1935485 bytes
1935485 bytes
1935485 bytes
1959429 bytes
1959429 bytes
1959429 bytes
1959429 bytes
1959429 bytes
1959429 bytes
1959429 bytes
1959429 bytes
1959429 bytes
1959429 bytes
1959429 bytes
1959429 bytes
1959429 bytes
1959429 bytes
1959429 bytes
1959429 bytes
1959429 bytes
1959429 bytes
1959429 bytes
1959429 bytes
1983379 bytes
1983379 bytes
1983379 bytes
1983379 bytes
1983379 bytes
1983379 bytes
1983379 bytes
1983379 bytes
1983379 bytes
1983379 bytes
1983379 bytes
1983379 bytes
1983379 bytes
1983379 bytes
1983379 bytes
1983379 bytes
1983379 bytes
1983379 bytes
1983379 bytes
1983379 bytes
2007344 bytes
2007344 bytes
2007344 bytes
2007344 bytes
2007344 bytes
2007344 bytes
2007344 bytes
2007344 bytes
2007344 bytes
2007344 bytes
2007344 bytes
2007344 bytes
2007344 bytes
2007344 bytes
2007344 bytes
2007344 bytes
2007344 bytes
2007344 bytes
2007344 bytes
2007344 bytes
2031235 bytes
2031235 bytes
2031235 bytes
2031235 bytes
2031235 bytes
2031235 bytes
2031235 bytes
2031235 bytes
2031235 bytes
2031235 bytes
2031235 bytes
2031235 bytes
2031235 bytes
2031235 bytes
2031235 bytes
2031235 bytes
2031235 bytes
2031235 bytes
2031235 bytes
2031235 bytes
2055235 bytes
2055235 bytes
2055235 bytes
2055235 bytes
2055235 bytes
2055235 bytes
2055235 bytes
2055235 bytes
2055235 bytes
2055235 bytes
2055235 bytes
2055235 bytes
2055235 bytes
2055235 bytes
2055235 bytes
2055235 bytes
2055235 bytes
2055235 bytes
2055235 bytes
2055235 bytes
2079207 bytes
2079207 bytes
2079207 bytes
2079207 bytes
2079207 bytes
2079207 bytes
2079207 bytes
2079207 bytes
2079207 bytes
2079207 bytes
2079207 bytes
2079207 bytes
2079207 bytes
2079207 bytes
2079207 bytes
2079207 bytes
2079207 bytes
2079207 bytes
2079207 bytes
2079207 bytes
2103237 bytes
2103237 bytes
2103237 bytes
2103237 bytes
2103237 bytes
2103237 bytes
2103237 bytes
2103237 bytes
2103237 bytes
2103237 bytes
2103237 bytes
2103237 bytes
2103237 bytes
2103237 bytes
2103237 bytes
2103237 bytes
2103237 bytes
2103237 bytes
2103237 bytes
2103237 bytes
2127206 bytes
2127206 bytes
2127206 bytes
2127206 bytes
2127206 bytes
2127206 bytes
2127206 bytes
2127206 bytes
2127206 bytes
2127206 bytes
2127206 bytes
2127206 bytes
2127206 bytes
2127206 bytes
2127206 bytes
2127206 bytes
2127206 bytes
2127206 bytes
2127206 bytes
2127206 bytes
2151151 bytes
2151151 bytes
2151151 bytes
2151151 bytes
2151151 bytes
2151151 bytes
2151151 bytes
2151151 bytes
2151151 bytes
2151151 bytes
2151151 bytes
2151151 bytes
2151151 bytes
2151151 bytes
2151151 bytes
2151151 bytes
2151151 bytes
2151151 bytes
2151151 bytes
2151151 bytes
2175137 bytes
2175137 bytes
2175137 bytes
2175137 bytes
2175137 bytes
2175137 bytes
2175137 bytes
2175137 bytes
2175137 bytes
2175137 bytes
2175137 bytes
2175137 bytes
2175137 bytes
2175137 bytes
2175137 bytes
2175137 bytes
2175137 bytes
2175137 bytes
2175137 bytes
2175137 bytes
2199076 bytes
2199076 bytes
2199076 bytes
2199076 bytes
2199076 bytes
2199076 bytes
2199076 bytes
2199076 bytes
2199076 bytes
2199076 bytes
2199076 bytes
2199076 bytes
2199076 bytes
2199076 bytes
2199076 bytes
2199076 bytes
2199076 bytes
2199076 bytes
2199076 bytes
2199076 bytes
2223042 bytes
2223042 bytes
2223042 bytes
2223042 bytes
2223042 bytes
2223042 bytes
2223042 bytes
2223042 bytes
2223042 bytes
2223042 bytes
2223042 bytes
2223042 bytes
2223042 bytes
2223042 bytes
2223042 bytes
2223042 bytes
2223042 bytes
2223042 bytes
2223042 bytes
2223042 bytes
2246964 bytes
2246964 bytes
2246964 bytes
2246964 bytes
2246964 bytes
2246964 bytes
2246964 bytes
2246964 bytes
2246964 bytes
2246964 bytes
2246964 bytes
2246964 bytes
2246964 bytes
2246964 bytes
2246964 bytes
2246964 bytes
2246964 bytes
2246964 bytes
2246964 bytes
2246964 bytes
2270946 bytes
2270946 bytes
2270946 bytes
2270946 bytes
2270946 bytes
2270946 bytes
2270946 bytes
2270946 bytes
2270946 bytes
2270946 bytes
2270946 bytes
2270946 bytes
2270946 bytes
2270946 bytes
2270946 bytes
2270946 bytes
2270946 bytes
2270946 bytes
2270946 bytes
2270946 bytes
2294899 bytes
2294899 bytes
2294899 bytes
2294899 bytes
2294899 bytes
2294899 bytes
2294899 bytes
2294899 bytes
2294899 bytes
2294899 bytes
2294899 bytes
2294899 bytes
2294899 bytes
2294899 bytes
2294899 bytes
2294899 bytes
2294899 bytes
2294899 bytes
2294899 bytes
2294899 bytes
2318809 bytes
2318809 bytes
2318809 bytes
2318809 bytes
2318809 bytes
2318809 bytes
2318809 bytes
2318809 bytes
2318809 bytes
2318809 bytes
2318809 bytes
2318809 bytes
2318809 bytes
2318809 bytes
2318809 bytes
2318809 bytes
2318809 bytes
2318809 bytes
2318809 bytes
2318809 bytes
2342704 bytes
2342704 bytes
2342704 bytes
2342704 bytes
2342704 bytes
2342704 bytes
2342704 bytes
2342704 bytes
2342704 bytes
2342704 bytes
2342704 bytes
2342704 bytes
2342704 bytes
2342704 bytes
2342704 bytes
2342704 bytes
2342704 bytes
2342704 bytes
2342704 bytes
2342704 bytes
2366575 bytes
2366575 bytes
2366575 bytes
2366575 bytes
2366575 bytes
2366575 bytes
2366575 bytes
2366575 bytes
2366575 bytes
2366575 bytes
2366575 bytes
2366575 bytes
2366575 bytes
2366575 bytes
2366575 bytes
2366575 bytes
2366575 bytes
2366575 bytes
2366575 bytes
2366575 bytes
2390547 bytes
2390547 bytes
2390547 bytes
2390547 bytes
2390547 bytes
2390547 bytes
2390547 bytes
2390547 bytes
2390547 bytes
2390547 bytes
2390547 bytes
2390547 bytes
2390547 bytes
2390547 bytes
2390547 bytes
2390547 bytes
2390547 bytes
2390547 bytes
2390547 bytes
2390547 bytes
2414488 bytes
2414488 bytes
2414488 bytes
2414488 bytes
2414488 bytes
2414488 bytes
2414488 bytes
2414488 bytes
2414488 bytes
2414488 bytes
2414488 bytes
2414488 bytes
2414488 bytes
2414488 bytes
2414488 bytes
2414488 bytes
2414488 bytes
2414488 bytes
2414488 bytes
2414488 bytes
2438388 bytes
2438388 bytes
2438388 bytes
2438388 bytes
2438388 bytes
2438388 bytes
2438388 bytes
2438388 bytes
2438388 bytes
2438388 bytes
2438388 bytes
2438388 bytes
2438388 bytes
2438388 bytes
2438388 bytes
2438388 bytes
2438388 bytes
2438388 bytes
2438388 bytes
2438388 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2401689 bytes
2401689 bytes
2401689 bytes
2401689 bytes
2401689 bytes
2401689 bytes
2401689 bytes
2401689 bytes
2401689 bytes
2401689 bytes
2401689 bytes
2401689 bytes
2401689 bytes
2401689 bytes
2401689 bytes
2401689 bytes
2401689 bytes
2401689 bytes
2401689 bytes
2401689 bytes
2402993 bytes
2402993 bytes
2402993 bytes
2402993 bytes
2402993 bytes
2402993 bytes
2402993 bytes
2402993 bytes
2402993 bytes
2402993 bytes
2402993 bytes
2402993 bytes
2402993 bytes
2402993 bytes
2402993 bytes
2402993 bytes
2402993 bytes
2402993 bytes
2402993 bytes
2402993 bytes
2404210 bytes
2404210 bytes
2404210 bytes
2404210 bytes
2404210 bytes
2404210 bytes
2404210 bytes
2404210 bytes
2404210 bytes
2404210 bytes
2404210 bytes
2404210 bytes
2404210 bytes
2404210 bytes
2404210 bytes
2404210 bytes
2404210 bytes
2404210 bytes
2404210 bytes
2404210 bytes
2405409 bytes
2405409 bytes
2405409 bytes
2405409 bytes
2405409 bytes
2405409 bytes
2405409 bytes
2405409 bytes
2405409 bytes
2405409 bytes
2405409 bytes
2405409 bytes
2405409 bytes
2405409 bytes
2405409 bytes
2405409 bytes
2405409 bytes
2405409 bytes
2405409 bytes
2405409 bytes
2406620 bytes
2406620 bytes
2406620 bytes
2406620 bytes
2406620 bytes
2406620 bytes
2406620 bytes
2406620 bytes
2406620 bytes
2406620 bytes
2406620 bytes
2406620 bytes
2406620 bytes
2406620 bytes
2406620 bytes
2406620 bytes
2406620 bytes
2406620 bytes
2406620 bytes
2406620 bytes
2407825 bytes
2407825 bytes
2407825 bytes
2407825 bytes
2407825 bytes
2407825 bytes
2407825 bytes
2407825 bytes
2407825 bytes
2407825 bytes
2407825 bytes
2407825 bytes
2407825 bytes
2407825 bytes
2407825 bytes
2407825 bytes
2407825 bytes
2407825 bytes
2407825 bytes
2407825 bytes
2409044 bytes
2409044 bytes
2409044 bytes
2409044 bytes
2409044 bytes
2409044 bytes
2409044 bytes
2409044 bytes
2409044 bytes
2409044 bytes
2409044 bytes
2409044 bytes
2409044 bytes
2409044 bytes
2409044 bytes
2409044 bytes
2409044 bytes
2409044 bytes
2409044 bytes
2409044 bytes
2410246 bytes
2410246 bytes
2410246 bytes
2410246 bytes
2410246 bytes
2410246 bytes
2410246 bytes
2410246 bytes
2410246 bytes
2410246 bytes
2410246 bytes
2410246 bytes
2410246 bytes
2410246 bytes
2410246 bytes
2410246 bytes
2410246 bytes
2410246 bytes
2410246 bytes
2410246 bytes
2411452 bytes
2411452 bytes
2411452 bytes
2411452 bytes
2411452 bytes
2411452 bytes
2411452 bytes
2411452 bytes
2411452 bytes
2411452 bytes
2411452 bytes
2411452 bytes
2411452 bytes
2411452 bytes
2411452 bytes
2411452 bytes
2411452 bytes
2411452 bytes
2411452 bytes
2411452 bytes
2412659 bytes
2412659 bytes
2412659 bytes
2412659 bytes
2412659 bytes
2412659 bytes
2412659 bytes
2412659 bytes
2412659 bytes
2412659 bytes
2412659 bytes
2412659 bytes
2412659 bytes
2412659 bytes
2412659 bytes
2412659 bytes
2412659 bytes
2412659 bytes
2412659 bytes
2412659 bytes
2413864 bytes
2413864 bytes
2413864 bytes
2413864 bytes
2413864 bytes
2413864 bytes
2413864 bytes
2413864 bytes
2413864 bytes
2413864 bytes
2413864 bytes
2413864 bytes
2413864 bytes
2413864 bytes
2413864 bytes
2413864 bytes
2413864 bytes
2413864 bytes
2413864 bytes
2413864 bytes
2415059 bytes
2415059 bytes
2415059 bytes
2415059 bytes
2415059 bytes
2415059 bytes
2415059 bytes
2415059 bytes
2415059 bytes
2415059 bytes
2415059 bytes
2415059 bytes
2415059 bytes
2415059 bytes
2415059 bytes
2415059 bytes
2415059 bytes
2415059 bytes
2415059 bytes
2415059 bytes
2416260 bytes
2416260 bytes
2416260 bytes
2416260 bytes
2416260 bytes
2416260 bytes
2416260 bytes
2416260 bytes
2416260 bytes
2416260 bytes
2416260 bytes
2416260 bytes
2416260 bytes
2416260 bytes
2416260 bytes
2416260 bytes
2416260 bytes
2416260 bytes
2416260 bytes
2416260 bytes
2417477 bytes
2417477 bytes
2417477 bytes
2417477 bytes
2417477 bytes
2417477 bytes
2417477 bytes
2417477 bytes
2417477 bytes
2417477 bytes
2417477 bytes
2417477 bytes
2417477 bytes
2417477 bytes
2417477 bytes
2417477 bytes
2417477 bytes
2417477 bytes
2417477 bytes
2417477 bytes
2418685 bytes
2418685 bytes
2418685 bytes
2418685 bytes
2418685 bytes
2418685 bytes
2418685 bytes
2418685 bytes
2418685 bytes
2418685 bytes
2418685 bytes
2418685 bytes
2418685 bytes
2418685 bytes
2418685 bytes
2418685 bytes
2418685 bytes
2418685 bytes
2418685 bytes
2418685 bytes
2419889 bytes
2419889 bytes
2419889 bytes
2419889 bytes
2419889 bytes
2419889 bytes
2419889 bytes
2419889 bytes
2419889 bytes
2419889 bytes
2419889 bytes
2419889 bytes
2419889 bytes
2419889 bytes
2419889 bytes
2419889 bytes
2419889 bytes
2419889 bytes
2419889 bytes
2419889 bytes
2421102 bytes
2421102 bytes
2421102 bytes
2421102 bytes
2421102 bytes
2421102 bytes
2421102 bytes
2421102 bytes
2421102 bytes
2421102 bytes
2421102 bytes
2421102 bytes
2421102 bytes
2421102 bytes
2421102 bytes
2421102 bytes
2421102 bytes
2421102 bytes
2421102 bytes
2421102 bytes
2422334 bytes
2422334 bytes
2422334 bytes
2422334 bytes
2422334 bytes
2422334 bytes
2422334 bytes
2422334 bytes
2422334 bytes
2422334 bytes
2422334 bytes
2422334 bytes
2422334 bytes
2422334 bytes
2422334 bytes
2422334 bytes
2422334 bytes
2422334 bytes
2422334 bytes
2422334 bytes
2423570 bytes
2423570 bytes
2423570 bytes
2423570 bytes
2423570 bytes
2423570 bytes
2423570 bytes
2423570 bytes
2423570 bytes
2423570 bytes
2423570 bytes
2423570 bytes
2423570 bytes
2423570 bytes
2423570 bytes
2423570 bytes
2423570 bytes
2423570 bytes
2423570 bytes
2423570 bytes
2424789 bytes
2424789 bytes
2424789 bytes
2424789 bytes
2424789 bytes
2424789 bytes
2424789 bytes
2424789 bytes
2424789 bytes
2424789 bytes
2424789 bytes
2424789 bytes
2424789 bytes
2424789 bytes
2424789 bytes
2424789 bytes
2424789 bytes
2424789 bytes
2424789 bytes
2424789 bytes
2425998 bytes
2425998 bytes
2425998 bytes
2425998 bytes
2425998 bytes
2425998 bytes
2425998 bytes
2425998 bytes
2425998 bytes
2425998 bytes
2425998 bytes
2425998 bytes
2425998 bytes
2425998 bytes
2425998 bytes
2425998 bytes
2425998 bytes
2425998 bytes
2425998 bytes
2425998 bytes
2427215 bytes
2427215 bytes
2427215 bytes
2427215 bytes
2427215 bytes
2427215 bytes
2427215 bytes
2427215 bytes
2427215 bytes
2427215 bytes
2427215 bytes
2427215 bytes
2427215 bytes
2427215 bytes
2427215 bytes
2427215 bytes
2427215 bytes
2427215 bytes
2427215 bytes
2427215 bytes
2428415 bytes
2428415 bytes
2428415 bytes
2428415 bytes
2428415 bytes
2428415 bytes
2428415 bytes
2428415 bytes
2428415 bytes
2428415 bytes
2428415 bytes
2428415 bytes
2428415 bytes
2428415 bytes
2428415 bytes
2428415 bytes
2428415 bytes
2428415 bytes
2428415 bytes
2428415 bytes
2429615 bytes
2429615 bytes
2429615 bytes
2429615 bytes
2429615 bytes
2429615 bytes
2429615 bytes
2429615 bytes
2429615 bytes
2429615 bytes
2429615 bytes
2429615 bytes
2429615 bytes
2429615 bytes
2429615 bytes
2429615 bytes
2429615 bytes
2429615 bytes
2429615 bytes
2429615 bytes
2430819 bytes
2430819 bytes
2430819 bytes
2430819 bytes
2430819 bytes
2430819 bytes
2430819 bytes
2430819 bytes
2430819 bytes
2430819 bytes
2430819 bytes
2430819 bytes
2430819 bytes
2430819 bytes
2430819 bytes
2430819 bytes
2430819 bytes
2430819 bytes
2430819 bytes
2430819 bytes
2432037 bytes
2432037 bytes
2432037 bytes
2432037 bytes
2432037 bytes
2432037 bytes
2432037 bytes
2432037 bytes
2432037 bytes
2432037 bytes
2432037 bytes
2432037 bytes
2432037 bytes
2432037 bytes
2432037 bytes
2432037 bytes
2432037 bytes
2432037 bytes
2432037 bytes
2432037 bytes
2433235 bytes
2433235 bytes
2433235 bytes
2433235 bytes
2433235 bytes
2433235 bytes
2433235 bytes
2433235 bytes
2433235 bytes
2433235 bytes
2433235 bytes
2433235 bytes
2433235 bytes
2433235 bytes
2433235 bytes
2433235 bytes
2433235 bytes
2433235 bytes
2433235 bytes
2433235 bytes
2434434 bytes
2434434 bytes
2434434 bytes
2434434 bytes
2434434 bytes
2434434 bytes
2434434 bytes
2434434 bytes
2434434 bytes
2434434 bytes
2434434 bytes
2434434 bytes
2434434 bytes
2434434 bytes
2434434 bytes
2434434 bytes
2434434 bytes
2434434 bytes
2434434 bytes
2434434 bytes
2435651 bytes
2435651 bytes
2435651 bytes
2435651 bytes
2435651 bytes
2435651 bytes
2435651 bytes
2435651 bytes
2435651 bytes
2435651 bytes
2435651 bytes
2435651 bytes
2435651 bytes
2435651 bytes
2435651 bytes
2435651 bytes
2435651 bytes
2435651 bytes
2435651 bytes
2435651 bytes
2436867 bytes
2436867 bytes
2436867 bytes
2436867 bytes
2436867 bytes
2436867 bytes
2436867 bytes
2436867 bytes
2436867 bytes
2436867 bytes
2436867 bytes
2436867 bytes
2436867 bytes
2436867 bytes
2436867 bytes
2436867 bytes
2436867 bytes
2436867 bytes
2436867 bytes
2436867 bytes
2438092 bytes
2438092 bytes
2438092 bytes
2438092 bytes
2438092 bytes
2438092 bytes
2438092 bytes
2438092 bytes
2438092 bytes
2438092 bytes
2438092 bytes
2438092 bytes
2438092 bytes
2438092 bytes
2438092 bytes
2438092 bytes
2438092 bytes
2438092 bytes
2438092 bytes
2438092 bytes
2439315 bytes
2439315 bytes
2439315 bytes
2439315 bytes
2439315 bytes
2439315 bytes
2439315 bytes
2439315 bytes
2439315 bytes
2439315 bytes
2439315 bytes
2439315 bytes
2439315 bytes
2439315 bytes
2439315 bytes
2439315 bytes
2439315 bytes
2439315 bytes
2439315 bytes
2439315 bytes
2440530 bytes
2440530 bytes
2440530 bytes
2440530 bytes
2440530 bytes
2440530 bytes
2440530 bytes
2440530 bytes
2440530 bytes
2440530 bytes
2440530 bytes
2440530 bytes
2440530 bytes
2440530 bytes
2440530 bytes
2440530 bytes
2440530 bytes
2440530 bytes
2440530 bytes
2440530 bytes
2441732 bytes
2441732 bytes
2441732 bytes
2441732 bytes
2441732 bytes
2441732 bytes
2441732 bytes
2441732 bytes
2441732 bytes
2441732 bytes
2441732 bytes
2441732 bytes
2441732 bytes
2441732 bytes
2441732 bytes
2441732 bytes
2441732 bytes
2441732 bytes
2441732 bytes
2441732 bytes
2442959 bytes
2442959 bytes
2442959 bytes
2442959 bytes
2442959 bytes
2442959 bytes
2442959 bytes
2442959 bytes
2442959 bytes
2442959 bytes
2442959 bytes
2442959 bytes
2442959 bytes
2442959 bytes
2442959 bytes
2442959 bytes
2442959 bytes
2442959 bytes
2442959 bytes
2442959 bytes
2444147 bytes
2444147 bytes
2444147 bytes
2444147 bytes
2444147 bytes
2444147 bytes
2444147 bytes
2444147 bytes
2444147 bytes
2444147 bytes
2444147 bytes
2444147 bytes
2444147 bytes
2444147 bytes
2444147 bytes
2444147 bytes
2444147 bytes
2444147 bytes
2444147 bytes
2444147 bytes
2445329 bytes
2445329 bytes
2445329 bytes
2445329 bytes
2445329 bytes
2445329 bytes
2445329 bytes
2445329 bytes
2445329 bytes
2445329 bytes
2445329 bytes
2445329 bytes
2445329 bytes
2445329 bytes
2445329 bytes
2445329 bytes
2445329 bytes
2445329 bytes
2445329 bytes
2445329 bytes
2446536 bytes
2446536 bytes
2446536 bytes
2446536 bytes
2446536 bytes
2446536 bytes
2446536 bytes
2446536 bytes
2446536 bytes
2446536 bytes
2446536 bytes
2446536 bytes
2446536 bytes
2446536 bytes
2446536 bytes
2446536 bytes
2446536 bytes
2446536 bytes
2446536 bytes
2446536 bytes
2447739 bytes
2447739 bytes
2447739 bytes
2447739 bytes
2447739 bytes
2447739 bytes
2447739 bytes
2447739 bytes
2447739 bytes
2447739 bytes
2447739 bytes
2447739 bytes
2447739 bytes
2447739 bytes
2447739 bytes
2447739 bytes
2447739 bytes
2447739 bytes
2447739 bytes
2447739 bytes
2448961 bytes
2448961 bytes
2448961 bytes
2448961 bytes
2448961 bytes
2448961 bytes
2448961 bytes
2448961 bytes
2448961 bytes
2448961 bytes
2448961 bytes
2448961 bytes
2448961 bytes
2448961 bytes
2448961 bytes
2448961 bytes
2448961 bytes
2448961 bytes
2448961 bytes
2448961 bytes
2450180 bytes
2450180 bytes
2450180 bytes
2450180 bytes
2450180 bytes
2450180 bytes
2450180 bytes
2450180 bytes
2450180 bytes
2450180 bytes
2450180 bytes
2450180 bytes
2450180 bytes
2450180 bytes
2450180 bytes
2450180 bytes
2450180 bytes
2450180 bytes
2450180 bytes
2450180 bytes
2451403 bytes
2451403 bytes
2451403 bytes
2451403 bytes
2451403 bytes
2451403 bytes
2451403 bytes
2451403 bytes
2451403 bytes
2451403 bytes
2451403 bytes
2451403 bytes
2451403 bytes
2451403 bytes
2451403 bytes
2451403 bytes
2451403 bytes
2451403 bytes
2451403 bytes
2451403 bytes
2452621 bytes
2452621 bytes
2452621 bytes
2452621 bytes
2452621 bytes
2452621 bytes
2452621 bytes
2452621 bytes
2452621 bytes
2452621 bytes
2452621 bytes
2452621 bytes
2452621 bytes
2452621 bytes
2452621 bytes
2452621 bytes
2452621 bytes
2452621 bytes
2452621 bytes
2452621 bytes
2453833 bytes
2453833 bytes
2453833 bytes
2453833 bytes
2453833 bytes
2453833 bytes
2453833 bytes
2453833 bytes
2453833 bytes
2453833 bytes
2453833 bytes
2453833 bytes
2453833 bytes
2453833 bytes
2453833 bytes
2453833 bytes
2453833 bytes
2453833 bytes
2453833 bytes
2453833 bytes
2455040 bytes
2455040 bytes
2455040 bytes
2455040 bytes
2455040 bytes
2455040 bytes
2455040 bytes
2455040 bytes
2455040 bytes
2455040 bytes
2455040 bytes
2455040 bytes
2455040 bytes
2455040 bytes
2455040 bytes
2455040 bytes
2455040 bytes
2455040 bytes
2455040 bytes
2455040 bytes
2456267 bytes
2456267 bytes
2456267 bytes
2456267 bytes
2456267 bytes
2456267 bytes
2456267 bytes
2456267 bytes
2456267 bytes
2456267 bytes
2456267 bytes
2456267 bytes
2456267 bytes
2456267 bytes
2456267 bytes
2456267 bytes
2456267 bytes
2456267 bytes
2456267 bytes
2456267 bytes
2457469 bytes
2457469 bytes
2457469 bytes
2457469 bytes
2457469 bytes
2457469 bytes
2457469 bytes
2457469 bytes
2457469 bytes
2457469 bytes
2457469 bytes
2457469 bytes
2457469 bytes
2457469 bytes
2457469 bytes
2457469 bytes
2457469 bytes
2457469 bytes
2457469 bytes
2457469 bytes
2458673 bytes
2458673 bytes
2458673 bytes
2458673 bytes
2458673 bytes
2458673 bytes
2458673 bytes
2458673 bytes
2458673 bytes
2458673 bytes
2458673 bytes
2458673 bytes
2458673 bytes
2458673 bytes
2458673 bytes
2458673 bytes
2458673 bytes
2458673 bytes
2458673 bytes
2458673 bytes
2459884 bytes
2459884 bytes
2459884 bytes
2459884 bytes
2459884 bytes
2459884 bytes
2459884 bytes
2459884 bytes
2459884 bytes
2459884 bytes
2459884 bytes
2459884 bytes
2459884 bytes
2459884 bytes
2459884 bytes
2459884 bytes
2459884 bytes
2459884 bytes
2459884 bytes
2459884 bytes
2461090 bytes
2461090 bytes
2461090 bytes
2461090 bytes
2461090 bytes
2461090 bytes
2461090 bytes
2461090 bytes
2461090 bytes
2461090 bytes
2461090 bytes
2461090 bytes
2461090 bytes
2461090 bytes
2461090 bytes
2461090 bytes
2461090 bytes
2461090 bytes
2461090 bytes
2461090 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes
2462292 bytes

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=        0
    + c    17.07
    + s    19.44
    + a    16.03
              µs

Reads = 5 + (2 * c) + (2 * s) + (1 * a)
Writes = 2 + (2 * c) + (2 * s) + (1 * a)
Proof Size = 5664 + (239 * c) + (239 * s) + (121 * a)

Min Squares Analysis
========
-- Extrinsic Time --

Data points distribution:
    c     s     a   mean µs  sigma µs       %
    0  5000   500     90790     523.6    0.5%
  100  5000   500     91590     308.8    0.3%
  200  5000   500     93070     313.2    0.3%
  300  5000   500     96840       170    0.1%
  400  5000   500     95460     277.1    0.2%
  500  5000   500    100100       433    0.4%
  600  5000   500    101100     427.4    0.4%
  700  5000   500    100200     206.8    0.2%
  800  5000   500    104500     565.7    0.5%
  900  5000   500    103400     266.4    0.2%
 1000  5000   500    108200     362.2    0.3%
 1100  5000   500    107000     330.7    0.3%
 1200  5000   500    111500     227.6    0.2%
 1300  5000   500    111600     367.7    0.3%
 1400  5000   500    114500     397.7    0.3%
 1500  5000   500    116200     557.1    0.4%
 1600  5000   500    117300     322.9    0.2%
 1700  5000   500    118800     364.1    0.3%
 1800  5000   500    121000     355.9    0.2%
 1900  5000   500    120300     296.4    0.2%
 2000  5000   500    127800       377    0.2%
 2100  5000   500    128700     534.2    0.4%
 2200  5000   500    130800       255    0.1%
 2300  5000   500    132000       252    0.1%
 2400  5000   500    133700     425.1    0.3%
 2500  5000   500    135500     385.3    0.2%
 2600  5000   500    137400     386.4    0.2%
 2700  5000   500    138400     374.2    0.2%
 2800  5000   500    135700     198.2    0.1%
 2900  5000   500    142500     722.8    0.5%
 3000  5000   500    144100     339.4    0.2%
 3100  5000   500    146800     484.3    0.3%
 3200  5000   500    145600     542.9    0.3%
 3300  5000   500    147800     587.1    0.3%
 3400  5000   500    148900     472.1    0.3%
 3500  5000   500    147000       256    0.1%
 3600  5000   500    147200     258.3    0.1%
 3700  5000   500    154700     485.3    0.3%
 3800  5000   500    156100     290.6    0.1%
 3900  5000   500    158700     529.4    0.3%
 4000  5000   500    157500     702.3    0.4%
 4100  5000   500    160800     805.8    0.5%
 4200  5000   500    160400     262.8    0.1%
 4300  5000   500    162400       665    0.4%
 4400  5000   500    163400     577.8    0.3%
 4500  5000   500    167900       639    0.3%
 4600  5000   500    165900     403.1    0.2%
 4700  5000   500    171800     296.1    0.1%
 4800  5000   500    171700     425.2    0.2%
 4900  5000   500    174300     527.7    0.3%
 5000     0   500     79360     377.7    0.4%
 5000   100   500     80550     318.5    0.3%
 5000   200   500     84040     331.5    0.3%
 5000   300   500     86050     203.3    0.2%
 5000   400   500     84830     243.7    0.2%
 5000   500   500     87970     464.4    0.5%
 5000   600   500     90700     530.7    0.5%
 5000   700   500     93760     203.9    0.2%
 5000   800   500     95890     457.2    0.4%
 5000   900   500     96540     338.4    0.3%
 5000  1000   500     96890     340.5    0.3%
 5000  1100   500     99640     404.2    0.4%
 5000  1200   500     98880     308.5    0.3%
 5000  1300   500    103400     375.6    0.3%
 5000  1400   500    102600     220.4    0.2%
 5000  1500   500    104800       237    0.2%
 5000  1600   500    109400     323.2    0.2%
 5000  1700   500    111500     407.2    0.3%
 5000  1800   500    112500     439.5    0.3%
 5000  1900   500    115700     505.4    0.4%
 5000  2000   500    119100       443    0.3%
 5000  2100   500    117100     522.3    0.4%
 5000  2200   500    118200       308    0.2%
 5000  2300   500    122600     431.8    0.3%
 5000  2400   500    125500     365.3    0.2%
 5000  2500   500    128200     274.2    0.2%
 5000  2600   500    127300     262.4    0.2%
 5000  2700   500    132500     420.7    0.3%
 5000  2800   500    135000     409.2    0.3%
 5000  2900   500    133500     521.7    0.3%
 5000  3000   500    138200     846.8    0.6%
 5000  3100   500    138700     704.7    0.5%
 5000  3200   500    142600     828.3    0.5%
 5000  3300   500    145300     556.3    0.3%
 5000  3400   500    146900     592.6    0.4%
 5000  3500   500    146400       389    0.2%
 5000  3600   500    148900     383.5    0.2%
 5000  3700   500    150500     361.1    0.2%
 5000  3800   500    149900     619.7    0.4%
 5000  3900   500    155200     760.8    0.4%
 5000  4000   500    156100     668.6    0.4%
 5000  4100   500    155900     451.2    0.2%
 5000  4200   500    163500     496.3    0.3%
 5000  4300   500    162300     334.3    0.2%
 5000  4400   500    159800     572.7    0.3%
 5000  4500   500    167200     369.3    0.2%
 5000  4600   500    168300     391.9    0.2%
 5000  4700   500    170200     403.3    0.2%
 5000  4800   500    168800     491.4    0.2%
 5000  4900   500    173800     434.5    0.2%
 5000  5000     0    169400     700.1    0.4%
 5000  5000    10    166200     897.1    0.5%
 5000  5000    20    169100     394.8    0.2%
 5000  5000    30    167000     467.5    0.2%
 5000  5000    40    165900     382.9    0.2%
 5000  5000    50    171100      1046    0.6%
 5000  5000    60    170300       625    0.3%
 5000  5000    70    163800     454.9    0.2%
 5000  5000    80    170000     645.3    0.3%
 5000  5000    90    170700     742.8    0.4%
 5000  5000   100    170100     598.4    0.3%
 5000  5000   110    169000     794.9    0.4%
 5000  5000   120    167400     912.7    0.5%
 5000  5000   130    169000     473.2    0.2%
 5000  5000   140    169900     497.7    0.2%
 5000  5000   150    169800     943.2    0.5%
 5000  5000   160    169300     596.6    0.3%
 5000  5000   170    172800     576.3    0.3%
 5000  5000   180    166900     494.4    0.2%
 5000  5000   190    170800     673.2    0.3%
 5000  5000   200    167700     362.6    0.2%
 5000  5000   210    170500     536.1    0.3%
 5000  5000   220    173300     637.3    0.3%
 5000  5000   230    171000     395.4    0.2%
 5000  5000   240    165300       392    0.2%
 5000  5000   250    172800     747.9    0.4%
 5000  5000   260    172200      1114    0.6%
 5000  5000   270    174200     591.5    0.3%
 5000  5000   280    168100     409.1    0.2%
 5000  5000   290    169400     497.2    0.2%
 5000  5000   300    172500     650.5    0.3%
 5000  5000   310    174400     369.5    0.2%
 5000  5000   320    171400     415.8    0.2%
 5000  5000   330    172300       306    0.1%
 5000  5000   340    173700     746.6    0.4%
 5000  5000   350    173300     450.4    0.2%
 5000  5000   360    174900     448.8    0.2%
 5000  5000   370    175100     274.4    0.1%
 5000  5000   380    172800     395.2    0.2%
 5000  5000   390    173400     786.2    0.4%
 5000  5000   400    172400     326.5    0.1%
 5000  5000   410    173800     590.4    0.3%
 5000  5000   420    170400     303.8    0.1%
 5000  5000   430    175300     517.3    0.2%
 5000  5000   440    169400     472.5    0.2%
 5000  5000   450    177400       589    0.3%
 5000  5000   460    173600     586.8    0.3%
 5000  5000   470    174800     415.1    0.2%
 5000  5000   480    174900     572.3    0.3%
 5000  5000   490    176800     748.6    0.4%
 5000  5000   500    176200     774.4    0.4%

Quality and confidence:
param     error
c         0.041
s         0.041
a         0.417

Model:
Time ~=        0
    + c    16.94
    + s    19.39
    + a    16.67
              µs

Reads = 5 + (2 * c) + (2 * s) + (1 * a)
Writes = 2 + (2 * c) + (2 * s) + (1 * a)
Proof Size = 5149 + (240 * c) + (240 * s) + (122 * a)

Pallet: "pallet_assets", Extrinsic: "mint", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Assets Asset (r:1 w:1)
Proof: Assets Asset (max_values: None, max_size: Some(210), added: 2770)
Storage: Assets Account (r:1 w:1)
Proof: Assets Account (max_values: None, max_size: Some(102), added: 2662)

-- Proof Sizes --

1865 bytes
1865 bytes
1865 bytes
1865 bytes
1865 bytes
1865 bytes
1865 bytes
1865 bytes
1865 bytes
1865 bytes
1865 bytes
1865 bytes
1865 bytes
1865 bytes
1865 bytes
1865 bytes
1865 bytes
1865 bytes
1865 bytes
1865 bytes

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    30.42
              µs

Reads = 2
Writes = 2
Proof Size = 1865

Min Squares Analysis
========
-- Extrinsic Time --

Model:
Time ~=    30.42
              µs

Reads = 2
Writes = 2
Proof Size = 1865

Pallet: "pallet_assets", Extrinsic: "burn", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Assets Asset (r:1 w:1)
Proof: Assets Asset (max_values: None, max_size: Some(210), added: 2770)
Storage: Assets Account (r:1 w:1)
Proof: Assets Account (max_values: None, max_size: Some(102), added: 2662)

-- Proof Sizes --

2093 bytes
2093 bytes
2093 bytes
2093 bytes
2093 bytes
2093 bytes
2093 bytes
2093 bytes
2093 bytes
2093 bytes
2093 bytes
2093 bytes
2093 bytes
2093 bytes
2093 bytes
2093 bytes
2093 bytes
2093 bytes
2093 bytes
2093 bytes

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    34.69
              µs

Reads = 2
Writes = 2
Proof Size = 2093

Min Squares Analysis
========
-- Extrinsic Time --

Model:
Time ~=    34.69
              µs

Reads = 2
Writes = 2
Proof Size = 2093

Pallet: "pallet_assets", Extrinsic: "transfer", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Assets Asset (r:1 w:1)
Proof: Assets Asset (max_values: None, max_size: Some(210), added: 2770)
Storage: Assets Account (r:2 w:2)
Proof: Assets Account (max_values: None, max_size: Some(102), added: 2662)
Storage: System Account (r:1 w:1)
Proof Skipped: System Account (max_values: None, max_size: None)

-- Proof Sizes --

2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    47.04
              µs

Reads = 4
Writes = 4
Proof Size = 2132

Min Squares Analysis
========
-- Extrinsic Time --

Model:
Time ~=    47.04
              µs

Reads = 4
Writes = 4
Proof Size = 2132

Pallet: "pallet_assets", Extrinsic: "transfer_keep_alive", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Assets Asset (r:1 w:1)
Proof: Assets Asset (max_values: None, max_size: Some(210), added: 2770)
Storage: Assets Account (r:2 w:2)
Proof: Assets Account (max_values: None, max_size: Some(102), added: 2662)
Storage: System Account (r:1 w:1)
Proof Skipped: System Account (max_values: None, max_size: None)

-- Proof Sizes --

1960 bytes
1960 bytes
1960 bytes
1960 bytes
1960 bytes
1960 bytes
1960 bytes
1960 bytes
1960 bytes
1960 bytes
1960 bytes
1960 bytes
1960 bytes
1960 bytes
1960 bytes
1960 bytes
1960 bytes
1960 bytes
1960 bytes
1960 bytes

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    40.89
              µs

Reads = 4
Writes = 4
Proof Size = 1960

Min Squares Analysis
========
-- Extrinsic Time --

Model:
Time ~=    40.89
              µs

Reads = 4
Writes = 4
Proof Size = 1960

Pallet: "pallet_assets", Extrinsic: "force_transfer", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Assets Asset (r:1 w:1)
Proof: Assets Asset (max_values: None, max_size: Some(210), added: 2770)
Storage: Assets Account (r:2 w:2)
Proof: Assets Account (max_values: None, max_size: Some(102), added: 2662)
Storage: System Account (r:1 w:1)
Proof Skipped: System Account (max_values: None, max_size: None)

-- Proof Sizes --

2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes
2132 bytes

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    47.74
              µs

Reads = 4
Writes = 4
Proof Size = 2132

Min Squares Analysis
========
-- Extrinsic Time --

Model:
Time ~=    47.74
              µs

Reads = 4
Writes = 4
Proof Size = 2132

Pallet: "pallet_assets", Extrinsic: "freeze", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Assets Asset (r:1 w:0)
Proof: Assets Asset (max_values: None, max_size: Some(210), added: 2770)
Storage: Assets Account (r:1 w:1)
Proof: Assets Account (max_values: None, max_size: Some(102), added: 2662)

-- Proof Sizes --

1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    21.08
              µs

Reads = 2
Writes = 1
Proof Size = 1569

Min Squares Analysis
========
-- Extrinsic Time --

Model:
Time ~=    21.08
              µs

Reads = 2
Writes = 1
Proof Size = 1569

Pallet: "pallet_assets", Extrinsic: "thaw", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Assets Asset (r:1 w:0)
Proof: Assets Asset (max_values: None, max_size: Some(210), added: 2770)
Storage: Assets Account (r:1 w:1)
Proof: Assets Account (max_values: None, max_size: Some(102), added: 2662)

-- Proof Sizes --

1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes
1569 bytes

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    21.16
              µs

Reads = 2
Writes = 1
Proof Size = 1569

Min Squares Analysis
========
-- Extrinsic Time --

Model:
Time ~=    21.16
              µs

Reads = 2
Writes = 1
Proof Size = 1569

Pallet: "pallet_assets", Extrinsic: "freeze_asset", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Assets Asset (r:1 w:1)
Proof: Assets Asset (max_values: None, max_size: Some(210), added: 2770)

-- Proof Sizes --

1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    17.64
              µs

Reads = 1
Writes = 1
Proof Size = 1495

Min Squares Analysis
========
-- Extrinsic Time --

Model:
Time ~=    17.64
              µs

Reads = 1
Writes = 1
Proof Size = 1495

Pallet: "pallet_assets", Extrinsic: "thaw_asset", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Assets Asset (r:1 w:1)
Proof: Assets Asset (max_values: None, max_size: Some(210), added: 2770)

-- Proof Sizes --

1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes
1495 bytes

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    17.27
              µs

Reads = 1
Writes = 1
Proof Size = 1495

Min Squares Analysis
========
-- Extrinsic Time --

Model:
Time ~=    17.27
              µs

Reads = 1
Writes = 1
Proof Size = 1495

Pallet: "pallet_assets", Extrinsic: "transfer_ownership", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Assets Asset (r:1 w:1)
Proof: Assets Asset (max_values: None, max_size: Some(210), added: 2770)
Storage: Assets Metadata (r:1 w:0)
Proof: Assets Metadata (max_values: None, max_size: Some(140), added: 2700)

-- Proof Sizes --

1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    19.23
              µs

Reads = 2
Writes = 1
Proof Size = 1461

Min Squares Analysis
========
-- Extrinsic Time --

Model:
Time ~=    19.23
              µs

Reads = 2
Writes = 1
Proof Size = 1461

Pallet: "pallet_assets", Extrinsic: "set_team", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Assets Asset (r:1 w:1)
Proof: Assets Asset (max_values: None, max_size: Some(210), added: 2770)

-- Proof Sizes --

1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes
1461 bytes

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=    17.77
              µs

Reads = 1
Writes = 1
Proof Size = 1461

Min Squares Analysis
========
-- Extrinsic Time --

Model:
Time ~=    17.77
              µs

Reads = 1
Writes = 1
Proof Size = 1461

Pallet: "pallet_assets", Extrinsic: "set_metadata", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: Assets Asset (r:1 w:0)
Proof: Assets Asset (max_values: None, max_size: Some(210), added: 2770)
Storage: Assets Metadata (r:1 w:1)
Proof: Assets Metadata (max_values: None, max_size: Some(140), added: 2700)

-- Proof Sizes --

1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1985 bytes
1<truncated>...

@shawntabrizi shawntabrizi added B0-silent Changes should not be mentioned in any release notes C1-low PR touches the given topic and has a low impact on builders. D5-nicetohaveaudit ⚠️ PR contains trivial changes to logic that should be properly reviewed. labels Jun 12, 2022
shawntabrizi and others added 3 commits June 12, 2022 01:26
…--manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_assets --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/assets/src/weights.rs --template=./.maintain/frame-weight-template.hbs
rossbulat pushed a commit that referenced this pull request Feb 3, 2023
* initial impl

* add template test

* linear fit proof size

* always record proof when tracking storage

* calculate worst case pov

* remove duplicate worst case

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_assets --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/assets/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* more comment output

* add cli for worst case map size

* update name

* clap does not support underscores

* rename

* expose worst case map values

* improve some comments

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_assets --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/assets/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* update template

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_assets --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/assets/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* fix fmt

* more fmt

* more fmt

* Dont panic when there is no proof

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Fix test features

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Whitelist :extrinsic_index

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Use whitelist when recording proof

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add logs

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add PoV testing pallet

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Deploy PoV testing pallet

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Storage benches reside in the PoV pallet

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Linear regress PoV per component

Splits the PoV calculation into "measured" and "estimated".
The measured part is reported by the Proof recorder and linear
regressed over all components at once.
The estimated part is calculated as worst-case by using the max
PoV size per storage access and calculating one linear regress per
component. This gives each component a (possibly) independent PoV.
For now the measured size will always be lower than the PoV on
Polkadot since it is measured on an empty snapshot. The measured
part is therefor only used as diagnostic for debugging.

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Put PoV into the weight templates

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* fmt

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Extra alanysis choise for PoV

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add+Fix tests

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Make benches faster

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Cleanup

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Use same template comments

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* ".git/.scripts/bench-bot.sh" pallet dev pallet_balances

* ".git/.scripts/bench-bot.sh" pallet dev pallet_democracy

* Update referenda mock BlockWeights

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Take measured value size into account

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* clippy

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* ".git/.scripts/bench-bot.sh" pallet dev pallet_scheduler

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* proof_size: None

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* ugly, but works

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* wup

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add pov_mode attribute to the benchmarks! macro

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Use pov_mode attribute in PoV benchmarking

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Update tests

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Scheduler, Whitelist: Add pov_mode attr

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Update PoV weights

* Add CLI arg: default-pov-mode

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Fix tests

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* fmt

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* fix

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Revert "Update PoV weights"

This reverts commit 2f3ac23.

* Revert "WIP"

This reverts commit c34b538.

* Revert first approach

This reverts commit range 8ddaa2f^..4c84f87

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Clippy

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add extra benchmarks

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_alliance

* ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_whitelist

* ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_scheduler

* fmt

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Clippy

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Clippy 🤦

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add reference benchmarks

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Fix doc comments

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Undo logging

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add 'Ignored' pov_mode

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Allow multiple attributes per benchmark

Turns out that the current benchmarking syntax does not support
multiple attributes per bench 🤦. Changing it to support that
since otherwise the `pov_mode` would conflict with the others.

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Validate pov_mode syntax

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Ignore PoV for all contract benchmarks

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Test

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* test

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Bump macro recursion limit

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* fmt

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Update contract weights

They dont have a PoV component anymore.

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* fix test ffs

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* pov_mode is unsupported in V2 syntax

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Fix pallet ui tests

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* update pallet ui

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Fix pallet ui tests

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Update weights

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Parity Bot <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: command-bot <>
Co-authored-by: Your Name <[email protected]>
@EgorPopelyaev EgorPopelyaev added B1-note_worthy Changes should be noted in the release notes T1-runtime This PR/Issue is related to the topic “runtime”. and removed B7-runtimenoteworthy labels Feb 10, 2023
jiguantong pushed a commit to darwinia-network/substrate that referenced this pull request Feb 21, 2023
* initial impl

* add template test

* linear fit proof size

* always record proof when tracking storage

* calculate worst case pov

* remove duplicate worst case

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_assets --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/assets/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* more comment output

* add cli for worst case map size

* update name

* clap does not support underscores

* rename

* expose worst case map values

* improve some comments

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_assets --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/assets/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* update template

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_assets --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/assets/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* fix fmt

* more fmt

* more fmt

* Dont panic when there is no proof

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Fix test features

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Whitelist :extrinsic_index

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Use whitelist when recording proof

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add logs

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add PoV testing pallet

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Deploy PoV testing pallet

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Storage benches reside in the PoV pallet

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Linear regress PoV per component

Splits the PoV calculation into "measured" and "estimated".
The measured part is reported by the Proof recorder and linear
regressed over all components at once.
The estimated part is calculated as worst-case by using the max
PoV size per storage access and calculating one linear regress per
component. This gives each component a (possibly) independent PoV.
For now the measured size will always be lower than the PoV on
Polkadot since it is measured on an empty snapshot. The measured
part is therefor only used as diagnostic for debugging.

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Put PoV into the weight templates

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* fmt

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Extra alanysis choise for PoV

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add+Fix tests

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Make benches faster

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Cleanup

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Use same template comments

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* ".git/.scripts/bench-bot.sh" pallet dev pallet_balances

* ".git/.scripts/bench-bot.sh" pallet dev pallet_democracy

* Update referenda mock BlockWeights

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Take measured value size into account

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* clippy

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* ".git/.scripts/bench-bot.sh" pallet dev pallet_scheduler

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* proof_size: None

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* ugly, but works

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* wup

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add pov_mode attribute to the benchmarks! macro

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Use pov_mode attribute in PoV benchmarking

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Update tests

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Scheduler, Whitelist: Add pov_mode attr

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Update PoV weights

* Add CLI arg: default-pov-mode

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Fix tests

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* fmt

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* fix

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Revert "Update PoV weights"

This reverts commit 2f3ac23.

* Revert "WIP"

This reverts commit c34b538.

* Revert first approach

This reverts commit range 8ddaa2f^..4c84f87

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Clippy

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add extra benchmarks

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_alliance

* ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_whitelist

* ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_scheduler

* fmt

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Clippy

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Clippy 🤦

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add reference benchmarks

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Fix doc comments

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Undo logging

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add 'Ignored' pov_mode

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Allow multiple attributes per benchmark

Turns out that the current benchmarking syntax does not support
multiple attributes per bench 🤦. Changing it to support that
since otherwise the `pov_mode` would conflict with the others.

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Validate pov_mode syntax

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Ignore PoV for all contract benchmarks

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Test

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* test

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Bump macro recursion limit

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* fmt

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Update contract weights

They dont have a PoV component anymore.

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* fix test ffs

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* pov_mode is unsupported in V2 syntax

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Fix pallet ui tests

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* update pallet ui

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Fix pallet ui tests

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Update weights

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Parity Bot <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: command-bot <>
Co-authored-by: Your Name <[email protected]>
ltfschoen pushed a commit to ltfschoen/substrate that referenced this pull request Feb 22, 2023
* initial impl

* add template test

* linear fit proof size

* always record proof when tracking storage

* calculate worst case pov

* remove duplicate worst case

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_assets --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/assets/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* more comment output

* add cli for worst case map size

* update name

* clap does not support underscores

* rename

* expose worst case map values

* improve some comments

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_assets --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/assets/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* update template

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_assets --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/assets/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* fix fmt

* more fmt

* more fmt

* Dont panic when there is no proof

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Fix test features

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Whitelist :extrinsic_index

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Use whitelist when recording proof

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add logs

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add PoV testing pallet

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Deploy PoV testing pallet

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Storage benches reside in the PoV pallet

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Linear regress PoV per component

Splits the PoV calculation into "measured" and "estimated".
The measured part is reported by the Proof recorder and linear
regressed over all components at once.
The estimated part is calculated as worst-case by using the max
PoV size per storage access and calculating one linear regress per
component. This gives each component a (possibly) independent PoV.
For now the measured size will always be lower than the PoV on
Polkadot since it is measured on an empty snapshot. The measured
part is therefor only used as diagnostic for debugging.

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Put PoV into the weight templates

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* fmt

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Extra alanysis choise for PoV

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add+Fix tests

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Make benches faster

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Cleanup

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Use same template comments

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* ".git/.scripts/bench-bot.sh" pallet dev pallet_balances

* ".git/.scripts/bench-bot.sh" pallet dev pallet_democracy

* Update referenda mock BlockWeights

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Take measured value size into account

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* clippy

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* ".git/.scripts/bench-bot.sh" pallet dev pallet_scheduler

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* proof_size: None

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* ugly, but works

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* wup

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add pov_mode attribute to the benchmarks! macro

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Use pov_mode attribute in PoV benchmarking

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Update tests

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Scheduler, Whitelist: Add pov_mode attr

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Update PoV weights

* Add CLI arg: default-pov-mode

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Fix tests

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* fmt

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* fix

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Revert "Update PoV weights"

This reverts commit 2f3ac23.

* Revert "WIP"

This reverts commit c34b538.

* Revert first approach

This reverts commit range 8ddaa2f^..4c84f87

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Clippy

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add extra benchmarks

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_alliance

* ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_whitelist

* ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_scheduler

* fmt

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Clippy

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Clippy 🤦

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add reference benchmarks

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Fix doc comments

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Undo logging

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add 'Ignored' pov_mode

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Allow multiple attributes per benchmark

Turns out that the current benchmarking syntax does not support
multiple attributes per bench 🤦. Changing it to support that
since otherwise the `pov_mode` would conflict with the others.

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Validate pov_mode syntax

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Ignore PoV for all contract benchmarks

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Test

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* test

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Bump macro recursion limit

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* fmt

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Update contract weights

They dont have a PoV component anymore.

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* fix test ffs

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* pov_mode is unsupported in V2 syntax

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Fix pallet ui tests

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* update pallet ui

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Fix pallet ui tests

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Update weights

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Parity Bot <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: command-bot <>
Co-authored-by: Your Name <[email protected]>
@Polkadot-Forum
Copy link

This pull request has been mentioned on Polkadot Forum. There might be relevant details there:

https://forum.polkadot.network/t/polkadot-release-analysis-v0-9-38/2122/1

ark0f pushed a commit to gear-tech/substrate that referenced this pull request Feb 27, 2023
* initial impl

* add template test

* linear fit proof size

* always record proof when tracking storage

* calculate worst case pov

* remove duplicate worst case

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_assets --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/assets/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* more comment output

* add cli for worst case map size

* update name

* clap does not support underscores

* rename

* expose worst case map values

* improve some comments

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_assets --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/assets/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* update template

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_assets --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/assets/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* fix fmt

* more fmt

* more fmt

* Dont panic when there is no proof

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Fix test features

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Whitelist :extrinsic_index

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Use whitelist when recording proof

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add logs

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add PoV testing pallet

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Deploy PoV testing pallet

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Storage benches reside in the PoV pallet

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Linear regress PoV per component

Splits the PoV calculation into "measured" and "estimated".
The measured part is reported by the Proof recorder and linear
regressed over all components at once.
The estimated part is calculated as worst-case by using the max
PoV size per storage access and calculating one linear regress per
component. This gives each component a (possibly) independent PoV.
For now the measured size will always be lower than the PoV on
Polkadot since it is measured on an empty snapshot. The measured
part is therefor only used as diagnostic for debugging.

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Put PoV into the weight templates

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* fmt

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Extra alanysis choise for PoV

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add+Fix tests

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Make benches faster

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Cleanup

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Use same template comments

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* ".git/.scripts/bench-bot.sh" pallet dev pallet_balances

* ".git/.scripts/bench-bot.sh" pallet dev pallet_democracy

* Update referenda mock BlockWeights

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Take measured value size into account

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* clippy

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* ".git/.scripts/bench-bot.sh" pallet dev pallet_scheduler

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* proof_size: None

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* ugly, but works

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* wup

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add pov_mode attribute to the benchmarks! macro

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Use pov_mode attribute in PoV benchmarking

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Update tests

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Scheduler, Whitelist: Add pov_mode attr

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Update PoV weights

* Add CLI arg: default-pov-mode

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Fix tests

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* fmt

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* fix

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Revert "Update PoV weights"

This reverts commit 2f3ac23.

* Revert "WIP"

This reverts commit c34b538.

* Revert first approach

This reverts commit range 8ddaa2f^..4c84f87

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Clippy

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add extra benchmarks

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_alliance

* ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_whitelist

* ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_scheduler

* fmt

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Clippy

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Clippy 🤦

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add reference benchmarks

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Fix doc comments

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Undo logging

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add 'Ignored' pov_mode

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Allow multiple attributes per benchmark

Turns out that the current benchmarking syntax does not support
multiple attributes per bench 🤦. Changing it to support that
since otherwise the `pov_mode` would conflict with the others.

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Validate pov_mode syntax

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Ignore PoV for all contract benchmarks

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Test

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* test

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Bump macro recursion limit

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* fmt

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Update contract weights

They dont have a PoV component anymore.

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* fix test ffs

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* pov_mode is unsupported in V2 syntax

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Fix pallet ui tests

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* update pallet ui

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Fix pallet ui tests

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Update weights

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Parity Bot <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: command-bot <>
Co-authored-by: Your Name <[email protected]>
@ggwpez ggwpez mentioned this pull request Mar 30, 2023
1 task
devdanco added a commit to gasp-xyz/substrate that referenced this pull request May 25, 2023
* Use the balance trait as we have one (#13136)

* CI: Code mark to request a pipeline failure (#13139)

* Annotate thiserror for sp_core::crypto::SecretStringError (#13144)

* pallet-offences-benchmarking: Box events in verify (#13151)

* pallet-offences-benchmarking: Box events in verify

Events in frame are represented by an enum in the pallet and the runtime. The size of an enum in
Rust depends on the size of biggest variant. This means we always need to allocate memory for the
biggest variant when allocating memory for an event. The offences benchmarking is verifying the
benchmarking results by checking the events. To check the events it is generating all the expected
events. With the recent changes in Polkadot the events are too big and lead to issues when running
this verify functions. The solution is to box each event, as the vector holding all the events will
then only need to hold fat pointers * expected events, instead of size_of(event) * expected events.
This issue isn't a problem in production, as we never read the events on chain. When we are reading
the events, it is done in an offchain context and they are only decoded one by one.

Besides that this also enables the benchmarking verification for everyone running these benchmarks.

* FMT

* Disable checking again

* More improvements for the crate publishing pipeline (#13153)

* more improvements for the crate publishing pipeline

* move default definitions to the publish-crates script

* add script to check the crate publishing pipeline at the start

* fix yaml references

* move more variables to .crates-publishing-pipeline

* separate .crates-publishing-pipeline from .crates-publishing-variables

* clean up redundant and unused code

* txpool: don't maintain the pool during major sync (#13004)

* txpool: don't maintain the pool during major sync

Fix shall prevent from wasting the CPU during the major sync. No actions
are actually required in transaction pool during the major sync.

Fixes: #12903

* passing sync_oracle to maintain method

* fixed: builder, txpool tests

* do not maintain tx-pool if node gone out of sync

* EnactmentAction: all logic moved to EnactmentState

Tests to be done.

* maintain guard logic moved directly to MaintainedTransactionPool

* minor fixes

* EnactmentAction: all logic moved to EnactmentState (again)

* SyncOracle fixes here and there

* Update client/transaction-pool/src/enactment_state.rs

Co-authored-by: Bastian Köcher <[email protected]>

* Update client/transaction-pool/src/enactment_state.rs

Co-authored-by: Bastian Köcher <[email protected]>

* sync_oracle removed

* spelling + fmt + doc

* Review suggestions applied

* log::info -> debug

* Update client/transaction-pool/src/enactment_state.rs

Co-authored-by: Bastian Köcher <[email protected]>

* ".git/.scripts/commands/fmt/fmt.sh"

Co-authored-by: parity-processbot <>
Co-authored-by: Bastian Köcher <[email protected]>

* [client/network] Add support  for `/wss` addresses (#13152)

* join dns with another instance of WS transport

Secure Websocket transport needs unresolved addresses, so we join DNS transport with
yet another instance of Websocket transport.

Closes #12024

* WSS transport itself need to wrap DNS transport

in order to resolve addresses before passing them down to TCP transport

Refs https://github.com/libp2p/rust-libp2p/issues/3330

* reverse order

* simplify code: remove WS from WSS inner DNS transport

* remove the 2nd instance of WS transport

* NIS should retain funds in reserve (#12928)

* Keep funds with receipt holder

* Counterpart is optional

* Use named reserves

* Tests

* Benchmarks

* Fixes

* Update frame/nis/src/lib.rs

Co-authored-by: Keith Yeung <[email protected]>

* Update frame/nis/src/lib.rs

Co-authored-by: Keith Yeung <[email protected]>

* Update frame/nis/src/lib.rs

* Update frame/nis/src/lib.rs

* Update frame/nis/src/tests.rs

* Update frame/nis/src/lib.rs

Co-authored-by: Oliver Tale-Yazdi <[email protected]>

* Update frame/nis/src/lib.rs

Co-authored-by: Oliver Tale-Yazdi <[email protected]>

* Update frame/nis/src/lib.rs

Co-authored-by: Oliver Tale-Yazdi <[email protected]>

* Update frame/nis/src/lib.rs

* Update frame/nis/src/lib.rs

* Update frame/nis/src/lib.rs

* Update frame/nis/src/lib.rs

* Formatting

Co-authored-by: Keith Yeung <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>

* Refactory of `next_slot` method (#13155)

Refactory of `next_slot` method

* Prevents slot worker exit if inherent data provider creation fails
* Failure is not possible anymore
* Fix potential failure after warp-sync where block headers of not already downloaded blocks are used by the inherent data provider

* Breakout mock runtimes to separate files (#13150)

* break out moch runtimes to separate files

* tranaction-payment: break out tests & mock runtime to separate files

* frame-benchmarking: Macros should not force a particular env (#13161)

The macros in frame-benchmarking relied on having all the macros imported, which isn't a behavior
for a proper macro :D This pr fixes this by making all internal macro usages absolute.

* Fix the `storage_size`/`state_getStorageSize` RPC call (#13154)

* Have `KeyIterator` clone the `prefix` it receives

* Stream keys in `storage_size` RPC and add a runtime limit

* Update client/rpc/Cargo.toml

Co-authored-by: Bastian Köcher <[email protected]>

* Update client/rpc/src/state/utils.rs

Co-authored-by: Bastian Köcher <[email protected]>

* Rename the types to signify that the cancellation is due to a timeout

* Move the test into a `mod tests`

* Add a comment regarding `biased` in `tokio::select`

* Make the `clone` explicit when calling `KeyIterator::{new, new_child}`

Co-authored-by: Bastian Köcher <[email protected]>

* [contracts] Adapt storage reading host functions to Weights V2 (#12976)

* update RuntimeCosts to Weights V2, update tests

* improve docs

* clearer naming and docs to compat_weight helper

* Apply suggestions from code review

Co-authored-by: Alexander Theißen <[email protected]>

* save before master merge

* HostFnWeights to Weight

* added to_weight! macro

* Apply suggestions from code review

Co-authored-by: Alexander Theißen <[email protected]>

* RuntimeCosts::ChainExtension to weight_v2

* chain extension to weight v2

Co-authored-by: Alexander Theißen <[email protected]>

* zobmienet tests are not supposed to fail (#13015)

* zobmienet tests are not supposed to fail

* Update scripts/ci/gitlab/pipeline/zombienet.yml

Co-authored-by: Alexander Samusev <[email protected]>

Co-authored-by: Alexander Samusev <[email protected]>

* [contracts] Add integrity checks by pallet hook (#12993)

* integrity test for MaxCodeLen and CallStack::len()

* integrity test for MaxDebugBufferLen

* addressed review comments

* fix append_debug_buffer()

* ci fix

* updated code_len_limit formula after further discussion

* enlarged mem safe margin after discussion

* +doc to Config trait associated types

* Apply suggestions from code review

Co-authored-by: Alexander Theißen <[email protected]>

* more lil fixes from code review feedback

* lowered max call depth to satisfy mem limits

* fix node runtime pallet params to satisfy integrity check

* fix max call depth value calc

Co-authored-by: Alexander Theißen <[email protected]>

* Expose `UnknownBlock` error via `ApiError` (#12707)

* Expose `UnknownBlock` error via `ApiError`

In [certain cases](https://github.com/paritytech/polkadot/issues/5885) a
runtime api is called for an unknown block. For example a block which is
already pruned or on an abandon fork.

In such cases the correct error is returned but it is wrapped in
`ApiError::Application` and the only way to figure out what is the
problem is to inspect the actual message in the error. In polkadot for
example this usually happens when the runtime api version is being
queried. It's beneficial to be able to clearly separate such errors so i
that when they occur the client side can handle them more gracefully.
E.g. log less stressful error message than `State already discarded for
BlockId` or cancel any pending work related on this block.

* Update primitives/api/src/lib.rs

Co-authored-by: Bastian Köcher <[email protected]>

Co-authored-by: Bastian Köcher <[email protected]>

* Notification-based block pinning (#13157)

* Worker

* Reorganize and unpin onnotification drop

* Pin in state-db, pass block number

* Pin blocks in blockchain db

* Switch to reference counted LRU

* Disable pinning when we keep all blocks

* Fix pinning hint for state-db

* Remove pinning from backend layer

* Improve readability

* Add justifications to test

* Fix justification behaviour

* Remove debug prints

* Convert channels to tracing_unbounded

* Add comments to the test

* Documentation and Cleanup

* Move task start to client

* Simplify cache

* Improve test, remove unwanted log

* Add tracing logs, remove expect for block number

* Cleanup

* Add conversion method for unpin handle to Finalitynotification

* Revert unwanted changes

* Improve naming

* Make clippy happy

* Fix docs

Co-authored-by: Michal Kucharczyk <[email protected]>

* Use `NumberFor` instead of u64 in API

* Hand over weak reference to unpin worker task

* Unwanted

* &Hash -> Hash

* Remove number from interface, rename `_unpin_handle`, LOG_TARGET

* Move RwLock one layer up

* Apply code style suggestions

* Improve comments

* Replace lru crate by schnellru

* Only insert values for pinned items + better docs

* Apply suggestions from code review

Co-authored-by: Bastian Köcher <[email protected]>

* Improve comments, log target and test

Co-authored-by: Michal Kucharczyk <[email protected]>
Co-authored-by: Bastian Köcher <[email protected]>

* Make DispatchError impl MEL (#13169)

* Make DispatchError impl MEL

* Upgrade SCALE codec to support `codec(skip)` for MEL

Co-authored-by: Bastian Köcher <[email protected]>

* Remove fixtures from crate (#13181)

* txpool: LOG_TARGET const added (#13180)

* txpool: LOG_TARGET const added

part of: #12873

* LOG_TARGET added to tests mod

* txpool::api for api

* Apply suggestions from code review

Co-authored-by: Bastian Köcher <[email protected]>

* ".git/.scripts/commands/fmt/fmt.sh"

Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: command-bot <>

* Fix potential huge allocation as a result of `validate_block` output (#13183)

* Fix potential huge allocation as a result of `validate_block` output

* Address review comments; add more tests

* Update client/executor/wasmtime/src/runtime.rs

* Remove unnecessary comments

Co-authored-by: Bastian Köcher <[email protected]>

* sc-network: Ensure private addresses are disabled if requested (#13185)

When running with `--no-private-ipv4` the node should not trying to connect to any private ip
addresses. With the switch to libp2p this behavior was broken. Part of this version upgrade was the
following pr: https://github.com/libp2p/rust-libp2p/pull/2995. This pr changed the default cache
size of `libp2p-identity` from `0` aka disabled to `100`. Together with our implementation that was
calling into `identity` to request addresses for a given peer. Before the switch to libp2p 0.50.0
this was returning zero addresses, but now with the cache enabled it started to return addresses.
This pr fixes this by only letting discovery return addresses for a peer. It also ensures that we
filter private addresses if requested. The cache is also disabled to restore the previous caching
behavior, but it will actually not be called anymore.

* Warn validators with slow hardware (#12620)

* move Metric

* run hardware bench if validiator flag is being used

* fix rustdoc & update node-template

* fix

* unused improt

* warn

* move Requirement

* bench_result

* ensure_requirements

* make the code compile

* check if authority

* Update client/sysinfo/src/sysinfo.rs

Co-authored-by: Oliver Tale-Yazdi <[email protected]>

* nit fixes

* warning signs

* Update client/sysinfo/src/sysinfo.rs

Co-authored-by: Oliver Tale-Yazdi <[email protected]>

Co-authored-by: Oliver Tale-Yazdi <[email protected]>

* Use year 2023 in the License headers (#13193)

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Move slow hardware warning print logic to CLI (#13198)

* Move slow hardware warning print logic to CLI

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Update client/sysinfo/src/sysinfo.rs

Co-authored-by: Bastian Köcher <[email protected]>

* fmt

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Bastian Köcher <[email protected]>

* Fix flaky BABE test (#13199)

The `authoring_blocks` test of BABE was calculating the slot based on the timestamp it sometimes
failed in CI. The problem is that we combine all the notifications and authoring futures in one big
future. This one big future may first polls one authoring future to build a block. Then it polls all
notification futures again to import the block. Then some other authoring future is polled and
builds on the imported block using the same slot and making the import fail. The solution is that we
just artificially increase the slot to make the test work.

* Add debug info in assert_has_event and assert_last_event (#12979)

* improve debug info in assert_has_event and assert_last_event

* Apply suggestions from code review

Co-authored-by: Bastian Köcher <[email protected]>

Co-authored-by: Bastian Köcher <[email protected]>

* new proc-macro-based benchmarking syntax (#12924)

* add stub for new benchmark macro

* benchmark syntax

* add #[extrinsic call] separator

* parse #[benchmark] item as a function

* proper emission of error when #[extrinsic_call] annotation is missing

* clean up

* enclosing module via benchmarks! { } working

* use an attribute macro on the module instead of benchmarks! { }

* cargo fmt

* working component implementation

* WIP

* working

* add syntax for Linear<A, B>

* parsing of param ranges (still need to build tuple though)

* params parsing WIP

* clean up (don't need extrinsic call name)

* use proper Result syntax for BenchmarkDef parsing

* proper parsing of Linear<0, 1> style args

* successfully parse and make use of linear component ranges :boom:

* rename support variable => home because eventually will be moved

* compile-time check that param range types implement ParamRange

* switch to using balances as example, failing on instance pallet

* successfully set up __origin and __call with balances :boom:

* clean up

* use a module

* don't need a variable for transfer

* rename benchmark_transfer -> transfer because no longer conflicts

* clean up

* working with transfer_increasing_users as well :boom:

* re-add BareBlock

* add comments for undocumented structs+functions+traits

* refactor in preparation for removing module requirements

* switch to a block instead of a module

* use the outer macro pattern to to enable #[benchmarks] aggregation

* successfully generate SelectedBenchmark :boom:

* implement components for SelectedBenchmark

* implement instance for SelectedBenchmark

* properly track #[extra]

* working impl for fn benchmarks()

* run_benchmarks WIP

* finish run_benchmark! impl :boom:

* import balances transfer_best_case benchmark

* import transfer_keep_alive balances pallet benchmark

* import set_balance_creating balances pallet benchmark

* import set_balance_killing balances pallet benchmark

* import force_transfer balances pallet benchmark

* add #[extra] annotation and docs to transfer_increasing_users

* import transfer_all balances pallet benchmark

* import force_unreserve balances pallet benchmark

* prepare to implement impl_benchmark_test_suite!

* ensure tests cover #[extra] before and after #[benchmark] tag

* refactor

* clean up

* fix

* move to outer

* switch to benchmarks/instance_benchmarks

* test impl almost done, strange compiler error

* benchmark test suites working :boom:

* clean up

* add stub and basic parsing for where_clause

* working except where clause and extrinsic calls containing method chains

* assume option (2) for now wrt https://github.com/paritytech/substrate/pull/12924#issuecomment-1372938718

* clean up

* switch to attribute-style

* properly handle where clauses

* fix subtle missing where clause, now just MessageQueue issues

* fix block formatting in message-queue pallet

* switch to block vs non-block parsing of extrinsic call

* working now but some benchmark tests failing

* message-queue tests working (run order issue fixed) :tada:

* add comments and internal docs for fame_support_procedural::benchmark

* fix license years

* docs for lib.rs

* add docs to new support procedural macros

* don't allow #[benchmark] outside of benchmarking module

* add docs

* use benchmark(extra, skip_meta) style args

* update docs accordingly

* appease clippy

* bump ci

* add notes about `extra` and `skip_meta`

* fix doc tests

* re-run CI

* use `ignore` instead of `no_run` on doc examples

* bump CI

* replace some if-lets with if-elses

* more refactoring of if-let statements

* fix remaining if-lets in BenchmarkDef::from()

* fix if-lets in benchmarks()

* fix remaining if-lets, use nested find_map for extrinsic call

* switch to use #[extrinsic_call] or #[block] situationally

* refactor ExtrinsicCallDef => BenchmarkCallDef

* update docs with info about #[block]

* add macro stub for #[extrinsic_call]

* fix docs and add stub for #[block] as well

* remove unused extern crate line

* fix clippy nits

* Use V2 bench syntax in pallet-example-basic

Just testing the dev-ex...

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* carry over comment

* use curly-brace style for impl_benchmark_test_suite!

* remove unneeded parenthesis

* proper handling of _() extrinsic call style

* add docs for _() syntax

* fix crate access

* simplify keyword access

Co-authored-by: Keith Yeung <[email protected]>

* simplify module content destructuring

Co-authored-by: Keith Yeung <[email protected]>

* fix crate access "frame_benchmarking" => "frame-benchmarking", compiles

* use _() extrinsic call syntax where possible in balances

* simplify attr.path.segments.last()

Co-authored-by: Keith Yeung <[email protected]>

* fix compile error being suppressed

* simplify extrinsic call keyword parsing

Co-authored-by: Keith Yeung <[email protected]>

* use ? operator instead of return None

Co-authored-by: Keith Yeung <[email protected]>

* rename generics => type_use_generics
rename full_generics => type_impl_generics

* simplify extrinsic call extraction with transpose

* bump CI

* nit

* proper handling of too many + too few block/extrinsic call annotations

* change to B >= A

Co-authored-by: Oliver Tale-Yazdi <[email protected]>

* remove unneeded ignore

Co-authored-by: Oliver Tale-Yazdi <[email protected]>

* remove another ignore

Co-authored-by: Oliver Tale-Yazdi <[email protected]>

* add ui tests

* use _() style extrinsic call on accumulate_dummy

Co-authored-by: Oliver Tale-Yazdi <[email protected]>

* add range check to ParamRange

* ui test for bad param ranges

* fix failing example

* add ignore back to other failing example

* tweak expr_call span

Co-authored-by: Keith Yeung <[email protected]>

* fix typo

* eliminate a match

Co-authored-by: Keith Yeung <[email protected]>

* change pub fn benchmarks to return Result<TokenStream>

* fix origin error span

* more informative error for invalid benchmark parameter name

* fix spans on a few benchmark errors

* remove unneeded clone

* refactor inner loop of benchmark function parsing

* preserve mod attributes

* refactor outer loop of benchmark def parsing code, greatly simplified

* simplify to use a ? operator when parsing benchmark attr path

* fix another ? operator

* further simplify benchmark function attr parsing with more ? ops

* refactor extrinsic call handling to use if let rather than match

* replace is_ok => is_err

Co-authored-by: Keith Yeung <[email protected]>

* re-use name during expansion of benchmark def

* remove unneeded clone

* fix span for origin missing error

* fix missing semi

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Keith Yeung <[email protected]>
Co-authored-by: parity-processbot <>

* Rename `*-private-ipv4` to `*-private-ip` CLI args (#13208)

* Rename `*-private-ipv4` to `*-private-ip` CLI args

Renames the `*-private-ipv4` to `*-private-ip` in the CLI interface. The old names are staying as
alias, thus it will not break for anyone. Besides that it also fixes the naming in the rest of the code.

* FMT

* Remove dead code (#13213)

* [Fix] CountedMap::set now takes Counter into account (#13214)

* [Fix] CountedMap::set now takes Counter into account

* introduce tests for StorageMap

* debug assert events at genesis (#13217)

* BlockId removal: refactor: CallExecutor trait (#13173)

* BlockId removal: refactor: CallExecutor trait

It changes the arguments of CallExecutor methods:
-  `call`, 'contextual_call', 'runtime_version', 'prove_execution'

from: `BlockId<Block>` to: `Block::Hash`

This PR is part of BlockId::Number refactoring analysis (paritytech/substrate#11292)

* Apply suggestions from code review

Co-authored-by: Bastian Köcher <[email protected]>

* ".git/.scripts/commands/fmt/fmt.sh"

Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: command-bot <>

* service: storage monitor added (#13082)

* service: storage monitor added

Storage monitor added. It uses `notify` create to get notifications
about any changes to monitored path (which is database path).
Notifications are consumed in essential task which terminates when
available storage space drops below given threshold.

Closes: #12399

* Cargo.lock updated

* misspell

* fs events throttling added

* minor updates

* filter out non mutating events

* misspell

* ".git/.scripts/commands/fmt/fmt.sh"

* Update client/service/src/storage_monitor.rs

Co-authored-by: Anton <[email protected]>

* storage-monitor crate added

* cleanup: configuration + service builder

* storage_monitor in custom service (wip)

* copy-paste bad desc fixed

* notify removed

* storage_monitor added to node

* fix for clippy

* publish = false

* Update bin/node/cli/src/command.rs

Co-authored-by: Dmitry Markin <[email protected]>

* Apply suggestions from code review

Co-authored-by: Bastian Köcher <[email protected]>

* crate name: storage-monitor -> sc-storage-monitor

* error handling improved

* Apply suggestions from code review

Co-authored-by: Bastian Köcher <[email protected]>

* publish=false removed

Co-authored-by: command-bot <>
Co-authored-by: Anton <[email protected]>
Co-authored-by: Dmitry Markin <[email protected]>
Co-authored-by: Bastian Köcher <[email protected]>

* beefy: Add LOG_TARGET constant (#13222)

* LOG_TARGET const
* fmt

* Upgrade wasm-opt to 0.111.0 (#13038)

* storage-monitor: statvfs arithmetic bug fixed (#13234)

* Bump parity-db (#13226)

* pallet-assets: Rename `total_supply` to `amount` (#13229)

* pallet-assets: Rename `total_supply` to `amount`

We are actually passing the `amount` on assets being minted and not the total supply.

Closes: https://github.com/paritytech/substrate/issues/13210

* ".git/.scripts/commands/fmt/fmt.sh"

* Fix compilation

* FMT

Co-authored-by: command-bot <>

* Babe: bad epoch index with skipped epochs and warp sync (#13135)

* Detect and correct epoch-index for skipped epochs

* Code refactory

* Epoch index should be also be fixed for secondary claims with VRF

* Fix typo

* Make clippy happy

* Fix typo

* Trigger pipeline

* contracts: Deprecate random interface (#13204)

* Deprecate random interface

* Revert change to runtime file

* Fix docs

* Fix tests

* Rename to not_deprecated

* Apply suggestions from code review

Co-authored-by: Sasha Gryaznov <[email protected]>

* Deprecate `set_rent_allowance`

Co-authored-by: Sasha Gryaznov <[email protected]>

* [contracts] Add upfront weight of merkle trie proofs for storage reading functions (#13236)

* Add upfront weight of merkle trie proofs for storage reading functions

* drive-by fixes

* CI: Rewrite `check-each-crate` in python (#13238)

* CI: Rewrite `check-each-crate` in python

This is a much better readable version of the script and it should also work on Macos and not
siltently fail ;)

* Fix dumb bugs and print everything to stderr

* Don't buffer Python output

* :facepalm:

* :facepalm: :facepalm:

* Use check all until we have more macos runners

* Update scripts/ci/gitlab/check-each-crate.py

Co-authored-by: Oliver Tale-Yazdi <[email protected]>

* Update scripts/ci/gitlab/pipeline/test.yml

Co-authored-by: Vladimir Istyufeev <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>

* Fix try-runtime with create-snapshot (#13223)

* Fix try-runtime with create-snapshot

* Apply review suggestions

* reduce exec time of fast-unstake benchmarks (#13120)

* reduce exec time of fast-unstake benchmarks

* fix test

* fmt

* fix patch the tests

* fix patch the tests

* ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_fast_unstake

* add batch size as well

* update some benches to be better

* fix one last test

* fix

* ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_fast_unstake

* reduce time even more

* ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_fast_unstake

* fix tests

* nit

* remove

* improve the weight calc further

* ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_fast_unstake

* fix benchmarks

* ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_fast_unstake

* update

* fix

* fix

* fmt

* ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_fast_unstake

* ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_fast_unstake

* lots of changes again...

* smaller input

* update

* fmt

* ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_fast_unstake

* cleanup

* small simplification

* fmt

* reduce exec time a bit

* fix

* ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_fast_unstake

* test

* ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_fast_unstake

* increase again

* ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_fast_unstake

* review comments

* fmt

* fix

* ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_fast_unstake

Co-authored-by: command-bot <>

* Rework the trie cache (#12982)

* Rework the trie cache

* Align `state-machine` tests

* Bump `schnellru` to 0.1.1

* Fix off-by-one

* Align to review comments

* Bump `ahash` to 0.8.2

* Bump `schnellru` to 0.2.0

* Bump `schnellru` to 0.2.1

* Remove unnecessary bound

* Remove unnecessary loop when calculating maximum memory usage

* Remove unnecessary `mut`s

* Add task type label to metrics (#13240)

Signed-off-by: Andrei Sandu <[email protected]>

Signed-off-by: Andrei Sandu <[email protected]>

* upgrade nix to 0.26.1 (#13230)

* Add WeightToFee and LengthToFee impls to transaction-payment Runtime API (#13110)

* Add WeightToFee and LengthToFee impls to RPC

* Remove RPC additions

* Update frame/transaction-payment/rpc/runtime-api/src/lib.rs

Co-authored-by: joe petrowski <[email protected]>

* Add comments to length_to_fee and weight_to_fee

Co-authored-by: joe petrowski <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>

* Correct arithmetical semantic of `PerDispatchClass` (#13194)

* Fix PerDispatchClass arithmetic

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Test PerDispatchClass arithmetic

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add helpers for Weight

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Remove stale doc

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Dont mention Polkadot in Substrate

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Tests

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* fmt

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Remove saturating_ prefix

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Fix tests

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Fix usage

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Aura: Fix warp syncing (#13221)

* Aura: Fix warp syncing

We need to set the fork choice rule! When using Cumulus this is done by the `ParachainsBlockImport`,
but for standalone chains we still need this!

Closes: https://github.com/paritytech/substrate/issues/13220

* Improve fork choice

* Add Proof Size to Weight Output (#11637)

* initial impl

* add template test

* linear fit proof size

* always record proof when tracking storage

* calculate worst case pov

* remove duplicate worst case

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_assets --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/assets/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* more comment output

* add cli for worst case map size

* update name

* clap does not support underscores

* rename

* expose worst case map values

* improve some comments

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_assets --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/assets/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* update template

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_assets --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/assets/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* fix fmt

* more fmt

* more fmt

* Dont panic when there is no proof

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Fix test features

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Whitelist :extrinsic_index

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Use whitelist when recording proof

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add logs

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add PoV testing pallet

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Deploy PoV testing pallet

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Storage benches reside in the PoV pallet

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Linear regress PoV per component

Splits the PoV calculation into "measured" and "estimated".
The measured part is reported by the Proof recorder and linear
regressed over all components at once.
The estimated part is calculated as worst-case by using the max
PoV size per storage access and calculating one linear regress per
component. This gives each component a (possibly) independent PoV.
For now the measured size will always be lower than the PoV on
Polkadot since it is measured on an empty snapshot. The measured
part is therefor only used as diagnostic for debugging.

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Put PoV into the weight templates

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* fmt

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Extra alanysis choise for PoV

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add+Fix tests

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Make benches faster

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Cleanup

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Use same template comments

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* ".git/.scripts/bench-bot.sh" pallet dev pallet_balances

* ".git/.scripts/bench-bot.sh" pallet dev pallet_democracy

* Update referenda mock BlockWeights

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Take measured value size into account

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* clippy

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* ".git/.scripts/bench-bot.sh" pallet dev pallet_scheduler

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* proof_size: None

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* ugly, but works

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* wup

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add pov_mode attribute to the benchmarks! macro

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Use pov_mode attribute in PoV benchmarking

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Update tests

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Scheduler, Whitelist: Add pov_mode attr

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Update PoV weights

* Add CLI arg: default-pov-mode

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Fix tests

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* fmt

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* fix

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Revert "Update PoV weights"

This reverts commit 2f3ac2387396470b118122a6ff8fa4ee12216f4b.

* Revert "WIP"

This reverts commit c34b538cd2bc45da4544e887180184e30957904a.

* Revert first approach

This reverts commit range 8ddaa2fffe5930f225a30bee314d0b7c94c344dd^..4c84f8748e5395852a9e0e25b0404953fee1a59e

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Clippy

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add extra benchmarks

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_alliance

* ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_whitelist

* ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_scheduler

* fmt

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Clippy

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Clippy 🤦

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add reference benchmarks

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Fix doc comments

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Undo logging

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add 'Ignored' pov_mode

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Allow multiple attributes per benchmark

Turns out that the current benchmarking syntax does not support
multiple attributes per bench 🤦. Changing it to support that
since otherwise the `pov_mode` would conflict with the others.

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Validate pov_mode syntax

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Ignore PoV for all contract benchmarks

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Test

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* test

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Bump macro recursion limit

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* fmt

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Update contract weights

They dont have a PoV component anymore.

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* fix test ffs

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* pov_mode is unsupported in V2 syntax

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Fix pallet ui tests

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* update pallet ui

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Fix pallet ui tests

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Update weights

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Parity Bot <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: command-bot <>
Co-authored-by: Your Name <[email protected]>

* Use non-binary pronouns in comments. (#13209)

* use non binary pronouns in comments

* cargo fmt

* fix the use of "it" with "they" when dealing about an opperations identity

* migrate new benchmarking syntax from `frame_support::benchmarking` to `frame_benchmarking::v2` (#13235)

* * re-export frame_support::benchmarking in frame_benchmarking::
* prefer use frame_benchmarking::*; in examples, etc

* switch to frame_benchmarking::v2

* completely migrate new benchmarking code out of frame_support

* fix doc links

* remove unneeded return

Co-authored-by: Bastian Köcher <[email protected]>

* remove another unneeded return

Co-authored-by: Bastian Köcher <[email protected]>

* properly export all macros in v1

* refactor existing frame_benchmarking imports to use ::v1

---------

Co-authored-by: Bastian Köcher <[email protected]>

* mutate_exists for StorageValue with ValueQuery (#13245)

* mutate_exists for StorageValue with ValueQuery

Signed-off-by: muraca <[email protected]>

* added `#[crate::storage_alias]` to tests

Signed-off-by: muraca <[email protected]>

* added StorageEntryMetadata

Signed-off-by: muraca <[email protected]>

* Update frame/support/src/lib.rs

---------

Signed-off-by: muraca <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>

* Fix derive PassByInner with generics (#13247)

* Fix derive PassByInner with generics

* Update primitives/runtime-interface/proc-macro/src/pass_by/inner.rs

---------

Co-authored-by: Bastian Köcher <[email protected]>

* docs: Fix broken documentation links for pallets (#13241)

Fixes broken links to `Config` and `Call`, for READMEs the link has
been fixed by adding the missing "/pallet" path, and for rust docs we
let the compiler figure out the type's link by itself

Signed-off-by: Jonathas-Conceicao <[email protected]>

* sc-finality-grandpa: Warp proof generation can not expect justifications (#13249)

When a node is running with `--blocks-pruning` it will also prunes justifications. So, the warp
proof generation can not use `expect` for unwrapping the justification.

* update criterion to v0.4.0 (#13142)

* fix up template (#13205)

* Remove `uncles` related code (#13216)

The code was added without any clear usage. The inherent for example is not benchmarked and not used.

* Implement RIType traits for u8 array with an arbitrary size (#13256)

* grandpa: cleanup stale entries in set id session mapping (#13237)

* grandpa: cleanup stale entries in set id session mapping

* Update frame/grandpa/src/migrations.rs

Co-authored-by: Bastian Köcher <[email protected]>

* grandpa: remove unused import

* grandpa: migration off-by-one

* Update frame/grandpa/src/lib.rs

Co-authored-by: Anton <[email protected]>

* Update frame/grandpa/src/lib.rs

Co-authored-by: Anton <[email protected]>

* grandpa: MaxSetIdSessionEntries as u64

* node-template: fix MaxSetIdSessionEntries type

---------

Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: Anton <[email protected]>

* Benchmark's successful origin api update (#13146)

* try successful origin unimplemented by default

* error as a default impl for try_successful_origin

* remove successful_origin func of EnsureOrigin trait

* default impl -> unimplemented!()

* update EnsureOriginWithArg

* fix EnsureOriginWithArg

* prefix unused arg with underscore

* use try_successful_origin instead successful_origin, map err to Weightless

* fix tests

* remove default impl

* unwrap for indirect origin dep

* replace unwrap by expect with a message

---------

Co-authored-by: parity-processbot <>

* hooks default impl missing where clause (#13264)

* hooks default impl missing where clause

* add tests

* Update frame/support/test/tests/pallet_ui/pass/where_clause_missing_hooks.rs

---------

Co-authored-by: parity-processbot <>

* implemented `contains_prefix` for StorageDoubleMap and StorageNMap (#13232)

* implemented `contains_prefix` for StorageDoubleMap and StorageNMap

Signed-off-by: muraca <[email protected]>

* match prefix to next_key

Signed-off-by: muraca <[email protected]>

* warning unexpected behaviour with empty keys

Signed-off-by: muraca <[email protected]>

* clarifications for unhashed::contains_prefixed_key

Signed-off-by: muraca <[email protected]>

* added tests for StorageNMap

Signed-off-by: muraca <[email protected]>

---------

Signed-off-by: muraca <[email protected]>

* Calling proxy doesn't remove announcement (#13267)

* Calling proxy doesn't remove announcement

* Update frame/proxy/src/tests.rs

Co-authored-by: Kian Paimani <[email protected]>

* fmt

---------

Co-authored-by: Kian Paimani <[email protected]>

* Fee and tip represented as asset ID inside `AssetTxFeePaid` (#13083)

* fee & tip in the asset ID Balance type

* docs

* rewrite

* update runtime config

* docs

* Move beefy-merkle-tree to utils/binary-merkle-tree and make it generic (#13076)

* move BeefyMmrApi to pallet-beefy-mmr

* fix test_utils use pallet-beefy-mmr BeefyMmrApi

* Move beefy-merkle-tree to utils and Rename to Merkle-tree

* fix fmt and test

* Update merkle-tree to binary-merkle-tree and Remove Keccak256 mod from merkle-tree

* change merkle-tree name to binary-merkle-tree

* mirr fix

* Metadata V15: Derive `TypeInfo` for describing runtime types (#13272)

* scale_info: Derive TypeInfo for types present in runtime API

Signed-off-by: Alexandru Vasile <[email protected]>

* cargo: Update Cargo.lock

Signed-off-by: Alexandru Vasile <[email protected]>

---------

Signed-off-by: Alexandru Vasile <[email protected]>

* benchmarks: EnsureRankedMember must add ranked members (#13297)

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Minor: Update output validity tests (#13190)

* Minor: Update output validity tests

Quick follow-up to https://github.com/paritytech/substrate/pull/13183.

Mainly, I wanted to double check that the `test_return_max_memory_offset` test doesn't pass just
because the output length is 0.

I also:

- Organized these tests into a module.
- Added a comment explaining why we don't use the `wasm_export_functions` macro.

* Update test based on review comment

* BEEFY: define on-chain beefy-genesis and use it to coordinate voter initialization (#13215)

* beefy: add support to configure BEEFY genesis

* client/beefy: more flexible test runtime api

* client/beefy: add tests for custom BEEFY genesis

* client/beefy: ignore old state that didn't account for pallet genesis

* client/beefy: fix clippy

* frame/beefy: default BEEFY-genesis is block One::one()

* frame/beefy: add extra doc comments

---------

Co-authored-by: parity-processbot <>

* feat: add event SkepticsChosen event in society (#13291)

* feat: add event SkepticsChosen event in society

* feat: add test for SkepticsChosen event

* feat(client): significantly increase wasm instance limits (#13298)

Following https://github.com/paritytech/substrate/issues/11949, this PR will allow parachains with runtimes bigger than Kusama to use the pooling strategy.

* Remove in-tree bounded types and use bounded-collections crate (#13243)

* Remove in-tree bounded types and use bounded-collections crate

* Fixes

* Bump bounded-collections version

* cargo fmt

* Bump bounded-collections

* Only export non-bounded types at the top level

* Fixes

* Bump bounded-collections

* update linregress in frame-benchmarking to 0.5.1 (#13310)

* update nalgebra in frame-benchmarking to 0.5.0

* upgrade to 0.5.1 to incorporate upstream fix in linregress

* [client/network] remove peer entry from `ephemeral_addresses` (#13084)

* [client/network] remove peer entry from `ephemeral_addresses`

if there are no addresses associated with that peer

* refactor as per @bkchr suggestion

https://github.com/paritytech/substrate/pull/13084#discussion_r1068028534

* add missing import

* fix error

* rpc-spec-v2/tx: Fix error typo (#13307)

Signed-off-by: Alexandru Vasile <[email protected]>

* BEEFY: client support for detecting equivocated votes (#13285)

* client/beefy: detect equivocated votes

* client/beefy: make sure to persist state after voting

* client/beefy: drop never-used aux-schema v2 migration

* impl review suggestion

---------

Signed-off-by: Adrian Catangiu <[email protected]>

* Bump `wasmtime` to 5.0.0 (and a few other deps) (#13160)

* Bump `wasmtime` to 4.0.0 (and a few other deps)

* Use `Error::msg` instead of `anyhow!`

* Bump `wasmtime` to 5.0.0

* Update `Cargo.lock`

* Add `wasmtime` feature to `sp-wasm-interface` dependency

* Fix: Off-chain-worker example (#13300)

* fix: divider

* update comment

* Rename `pallet-random-collective-flip` to Insecure... (#13301)

* Rename pallet-random-collective-flip to Insecure...

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* fmt

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

---------

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* `zombienet`: warp-sync tests for validators  (#13078)

* zombienet validators warp sync draft

Sketch of warp-sync test for validators.
Not tested.

Follow-up of: #12769

* yet another warp-sync scenario added

- all validators are synced from DB,
- some full nodes are synced from DB,
- full-node is warp-synced

* fixes

* fixes

* missing files

* path fixed

---------

Co-authored-by: parity-processbot <>

* Disable default features for `strum` (#13326)

* Fix block pruning (#13323)

* Fix block pruning (#13323)

* Referendum proposal's metadata (#12568)

* referenda metadata

* todo comment

* remove TODO, update rustdocs

* referenda clear_metadata origin signed or root

* referenda metadata unit tests

* drop schema type for referenda metadata

* remove metadata type

* referenda metadata benches

* note different preimages

* metadata for democracy pallet

* metadata democracy pallet tests and benches

* fix cargo clippy

* update docs

* ".git/.scripts/bench-bot.sh" pallet dev pallet_democracy

* ".git/.scripts/bench-bot.sh" pallet dev pallet_referenda

* Update the doc frame/democracy/src/lib.rs

Co-authored-by: Roman Useinov <[email protected]>

* Update the doc frame/democracy/src/lib.rs

Co-authored-by: Anthony Alaribe <[email protected]>

* reference instead clone for take

Co-authored-by: Anthony Alaribe <[email protected]>

* error rename BadMetadata to PreimageNotExist

* clear metadata within internal_cancel_referendum fn

* remove redundant clone

* collapse metadata api into one set_metadata method

* fmt

* review fixes

* not request preimage on set_metadata

* rename events and update docs

* ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_democracy

* ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_referenda

* rename reset_metadata to transfer_metadata

---------

Co-authored-by: command-bot <>
Co-authored-by: Roman Useinov <[email protected]>
Co-authored-by: Anthony Alaribe <[email protected]>

* Improve test coverage of the `Notifications` protocol (#13033)

* Add handler and upgrade tests

* Add tests for `behaviour.rs`

* Apply review comments

* Update dependencies

* Apply suggestions from code review

Co-authored-by: Dmitry Markin <[email protected]>

* Apply review comments

* Fix clippy

* Update mockall

* Apply review comment

---------

Co-authored-by: Dmitry Markin <[email protected]>

* Configurable voting-degree in council elections pallet (#13305)

* configurable council elections pallet

* configurable council elections pallet

* add warning

* reduce sizes

* ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_elections_phragmen

* fix stuff

* make assert

* fix docs

* fix docs again

* fix docs again

* Update frame/elections-phragmen/src/lib.rs

Co-authored-by: Gonçalo Pestana <[email protected]>

* Update frame/elections-phragmen/src/lib.rs

Co-authored-by: Gonçalo Pestana <[email protected]>

* Update frame/elections-phragmen/src/lib.rs

Co-authored-by: Gonçalo Pestana <[email protected]>

* fix docs

---------

Co-authored-by: command-bot <>
Co-authored-by: Gonçalo Pestana <[email protected]>

* Rework generated API docs (#13178)

* pallet-scheduler: Ensure we request a preimage (#13340)

* pallet-scheduler: Ensure we request a preimage

The scheduler was not requesting a preimage. When a preimage is requested, a user can deposit it
without paying any fees.

* Review changes

* [Fix] Try-state feature-gated for BagsList (#13296)

* [Fix] Try-state feature-gated for BagsList

* fix comment

* fix try_state remote-tests

* feature-gate try-state remote test for bags-list

* remove try-state from a migration

* more SortedListProvider fixes

* more fixes

* more fixes to allow do_try_state usage in other crates

* do-try-state for fuzz

* more fixes

* more fixes

* remove feature-flag

* do-try-state

* fix review comments

* Update frame/bags-list/src/mock.rs

Co-authored-by: Anton <[email protected]>

---------

Co-authored-by: parity-processbot <>
Co-authored-by: Anton <[email protected]>

* bump version of zombienet and update snaps links (#13359)

* Fix longest chain finalization target lookup (#13289)

* Finalization target should be chosed as some ancestor of SelectChain::best_chain

* More test assertions

* Improve docs

* Removed stale docs

* Rename 'target' to 'base' in lookup method

* Fix typo

* Apply suggestions from code review

Co-authored-by: André Silva <[email protected]>

* Rename 'target_hash' to 'base_hash' in 'SelectChain::finality_target()'

* Apply suggestions from code review

Co-authored-by: Anton <[email protected]>

* Docs improvement

* Doc fix

* Apply suggestions from code review

Co-authored-by: Bastian Köcher <[email protected]>

* Apply more code suggestions

---------

Co-authored-by: André Silva <[email protected]>
Co-authored-by: Anton <[email protected]>
Co-authored-by: Bastian Köcher <[email protected]>

* SetMembers configurable origin (#13159)

* SetMembers configurable origin

* root origin comment replaced

* fmt

* grandpa: don't error if best block and finality target are inconsistent (#13364)

* grandpa: don't error if best block and finality target are inconsistent

* grandpa: add test for best block override

* grandpa: make clippy happy

* grandpa: log selectchain override as debug instead of warn

* grandpa: don't error if best block and finality target are inconsistent (#13364)

* grandpa: don't error if best block and finality target are inconsistent

* grandpa: add test for best block override

* grandpa: make clippy happy

* grandpa: log selectchain override as debug instead of warn

* Improve Weight Template and API (#13355)

* improve weights template and api

* follow template

* [ci] Change label checker (#13360)

* [ci] Change label checker

* rm pr autolabel

* fix specs file name to substrate

* client/beefy: request justifs from peers further in consensus (#13343)

For on-demand justifications, peer selection is based on witnessed
gossip votes. This commit changes the condition for selecting a peer
to request justification for `block` from
"last voted on >= `block`" to "peer last voted on strict > `block`".

When allowing `>=` we see nodes continuously spamming unsuccessful
on-demand requests to nodes which are still voting on a block without
having a justification available.

One way to fix the spam would be to add some rate-limiting or backoff
period when requesting justifications.

The other solution (present in this commit) is to simply request
justifications from peers that are voting on future blocks so we know
they're _guaranteed_ to have the wanted mandatory justification
available to send back.

Signed-off-by: acatangiu <[email protected]>

* [ci] Change GHA to add J2 labels instead Z0 (#13375)

* sc-client-db: Fix `PruningMode::ArchiveCanonical` (#13361)

* sc-client-db: Fix `PruningMode::ArchiveCanonical`

When running a node with `--state-pruning archive-canonical` it was directly failing on genesis.
There was an issue in the state-db `pin` implementation. It was not checking the state of a block
correctly when running with archive canonical (and also not for every other block after they are canonicalized).

* FMT

* benchmarks: EnsureRankedMember must add ranked members (#13297) (#13348)

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>

* subkey: only decode hex if requested, CLI `0x` prefixed hex for all `stdout` (#13258)

* Only decode hex if requested

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Cleanup code

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add some tests

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add license

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Docs

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Clippy

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* bump version, breaking (tiny) change in output.

* Move integration tests to own folder

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

---------

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Dan Shields <[email protected]>

* [Feature] Introduce storage_alias for CountedStorageMap (#13366)

* [Feature] Introduce storagage_alias for CountedStorageMap

* bit more dry

* bit more dry

* address review comments

* some tests and fixes

* fix ui tests

* Apply suggestions from code review

Co-authored-by: Bastian Köcher <[email protected]>

* compare metadata

---------

Co-authored-by: parity-processbot <>
Co-authored-by: Bastian Köcher <[email protected]>

* [NFTs] Offchain mint (#13158)

* Allow to mint with the pre-signed signatures

* Another try

* WIP: test encoder

* Fix the deposits

* Refactoring + tests + benchmarks

* Add sp-core/runtime-benchmarks

* Remove sp-core from dev deps

* Enable full_crypto for benchmarks

* Typo

* Fix

* Update frame/nfts/src/mock.rs

Co-authored-by: Squirrel <[email protected]>

* ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_nfts

* Add docs

* Add attributes into the pre-signed object & track the deposit owner for attributes

* Update docs

* ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_nfts

* Add the number of attributes provided to weights

* Apply suggestions

* Remove dead code

* Remove Copy

* Fix docs

* Update frame/nfts/src/lib.rs

Co-authored-by: Oliver Tale-Yazdi <[email protected]>

* Update frame/nfts/src/lib.rs

Co-authored-by: Oliver Tale-Yazdi <[email protected]>

---------

Co-authored-by: Squirrel <[email protected]>
Co-authored-by: command-bot <>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>

* feat: improve FinalityProofProvider api (#13374)

* feat: improve prove_finality api and export it

* fmt

* fix

* improve prove_finality and kept private

* Update client/finality-grandpa/src/finality_proof.rs

Co-authored-by: André Silva <[email protected]>

* add `prove_finality_proof` to `FinalityProofProvider`

* fix some and impl Clone for FinalityProofProvider

* improve by suggestions

---------

Co-authored-by: André Silva <[email protected]>

* cleanup `<weight></weight>` from docs comments (#13350)

* cleanup <weight></weight> from docs comments

* Changes to address review commnets

* Fix CI cargo test --docs

---------

Co-authored-by: parity-processbot <>

* zombienet: is up timtout increased to 30s (#13386)

* pallet-timestamp: Remove `ValidAtTimestamp` error variant (#13346)

* pallet-timestamp: Remove `ValidAtTimestamp` error variant

The error variant wasn't that useful and it was also used wrongly in the code. In the code we
returned this variant when the `timestamp < minimum`. The problem of this is that we waited on the
node side some time, but then `set` function rejects the timestamp because of the same check (the
timestamp in the block stays the same). We ensure that the timestamp isn't drifting too much in the
future, but waiting for the timestamp to be "valid" would open some attack vector. The consensus
protocols also compare the slots in the blocks to ensure that there isn't a block from the future
and in the runtime we then ensure that `slot = timestamp / slot_duration`. So, we can just remove
this variant and replace it with a new variant `TimeBetweenBlocksTooShort` to not even try importing
a block which uses a too short delay since the last block.

* Update primitives/timestamp/src/lib.rs

Co-authored-by: André Silva <[email protected]>

* Rename to `TooEarly`

* FMT

---------

Co-authored-by: André Silva <[email protected]>

* add warp to target block for parachains (#12761)

* add warp to target block for parachains

* fix for failing tests

* format using  `Cargo +nightly fmt`

* Remove blocking based on PR comments and create new `WarpSync` on poll

* remove method from trait

* add tests for wait for target

* Update client/network/common/src/sync/warp.rs

Co-authored-by: Bastian Köcher <[email protected]>

* Update client/network/common/src/sync/warp.rs

Co-authored-by: Bastian Köcher <[email protected]>

* Update client/network/test/src/sync.rs

Co-authored-by: Bastian Köcher <[email protected]>

* Update client/network/test/src/sync.rs

Co-authored-by: Bastian Köcher <[email protected]>

* Update client/network/test/src/lib.rs

Co-authored-by: Bastian Köcher <[email protected]>

* Update client/network/test/src/sync.rs

Co-authored-by: Bastian Köcher <[email protected]>

* Update client/network/test/src/sync.rs

Co-authored-by: Bastian Köcher <[email protected]>

* code refactor based on pr comments

* Second round of PR comments

* Third round of pr comments

* add comments to explain logic

* Update client/network/sync/src/lib.rs

Co-authored-by: Bastian Köcher <[email protected]>

* Update client/network/sync/src/lib.rs

Co-authored-by: Bastian Köcher <[email protected]>

* Update client/network/sync/src/warp.rs

Co-authored-by: Bastian Köcher <[email protected]>

* Update client/network/sync/src/warp.rs

Co-authored-by: Bastian Köcher <[email protected]>

* Update client/network/sync/src/warp.rs

Co-authored-by: Bastian Köcher <[email protected]>

* Update client/network/sync/src/lib.rs

Co-authored-by: Bastian Köcher <[email protected]>

* code refactor based on last PR comments

* move warp sync polling before `process_outbound_requests`

Add error message if target block fails to be retreived

* Update client/network/sync/src/warp.rs

Co-authored-by: Arkadiy Paronyan <[email protected]>

* Update client/network/sync/src/lib.rs

Co-authored-by: Bastian Köcher <[email protected]>

* Update client/network/sync/src/warp.rs

Co-authored-by: Bastian Köcher <[email protected]>

* fmt after code suggestions

* rebase changes

* Bring down the node if the target block fails to return

* Revert "Bring down the node if the target block fails to return"

This reverts commit c0ecb220d66dd8e7b1a5ee29831b776f4f18d024.

* Update client/network/common/src/sync/warp.rs

Co-authored-by: Michal Kucharczyk <[email protected]>

* Update client/network/common/src/sync/warp.rs

Co-authored-by: Michal Kucharczyk <[email protected]>

* use matching on polling to avoid calling poll more than once

* Update client/network/sync/src/warp.rs

Co-authored-by: Bastian Köcher <[email protected]>

* Update client/network/sync/src/warp.rs

Co-authored-by: Bastian Köcher <[email protected]>

* Update client/network/sync/src/warp.rs

Co-authored-by: Bastian Köcher <[email protected]>

* fix typo on comment

* update snapshot with new folder structure

* Upload snapshot

* Bump zombienet

* bump zombienet again

* Improve test

* Update client/network/test/src/sync.rs

Co-authored-by: Bastian Köcher <[email protected]>

* Update client/network/test/src/sync.rs

Co-authored-by: Bastian Köcher <[email protected]>

* fix tests

* dummy commit to restart builds

* Converted the target block to an optional value that is set to `None` when an error occurs

* dummy commit to restart builds

---------

Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: Arkadiy Paronyan <[email protected]>
Co-authored-by: Michal Kucharczyk <[email protected]>
Co-authored-by: Sebastian Kunert <[email protected]>

* [contracts] make `debug_message` execution outcome invariant to node debug logging setting (#13197)

* update benchmark for seal_debug_message

* add seal_debug_message_per_kb benchmark

* un-fallable debug buffer: silently drops excessive and wrong utf-8 encoded messages

* charge debug_message per byte of the message

* impr…
nathanwhit pushed a commit to nathanwhit/substrate that referenced this pull request Jul 19, 2023
* initial impl

* add template test

* linear fit proof size

* always record proof when tracking storage

* calculate worst case pov

* remove duplicate worst case

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_assets --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/assets/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* more comment output

* add cli for worst case map size

* update name

* clap does not support underscores

* rename

* expose worst case map values

* improve some comments

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_assets --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/assets/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* update template

* cargo run --quiet --profile=production  --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark pallet --chain=dev --steps=50 --repeat=20 --pallet=pallet_assets --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/assets/src/weights.rs --template=./.maintain/frame-weight-template.hbs

* fix fmt

* more fmt

* more fmt

* Dont panic when there is no proof

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Fix test features

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Whitelist :extrinsic_index

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Use whitelist when recording proof

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add logs

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add PoV testing pallet

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Deploy PoV testing pallet

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Storage benches reside in the PoV pallet

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Linear regress PoV per component

Splits the PoV calculation into "measured" and "estimated".
The measured part is reported by the Proof recorder and linear
regressed over all components at once.
The estimated part is calculated as worst-case by using the max
PoV size per storage access and calculating one linear regress per
component. This gives each component a (possibly) independent PoV.
For now the measured size will always be lower than the PoV on
Polkadot since it is measured on an empty snapshot. The measured
part is therefor only used as diagnostic for debugging.

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Put PoV into the weight templates

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* fmt

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Extra alanysis choise for PoV

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add+Fix tests

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Make benches faster

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Cleanup

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Use same template comments

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* ".git/.scripts/bench-bot.sh" pallet dev pallet_balances

* ".git/.scripts/bench-bot.sh" pallet dev pallet_democracy

* Update referenda mock BlockWeights

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Take measured value size into account

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* clippy

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* ".git/.scripts/bench-bot.sh" pallet dev pallet_scheduler

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* proof_size: None

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* ugly, but works

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* wup

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* WIP

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add pov_mode attribute to the benchmarks! macro

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Use pov_mode attribute in PoV benchmarking

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Update tests

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Scheduler, Whitelist: Add pov_mode attr

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Update PoV weights

* Add CLI arg: default-pov-mode

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Fix tests

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* fmt

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* fix

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Revert "Update PoV weights"

This reverts commit 2f3ac23.

* Revert "WIP"

This reverts commit c34b538.

* Revert first approach

This reverts commit range 8ddaa2f^..4c84f87

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Clippy

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add extra benchmarks

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_alliance

* ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_whitelist

* ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_scheduler

* fmt

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Clippy

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Clippy 🤦

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add reference benchmarks

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Fix doc comments

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Undo logging

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Add 'Ignored' pov_mode

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Allow multiple attributes per benchmark

Turns out that the current benchmarking syntax does not support
multiple attributes per bench 🤦. Changing it to support that
since otherwise the `pov_mode` would conflict with the others.

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Validate pov_mode syntax

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Ignore PoV for all contract benchmarks

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Test

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* test

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Bump macro recursion limit

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* fmt

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Update contract weights

They dont have a PoV component anymore.

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* fix test ffs

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* pov_mode is unsupported in V2 syntax

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Fix pallet ui tests

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* update pallet ui

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Fix pallet ui tests

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

* Update weights

Signed-off-by: Oliver Tale-Yazdi <[email protected]>

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Parity Bot <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: command-bot <>
Co-authored-by: Your Name <[email protected]>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
B1-note_worthy Changes should be noted in the release notes C1-low PR touches the given topic and has a low impact on builders. D5-nicetohaveaudit ⚠️ PR contains trivial changes to logic that should be properly reviewed. T1-runtime This PR/Issue is related to the topic “runtime”.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants