aboutsummaryrefslogtreecommitdiff
path: root/test/trace_processor/diff_tests
diff options
context:
space:
mode:
Diffstat (limited to 'test/trace_processor/diff_tests')
-rw-r--r--test/trace_processor/diff_tests/include_index.py28
-rw-r--r--test/trace_processor/diff_tests/metrics/android/ad_services_metric.py6
-rw-r--r--test/trace_processor/diff_tests/metrics/android/android_auto_multiuser.textproto72
-rw-r--r--test/trace_processor/diff_tests/metrics/android/android_binder_metric.out260
-rwxr-xr-xtest/trace_processor/diff_tests/metrics/android/android_blocking_calls_cuj_metric.py1
-rw-r--r--test/trace_processor/diff_tests/metrics/android/tests.py71
-rw-r--r--test/trace_processor/diff_tests/metrics/memory/tests.py11
-rw-r--r--test/trace_processor/diff_tests/metrics/startup/android_startup.out16
-rw-r--r--test/trace_processor/diff_tests/metrics/startup/android_startup_attribution.out35
-rw-r--r--test/trace_processor/diff_tests/metrics/startup/android_startup_attribution_slow.out36
-rw-r--r--test/trace_processor/diff_tests/metrics/startup/android_startup_breakdown.out73
-rw-r--r--test/trace_processor/diff_tests/metrics/startup/android_startup_breakdown_slow.out61
-rw-r--r--test/trace_processor/diff_tests/metrics/startup/android_startup_broadcast_multiple.out24
-rw-r--r--test/trace_processor/diff_tests/metrics/startup/android_startup_installd_dex2oat.out44
-rw-r--r--test/trace_processor/diff_tests/metrics/startup/android_startup_installd_dex2oat_slow.out77
-rw-r--r--test/trace_processor/diff_tests/metrics/startup/android_startup_lock_contention_slow.out40
-rw-r--r--test/trace_processor/diff_tests/metrics/startup/android_startup_minsdk33.out22
-rw-r--r--test/trace_processor/diff_tests/metrics/startup/android_startup_process_track.out28
-rw-r--r--test/trace_processor/diff_tests/metrics/startup/android_startup_slow.out51
-rw-r--r--test/trace_processor/diff_tests/metrics/startup/android_startup_unlock.out11
-rw-r--r--test/trace_processor/diff_tests/parser/android/input_event_trace.textproto1008
-rw-r--r--test/trace_processor/diff_tests/parser/android/tests_android_input_event.py272
-rw-r--r--test/trace_processor/diff_tests/parser/android/tests_viewcapture.py81
-rw-r--r--test/trace_processor/diff_tests/parser/android/viewcapture.textproto128
-rw-r--r--test/trace_processor/diff_tests/parser/parsing/systrace_html.out4
-rw-r--r--test/trace_processor/diff_tests/parser/parsing/tests.py21
-rw-r--r--test/trace_processor/diff_tests/parser/parsing/tests_traced_stats.py104
-rw-r--r--test/trace_processor/diff_tests/parser/process_tracking/process_tracking_exec.py11
-rw-r--r--test/trace_processor/diff_tests/parser/process_tracking/synth_process_tracking.py2
-rw-r--r--test/trace_processor/diff_tests/parser/sched/tests.py31
-rw-r--r--test/trace_processor/diff_tests/parser/simpleperf/clocks_align_test.sql99
-rw-r--r--test/trace_processor/diff_tests/parser/simpleperf/perf_test.sql45
-rw-r--r--test/trace_processor/diff_tests/parser/simpleperf/perf_with_add_counter_test.sql67
-rw-r--r--test/trace_processor/diff_tests/parser/simpleperf/tests.py160
-rw-r--r--test/trace_processor/diff_tests/parser/translated_args/process_track_name.textproto100
-rw-r--r--test/trace_processor/diff_tests/parser/translated_args/tests.py19
-rw-r--r--test/trace_processor/diff_tests/parser/zip/stacks_test.sql48
-rw-r--r--test/trace_processor/diff_tests/parser/zip/tests.py60
-rw-r--r--test/trace_processor/diff_tests/stdlib/android/tests.py20
-rw-r--r--test/trace_processor/diff_tests/stdlib/counters/tests.py2
-rw-r--r--test/trace_processor/diff_tests/stdlib/cpu/tests.py167
-rw-r--r--test/trace_processor/diff_tests/stdlib/dynamic_tables/tests.py7
-rw-r--r--test/trace_processor/diff_tests/stdlib/export/firefox_profile.out2
-rw-r--r--test/trace_processor/diff_tests/stdlib/export/tests.py29
-rw-r--r--test/trace_processor/diff_tests/stdlib/gpu/tests.py40
-rw-r--r--test/trace_processor/diff_tests/stdlib/memory/tests.py111
-rw-r--r--test/trace_processor/diff_tests/stdlib/sched/tests.py102
-rw-r--r--test/trace_processor/diff_tests/syntax/table_tests.py32
-rw-r--r--test/trace_processor/diff_tests/tables/tests_counters.py55
-rw-r--r--test/trace_processor/diff_tests/tables/tests_sched.py92
50 files changed, 3593 insertions, 293 deletions
diff --git a/test/trace_processor/diff_tests/include_index.py b/test/trace_processor/diff_tests/include_index.py
index dd8fadedc..d3dba5ceb 100644
--- a/test/trace_processor/diff_tests/include_index.py
+++ b/test/trace_processor/diff_tests/include_index.py
@@ -48,6 +48,7 @@ from diff_tests.metrics.startup.tests_metrics import StartupMetrics
from diff_tests.metrics.webview.tests import WebView
from diff_tests.parser.android_fs.tests import AndroidFs
from diff_tests.parser.android.tests import AndroidParser
+from diff_tests.parser.android.tests_android_input_event import AndroidInputEvent
from diff_tests.parser.android.tests_bugreport import AndroidBugreport
from diff_tests.parser.android.tests_games import AndroidGames
from diff_tests.parser.android.tests_inputmethod_clients import InputMethodClients
@@ -57,6 +58,7 @@ from diff_tests.parser.android.tests_protolog import ProtoLog
from diff_tests.parser.android.tests_shell_transitions import ShellTransitions
from diff_tests.parser.android.tests_surfaceflinger_layers import SurfaceFlingerLayers
from diff_tests.parser.android.tests_surfaceflinger_transactions import SurfaceFlingerTransactions
+from diff_tests.parser.android.tests_viewcapture import ViewCapture
from diff_tests.parser.atrace.tests import Atrace
from diff_tests.parser.atrace.tests_error_handling import AtraceErrorHandling
from diff_tests.parser.chrome.tests import ChromeParser
@@ -75,6 +77,7 @@ from diff_tests.parser.network.tests import NetworkParser
from diff_tests.parser.parsing.tests import Parsing
from diff_tests.parser.parsing.tests_debug_annotation import ParsingDebugAnnotation
from diff_tests.parser.parsing.tests_memory_counters import ParsingMemoryCounters
+from diff_tests.parser.parsing.tests_traced_stats import ParsingTracedStats
from diff_tests.parser.parsing.tests_rss_stats import ParsingRssStats
from diff_tests.parser.power.tests_energy_breakdown import PowerEnergyBreakdown
from diff_tests.parser.power.tests_entity_state_residency import EntityStateResidency
@@ -87,6 +90,7 @@ from diff_tests.parser.profiling.tests_heap_graph import ProfilingHeapGraph
from diff_tests.parser.profiling.tests_heap_profiling import ProfilingHeapProfiling
from diff_tests.parser.profiling.tests_llvm_symbolizer import ProfilingLlvmSymbolizer
from diff_tests.parser.sched.tests import SchedParser
+from diff_tests.parser.simpleperf.tests import Simpleperf
from diff_tests.parser.smoke.tests import Smoke
from diff_tests.parser.smoke.tests_compute_metrics import SmokeComputeMetrics
from diff_tests.parser.smoke.tests_json import SmokeJson
@@ -94,6 +98,7 @@ from diff_tests.parser.smoke.tests_sched_events import SmokeSchedEvents
from diff_tests.parser.track_event.tests import TrackEvent
from diff_tests.parser.translated_args.tests import TranslatedArgs
from diff_tests.parser.ufs.tests import Ufs
+from diff_tests.parser.zip.tests import Zip
from diff_tests.stdlib.android.frames_tests import Frames
from diff_tests.stdlib.android.startups_tests import Startups
from diff_tests.stdlib.android.tests import AndroidStdlib
@@ -101,8 +106,10 @@ from diff_tests.stdlib.chrome.chrome_stdlib_testsuites import CHROME_STDLIB_TEST
from diff_tests.stdlib.common.tests import StdlibCommon
from diff_tests.stdlib.common.tests import StdlibCommon
from diff_tests.stdlib.counters.tests import StdlibCounterIntervals
-from diff_tests.stdlib.cpu.tests import CpuStdlib
+from diff_tests.stdlib.cpu.tests import Cpu
from diff_tests.stdlib.dynamic_tables.tests import DynamicTables
+from diff_tests.stdlib.export.tests import ExportTests
+from diff_tests.stdlib.gpu.tests import Gpu
from diff_tests.stdlib.graphs.dominator_tree_tests import DominatorTree
from diff_tests.stdlib.graphs.partition_tests import GraphPartitionTests
from diff_tests.stdlib.graphs.search_tests import GraphSearchTests
@@ -110,6 +117,7 @@ from diff_tests.stdlib.intervals.intersect_tests import IntervalsIntersect
from diff_tests.stdlib.intervals.tests import StdlibIntervals
from diff_tests.stdlib.linux.tests import LinuxStdlib
from diff_tests.stdlib.memory.heap_graph_dominator_tree_tests import HeapGraphDominatorTree
+from diff_tests.stdlib.memory.tests import Memory
from diff_tests.stdlib.pkvm.tests import Pkvm
from diff_tests.stdlib.prelude.math_functions_tests import PreludeMathFunctions
from diff_tests.stdlib.prelude.pprof_functions_tests import PreludePprofFunctions
@@ -137,6 +145,7 @@ from diff_tests.tables.tests_sched import TablesSched
sys.path.pop()
+
def fetch_all_diff_tests(index_path: str) -> List['testing.TestCase']:
parser_tests = [
*AndroidBugreport(index_path, 'parser/android',
@@ -180,6 +189,7 @@ def fetch_all_diff_tests(index_path: str) -> List['testing.TestCase']:
*ProfilingLlvmSymbolizer(index_path, 'parser/profiling',
'ProfilingLlvmSymbolizer').fetch(),
*SchedParser(index_path, 'parser/sched', 'SchedParser').fetch(),
+ *Simpleperf(index_path, 'parser/simpleperf', 'Simpleperf').fetch(),
*StdlibSched(index_path, 'stdlib/sched', 'StdlibSched').fetch(),
*Smoke(index_path, 'parser/smoke', 'Smoke').fetch(),
*SmokeComputeMetrics(index_path, 'parser/smoke',
@@ -187,11 +197,11 @@ def fetch_all_diff_tests(index_path: str) -> List['testing.TestCase']:
*SmokeJson(index_path, 'parser/smoke', 'SmokeJson').fetch(),
*SmokeSchedEvents(index_path, 'parser/smoke', 'SmokeSchedEvents').fetch(),
*InputMethodClients(index_path, 'parser/android',
- 'InputMethodClients').fetch(),
+ 'InputMethodClients').fetch(),
*InputMethodManagerService(index_path, 'parser/android',
- 'InputMethodManagerService').fetch(),
+ 'InputMethodManagerService').fetch(),
*InputMethodService(index_path, 'parser/android',
- 'InputMethodService').fetch(),
+ 'InputMethodService').fetch(),
*SurfaceFlingerLayers(index_path, 'parser/android',
'SurfaceFlingerLayers').fetch(),
*SurfaceFlingerTransactions(index_path, 'parser/android',
@@ -199,6 +209,7 @@ def fetch_all_diff_tests(index_path: str) -> List['testing.TestCase']:
*ShellTransitions(index_path, 'parser/android',
'ShellTransitions').fetch(),
*ProtoLog(index_path, 'parser/android', 'ProtoLog').fetch(),
+ *ViewCapture(index_path, 'parser/android', 'ViewCapture').fetch(),
*TrackEvent(index_path, 'parser/track_event', 'TrackEvent').fetch(),
*TranslatedArgs(index_path, 'parser/translated_args',
'TranslatedArgs').fetch(),
@@ -212,6 +223,10 @@ def fetch_all_diff_tests(index_path: str) -> List['testing.TestCase']:
*ParsingMemoryCounters(index_path, 'parser/parsing',
'ParsingMemoryCounters').fetch(),
*FtraceCrop(index_path, 'parser/ftrace', 'FtraceCrop').fetch(),
+ *ParsingTracedStats(index_path, 'parser/parsing',
+ 'ParsingTracedStats').fetch(),
+ *Zip(index_path, 'parser/zip', 'Zip').fetch(),
+ *AndroidInputEvent(index_path, 'parser/android', 'AndroidInputEvent').fetch(),
]
metrics_tests = [
@@ -255,9 +270,11 @@ def fetch_all_diff_tests(index_path: str) -> List['testing.TestCase']:
stdlib_tests = [
*AndroidStdlib(index_path, 'stdlib/android', 'AndroidStdlib').fetch(),
- *CpuStdlib(index_path, 'stdlib/cpu', 'CpuStdlib').fetch(),
+ *Cpu(index_path, 'stdlib/cpu', 'Cpu').fetch(),
*DominatorTree(index_path, 'stdlib/graphs', 'DominatorTree').fetch(),
+ *ExportTests(index_path, 'stdlib/export', 'ExportTests').fetch(),
*Frames(index_path, 'stdlib/android', 'Frames').fetch(),
+ *Gpu(index_path, 'stdlib/gpu', 'Gpu').fetch(),
*GraphSearchTests(index_path, 'stdlib/graphs',
'GraphSearchTests').fetch(),
*GraphPartitionTests(index_path, 'stdlib/graphs',
@@ -267,6 +284,7 @@ def fetch_all_diff_tests(index_path: str) -> List['testing.TestCase']:
*DynamicTables(index_path, 'stdlib/dynamic_tables',
'DynamicTables').fetch(),
*LinuxStdlib(index_path, 'stdlib/linux', 'LinuxStdlib').fetch(),
+ *Memory(index_path, 'stdlib/memory', 'Memory').fetch(),
*PreludeMathFunctions(index_path, 'stdlib/prelude',
'PreludeMathFunctions').fetch(),
*HeapGraphDominatorTree(index_path, 'stdlib/memory',
diff --git a/test/trace_processor/diff_tests/metrics/android/ad_services_metric.py b/test/trace_processor/diff_tests/metrics/android/ad_services_metric.py
index f1e8aadda..8cd36d1ca 100644
--- a/test/trace_processor/diff_tests/metrics/android/ad_services_metric.py
+++ b/test/trace_processor/diff_tests/metrics/android/ad_services_metric.py
@@ -47,15 +47,13 @@ trace.add_atrace_end(ts=850, tid=42, pid=42)
trace.add_atrace_begin(ts=900, tid=42, pid=42, buf=APP_SET_ID_EVENT)
trace.add_atrace_end(ts=1200, tid=42, pid=42)
-trace.add_atrace_begin(
- ts=1500, tid=43, pid=43, buf=CONSENT_MANAGER_READ_EVENT)
+trace.add_atrace_begin(ts=1500, tid=43, pid=43, buf=CONSENT_MANAGER_READ_EVENT)
trace.add_atrace_end(ts=1650, tid=43, pid=43)
trace.add_atrace_begin(
ts=2500, tid=43, pid=44, buf=ODP_MANAGER_INITIALIZATION_EVENT)
trace.add_atrace_end(ts=2550, tid=43, pid=44)
-trace.add_atrace_begin(
- ts=2600, tid=43, pid=44, buf=ODP_MANAGER_EXECUTE_EVENT)
+trace.add_atrace_begin(ts=2600, tid=43, pid=44, buf=ODP_MANAGER_EXECUTE_EVENT)
trace.add_atrace_end(ts=2700, tid=43, pid=44)
trace.add_atrace_begin(
ts=2800, tid=43, pid=44, buf=ODP_MANAGER_REQUEST_SURFACE_PACKAGE_EVENT)
diff --git a/test/trace_processor/diff_tests/metrics/android/android_auto_multiuser.textproto b/test/trace_processor/diff_tests/metrics/android/android_auto_multiuser.textproto
index c33839e22..e14c0776d 100644
--- a/test/trace_processor/diff_tests/metrics/android/android_auto_multiuser.textproto
+++ b/test/trace_processor/diff_tests/metrics/android/android_auto_multiuser.textproto
@@ -11,6 +11,16 @@ packet {
uid: 1000010
cmdline: "dummy:2"
}
+ processes {
+ pid: 12
+ uid: 1300010
+ cmdline: "dummy:3"
+ }
+ processes {
+ pid: 20
+ uid: 1000
+ cmdline: "finishUserStopped-10"
+ }
}
}
packet {
@@ -66,6 +76,38 @@ packet {
}
}
packet {
+ ftrace_events {
+ cpu: 1
+ event {
+ timestamp: 5000000001
+ pid: 10
+ sched_switch {
+ prev_comm: "dummy:3"
+ prev_pid: 12
+ prev_state: 2
+ next_comm: "dummy:2"
+ next_pid: 11
+ }
+ }
+ }
+}
+packet {
+ ftrace_events {
+ cpu: 1
+ event {
+ timestamp: 5010000000
+ pid: 11
+ sched_switch {
+ prev_comm: "dummy:2"
+ prev_pid: 11
+ prev_state: 2
+ next_comm: "dummy:3"
+ next_pid: 13
+ }
+ }
+ }
+}
+packet {
timestamp: 3000000001
process_stats {
processes {
@@ -102,6 +144,15 @@ packet {
}
}
packet {
+ timestamp: 5000000002
+ process_stats {
+ processes {
+ pid: 11
+ vm_rss_kb: 3000
+ }
+ }
+}
+packet {
ftrace_events {
cpu: 1
event {
@@ -124,4 +175,23 @@ packet {
}
}
}
-} \ No newline at end of file
+}
+packet {
+ ftrace_events {
+ cpu: 1
+ event {
+ timestamp: 5000000000
+ pid: 20
+ print {
+ buf: "B|20|finishUserStopped-10-[stopUser]\n"
+ }
+ }
+ event {
+ timestamp: 5100000000
+ pid: 20
+ print {
+ buf: "E|20\n"
+ }
+ }
+ }
+}
diff --git a/test/trace_processor/diff_tests/metrics/android/android_binder_metric.out b/test/trace_processor/diff_tests/metrics/android/android_binder_metric.out
index f775c1cc8..2d7b2ffd8 100644
--- a/test/trace_processor/diff_tests/metrics/android/android_binder_metric.out
+++ b/test/trace_processor/diff_tests/metrics/android/android_binder_metric.out
@@ -396,6 +396,8 @@ android_binder {
is_sync: true
client_monotonic_dur: 95231
server_monotonic_dur: 69578
+ server_package_version_code: 33
+ is_server_package_debuggable: false
thread_states {
thread_state_type: "binder_reply"
thread_state: "Running"
@@ -440,6 +442,8 @@ android_binder {
is_sync: true
client_monotonic_dur: 43573
server_monotonic_dur: 27121
+ server_package_version_code: 33
+ is_server_package_debuggable: false
thread_states {
thread_state_type: "binder_reply"
thread_state: "Running"
@@ -1721,6 +1725,8 @@ android_binder {
is_sync: true
client_monotonic_dur: 56472
server_monotonic_dur: 10317
+ server_package_version_code: 33
+ is_server_package_debuggable: false
thread_states {
thread_state_type: "binder_reply"
thread_state: "Running"
@@ -25033,7 +25039,9 @@ android_binder {
client_monotonic_dur: 491565
server_monotonic_dur: 252231
client_package_version_code: 33
+ server_package_version_code: 33
is_client_package_debuggable: false
+ is_server_package_debuggable: false
thread_states {
thread_state_type: "binder_reply"
thread_state: "Running"
@@ -25094,7 +25102,9 @@ android_binder {
client_monotonic_dur: 1359588
server_monotonic_dur: 1280511
client_package_version_code: 33
+ server_package_version_code: 33
is_client_package_debuggable: false
+ is_server_package_debuggable: false
thread_states {
thread_state_type: "binder_reply"
thread_state: "R"
@@ -40764,6 +40774,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IUidObserver::onUidGone::server"
@@ -40787,6 +40799,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IUidObserver::onUidGone::server"
@@ -40810,6 +40824,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
client_process: "system_server"
@@ -40830,6 +40846,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
client_process: "system_server"
@@ -40850,6 +40868,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IUidObserver::onUidGone::server"
@@ -40873,6 +40893,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IUidObserver::onUidGone::server"
@@ -40896,6 +40918,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IUidObserver::onUidGone::server"
@@ -40919,6 +40943,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IUidObserver::onUidGone::server"
@@ -40942,6 +40968,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IUidObserver::onUidGone::server"
@@ -40965,6 +40993,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IUidObserver::onUidGone::server"
@@ -40988,6 +41018,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IUidObserver::onUidGone::server"
@@ -41011,6 +41043,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IUidObserver::onUidGone::server"
@@ -41034,6 +41068,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IUidObserver::onUidGone::server"
@@ -41057,6 +41093,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IUidObserver::onUidStateChanged::server"
@@ -41080,6 +41118,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IUidObserver::onUidStateChanged::server"
@@ -41103,6 +41143,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IUidObserver::onUidGone::server"
@@ -41126,6 +41168,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IUidObserver::onUidStateChanged::server"
@@ -41149,6 +41193,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IUidObserver::onUidStateChanged::server"
@@ -41172,6 +41218,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
client_process: "system_server"
@@ -41295,6 +41343,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IUidObserver::onUidGone::server"
@@ -41318,6 +41368,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IUidObserver::onUidGone::server"
@@ -41341,6 +41393,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IUidObserver::onUidGone::server"
@@ -41364,6 +41418,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IUidObserver::onUidGone::server"
@@ -41387,6 +41443,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IUidObserver::onUidGone::server"
@@ -41410,6 +41468,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IUidObserver::onUidGone::server"
@@ -41433,6 +41493,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IUidObserver::onUidGone::server"
@@ -41456,6 +41518,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IUidObserver::onUidGone::server"
@@ -41479,6 +41543,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IUidObserver::onUidGone::server"
@@ -41502,6 +41568,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IUidObserver::onUidGone::server"
@@ -41525,6 +41593,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
client_process: "system_server"
@@ -42928,6 +42998,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IApplicationThread::setProcessState::server"
@@ -43148,6 +43220,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IRemoteSessionCallback::onSessionChanged::server"
@@ -43171,6 +43245,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
client_process: "system_server"
@@ -43191,6 +43267,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IStorageEventListener::onVolumeStateChanged::server"
@@ -43214,6 +43292,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IStorageEventListener::onStorageStateChanged::server"
@@ -43237,6 +43317,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IStorageEventListener::onVolumeStateChanged::server"
@@ -43260,6 +43342,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IStorageEventListener::onStorageStateChanged::server"
@@ -43283,6 +43367,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IApplicationThread::scheduleRegisteredReceiver::server"
@@ -43306,6 +43392,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IApplicationThread::scheduleRegisteredReceiver::server"
@@ -43329,6 +43417,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IApplicationThread::scheduleRegisteredReceiver::server"
@@ -43352,6 +43442,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IVoldListener::onVolumeStateChanged::server"
@@ -43740,6 +43832,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
client_process: "system_server"
@@ -43760,6 +43854,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IStorageEventListener::onDiskScanned::server"
@@ -43783,6 +43879,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IPhoneStateListener::onSignalStrengthsChanged::server"
@@ -43806,6 +43904,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IStorageEventListener::onVolumeStateChanged::server"
@@ -43829,6 +43929,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::INotificationListener::onNotificationRemoved::server"
@@ -43852,6 +43954,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
client_process: "/system/bin/surfaceflinger"
@@ -43872,6 +43976,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
client_process: "/system/bin/surfaceflinger"
@@ -43892,6 +43998,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
client_process: "/system/bin/surfaceflinger"
@@ -43912,6 +44020,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IPackageManager::notifyDexLoad::server"
@@ -44944,6 +45054,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IUidObserver::onUidStateChanged::server"
@@ -44967,6 +45079,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IUidObserver::onUidStateChanged::server"
@@ -44990,6 +45104,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IUidObserver::onUidGone::server"
@@ -45013,6 +45129,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IUidObserver::onUidStateChanged::server"
@@ -45036,6 +45154,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IUidObserver::onUidStateChanged::server"
@@ -45059,6 +45179,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IApplicationThread::bindApplication::server"
@@ -45082,6 +45204,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IApplicationThread::setProcessState::server"
@@ -45105,6 +45229,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IApplicationThread::scheduleCreateService::server"
@@ -45128,6 +45254,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IApplicationThread::scheduleBindService::server"
@@ -45151,6 +45279,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IApplicationThread::setProcessState::server"
@@ -45174,6 +45304,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IStorageEventListener::onDiskScanned::server"
@@ -45197,6 +45329,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IExternalStorageService::notifyVolumeStateChanged::server"
@@ -45220,6 +45354,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IApplicationThread::scheduleCreateService::server"
@@ -45243,6 +45379,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IApplicationThread::scheduleBindService::server"
@@ -45266,6 +45404,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IExternalStorageService::notifyVolumeStateChanged::server"
@@ -45289,6 +45429,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IStorageEventListener::onVolumeStateChanged::server"
@@ -45312,6 +45454,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IStorageEventListener::onStorageStateChanged::server"
@@ -45335,6 +45479,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IApplicationThread::scheduleReceiver::server"
@@ -45358,6 +45504,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IApplicationThread::scheduleReceiver::server"
@@ -45381,6 +45529,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IExternalStorageService::startSession::server"
@@ -45404,6 +45554,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IExternalStorageService::notifyVolumeStateChanged::server"
@@ -45427,6 +45579,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IStorageEventListener::onVolumeStateChanged::server"
@@ -45450,6 +45604,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IExternalStorageService::startSession::server"
@@ -45473,6 +45629,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IExternalStorageService::notifyVolumeStateChanged::server"
@@ -45496,6 +45654,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IStorageEventListener::onVolumeStateChanged::server"
@@ -45519,6 +45679,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IExternalStorageService::notifyVolumeStateChanged::server"
@@ -45542,6 +45704,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IStorageEventListener::onVolumeStateChanged::server"
@@ -45565,6 +45729,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IStorageEventListener::onStorageStateChanged::server"
@@ -45588,6 +45754,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IJobService::startJob::server"
@@ -45611,6 +45779,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IStorageEventListener::onVolumeStateChanged::server"
@@ -45634,6 +45804,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IStorageEventListener::onStorageStateChanged::server"
@@ -45657,6 +45829,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IExternalStorageService::notifyVolumeStateChanged::server"
@@ -45680,6 +45854,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IStorageEventListener::onVolumeStateChanged::server"
@@ -45703,6 +45879,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IStorageEventListener::onStorageStateChanged::server"
@@ -45726,6 +45904,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IExternalStorageService::endSession::server"
@@ -45749,6 +45929,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IExternalStorageService::endSession::server"
@@ -45772,6 +45954,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IApplicationThread::scheduleUnbindService::server"
@@ -45795,6 +45979,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IApplicationThread::scheduleStopService::server"
@@ -45818,6 +46004,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IApplicationThread::setProcessState::server"
@@ -45841,6 +46029,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IApplicationThread::setProcessState::server"
@@ -45864,6 +46054,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IApplicationThread::scheduleCreateService::server"
@@ -45887,6 +46079,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IApplicationThread::scheduleBindService::server"
@@ -45910,6 +46104,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::cpp::IMediaMetricsService::submitBuffer::cppServer"
@@ -47970,6 +48166,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IPhoneStateListener::onSignalStrengthsChanged::server"
@@ -47993,6 +48191,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::INotificationListener::onNotificationRemoved::server"
@@ -48016,6 +48216,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 309999900
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::INotificationListener::onNotificationEnqueuedWithChannel::server"
@@ -48039,6 +48241,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 309999900
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::INotificationListener::onNotificationEnqueuedWithChannel::server"
@@ -48062,6 +48266,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 309999900
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::INotificationListener::onNotificationPosted::server"
@@ -48085,6 +48291,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 309999900
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::INotificationListener::onNotificationPosted::server"
@@ -48108,6 +48316,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 309999900
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
client_process: "/system/bin/surfaceflinger"
@@ -48614,6 +48824,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
client_process: "/system/bin/surfaceflinger"
@@ -48634,6 +48846,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
client_process: "/system/bin/surfaceflinger"
@@ -48654,6 +48868,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
client_process: "/system/bin/surfaceflinger"
@@ -48674,6 +48890,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IStorageEventListener::onVolumeStateChanged::server"
@@ -48697,6 +48915,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IStorageEventListener::onVolumeStateChanged::server"
@@ -48720,6 +48940,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IStorageEventListener::onStorageStateChanged::server"
@@ -48743,6 +48965,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IStorageEventListener::onVolumeStateChanged::server"
@@ -48766,6 +48990,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IStorageEventListener::onStorageStateChanged::server"
@@ -48789,6 +49015,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::INotificationListener::onNotificationPosted::server"
@@ -48812,6 +49040,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::INotificationListener::onNotificationPosted::server"
@@ -48835,6 +49065,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
client_process: "/system/bin/surfaceflinger"
@@ -48855,6 +49087,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
client_process: "/system/bin/surfaceflinger"
@@ -48875,6 +49109,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
client_process: "/system/bin/surfaceflinger"
@@ -48895,6 +49131,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
client_process: "/system/bin/surfaceflinger"
@@ -48915,6 +49153,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
client_process: "/system/bin/surfaceflinger"
@@ -48935,6 +49175,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
client_process: "/system/bin/surfaceflinger"
@@ -48955,6 +49197,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
client_process: "/system/bin/surfaceflinger"
@@ -48975,6 +49219,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IApplicationThread::bindApplication::server"
@@ -48998,6 +49244,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IApplicationThread::scheduleReceiver::server"
@@ -49021,6 +49269,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IApplicationThread::scheduleReceiver::server"
@@ -49044,6 +49294,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IApplicationThread::scheduleReceiver::server"
@@ -49067,6 +49319,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IApplicationThread::setProcessState::server"
@@ -49090,6 +49344,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IApplicationThread::scheduleReceiver::server"
@@ -49113,6 +49369,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
aidl_name: "AIDL::java::IApplicationThread::setProcessState::server"
@@ -49136,6 +49394,8 @@ android_binder {
is_sync: false
client_monotonic_dur: 0
server_monotonic_dur: 0
+ server_package_version_code: 33
+ is_server_package_debuggable: false
}
unaggregated_txn_breakdown {
client_process: "system_server"
diff --git a/test/trace_processor/diff_tests/metrics/android/android_blocking_calls_cuj_metric.py b/test/trace_processor/diff_tests/metrics/android/android_blocking_calls_cuj_metric.py
index 8e005a1d3..8a72d5bc7 100755
--- a/test/trace_processor/diff_tests/metrics/android/android_blocking_calls_cuj_metric.py
+++ b/test/trace_processor/diff_tests/metrics/android/android_blocking_calls_cuj_metric.py
@@ -53,6 +53,7 @@ top_level_names = [
'android.os.Handler: #0',
]
+
def add_main_thread_atrace(trace, ts, ts_end, buf, pid):
trace.add_atrace_begin(ts=ts, tid=pid, pid=pid, buf=buf)
trace.add_atrace_end(ts=ts_end, tid=pid, pid=pid)
diff --git a/test/trace_processor/diff_tests/metrics/android/tests.py b/test/trace_processor/diff_tests/metrics/android/tests.py
index a1c244843..42b718a54 100644
--- a/test/trace_processor/diff_tests/metrics/android/tests.py
+++ b/test/trace_processor/diff_tests/metrics/android/tests.py
@@ -140,16 +140,16 @@ class AndroidMetrics(TestSuite):
out=Path('android_sysui_notifications_blocking_calls_metric.out'))
def test_sysui_notif_shade_list_builder(self):
- return DiffTestBlueprint(
- trace=Path('android_sysui_notif_shade_list_builder_metric.py'),
- query=Metric('sysui_notif_shade_list_builder_metric'),
- out=Path('sysui_notif_shade_list_builder_metric.out'))
+ return DiffTestBlueprint(
+ trace=Path('android_sysui_notif_shade_list_builder_metric.py'),
+ query=Metric('sysui_notif_shade_list_builder_metric'),
+ out=Path('sysui_notif_shade_list_builder_metric.out'))
def test_sysui_update_notif_on_ui_mode_changed(self):
- return DiffTestBlueprint(
- trace=Path('sysui_update_notif_on_ui_mode_changed_metric.py'),
- query=Metric('sysui_update_notif_on_ui_mode_changed_metric'),
- out=Path('sysui_update_notif_on_ui_mode_changed_metric.out'))
+ return DiffTestBlueprint(
+ trace=Path('sysui_update_notif_on_ui_mode_changed_metric.py'),
+ query=Metric('sysui_update_notif_on_ui_mode_changed_metric'),
+ out=Path('sysui_update_notif_on_ui_mode_changed_metric.out'))
def test_monitor_contention_metric(self):
return DiffTestBlueprint(
@@ -225,17 +225,15 @@ class AndroidMetrics(TestSuite):
def test_android_boot_unagg(self):
return DiffTestBlueprint(
- trace=DataPath('android_postboot_unlock.pftrace'),
- query=Metric("android_boot_unagg"),
- out=Path('android_boot_unagg.out')
- )
+ trace=DataPath('android_postboot_unlock.pftrace'),
+ query=Metric("android_boot_unagg"),
+ out=Path('android_boot_unagg.out'))
def test_android_app_process_starts(self):
return DiffTestBlueprint(
- trace=DataPath('android_postboot_unlock.pftrace'),
- query=Metric("android_app_process_starts"),
- out=Path('android_app_process_starts.out')
- )
+ trace=DataPath('android_postboot_unlock.pftrace'),
+ query=Metric("android_app_process_starts"),
+ out=Path('android_app_process_starts.out'))
def test_android_garbage_collection(self):
return DiffTestBlueprint(
@@ -295,8 +293,8 @@ class AndroidMetrics(TestSuite):
}
}
"""),
- query=Metric('android_auto_multiuser'),
- out=TextProto(r"""
+ query=Metric('android_auto_multiuser'),
+ out=TextProto(r"""
android_auto_multiuser {
user_switch {
user_id: 11
@@ -311,9 +309,9 @@ class AndroidMetrics(TestSuite):
def test_android_auto_multiuser_switch_with_previous_user_data(self):
return DiffTestBlueprint(
- trace=Path("android_auto_multiuser.textproto"),
- query=Metric('android_auto_multiuser'),
- out=TextProto(r"""
+ trace=Path("android_auto_multiuser.textproto"),
+ query=Metric('android_auto_multiuser'),
+ out=TextProto(r"""
android_auto_multiuser {
user_switch {
user_id: 11
@@ -326,12 +324,35 @@ class AndroidMetrics(TestSuite):
total_memory_usage_kb: 2048
}
}
+ user_switch {
+ user_id: 11
+ start_event: "UserController.startUser-11-fg-start-mode-1"
+ end_event: "finishUserStopped-10-[stopUser]"
+ duration_ms: 2100
+ previous_user_info {
+ user_id: 10
+ total_cpu_time_ms: 19
+ total_memory_usage_kb: 3072
+ }
+ }
}
"""))
+ def test_android_auto_multiuser_timing_table(self):
+ return DiffTestBlueprint(
+ trace=Path("android_auto_multiuser.textproto"),
+ query="""
+ INCLUDE PERFETTO MODULE android.auto.multiuser;
+ SELECT * FROM android_auto_multiuser_timing;
+ """,
+ out=Csv("""
+ "event_start_user_id","event_start_time","event_end_time","event_end_name","event_start_name","duration"
+ "11",3000000000,3999999999,"com.android.car.carlauncher","UserController.startUser-11-fg-start-mode-1",999999999
+ "11",3000000000,5100000000,"finishUserStopped-10-[stopUser]","UserController.startUser-11-fg-start-mode-1",2100000000
+ """))
+
def test_android_oom_adjuster(self):
return DiffTestBlueprint(
- trace=DataPath('android_postboot_unlock.pftrace'),
- query=Metric("android_oom_adjuster"),
- out=Path('android_oom_adjuster.out')
- )
+ trace=DataPath('android_postboot_unlock.pftrace'),
+ query=Metric("android_oom_adjuster"),
+ out=Path('android_oom_adjuster.out'))
diff --git a/test/trace_processor/diff_tests/metrics/memory/tests.py b/test/trace_processor/diff_tests/metrics/memory/tests.py
index 7ea5fda01..a5a5cecf4 100644
--- a/test/trace_processor/diff_tests/metrics/memory/tests.py
+++ b/test/trace_processor/diff_tests/metrics/memory/tests.py
@@ -248,6 +248,17 @@ class MemoryMetrics(TestSuite):
}
"""))
+ def test_android_lmk_reason(self):
+ return DiffTestBlueprint(
+ trace=DataPath('lmk_userspace.pb'),
+ query=Metric('android_lmk_reason'),
+ # TODO(mayzner): Find a trace that returns results. This is still
+ # beneficial though, as at least this metric is run.
+ out=TextProto(r"""
+ android_lmk_reason {
+ }
+ """))
+
def test_android_mem_delta(self):
return DiffTestBlueprint(
trace=Path('android_mem_delta.py'),
diff --git a/test/trace_processor/diff_tests/metrics/startup/android_startup.out b/test/trace_processor/diff_tests/metrics/startup/android_startup.out
index 9dfc28911..b78b3f47b 100644
--- a/test/trace_processor/diff_tests/metrics/startup/android_startup.out
+++ b/test/trace_processor/diff_tests/metrics/startup/android_startup.out
@@ -67,10 +67,20 @@ android_startup {
installd_dur_ns: 0
dex2oat_dur_ns: 0
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: MAIN_THREAD_TIME_SPENT_IN_RUNNABLE
reason: "Main Thread - Time spent in Runnable state"
- details: " target 15% actual 74.07% [ longest_chunk: start_s 3.0e-08 dur_ms 8.0e-0 thread_id 3 thread_name com.google.android.calendar ] [ extra_info: launches_dur_ms 0.0001 runnable_dur_ms 8.0e-0 R_sum_dur_ms 8.0e-0 R+(Preempted)_sum_dur_ms 0.0 ]"
- }
+ expected_value {
+ value: 15
+ unit: PERCENTAGE
+ higher_expected: false
+ }
+ actual_value {
+ value: 74
+ dur: 80
+ }
+ launch_dur: 108
+ }
startup_type: "warm"
}
}
diff --git a/test/trace_processor/diff_tests/metrics/startup/android_startup_attribution.out b/test/trace_processor/diff_tests/metrics/startup/android_startup_attribution.out
index 9b6e74292..7905eff04 100644
--- a/test/trace_processor/diff_tests/metrics/startup/android_startup_attribution.out
+++ b/test/trace_processor/diff_tests/metrics/startup/android_startup_attribution.out
@@ -134,14 +134,43 @@ android_startup {
slow_start_reason: "GC Activity"
slow_start_reason: "Main Thread - Time spent in OpenDexFilesFromOat*"
slow_start_reason: "Main Thread - Binder transactions blocked"
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: GC_ACTIVITY
reason: "GC Activity"
+ expected_value {
+ value: 0
+ unit: TRUE_OR_FALSE
+ }
+ actual_value {
+ value: 1
+ }
+ launch_dur: 999999900
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: MAIN_THREAD_TIME_SPENT_IN_OPEN_DEX_FILES_FROM_OAT
reason: "Main Thread - Time spent in OpenDexFilesFromOat*"
+ expected_value {
+ value: 20
+ unit: PERCENTAGE
+ higher_expected: false
+ }
+ actual_value {
+ value: 49
+ dur: 499999845
+ }
+ launch_dur: 999999900
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: MAIN_THREAD_BINDER_TRANSCATIONS_BLOCKED
reason: "Main Thread - Binder transactions blocked"
+ expected_value {
+ value: 0
+ unit: TRUE_OR_FALSE
+ }
+ actual_value {
+ value: 1
+ }
+ launch_dur: 999999900
}
}
}
diff --git a/test/trace_processor/diff_tests/metrics/startup/android_startup_attribution_slow.out b/test/trace_processor/diff_tests/metrics/startup/android_startup_attribution_slow.out
index 3e8ff275f..565ec0233 100644
--- a/test/trace_processor/diff_tests/metrics/startup/android_startup_attribution_slow.out
+++ b/test/trace_processor/diff_tests/metrics/startup/android_startup_attribution_slow.out
@@ -98,15 +98,43 @@ android_startup {
slow_start_reason: "GC Activity"
slow_start_reason: "JIT Activity"
slow_start_reason: "JIT compiled methods"
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: GC_ACTIVITY
reason: "GC Activity"
+ expected_value {
+ value: 0
+ unit: TRUE_OR_FALSE
+ }
+ actual_value {
+ value: 1
+ }
+ launch_dur: 999999900000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: JIT_ACTIVITY
reason: "JIT Activity"
- details: " target 100ms actual 20000.ms [ longest_chunk: start_s 154.99 dur_ms 10000. thread_id 4 thread_name Jit thread pool ]"
+ expected_value {
+ value: 100000000
+ unit: NS
+ higher_expected: false
+ }
+ actual_value {
+ value: 20000000000
+ }
+ launch_dur: 999999900000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: JIT_COMPILED_METHODS
reason: "JIT compiled methods"
+ expected_value {
+ value: 65
+ unit: COUNT
+ higher_expected: false
+ }
+ actual_value {
+ value: 71
+ }
+ launch_dur: 999999900000000000
}
}
}
diff --git a/test/trace_processor/diff_tests/metrics/startup/android_startup_breakdown.out b/test/trace_processor/diff_tests/metrics/startup/android_startup_breakdown.out
index f40578d66..00717fe42 100644
--- a/test/trace_processor/diff_tests/metrics/startup/android_startup_breakdown.out
+++ b/test/trace_processor/diff_tests/metrics/startup/android_startup_breakdown.out
@@ -119,26 +119,81 @@ android_startup {
slow_start_reason: "Time spent in bindApplication"
slow_start_reason: "Time spent in view inflation"
slow_start_reason: "Time spent in ResourcesManager#getResources"
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: NO_BASELINE_OR_CLOUD_PROFILES
reason: "No baseline or cloud profiles"
- details: " target FALSE actual TRUE [ longest_chunk: start_s 154.0 dur_ms 1000.0 thread_id -1 thread_name com.google.android.calendar ] [ extra_info: slice_name location=/system/framework/oat/arm/com.google.android.calendar.odex status=up-to-date filter=speed reason=install-dm ]"
+ expected_value {
+ value: 0
+ unit: TRUE_OR_FALSE
+ }
+ actual_value {
+ value: 1
+ }
+ launch_dur: 108000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: RUN_FROM_APK
reason: "Optimized artifacts missing, run from apk"
+ expected_value {
+ value: 0
+ unit: TRUE_OR_FALSE
+ }
+ actual_value {
+ value: 1
+ }
+ launch_dur: 108000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: TIME_SPENT_IN_BIND_APPLICATION
reason: "Time spent in bindApplication"
+ expected_value {
+ value: 1250000000
+ unit: NS
+ higher_expected: false
+ }
+ actual_value {
+ value: 2000000000
+ }
+ launch_dur: 108000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: TIME_SPENT_IN_VIEW_INFLATION
reason: "Time spent in view inflation"
+ expected_value {
+ value: 450000000
+ unit: NS
+ higher_expected: false
+ }
+ actual_value {
+ value: 2000000000
+ }
+ launch_dur: 108000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: TIME_SPENT_IN_RESOURCES_MANAGER_GET_RESOURCES
reason: "Time spent in ResourcesManager#getResources"
- details: " target 130ms actual 1000.0ms [ longest_chunk: start_s 138.0 dur_ms 1000.0 thread_id 3 thread_name com.google.android.calendar ]"
+ expected_value {
+ value: 130000000
+ unit: NS
+ higher_expected: false
+ }
+ actual_value {
+ value: 1000000000
+ }
+ launch_dur: 108000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: POTENTIAL_CPU_CONTENTION_WITH_ANOTHER_PROCESS
reason: "Potential CPU contention with another process"
- details: " target 100ms actual 5000.0ms most_active_process_for_launch init [ longest_chunk: start_s 155.0 dur_ms 5000.0 thread_id 3 thread_name com.google.android.calendar ] [ extra_info: runnable_dur_ms 5000.0 R_sum_dur_ms 5000.0 R+(Preempted)_sum_dur 0 ]"
+ expected_value {
+ value: 100000000
+ unit: NS
+ higher_expected: false
+ }
+ actual_value {
+ value: 5000000000
+ }
+ launch_dur: 108000000000
}
startup_type: "cold"
}
diff --git a/test/trace_processor/diff_tests/metrics/startup/android_startup_breakdown_slow.out b/test/trace_processor/diff_tests/metrics/startup/android_startup_breakdown_slow.out
index 891060b10..f7756d784 100644
--- a/test/trace_processor/diff_tests/metrics/startup/android_startup_breakdown_slow.out
+++ b/test/trace_processor/diff_tests/metrics/startup/android_startup_breakdown_slow.out
@@ -118,22 +118,69 @@ android_startup {
slow_start_reason: "Time spent in bindApplication"
slow_start_reason: "Time spent in view inflation"
slow_start_reason: "Time spent in ResourcesManager#getResources"
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: RUN_FROM_APK
reason: "Optimized artifacts missing, run from apk"
+ expected_value {
+ value: 0
+ unit: TRUE_OR_FALSE
+ }
+ actual_value {
+ value: 1
+ }
+ launch_dur: 108000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: TIME_SPENT_IN_BIND_APPLICATION
reason: "Time spent in bindApplication"
+ expected_value {
+ value: 1250000000
+ unit: NS
+ higher_expected: false
+ }
+ actual_value {
+ value: 10000000000
+ }
+ launch_dur: 108000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: TIME_SPENT_IN_VIEW_INFLATION
reason: "Time spent in view inflation"
+ expected_value {
+ value: 450000000
+ unit: NS
+ higher_expected: false
+ }
+ actual_value {
+ value: 3000000000
+ }
+ launch_dur: 108000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: TIME_SPENT_IN_RESOURCES_MANAGER_GET_RESOURCES
reason: "Time spent in ResourcesManager#getResources"
- details: " target 130ms actual 5000.0ms [ longest_chunk: start_s 137.0 dur_ms 5000.0 thread_id 3 thread_name com.google.android.calendar ]"
+ expected_value {
+ value: 130000000
+ unit: NS
+ higher_expected: false
+ }
+ actual_value {
+ value: 5000000000
+ }
+ launch_dur: 108000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: POTENTIAL_CPU_CONTENTION_WITH_ANOTHER_PROCESS
reason: "Potential CPU contention with another process"
- details: " target 100ms actual 5000.0ms most_active_process_for_launch init [ longest_chunk: start_s 155.0 dur_ms 5000.0 thread_id 3 thread_name com.google.android.calendar ] [ extra_info: runnable_dur_ms 5000.0 R_sum_dur_ms 5000.0 R+(Preempted)_sum_dur 0 ]"
+ expected_value {
+ value: 100000000
+ unit: NS
+ higher_expected: false
+ }
+ actual_value {
+ value: 5000000000
+ }
+ launch_dur: 108000000000
}
startup_type: "cold"
}
diff --git a/test/trace_processor/diff_tests/metrics/startup/android_startup_broadcast_multiple.out b/test/trace_processor/diff_tests/metrics/startup/android_startup_broadcast_multiple.out
index 02e142c62..b1296b9d5 100644
--- a/test/trace_processor/diff_tests/metrics/startup/android_startup_broadcast_multiple.out
+++ b/test/trace_processor/diff_tests/metrics/startup/android_startup_broadcast_multiple.out
@@ -31,11 +31,31 @@ android_startup {
}
slow_start_reason: "Broadcast dispatched count"
slow_start_reason: "Broadcast received count"
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: BROADCAST_DISPATCHED_COUNT
reason: "Broadcast dispatched count"
+ expected_value {
+ value: 15
+ unit: COUNT
+ higher_expected: false
+ }
+ actual_value {
+ value: 24
+ }
+ launch_dur: 100
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: BROADCAST_RECEIVED_COUNT
reason: "Broadcast received count"
+ expected_value {
+ value: 50
+ unit: COUNT
+ higher_expected: false
+ }
+ actual_value {
+ value: 52
+ }
+ launch_dur: 100
}
}
}
diff --git a/test/trace_processor/diff_tests/metrics/startup/android_startup_installd_dex2oat.out b/test/trace_processor/diff_tests/metrics/startup/android_startup_installd_dex2oat.out
index 1fd7f2ed0..6b9755aed 100644
--- a/test/trace_processor/diff_tests/metrics/startup/android_startup_installd_dex2oat.out
+++ b/test/trace_processor/diff_tests/metrics/startup/android_startup_installd_dex2oat.out
@@ -62,8 +62,17 @@ android_startup {
dex2oat_dur_ns: 5
}
slow_start_reason: "dex2oat running during launch"
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: DEX2OAT_RUNNING
reason: "dex2oat running during launch"
+ expected_value {
+ value: 0
+ unit: TRUE_OR_FALSE
+ }
+ actual_value {
+ value: 1
+ }
+ launch_dur: 100
}
}
startup {
@@ -98,8 +107,17 @@ android_startup {
dex2oat_dur_ns: 0
}
slow_start_reason: "installd running during launch"
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: INSTALLD_RUNNING
reason: "installd running during launch"
+ expected_value {
+ value: 0
+ unit: TRUE_OR_FALSE
+ }
+ actual_value {
+ value: 1
+ }
+ launch_dur: 100
}
}
startup {
@@ -136,11 +154,29 @@ android_startup {
}
slow_start_reason: "dex2oat running during launch"
slow_start_reason: "installd running during launch"
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: DEX2OAT_RUNNING
reason: "dex2oat running during launch"
+ expected_value {
+ value: 0
+ unit: TRUE_OR_FALSE
+ }
+ actual_value {
+ value: 1
+ }
+ launch_dur: 100
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: INSTALLD_RUNNING
reason: "installd running during launch"
+ expected_value {
+ value: 0
+ unit: TRUE_OR_FALSE
+ }
+ actual_value {
+ value: 1
+ }
+ launch_dur: 100
}
}
}
diff --git a/test/trace_processor/diff_tests/metrics/startup/android_startup_installd_dex2oat_slow.out b/test/trace_processor/diff_tests/metrics/startup/android_startup_installd_dex2oat_slow.out
index 91e0d5aef..a4a7d08af 100644
--- a/test/trace_processor/diff_tests/metrics/startup/android_startup_installd_dex2oat_slow.out
+++ b/test/trace_processor/diff_tests/metrics/startup/android_startup_installd_dex2oat_slow.out
@@ -62,8 +62,17 @@ android_startup {
dex2oat_dur_ns: 5000000000
}
slow_start_reason: "dex2oat running during launch"
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: DEX2OAT_RUNNING
reason: "dex2oat running during launch"
+ expected_value {
+ value: 0
+ unit: TRUE_OR_FALSE
+ }
+ actual_value {
+ value: 1
+ }
+ launch_dur: 100000000000
}
}
startup {
@@ -101,14 +110,41 @@ android_startup {
slow_start_reason: "dex2oat running during launch"
slow_start_reason: "installd running during launch"
slow_start_reason: "Startup running concurrent to launch"
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: DEX2OAT_RUNNING
reason: "dex2oat running during launch"
+ expected_value {
+ value: 0
+ unit: TRUE_OR_FALSE
+ }
+ actual_value {
+ value: 1
+ }
+ launch_dur: 250000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: INSTALLD_RUNNING
reason: "installd running during launch"
+ expected_value {
+ value: 0
+ unit: TRUE_OR_FALSE
+ }
+ actual_value {
+ value: 1
+ }
+ launch_dur: 250000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: STARTUP_RUNNING_CONCURRENT
reason: "Startup running concurrent to launch"
+ expected_value {
+ value: 0
+ unit: TRUE_OR_FALSE
+ }
+ actual_value {
+ value: 1
+ }
+ launch_dur: 250000000000
}
startup_concurrent_to_launch: "com.google.android.gm"
}
@@ -145,14 +181,41 @@ android_startup {
slow_start_reason: "dex2oat running during launch"
slow_start_reason: "installd running during launch"
slow_start_reason: "Startup running concurrent to launch"
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: DEX2OAT_RUNNING
reason: "dex2oat running during launch"
+ expected_value {
+ value: 0
+ unit: TRUE_OR_FALSE
+ }
+ actual_value {
+ value: 1
+ }
+ launch_dur: 100000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: INSTALLD_RUNNING
reason: "installd running during launch"
+ expected_value {
+ value: 0
+ unit: TRUE_OR_FALSE
+ }
+ actual_value {
+ value: 1
+ }
+ launch_dur: 100000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: STARTUP_RUNNING_CONCURRENT
reason: "Startup running concurrent to launch"
+ expected_value {
+ value: 0
+ unit: TRUE_OR_FALSE
+ }
+ actual_value {
+ value: 1
+ }
+ launch_dur: 100000000000
}
startup_concurrent_to_launch: "com.google.android.deskclock"
}
diff --git a/test/trace_processor/diff_tests/metrics/startup/android_startup_lock_contention_slow.out b/test/trace_processor/diff_tests/metrics/startup/android_startup_lock_contention_slow.out
index 3e5f6a659..06336d67d 100644
--- a/test/trace_processor/diff_tests/metrics/startup/android_startup_lock_contention_slow.out
+++ b/test/trace_processor/diff_tests/metrics/startup/android_startup_lock_contention_slow.out
@@ -72,14 +72,46 @@ android_startup {
slow_start_reason: "Time spent in bindApplication"
slow_start_reason: "Main Thread - Lock contention"
slow_start_reason: "Main Thread - Monitor contention"
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: TIME_SPENT_IN_BIND_APPLICATION
reason: "Time spent in bindApplication"
+ expected_value {
+ value: 1250000000
+ unit: NS
+ higher_expected: false
+ }
+ actual_value {
+ value: 3000000000
+ }
+ launch_dur: 100000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: MAIN_THREAD_LOCK_CONTENTION
reason: "Main Thread - Lock contention"
+ expected_value {
+ value: 20
+ unit: PERCENTAGE
+ higher_expected: false
+ }
+ actual_value {
+ value: 27
+ dur: 27000000000
+ }
+ launch_dur: 100000000000
}
- slow_start_reason_detailed {
- reason: "Main Thread - Monitor contention"
+ slow_start_reason_with_details {
+ reason_id: MAIN_THREAD_MONITOR_CONTENTION
+ reason: "Main Thread - Monitor contention"
+ expected_value {
+ value: 15
+ unit: PERCENTAGE
+ higher_expected: false
+ }
+ actual_value {
+ value: 17
+ dur: 17000000000
+ }
+ launch_dur: 100000000000
}
startup_type: "cold"
}
diff --git a/test/trace_processor/diff_tests/metrics/startup/android_startup_minsdk33.out b/test/trace_processor/diff_tests/metrics/startup/android_startup_minsdk33.out
index e56ae6f00..4e2e0e418 100644
--- a/test/trace_processor/diff_tests/metrics/startup/android_startup_minsdk33.out
+++ b/test/trace_processor/diff_tests/metrics/startup/android_startup_minsdk33.out
@@ -30,8 +30,17 @@ android_startup {
dex2oat_dur_ns: 0
}
slow_start_reason: "App in debuggable mode"
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: APP_IN_DEBUGGABLE_MODE
reason: "App in debuggable mode"
+ expected_value {
+ value: 0
+ unit: TRUE_OR_FALSE
+ }
+ actual_value {
+ value: 1
+ }
+ launch_dur: 100
}
}
startup {
@@ -86,8 +95,17 @@ android_startup {
}
startup_type: "hot"
slow_start_reason: "App in debuggable mode"
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: APP_IN_DEBUGGABLE_MODE
reason: "App in debuggable mode"
+ expected_value {
+ value: 0
+ unit: TRUE_OR_FALSE
+ }
+ actual_value {
+ value: 1
+ }
+ launch_dur: 10
}
}
}
diff --git a/test/trace_processor/diff_tests/metrics/startup/android_startup_process_track.out b/test/trace_processor/diff_tests/metrics/startup/android_startup_process_track.out
index fb10a3282..1da325fac 100644
--- a/test/trace_processor/diff_tests/metrics/startup/android_startup_process_track.out
+++ b/test/trace_processor/diff_tests/metrics/startup/android_startup_process_track.out
@@ -66,9 +66,19 @@ android_startup {
dex2oat_dur_ns: 0
}
startup_type: "cold"
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: MAIN_THREAD_TIME_SPENT_IN_RUNNABLE
reason: "Main Thread - Time spent in Runnable state"
- details: " target 15% actual 57.14% [ longest_chunk: start_s 3.0e-09 dur_ms 4.0e-0 thread_id 3 thread_name com.google.android.calendar ] [ extra_info: launches_dur_ms 7.0e-0 runnable_dur_ms 4.0e-0 R_sum_dur_ms 4.0e-0 R+(Preempted)_sum_dur_ms 0.0 ]"
+ expected_value {
+ value: 15
+ unit: PERCENTAGE
+ higher_expected: false
+ }
+ actual_value {
+ value: 57
+ dur: 4
+ }
+ launch_dur: 7
}
}
startup {
@@ -139,9 +149,19 @@ android_startup {
dex2oat_dur_ns: 0
}
startup_type: "cold"
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: MAIN_THREAD_TIME_SPENT_IN_RUNNABLE
reason: "Main Thread - Time spent in Runnable state"
- details: " target 15% actual 57.14% [ longest_chunk: start_s 1.03e-07 dur_ms 4.0e-0 thread_id 4 thread_name com.google.android.calendar ] [ extra_info: launches_dur_ms 7.0e-0 runnable_dur_ms 4.0e-0 R_sum_dur_ms 4.0e-0 R+(Preempted)_sum_dur_ms 0.0 ]"
+ expected_value {
+ value: 15
+ unit: PERCENTAGE
+ higher_expected: false
+ }
+ actual_value {
+ value: 57
+ dur: 4
+ }
+ launch_dur: 7
}
}
}
diff --git a/test/trace_processor/diff_tests/metrics/startup/android_startup_slow.out b/test/trace_processor/diff_tests/metrics/startup/android_startup_slow.out
index 4cdc5e9ce..1a04d1962 100644
--- a/test/trace_processor/diff_tests/metrics/startup/android_startup_slow.out
+++ b/test/trace_processor/diff_tests/metrics/startup/android_startup_slow.out
@@ -70,19 +70,58 @@ android_startup {
startup_type: "warm"
slow_start_reason: "Main Thread - Time spent in interruptible sleep state"
slow_start_reason: "Main Thread - Time spent in Blocking I/O"
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: MAIN_THREAD_TIME_SPENT_IN_RUNNABLE
reason: "Main Thread - Time spent in Runnable state"
- details: " target 15% actual 74.07% [ longest_chunk: start_s 30.0 dur_ms 80000. thread_id 3 thread_name com.google.android.calendar ] [ extra_info: launches_dur_ms 108000 runnable_dur_ms 80000. R_sum_dur_ms 80000. R+(Preempted)_sum_dur_ms 0.0 ]"
+ expected_value {
+ value: 15
+ unit: PERCENTAGE
+ higher_expected: false
+ }
+ actual_value {
+ value: 74
+ dur: 80000000000
+ }
+ launch_dur: 108000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: MAIN_THREAD_TIME_SPENT_IN_INTERRUPTIBLE_SLEEP
reason: "Main Thread - Time spent in interruptible sleep state"
+ expected_value {
+ value: 2900000000
+ unit: NS
+ higher_expected: false
+ }
+ actual_value {
+ value: 5000000000
+ }
+ launch_dur: 108000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: MAIN_THREAD_TIME_SPENT_IN_BLOCKING_IO
reason: "Main Thread - Time spent in Blocking I/O"
+ expected_value {
+ value: 450000000
+ unit: NS
+ higher_expected: false
+ }
+ actual_value {
+ value: 5000000000
+ }
+ launch_dur: 108000000000
}
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: POTENTIAL_CPU_CONTENTION_WITH_ANOTHER_PROCESS
reason: "Potential CPU contention with another process"
- details: " target 100ms actual 80000.ms most_active_process_for_launch init [ longest_chunk: start_s 30.0 dur_ms 80000. thread_id 3 thread_name com.google.android.calendar ] [ extra_info: runnable_dur_ms 80000. R_sum_dur_ms 80000. R+(Preempted)_sum_dur 0 ]"
+ expected_value {
+ value: 100000000
+ unit: NS
+ higher_expected: false
+ }
+ actual_value {
+ value: 80000000000
+ }
+ launch_dur: 108000000000
}
}
}
diff --git a/test/trace_processor/diff_tests/metrics/startup/android_startup_unlock.out b/test/trace_processor/diff_tests/metrics/startup/android_startup_unlock.out
index 9686456ca..62ec295a8 100644
--- a/test/trace_processor/diff_tests/metrics/startup/android_startup_unlock.out
+++ b/test/trace_processor/diff_tests/metrics/startup/android_startup_unlock.out
@@ -30,8 +30,17 @@ android_startup {
dex2oat_dur_ns: 0
}
slow_start_reason: "Unlock running during launch"
- slow_start_reason_detailed {
+ slow_start_reason_with_details {
+ reason_id: UNLOCK_RUNNING
reason: "Unlock running during launch"
+ expected_value {
+ value: 0
+ unit: TRUE_OR_FALSE
+ }
+ actual_value {
+ value: 1
+ }
+ launch_dur: 100
}
}
}
diff --git a/test/trace_processor/diff_tests/parser/android/input_event_trace.textproto b/test/trace_processor/diff_tests/parser/android/input_event_trace.textproto
new file mode 100644
index 000000000..02ecce4a6
--- /dev/null
+++ b/test/trace_processor/diff_tests/parser/android/input_event_trace.textproto
@@ -0,0 +1,1008 @@
+packet {
+ clock_snapshot {
+ primary_trace_clock: BUILTIN_CLOCK_BOOTTIME
+ clocks {
+ clock_id: 6
+ timestamp: 178674061789798
+ }
+ clocks {
+ clock_id: 2
+ timestamp: 1715375168889637820
+ }
+ clocks {
+ clock_id: 4
+ timestamp: 64176147060835
+ }
+ clocks {
+ clock_id: 1
+ timestamp: 1715375168892622806
+ }
+ clocks {
+ clock_id: 3
+ timestamp: 64176150045943
+ }
+ clocks {
+ clock_id: 5
+ timestamp: 64176150046147
+ }
+ }
+ trusted_uid: 9999
+ trusted_packet_sequence_id: 1
+}
+packet {
+ clock_snapshot {
+ primary_trace_clock: BUILTIN_CLOCK_BOOTTIME
+ clocks {
+ clock_id: 6
+ timestamp: 178674061806929
+ }
+ clocks {
+ clock_id: 2
+ timestamp: 1715375168889637820
+ }
+ clocks {
+ clock_id: 4
+ timestamp: 64176147060835
+ }
+ clocks {
+ clock_id: 1
+ timestamp: 1715375168892639855
+ }
+ clocks {
+ clock_id: 3
+ timestamp: 64176150062992
+ }
+ clocks {
+ clock_id: 5
+ timestamp: 64176150063155
+ }
+ }
+ trusted_uid: 9999
+ trusted_packet_sequence_id: 1
+}
+packet {
+ trusted_uid: 9999
+ trusted_packet_sequence_id: 1
+ synchronization_marker: "\202Gzv\262\215B\272\201\33432mW\240y"
+}
+packet {
+ trusted_uid: 9999
+ trusted_packet_sequence_id: 1
+ trace_config {
+ buffers {
+ size_kb: 1000000
+ fill_policy: RING_BUFFER
+ }
+ data_sources {
+ config {
+ name: "android.input.inputevent"
+ android_input_event_config {
+ mode: TRACE_MODE_TRACE_ALL
+ }
+ }
+ }
+ duration_ms: 10000
+ enable_extra_guardrails: false
+ statsd_metadata {
+ }
+ statsd_logging: STATSD_LOGGING_DISABLED
+ trace_uuid_msb: 6148766808500972866
+ trace_uuid_lsb: -1402094119056663186
+ }
+}
+packet {
+ trusted_uid: 9999
+ trusted_packet_sequence_id: 1
+ trace_uuid {
+ lsb: -1402094119056663186
+ msb: 6148766808500972866
+ }
+}
+packet {
+ system_info {
+ tracing_service_version: "Perfetto v44.0 (N/A)"
+ timezone_off_mins: 0
+ utsname {
+ sysname: "Linux"
+ version: "#1 SMP PREEMPT Thu Mar 28 12:45:51 UTC 2024"
+ machine: "aarch64"
+ release: "5.10.209-android13-4-02808-g9f408f561c85-ab11640454"
+ }
+ page_size: 4096
+ num_cpus: 8
+ android_build_fingerprint: "google/tangorpro/tangorpro:VanillaIceCream/MAIN/eng.prabir.20240508.183909:eng/dev-keys"
+ android_sdk_version: 35
+ }
+ trusted_uid: 9999
+ trusted_packet_sequence_id: 1
+}
+packet {
+ timestamp: 178674061798587
+ trusted_uid: 9999
+ trusted_packet_sequence_id: 1
+ service_event {
+ tracing_started: true
+ }
+}
+packet {
+ timestamp: 178674065835493
+ trusted_uid: 9999
+ trusted_packet_sequence_id: 1
+ service_event {
+ all_data_sources_started: true
+ }
+}
+packet {
+ timestamp: 178683982315600
+ trusted_uid: 9999
+ trusted_packet_sequence_id: 1
+ service_event {
+ all_data_sources_flushed: true
+ }
+}
+packet {
+ timestamp: 178683984185189
+ trusted_uid: 9999
+ trusted_packet_sequence_id: 1
+ service_event {
+ tracing_disabled: true
+ }
+}
+packet {
+ first_packet_on_sequence: true
+ android_input_event {
+ dispatcher_motion_event {
+ event_id: 104114844
+ event_time_nanos: 64179212500000
+ down_time_nanos: 64179212500000
+ source: 4098
+ action: 0
+ device_id: 4
+ display_id: 0
+ classification: 0
+ flags: 0
+ policy_flags: 1644167168
+ cursor_position_x: nan
+ cursor_position_y: nan
+ meta_state: 0
+ pointer {
+ pointer_id: 0
+ tool_type: 1
+ axis_value {
+ axis: 0
+ value: 580.000000
+ }
+ axis_value {
+ axis: 1
+ value: 798.000000
+ }
+ axis_value {
+ axis: 2
+ value: 1.003906
+ }
+ axis_value {
+ axis: 3
+ value: 0.033998
+ }
+ axis_value {
+ axis: 4
+ value: 92.000000
+ }
+ axis_value {
+ axis: 5
+ value: 82.000000
+ }
+ axis_value {
+ axis: 6
+ value: 92.000000
+ }
+ axis_value {
+ axis: 7
+ value: 82.000000
+ }
+ axis_value {
+ axis: 8
+ value: 0.983282
+ }
+ }
+ }
+ }
+ trusted_uid: 1000
+ trusted_packet_sequence_id: 2
+ trusted_pid: 1722
+ previous_packet_dropped: true
+}
+packet {
+ android_input_event {
+ dispatcher_motion_event {
+ event_id: 1141228253
+ event_time_nanos: 64179212500000
+ down_time_nanos: 64179212500000
+ source: 4098
+ action: 4
+ device_id: 4
+ display_id: 0
+ classification: 0
+ flags: 0
+ policy_flags: 1644167168
+ cursor_position_x: nan
+ cursor_position_y: nan
+ meta_state: 0
+ pointer {
+ pointer_id: 0
+ tool_type: 1
+ axis_value {
+ axis: 0
+ value: 580.000000
+ }
+ axis_value {
+ axis: 1
+ value: 798.000000
+ }
+ axis_value {
+ axis: 2
+ value: 1.003906
+ }
+ axis_value {
+ axis: 3
+ value: 0.033998
+ }
+ axis_value {
+ axis: 4
+ value: 92.000000
+ }
+ axis_value {
+ axis: 5
+ value: 82.000000
+ }
+ axis_value {
+ axis: 6
+ value: 92.000000
+ }
+ axis_value {
+ axis: 7
+ value: 82.000000
+ }
+ axis_value {
+ axis: 8
+ value: 0.983282
+ }
+ }
+ }
+ }
+ trusted_uid: 1000
+ trusted_packet_sequence_id: 2
+ trusted_pid: 1722
+}
+packet {
+ android_input_event {
+ dispatcher_window_dispatch_event {
+ event_id: 1141228253
+ vsync_id: 182239
+ window_id: 105
+ resolved_flags: 0
+ dispatched_pointer {
+ pointer_id: 0
+ x_in_display: 1762.000000
+ y_in_display: 580.000000
+ axis_value_in_window {
+ axis: 0
+ value: 1762.000000
+ }
+ axis_value_in_window {
+ axis: 1
+ value: -681.000000
+ }
+ axis_value_in_window {
+ axis: 8
+ value: 2.554132
+ }
+ }
+ }
+ }
+ trusted_uid: 1000
+ trusted_packet_sequence_id: 2
+ trusted_pid: 1722
+}
+packet {
+ android_input_event {
+ dispatcher_window_dispatch_event {
+ event_id: 104114844
+ vsync_id: 182239
+ window_id: 181
+ resolved_flags: 0
+ dispatched_pointer {
+ pointer_id: 0
+ x_in_display: 1762.000000
+ y_in_display: 580.000000
+ axis_value_in_window {
+ axis: 0
+ value: 1762.000000
+ }
+ axis_value_in_window {
+ axis: 1
+ value: 580.000000
+ }
+ axis_value_in_window {
+ axis: 8
+ value: 2.554157
+ }
+ }
+ }
+ }
+ trusted_uid: 1000
+ trusted_packet_sequence_id: 2
+ trusted_pid: 1722
+}
+packet {
+ android_input_event {
+ dispatcher_window_dispatch_event {
+ event_id: 104114844
+ vsync_id: 182239
+ window_id: 58
+ resolved_flags: 3
+ dispatched_pointer {
+ pointer_id: 0
+ x_in_display: 1762.000000
+ y_in_display: 580.000000
+ axis_value_in_window {
+ axis: 0
+ value: 1718.181641
+ }
+ axis_value_in_window {
+ axis: 1
+ value: 600.000000
+ }
+ axis_value_in_window {
+ axis: 8
+ value: 2.554074
+ }
+ }
+ }
+ }
+ trusted_uid: 1000
+ trusted_packet_sequence_id: 2
+ trusted_pid: 1722
+}
+packet {
+ android_input_event {
+ dispatcher_window_dispatch_event {
+ event_id: 104114844
+ vsync_id: 182239
+ window_id: 76
+ resolved_flags: 0
+ dispatched_pointer {
+ pointer_id: 0
+ x_in_display: 1762.000000
+ y_in_display: 580.000000
+ axis_value_in_window {
+ axis: 0
+ value: 1762.000000
+ }
+ axis_value_in_window {
+ axis: 1
+ value: 580.000000
+ }
+ axis_value_in_window {
+ axis: 8
+ value: 2.554157
+ }
+ }
+ }
+ }
+ trusted_uid: 1000
+ trusted_packet_sequence_id: 2
+ trusted_pid: 1722
+}
+packet {
+ android_input_event {
+ dispatcher_window_dispatch_event {
+ event_id: 104114844
+ vsync_id: 182239
+ window_id: 68
+ resolved_flags: 0
+ dispatched_pointer {
+ pointer_id: 0
+ x_in_display: 1762.000000
+ y_in_display: 580.000000
+ axis_value_in_window {
+ axis: 0
+ value: 1762.000000
+ }
+ axis_value_in_window {
+ axis: 1
+ value: 580.000000
+ }
+ axis_value_in_window {
+ axis: 8
+ value: 2.554157
+ }
+ }
+ }
+ }
+ trusted_uid: 1000
+ trusted_packet_sequence_id: 2
+ trusted_pid: 1722
+}
+packet {
+ android_input_event {
+ dispatcher_window_dispatch_event {
+ event_id: 104114844
+ vsync_id: 0
+ window_id: 0
+ resolved_flags: 0
+ dispatched_pointer {
+ pointer_id: 0
+ x_in_display: 1762.000000
+ y_in_display: 580.000000
+ axis_value_in_window {
+ axis: 0
+ value: 1762.000000
+ }
+ axis_value_in_window {
+ axis: 1
+ value: 580.000000
+ }
+ axis_value_in_window {
+ axis: 8
+ value: 2.554157
+ }
+ }
+ }
+ }
+ trusted_uid: 1000
+ trusted_packet_sequence_id: 2
+ trusted_pid: 1722
+}
+packet {
+ android_input_event {
+ dispatcher_motion_event {
+ event_id: 843076721
+ event_time_nanos: 64179262122000
+ down_time_nanos: 64179212500000
+ source: 4098
+ action: 2
+ device_id: 4
+ display_id: 0
+ classification: 1
+ flags: 0
+ policy_flags: 1644167168
+ cursor_position_x: nan
+ cursor_position_y: nan
+ meta_state: 0
+ pointer {
+ pointer_id: 0
+ tool_type: 1
+ axis_value {
+ axis: 0
+ value: 580.000000
+ }
+ axis_value {
+ axis: 1
+ value: 798.000000
+ }
+ axis_value {
+ axis: 2
+ value: 0.113281
+ }
+ axis_value {
+ axis: 3
+ value: 0.011333
+ }
+ axis_value {
+ axis: 4
+ value: 29.000000
+ }
+ axis_value {
+ axis: 5
+ value: 29.000000
+ }
+ axis_value {
+ axis: 6
+ value: 29.000000
+ }
+ axis_value {
+ axis: 7
+ value: 29.000000
+ }
+ axis_value {
+ axis: 8
+ value: 0.912335
+ }
+ }
+ }
+ }
+ trusted_uid: 1000
+ trusted_packet_sequence_id: 2
+ trusted_pid: 1722
+}
+packet {
+ android_input_event {
+ dispatcher_window_dispatch_event {
+ event_id: 843076721
+ vsync_id: 182239
+ window_id: 181
+ resolved_flags: 0
+ dispatched_pointer {
+ pointer_id: 0
+ x_in_display: 1762.000000
+ y_in_display: 580.000000
+ axis_value_in_window {
+ axis: 0
+ value: 1762.000000
+ }
+ axis_value_in_window {
+ axis: 1
+ value: 580.000000
+ }
+ axis_value_in_window {
+ axis: 8
+ value: 2.483198
+ }
+ }
+ }
+ }
+ trusted_uid: 1000
+ trusted_packet_sequence_id: 2
+ trusted_pid: 1722
+}
+packet {
+ android_input_event {
+ dispatcher_window_dispatch_event {
+ event_id: 843076721
+ vsync_id: 182239
+ window_id: 58
+ resolved_flags: 3
+ dispatched_pointer {
+ pointer_id: 0
+ x_in_display: 1762.000000
+ y_in_display: 580.000000
+ axis_value_in_window {
+ axis: 0
+ value: 1718.181641
+ }
+ axis_value_in_window {
+ axis: 1
+ value: 600.000000
+ }
+ axis_value_in_window {
+ axis: 8
+ value: 2.483237
+ }
+ }
+ }
+ }
+ trusted_uid: 1000
+ trusted_packet_sequence_id: 2
+ trusted_pid: 1722
+}
+packet {
+ android_input_event {
+ dispatcher_window_dispatch_event {
+ event_id: 843076721
+ vsync_id: 182239
+ window_id: 76
+ resolved_flags: 0
+ dispatched_pointer {
+ pointer_id: 0
+ x_in_display: 1762.000000
+ y_in_display: 580.000000
+ axis_value_in_window {
+ axis: 0
+ value: 1762.000000
+ }
+ axis_value_in_window {
+ axis: 1
+ value: 580.000000
+ }
+ axis_value_in_window {
+ axis: 8
+ value: 2.483198
+ }
+ }
+ }
+ }
+ trusted_uid: 1000
+ trusted_packet_sequence_id: 2
+ trusted_pid: 1722
+}
+packet {
+ android_input_event {
+ dispatcher_window_dispatch_event {
+ event_id: 843076721
+ vsync_id: 182239
+ window_id: 68
+ resolved_flags: 0
+ dispatched_pointer {
+ pointer_id: 0
+ x_in_display: 1762.000000
+ y_in_display: 580.000000
+ axis_value_in_window {
+ axis: 0
+ value: 1762.000000
+ }
+ axis_value_in_window {
+ axis: 1
+ value: 580.000000
+ }
+ axis_value_in_window {
+ axis: 8
+ value: 2.483198
+ }
+ }
+ }
+ }
+ trusted_uid: 1000
+ trusted_packet_sequence_id: 2
+ trusted_pid: 1722
+}
+packet {
+ android_input_event {
+ dispatcher_window_dispatch_event {
+ event_id: 843076721
+ vsync_id: 0
+ window_id: 0
+ resolved_flags: 0
+ dispatched_pointer {
+ pointer_id: 0
+ x_in_display: 1762.000000
+ y_in_display: 580.000000
+ axis_value_in_window {
+ axis: 0
+ value: 1762.000000
+ }
+ axis_value_in_window {
+ axis: 1
+ value: 580.000000
+ }
+ axis_value_in_window {
+ axis: 8
+ value: 2.483198
+ }
+ }
+ }
+ }
+ trusted_uid: 1000
+ trusted_packet_sequence_id: 2
+ trusted_pid: 1722
+}
+packet {
+ android_input_event {
+ dispatcher_motion_event {
+ event_id: 744146837
+ event_time_nanos: 64179268985000
+ down_time_nanos: 64179212500000
+ source: 4098
+ action: 1
+ device_id: 4
+ display_id: 0
+ classification: 1
+ flags: 0
+ policy_flags: 1644167168
+ cursor_position_x: nan
+ cursor_position_y: nan
+ meta_state: 0
+ pointer {
+ pointer_id: 0
+ tool_type: 1
+ axis_value {
+ axis: 0
+ value: 580.000000
+ }
+ axis_value {
+ axis: 1
+ value: 798.000000
+ }
+ axis_value {
+ axis: 2
+ value: 0.113281
+ }
+ axis_value {
+ axis: 3
+ value: 0.011333
+ }
+ axis_value {
+ axis: 4
+ value: 29.000000
+ }
+ axis_value {
+ axis: 5
+ value: 29.000000
+ }
+ axis_value {
+ axis: 6
+ value: 29.000000
+ }
+ axis_value {
+ axis: 7
+ value: 29.000000
+ }
+ axis_value {
+ axis: 8
+ value: 0.912335
+ }
+ }
+ }
+ }
+ trusted_uid: 1000
+ trusted_packet_sequence_id: 2
+ trusted_pid: 1722
+}
+packet {
+ android_input_event {
+ dispatcher_window_dispatch_event {
+ event_id: 744146837
+ vsync_id: 182239
+ window_id: 181
+ resolved_flags: 0
+ dispatched_pointer {
+ pointer_id: 0
+ x_in_display: 1762.000000
+ y_in_display: 580.000000
+ axis_value_in_window {
+ axis: 0
+ value: 1762.000000
+ }
+ axis_value_in_window {
+ axis: 1
+ value: 580.000000
+ }
+ axis_value_in_window {
+ axis: 8
+ value: 2.483198
+ }
+ }
+ }
+ }
+ trusted_uid: 1000
+ trusted_packet_sequence_id: 2
+ trusted_pid: 1722
+}
+packet {
+ android_input_event {
+ dispatcher_window_dispatch_event {
+ event_id: 744146837
+ vsync_id: 182239
+ window_id: 58
+ resolved_flags: 3
+ dispatched_pointer {
+ pointer_id: 0
+ x_in_display: 1762.000000
+ y_in_display: 580.000000
+ axis_value_in_window {
+ axis: 0
+ value: 1718.181641
+ }
+ axis_value_in_window {
+ axis: 1
+ value: 600.000000
+ }
+ axis_value_in_window {
+ axis: 8
+ value: 2.483237
+ }
+ }
+ }
+ }
+ trusted_uid: 1000
+ trusted_packet_sequence_id: 2
+ trusted_pid: 1722
+}
+packet {
+ android_input_event {
+ dispatcher_window_dispatch_event {
+ event_id: 744146837
+ vsync_id: 182239
+ window_id: 76
+ resolved_flags: 0
+ dispatched_pointer {
+ pointer_id: 0
+ x_in_display: 1762.000000
+ y_in_display: 580.000000
+ axis_value_in_window {
+ axis: 0
+ value: 1762.000000
+ }
+ axis_value_in_window {
+ axis: 1
+ value: 580.000000
+ }
+ axis_value_in_window {
+ axis: 8
+ value: 2.483198
+ }
+ }
+ }
+ }
+ trusted_uid: 1000
+ trusted_packet_sequence_id: 2
+ trusted_pid: 1722
+}
+packet {
+ android_input_event {
+ dispatcher_window_dispatch_event {
+ event_id: 744146837
+ vsync_id: 182239
+ window_id: 68
+ resolved_flags: 0
+ dispatched_pointer {
+ pointer_id: 0
+ x_in_display: 1762.000000
+ y_in_display: 580.000000
+ axis_value_in_window {
+ axis: 0
+ value: 1762.000000
+ }
+ axis_value_in_window {
+ axis: 1
+ value: 580.000000
+ }
+ axis_value_in_window {
+ axis: 8
+ value: 2.483198
+ }
+ }
+ }
+ }
+ trusted_uid: 1000
+ trusted_packet_sequence_id: 2
+ trusted_pid: 1722
+}
+packet {
+ android_input_event {
+ dispatcher_window_dispatch_event {
+ event_id: 744146837
+ vsync_id: 0
+ window_id: 0
+ resolved_flags: 0
+ dispatched_pointer {
+ pointer_id: 0
+ x_in_display: 1762.000000
+ y_in_display: 580.000000
+ axis_value_in_window {
+ axis: 0
+ value: 1762.000000
+ }
+ axis_value_in_window {
+ axis: 1
+ value: 580.000000
+ }
+ axis_value_in_window {
+ axis: 8
+ value: 2.483198
+ }
+ }
+ }
+ }
+ trusted_uid: 1000
+ trusted_packet_sequence_id: 2
+ trusted_pid: 1722
+}
+packet {
+ android_input_event {
+ dispatcher_key_event {
+ event_id: 324105269
+ event_time_nanos: 64182660299000
+ down_time_nanos: 64182660299000
+ source: 257
+ action: 0
+ device_id: 2
+ display_id: -1
+ repeat_count: 0
+ flags: 8
+ policy_flags: 1644167168
+ key_code: 25
+ scan_code: 114
+ meta_state: 0
+ }
+ }
+ trusted_uid: 1000
+ trusted_packet_sequence_id: 2
+ trusted_pid: 1722
+}
+packet {
+ android_input_event {
+ dispatcher_window_dispatch_event {
+ event_id: 324105269
+ vsync_id: 182239
+ window_id: 181
+ resolved_flags: 8
+ }
+ }
+ trusted_uid: 1000
+ trusted_packet_sequence_id: 2
+ trusted_pid: 1722
+}
+packet {
+ android_input_event {
+ dispatcher_window_dispatch_event {
+ event_id: 324105269
+ vsync_id: 0
+ window_id: 0
+ resolved_flags: 8
+ }
+ }
+ trusted_uid: 1000
+ trusted_packet_sequence_id: 2
+ trusted_pid: 1722
+}
+packet {
+ android_input_event {
+ dispatcher_key_event {
+ event_id: 60594531
+ event_time_nanos: 64182816340000
+ down_time_nanos: 64182660299000
+ source: 257
+ action: 1
+ device_id: 2
+ display_id: -1
+ repeat_count: 0
+ flags: 8
+ policy_flags: 1644167168
+ key_code: 25
+ scan_code: 114
+ meta_state: 0
+ }
+ }
+ trusted_uid: 1000
+ trusted_packet_sequence_id: 2
+ trusted_pid: 1722
+}
+packet {
+ android_input_event {
+ dispatcher_window_dispatch_event {
+ event_id: 60594531
+ vsync_id: 182239
+ window_id: 181
+ resolved_flags: 8
+ }
+ }
+ trusted_uid: 1000
+ trusted_packet_sequence_id: 2
+ trusted_pid: 1722
+}
+packet {
+ android_input_event {
+ dispatcher_window_dispatch_event {
+ event_id: 60594531
+ vsync_id: 0
+ window_id: 0
+ resolved_flags: 8
+ }
+ }
+ trusted_uid: 1000
+ trusted_packet_sequence_id: 2
+ trusted_pid: 1722
+}
+packet {
+ timestamp: 178683985660693
+ trusted_uid: 9999
+ trusted_packet_sequence_id: 1
+ service_event {
+ read_tracing_buffers_completed: true
+ }
+}
+packet {
+ trusted_uid: 9999
+ trusted_packet_sequence_id: 1
+ trace_stats {
+ buffer_stats {
+ buffer_size: 1024000000
+ bytes_written: 4096
+ chunks_written: 1
+ }
+ producers_connected: 13
+ producers_seen: 16
+ data_sources_registered: 40
+ data_sources_seen: 13
+ tracing_sessions: 2
+ total_buffers: 4
+ chunks_discarded: 7
+ patches_discarded: 0
+ invalid_packets: 0
+ flushes_requested: 1
+ flushes_succeeded: 1
+ flushes_failed: 0
+ final_flush_outcome: FINAL_FLUSH_UNSPECIFIED
+ }
+}
diff --git a/test/trace_processor/diff_tests/parser/android/tests_android_input_event.py b/test/trace_processor/diff_tests/parser/android/tests_android_input_event.py
new file mode 100644
index 000000000..30ac6165d
--- /dev/null
+++ b/test/trace_processor/diff_tests/parser/android/tests_android_input_event.py
@@ -0,0 +1,272 @@
+#!/usr/bin/env python3
+# Copyright (C) 2024 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License a
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from python.generators.diff_tests.testing import Path
+from python.generators.diff_tests.testing import Csv
+from python.generators.diff_tests.testing import DiffTestBlueprint
+from python.generators.diff_tests.testing import TestSuite
+
+class AndroidInputEvent(TestSuite):
+
+ def test_key_events_table(self):
+ return DiffTestBlueprint(
+ trace=Path('input_event_trace.textproto'),
+ query="""
+ INCLUDE PERFETTO MODULE android.input;
+ SELECT
+ event_id, ts
+ FROM
+ android_key_events;
+ """,
+ out=Csv("""
+ "event_id","ts"
+ 324105269,64182660299000
+ 60594531,64182816340000
+ """))
+
+ def test_key_events_args(self):
+ return DiffTestBlueprint(
+ trace=Path('input_event_trace.textproto'),
+ query="""
+ INCLUDE PERFETTO MODULE android.input;
+ SELECT
+ args.key, args.display_value
+ FROM
+ android_key_events AS e JOIN args ON e.arg_set_id = args.arg_set_id
+ WHERE e.event_id = 60594531
+ ORDER BY args.key;
+ """,
+ out=Csv("""
+ "key","display_value"
+ "action","1"
+ "device_id","2"
+ "display_id","-1"
+ "down_time_nanos","64182660299000"
+ "event_id","60594531"
+ "event_time_nanos","64182816340000"
+ "flags","8"
+ "key_code","25"
+ "meta_state","0"
+ "policy_flags","1644167168"
+ "repeat_count","0"
+ "scan_code","114"
+ "source","257"
+ """))
+
+ def test_motion_events_table(self):
+ return DiffTestBlueprint(
+ trace=Path('input_event_trace.textproto'),
+ query="""
+ INCLUDE PERFETTO MODULE android.input;
+ SELECT
+ event_id, ts
+ FROM
+ android_motion_events;
+ """,
+ out=Csv("""
+ "event_id","ts"
+ 104114844,64179212500000
+ 1141228253,64179212500000
+ 843076721,64179262122000
+ 744146837,64179268985000
+ """))
+
+ def test_motion_events_args(self):
+ return DiffTestBlueprint(
+ trace=Path('input_event_trace.textproto'),
+ query="""
+ INCLUDE PERFETTO MODULE android.input;
+ SELECT
+ args.key, args.display_value
+ FROM
+ android_motion_events AS e JOIN args ON e.arg_set_id = args.arg_set_id
+ WHERE e.event_id = 1141228253
+ ORDER BY args.key;
+ """,
+ out=Csv("""
+ "key","display_value"
+ "action","4"
+ "classification","0"
+ "cursor_position_x","[NULL]"
+ "cursor_position_y","[NULL]"
+ "device_id","4"
+ "display_id","0"
+ "down_time_nanos","64179212500000"
+ "event_id","1141228253"
+ "event_time_nanos","64179212500000"
+ "flags","0"
+ "meta_state","0"
+ "pointer[0].axis_value[0].axis","0"
+ "pointer[0].axis_value[0].value","580.0"
+ "pointer[0].axis_value[1].axis","1"
+ "pointer[0].axis_value[1].value","798.0"
+ "pointer[0].axis_value[2].axis","2"
+ "pointer[0].axis_value[2].value","1.00390601158142"
+ "pointer[0].axis_value[3].axis","3"
+ "pointer[0].axis_value[3].value","0.0339980013668537"
+ "pointer[0].axis_value[4].axis","4"
+ "pointer[0].axis_value[4].value","92.0"
+ "pointer[0].axis_value[5].axis","5"
+ "pointer[0].axis_value[5].value","82.0"
+ "pointer[0].axis_value[6].axis","6"
+ "pointer[0].axis_value[6].value","92.0"
+ "pointer[0].axis_value[7].axis","7"
+ "pointer[0].axis_value[7].value","82.0"
+ "pointer[0].axis_value[8].axis","8"
+ "pointer[0].axis_value[8].value","0.983282029628754"
+ "pointer[0].pointer_id","0"
+ "pointer[0].tool_type","1"
+ "policy_flags","1644167168"
+ "source","4098"
+ """))
+
+ def test_dispatch_table(self):
+ return DiffTestBlueprint(
+ trace=Path('input_event_trace.textproto'),
+ query="""
+ INCLUDE PERFETTO MODULE android.input;
+ SELECT
+ id, event_id, vsync_id, window_id
+ FROM
+ android_input_event_dispatch;
+ """,
+ out=Csv("""
+ "id","event_id","vsync_id","window_id"
+ 0,1141228253,182239,105
+ 1,104114844,182239,181
+ 2,104114844,182239,58
+ 3,104114844,182239,76
+ 4,104114844,182239,68
+ 5,104114844,0,0
+ 6,843076721,182239,181
+ 7,843076721,182239,58
+ 8,843076721,182239,76
+ 9,843076721,182239,68
+ 10,843076721,0,0
+ 11,744146837,182239,181
+ 12,744146837,182239,58
+ 13,744146837,182239,76
+ 14,744146837,182239,68
+ 15,744146837,0,0
+ 16,324105269,182239,181
+ 17,324105269,0,0
+ 18,60594531,182239,181
+ 19,60594531,0,0
+ """))
+
+ def test_motion_dispatch_args(self):
+ return DiffTestBlueprint(
+ trace=Path('input_event_trace.textproto'),
+ query="""
+ INCLUDE PERFETTO MODULE android.input;
+ SELECT
+ d.id, args.key, args.display_value
+ FROM
+ android_input_event_dispatch AS d JOIN args ON d.arg_set_id = args.arg_set_id
+ WHERE d.event_id = 104114844
+ ORDER BY d.id, args.key;
+ """,
+ out=Csv("""
+ "id","key","display_value"
+ 1,"dispatched_pointer[0].axis_value_in_window[0].axis","0"
+ 1,"dispatched_pointer[0].axis_value_in_window[0].value","1762.0"
+ 1,"dispatched_pointer[0].axis_value_in_window[1].axis","1"
+ 1,"dispatched_pointer[0].axis_value_in_window[1].value","580.0"
+ 1,"dispatched_pointer[0].axis_value_in_window[2].axis","8"
+ 1,"dispatched_pointer[0].axis_value_in_window[2].value","2.5541570186615"
+ 1,"dispatched_pointer[0].pointer_id","0"
+ 1,"dispatched_pointer[0].x_in_display","1762.0"
+ 1,"dispatched_pointer[0].y_in_display","580.0"
+ 1,"event_id","104114844"
+ 1,"resolved_flags","0"
+ 1,"vsync_id","182239"
+ 1,"window_id","181"
+ 2,"dispatched_pointer[0].axis_value_in_window[0].axis","0"
+ 2,"dispatched_pointer[0].axis_value_in_window[0].value","1718.181640625"
+ 2,"dispatched_pointer[0].axis_value_in_window[1].axis","1"
+ 2,"dispatched_pointer[0].axis_value_in_window[1].value","600.0"
+ 2,"dispatched_pointer[0].axis_value_in_window[2].axis","8"
+ 2,"dispatched_pointer[0].axis_value_in_window[2].value","2.55407404899597"
+ 2,"dispatched_pointer[0].pointer_id","0"
+ 2,"dispatched_pointer[0].x_in_display","1762.0"
+ 2,"dispatched_pointer[0].y_in_display","580.0"
+ 2,"event_id","104114844"
+ 2,"resolved_flags","3"
+ 2,"vsync_id","182239"
+ 2,"window_id","58"
+ 3,"dispatched_pointer[0].axis_value_in_window[0].axis","0"
+ 3,"dispatched_pointer[0].axis_value_in_window[0].value","1762.0"
+ 3,"dispatched_pointer[0].axis_value_in_window[1].axis","1"
+ 3,"dispatched_pointer[0].axis_value_in_window[1].value","580.0"
+ 3,"dispatched_pointer[0].axis_value_in_window[2].axis","8"
+ 3,"dispatched_pointer[0].axis_value_in_window[2].value","2.5541570186615"
+ 3,"dispatched_pointer[0].pointer_id","0"
+ 3,"dispatched_pointer[0].x_in_display","1762.0"
+ 3,"dispatched_pointer[0].y_in_display","580.0"
+ 3,"event_id","104114844"
+ 3,"resolved_flags","0"
+ 3,"vsync_id","182239"
+ 3,"window_id","76"
+ 4,"dispatched_pointer[0].axis_value_in_window[0].axis","0"
+ 4,"dispatched_pointer[0].axis_value_in_window[0].value","1762.0"
+ 4,"dispatched_pointer[0].axis_value_in_window[1].axis","1"
+ 4,"dispatched_pointer[0].axis_value_in_window[1].value","580.0"
+ 4,"dispatched_pointer[0].axis_value_in_window[2].axis","8"
+ 4,"dispatched_pointer[0].axis_value_in_window[2].value","2.5541570186615"
+ 4,"dispatched_pointer[0].pointer_id","0"
+ 4,"dispatched_pointer[0].x_in_display","1762.0"
+ 4,"dispatched_pointer[0].y_in_display","580.0"
+ 4,"event_id","104114844"
+ 4,"resolved_flags","0"
+ 4,"vsync_id","182239"
+ 4,"window_id","68"
+ 5,"dispatched_pointer[0].axis_value_in_window[0].axis","0"
+ 5,"dispatched_pointer[0].axis_value_in_window[0].value","1762.0"
+ 5,"dispatched_pointer[0].axis_value_in_window[1].axis","1"
+ 5,"dispatched_pointer[0].axis_value_in_window[1].value","580.0"
+ 5,"dispatched_pointer[0].axis_value_in_window[2].axis","8"
+ 5,"dispatched_pointer[0].axis_value_in_window[2].value","2.5541570186615"
+ 5,"dispatched_pointer[0].pointer_id","0"
+ 5,"dispatched_pointer[0].x_in_display","1762.0"
+ 5,"dispatched_pointer[0].y_in_display","580.0"
+ 5,"event_id","104114844"
+ 5,"resolved_flags","0"
+ 5,"vsync_id","0"
+ 5,"window_id","0"
+ """))
+
+ def test_key_dispatch_args(self):
+ return DiffTestBlueprint(
+ trace=Path('input_event_trace.textproto'),
+ query="""
+ INCLUDE PERFETTO MODULE android.input;
+ SELECT
+ d.id, args.key, args.display_value
+ FROM
+ android_input_event_dispatch AS d JOIN args ON d.arg_set_id = args.arg_set_id
+ WHERE d.event_id = 324105269
+ ORDER BY d.id, args.key;
+ """,
+ out=Csv("""
+ "id","key","display_value"
+ 16,"event_id","324105269"
+ 16,"resolved_flags","8"
+ 16,"vsync_id","182239"
+ 16,"window_id","181"
+ 17,"event_id","324105269"
+ 17,"resolved_flags","8"
+ 17,"vsync_id","0"
+ 17,"window_id","0"
+ """))
diff --git a/test/trace_processor/diff_tests/parser/android/tests_viewcapture.py b/test/trace_processor/diff_tests/parser/android/tests_viewcapture.py
new file mode 100644
index 000000000..e089ecb00
--- /dev/null
+++ b/test/trace_processor/diff_tests/parser/android/tests_viewcapture.py
@@ -0,0 +1,81 @@
+#!/usr/bin/env python3
+# Copyright (C) 2024 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License a
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from python.generators.diff_tests.testing import Path
+from python.generators.diff_tests.testing import Csv
+from python.generators.diff_tests.testing import DiffTestBlueprint
+from python.generators.diff_tests.testing import TestSuite
+
+
+class ViewCapture(TestSuite):
+
+ def test_has_expected_rows(self):
+ return DiffTestBlueprint(
+ trace=Path('viewcapture.textproto'),
+ query="""
+ INCLUDE PERFETTO MODULE android.winscope.viewcapture;
+ SELECT
+ id, ts
+ FROM
+ android_viewcapture;
+ """,
+ out=Csv("""
+ "id","ts"
+ 0,448881087865
+ 1,448883575576
+ """))
+
+ def test_has_expected_args(self):
+ return DiffTestBlueprint(
+ trace=Path('viewcapture.textproto'),
+ query="""
+ INCLUDE PERFETTO MODULE android.winscope.viewcapture;
+ SELECT
+ args.key, args.display_value
+ FROM
+ android_viewcapture AS vc JOIN args ON vc.arg_set_id = args.arg_set_id
+ WHERE vc.id = 0
+ ORDER BY args.key
+ LIMIT 10;
+ """,
+ out=Csv("""
+ "key","display_value"
+ "package_name","com.google.android.apps.nexuslauncher"
+ "views[0].alpha","1.0"
+ "views[0].class_name","com.android.internal.policy.PhoneWindow@6cec234"
+ "views[0].hashcode","182652084"
+ "views[0].height","2400"
+ "views[0].parent_id","-1"
+ "views[0].scale_x","1.0"
+ "views[0].scale_y","1.0"
+ "views[0].view_id","NO_ID"
+ "views[0].width","1080"
+ """))
+
+ def test_handle_string_deinterning_errors(self):
+ return DiffTestBlueprint(
+ trace=Path('viewcapture.textproto'),
+ query="""
+ INCLUDE PERFETTO MODULE android.winscope.viewcapture;
+ SELECT
+ args.key, args.display_value
+ FROM
+ android_viewcapture AS vc JOIN args ON vc.arg_set_id = args.arg_set_id
+ WHERE vc.id = 1 and args.key = 'views[1].class_name';
+ """,
+ out=Csv("""
+ "key","display_value"
+ "views[1].class_name","STRING DE-INTERNING ERROR"
+ """))
diff --git a/test/trace_processor/diff_tests/parser/android/viewcapture.textproto b/test/trace_processor/diff_tests/parser/android/viewcapture.textproto
new file mode 100644
index 000000000..7f484b8ea
--- /dev/null
+++ b/test/trace_processor/diff_tests/parser/android/viewcapture.textproto
@@ -0,0 +1,128 @@
+packet {
+ clock_snapshot {
+ primary_trace_clock: BUILTIN_CLOCK_BOOTTIME
+ clocks {
+ clock_id: 6
+ timestamp: 448243204726
+ }
+ clocks {
+ clock_id: 2
+ timestamp: 1716366701256000218
+ }
+ clocks {
+ clock_id: 4
+ timestamp: 448237110366
+ }
+ clocks {
+ clock_id: 1
+ timestamp: 1716366701262094741
+ }
+ clocks {
+ clock_id: 3
+ timestamp: 448243204971
+ }
+ clocks {
+ clock_id: 5
+ timestamp: 448243205052
+ }
+ }
+ trusted_uid: 9999
+ trusted_packet_sequence_id: 1
+}
+
+packet {
+ first_packet_on_sequence: true
+ timestamp: 448881087865
+ winscope_extensions {
+ [perfetto.protos.WinscopeExtensionsImpl.viewcapture] {
+ package_name_iid: 1
+ window_name_iid: 1
+ views {
+ parent_id: -1
+ hashcode: 182652084
+ view_id_iid: 1
+ class_name_iid: 1
+ width: 1080
+ height: 2400
+ scale_x: 1.000000
+ scale_y: 1.000000
+ alpha: 1.000000
+ will_not_draw: true
+ }
+ views {
+ id: 1
+ hashcode: 130248925
+ view_id_iid: 3
+ class_name_iid: 2
+ width: 1080
+ height: 2400
+ scale_x: 1.000000
+ scale_y: 1.000000
+ alpha: 1.000000
+ will_not_draw: true
+ }
+ }
+ }
+ sequence_flags: 3
+ interned_data {
+ viewcapture_class_name {
+ iid: 1
+ str: "com.android.internal.policy.PhoneWindow@6cec234"
+ }
+ viewcapture_class_name {
+ iid: 2
+ str: "com.android.internal.policy.DecorView"
+ }
+ viewcapture_package_name {
+ iid: 1
+ str: "com.google.android.apps.nexuslauncher"
+ }
+ viewcapture_view_id {
+ iid: 1
+ str: "NO_ID"
+ }
+ }
+ trusted_uid: 10230
+ trusted_packet_sequence_id: 2
+ trusted_pid: 2688
+ previous_packet_dropped: true
+}
+
+packet {
+ timestamp: 448883575576
+ winscope_extensions {
+ [perfetto.protos.WinscopeExtensionsImpl.viewcapture] {
+ package_name_iid: 1
+ window_name_iid: 1
+ views {
+ parent_id: -1
+ hashcode: 182652084
+ view_id_iid: 1
+ class_name_iid: 1
+ width: 1080
+ height: 2400
+ scale_x: 1.000000
+ scale_y: 1.000000
+ alpha: 1.000000
+ will_not_draw: true
+ }
+ views {
+ id: 1
+ hashcode: 130248925
+ view_id_iid: 1
+ # triggers de-interning error because of unavailable iid-to-string mapping
+ class_name_iid: 3
+ width: 1080
+ height: 2400
+ scale_x: 1.000000
+ scale_y: 1.000000
+ alpha: 1.000000
+ will_not_draw: true
+ }
+ }
+ }
+ sequence_flags: 2
+ trusted_uid: 10230
+ trusted_packet_sequence_id: 2
+ trusted_pid: 2688
+}
diff --git a/test/trace_processor/diff_tests/parser/parsing/systrace_html.out b/test/trace_processor/diff_tests/parser/parsing/systrace_html.out
index 9b736bd65..f41239c60 100644
--- a/test/trace_processor/diff_tests/parser/parsing/systrace_html.out
+++ b/test/trace_processor/diff_tests/parser/parsing/systrace_html.out
@@ -3022,8 +3022,8 @@
6824713437995000,7,43000,6824713438038000,0,"R",120,0,"swapper",0
6824713438009000,6,19000,6824713438028000,630,"S",100,630,"kworker/u17:1",1134
6824713438028000,6,10000,6824713438038000,669,"S",120,669,"kworker/6:1",14833
-6824713438038000,6,283000,6824713438321000,0,"R",120,0,"swapper",0
6824713438038000,7,7000,6824713438045000,2487,"S",120,739,"UsbFfs-worker",20308
+6824713438038000,6,283000,6824713438321000,0,"R",120,0,"swapper",0
6824713438045000,7,470000,6824713438515000,0,"R",120,0,"swapper",0
6824713438321000,6,20000,6824713438341000,630,"S",100,630,"kworker/u17:1",1134
6824713438341000,6,34000,6824713438375000,0,"R",120,0,"swapper",0
@@ -3194,8 +3194,8 @@
6824713461977000,0,38000,6824713462015000,0,"R",120,0,"swapper",0
6824713462015000,0,162000,6824713462177000,771,"S",97,493,"DispSync",676
6824713462129000,1,262000,6824713462391000,0,"R",120,0,"swapper",0
-6824713462177000,0,142000,6824713462319000,0,"R",120,0,"swapper",0
6824713462177000,2,255000,6824713462432000,773,"S",97,493,"app",678
+6824713462177000,0,142000,6824713462319000,0,"R",120,0,"swapper",0
6824713462319000,0,1790000,6824713464109000,644,"S",120,644,"ndroid.systemui",1664
6824713462391000,1,75000,6824713462466000,771,"S",97,493,"DispSync",676
6824713462432000,2,1186000,6824713463618000,0,"R",120,0,"swapper",0
diff --git a/test/trace_processor/diff_tests/parser/parsing/tests.py b/test/trace_processor/diff_tests/parser/parsing/tests.py
index 91d2f6e46..988a430fb 100644
--- a/test/trace_processor/diff_tests/parser/parsing/tests.py
+++ b/test/trace_processor/diff_tests/parser/parsing/tests.py
@@ -338,7 +338,7 @@ class Parsing(TestSuite):
SELECT ts, cpu, dur, ts_end, utid, end_state, priority, upid, name, tid
FROM sched
JOIN thread USING(utid)
- ORDER BY ts;
+ ORDER BY ts, sched.id;
""",
out=Path('systrace_html.out'))
@@ -735,13 +735,13 @@ class Parsing(TestSuite):
trace=Path('cpu_info.textproto'),
query="""
SELECT
- id,
+ cpu,
cluster_id,
processor
FROM cpu;
""",
out=Csv("""
- "id","cluster_id","processor"
+ "cpu","cluster_id","processor"
0,0,"AArch64 Processor rev 13 (aarch64)"
1,0,"AArch64 Processor rev 13 (aarch64)"
2,0,"AArch64 Processor rev 13 (aarch64)"
@@ -758,8 +758,8 @@ class Parsing(TestSuite):
query="""
SELECT
freq,
- GROUP_CONCAT(cpu_id) AS cpus
- FROM cpu_freq
+ GROUP_CONCAT(cpu) AS cpus
+ FROM cpu_frequencies
GROUP BY freq
ORDER BY freq;
""",
@@ -1369,14 +1369,14 @@ class Parsing(TestSuite):
trace_modifier=TraceInjector(['cpu_info'], {'machine_id': 1001}),
query="""
SELECT
- id,
+ cpu,
cluster_id,
processor
FROM cpu
WHERE machine_id is not NULL;
""",
out=Csv("""
- "id","cluster_id","processor"
+ "cpu","cluster_id","processor"
0,0,"AArch64 Processor rev 13 (aarch64)"
1,0,"AArch64 Processor rev 13 (aarch64)"
2,0,"AArch64 Processor rev 13 (aarch64)"
@@ -1394,8 +1394,9 @@ class Parsing(TestSuite):
query="""
SELECT
freq,
- GROUP_CONCAT(cpu_id) AS cpus
- FROM cpu_freq
+ GROUP_CONCAT(cpu.cpu) AS cpus
+ FROM cpu_frequencies
+ JOIN cpu using (ucpu)
WHERE machine_id is not NULL
GROUP BY freq
ORDER BY freq;
@@ -1412,7 +1413,7 @@ class Parsing(TestSuite):
SELECT ts, thread.name, thread.tid
FROM thread_state
JOIN thread USING (utid)
- WHERE state = 'R' AND thread_state.machine_id is not NULL
+ WHERE state = 'R' AND thread.machine_id is not NULL
ORDER BY ts;
""",
out=Path('sched_waking_instants_compact_sched.out'))
diff --git a/test/trace_processor/diff_tests/parser/parsing/tests_traced_stats.py b/test/trace_processor/diff_tests/parser/parsing/tests_traced_stats.py
new file mode 100644
index 000000000..af2f362a9
--- /dev/null
+++ b/test/trace_processor/diff_tests/parser/parsing/tests_traced_stats.py
@@ -0,0 +1,104 @@
+#!/usr/bin/env python3
+# Copyright (C) 2024 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License a
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from python.generators.diff_tests.testing import Csv, TextProto
+from python.generators.diff_tests.testing import DiffTestBlueprint
+from python.generators.diff_tests.testing import TestSuite
+
+
+class ParsingTracedStats(TestSuite):
+ # Check that `previous_packed_dropped: true` maps to
+ # `traced_buf_sequence_packet_loss`.
+ def test_sequence_packet_loss(self):
+ return DiffTestBlueprint(
+ trace=TextProto(r"""
+ packet {
+ trusted_packet_sequence_id: 2
+ previous_packet_dropped: true
+ }
+ packet {
+ trusted_packet_sequence_id: 2
+ }
+ packet {
+ trusted_packet_sequence_id: 2
+ }
+ packet {
+ trusted_packet_sequence_id: 3
+ previous_packet_dropped: true
+ }
+ packet {
+ trusted_packet_sequence_id: 3
+ previous_packet_dropped: true
+ }
+ packet {
+ trusted_packet_sequence_id: 3
+ }
+ packet {
+ trusted_packet_sequence_id: 4
+ previous_packet_dropped: true
+ }
+ packet {
+ trusted_packet_sequence_id: 4
+ previous_packet_dropped: true
+ }
+ packet {
+ trusted_packet_sequence_id: 4
+ }
+ packet {
+ trusted_packet_sequence_id: 5
+ previous_packet_dropped: true
+ }
+ packet {
+ trusted_packet_sequence_id: 5
+ previous_packet_dropped: true
+ }
+ packet {
+ trusted_packet_sequence_id: 5
+ }
+ packet {
+ trusted_uid: 9999
+ trusted_packet_sequence_id: 1
+ trace_stats {
+ writer_stats {
+ sequence_id: 2
+ buffer: 0
+ }
+ writer_stats {
+ sequence_id: 3
+ buffer: 1
+ }
+ writer_stats {
+ sequence_id: 4
+ buffer: 2
+ }
+ writer_stats {
+ sequence_id: 5
+ buffer: 2
+ }
+ }
+ }
+ """),
+ query="""
+ SELECT idx, value
+ FROM stats
+ WHERE name = 'traced_buf_sequence_packet_loss'
+ ORDER BY idx;
+ """,
+ out=Csv("""
+ "idx","value"
+ 0,0
+ 1,1
+ 2,2
+ """))
diff --git a/test/trace_processor/diff_tests/parser/process_tracking/process_tracking_exec.py b/test/trace_processor/diff_tests/parser/process_tracking/process_tracking_exec.py
index a706d7ea4..83e10342f 100644
--- a/test/trace_processor/diff_tests/parser/process_tracking/process_tracking_exec.py
+++ b/test/trace_processor/diff_tests/parser/process_tracking/process_tracking_exec.py
@@ -22,24 +22,25 @@ import synth_common
trace = synth_common.create_trace()
-# Create a parent process which will be forked below.
+# Create a parent process which will be forked below.
trace.add_packet(ts=1)
trace.add_process(10, 0, "parent")
-# Fork off the new process and then kill it 5ns later.
+# Fork the process into a child.
trace.add_ftrace_packet(0)
trace.add_newtask(ts=15, tid=10, new_tid=11, new_comm='child', flags=0)
trace.add_sched(ts=16, prev_pid=10, next_pid=11, next_comm='child')
-# Create a parent process which will be forked below.
+# Scrape event for the forked process.
trace.add_packet(ts=20)
-trace.add_process(11, 0, "child_process")
+trace.add_process(11, 10, "child_process")
+# Rename of the main thread of forked process.
trace.add_ftrace_packet(0)
trace.add_rename(
ts=25, tid=11, old_comm='child', new_comm='true_name', oom_score_adj=1000)
-# Create a parent process which will be forked below.
+# Scrape of the forked process.
trace.add_packet(ts=30)
trace.add_process(11, 10, "true_process_name")
diff --git a/test/trace_processor/diff_tests/parser/process_tracking/synth_process_tracking.py b/test/trace_processor/diff_tests/parser/process_tracking/synth_process_tracking.py
index 68641adf4..19bf834d7 100644
--- a/test/trace_processor/diff_tests/parser/process_tracking/synth_process_tracking.py
+++ b/test/trace_processor/diff_tests/parser/process_tracking/synth_process_tracking.py
@@ -90,7 +90,7 @@ trace.add_sched(
ts=28, prev_pid=32, next_pid=40, prev_comm='p3-t2', next_comm='p4-t0')
trace.add_packet(ts=29)
-trace.add_process(40, 0, "process_4")
+trace.add_process(40, 30, "process_4")
# And now, this new process starts a new thread that recycles TID=31 (previously
# used as p3-t1, now becomes p4-t1).
diff --git a/test/trace_processor/diff_tests/parser/sched/tests.py b/test/trace_processor/diff_tests/parser/sched/tests.py
index 5568147be..bc63ff985 100644
--- a/test/trace_processor/diff_tests/parser/sched/tests.py
+++ b/test/trace_processor/diff_tests/parser/sched/tests.py
@@ -83,28 +83,29 @@ class SchedParser(TestSuite):
t.name,
c.ts,
c.value,
- c.machine_id
+ m.raw_id as raw_machine_id
FROM
counter AS c
- LEFT JOIN
+ JOIN
counter_track AS t
ON c.track_id = t.id
+ JOIN machine as m on t.machine_id = m.id
WHERE
name GLOB "Cpu ? Cap" OR name GLOB "Cpu ? Util" OR name GLOB "Cpu ? Nr Running"
ORDER BY ts;
""",
out=Csv("""
- "name","ts","value","machine_id"
- "Cpu 6 Util",10000,1.000000,1
- "Cpu 6 Cap",10000,1004.000000,1
- "Cpu 6 Nr Running",10000,0.000000,1
- "Cpu 7 Util",11000,1.000000,1
- "Cpu 7 Cap",11000,1007.000000,1
- "Cpu 7 Nr Running",11000,0.000000,1
- "Cpu 4 Util",12000,43.000000,1
- "Cpu 4 Cap",12000,760.000000,1
- "Cpu 4 Nr Running",12000,0.000000,1
- "Cpu 5 Util",13000,125.000000,1
- "Cpu 5 Cap",13000,757.000000,1
- "Cpu 5 Nr Running",13000,1.000000,1
+ "name","ts","value","raw_machine_id"
+ "Cpu 6 Util",10000,1.000000,1001
+ "Cpu 6 Cap",10000,1004.000000,1001
+ "Cpu 6 Nr Running",10000,0.000000,1001
+ "Cpu 7 Util",11000,1.000000,1001
+ "Cpu 7 Cap",11000,1007.000000,1001
+ "Cpu 7 Nr Running",11000,0.000000,1001
+ "Cpu 4 Util",12000,43.000000,1001
+ "Cpu 4 Cap",12000,760.000000,1001
+ "Cpu 4 Nr Running",12000,0.000000,1001
+ "Cpu 5 Util",13000,125.000000,1001
+ "Cpu 5 Cap",13000,757.000000,1001
+ "Cpu 5 Nr Running",13000,1.000000,1001
"""))
diff --git a/test/trace_processor/diff_tests/parser/simpleperf/clocks_align_test.sql b/test/trace_processor/diff_tests/parser/simpleperf/clocks_align_test.sql
new file mode 100644
index 000000000..f5a65eef3
--- /dev/null
+++ b/test/trace_processor/diff_tests/parser/simpleperf/clocks_align_test.sql
@@ -0,0 +1,99 @@
+--
+-- Copyright 2024 The Android Open Source Project
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- https://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+--
+
+CREATE PERFETTO VIEW perf_sample_in(ts INT, dur INT)
+AS
+SELECT ts, 0 AS dur FROM perf_sample;
+
+CREATE VIRTUAL TABLE span
+USING
+ SPAN_JOIN(perf_sample_in, slice PARTITIONED depth);
+
+CREATE PERFETTO TABLE slice_stack
+AS
+WITH
+ tmp AS (
+ SELECT
+ ts,
+ parent_stack_id,
+ string_AGG(IIF(name = 'Main loop', 'main', name), ',')
+ OVER (
+ PARTITION BY ts
+ ORDER BY depth ASC
+ RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
+ ) AS stack
+ FROM span
+ )
+SELECT ts, stack FROM tmp WHERE parent_stack_id = 0 ORDER BY TS ASC;
+
+CREATE PERFETTO TABLE perf_stack
+AS
+WITH
+ symbol AS (
+ SELECT
+ id,
+ symbol_set_id,
+ replace(replace(name, '(anonymous namespace)::', ''), '()', '') AS name
+ FROM stack_profile_symbol
+ ),
+ symbol_agg AS (
+ SELECT
+ id,
+ symbol_set_id,
+ string_agg(name, ',')
+ OVER (
+ PARTITION BY symbol_set_id
+ ORDER BY id DESC
+ RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
+ ) AS name
+ FROM symbol
+ WHERE name IN ('main', 'A', 'B', 'C', 'D', 'E')
+ ),
+ inline AS (
+ SELECT symbol_set_id, name FROM symbol_agg WHERE id = symbol_set_id
+ ),
+ frame AS (
+ SELECT f.id AS frame_id, i.name
+ FROM STACK_PROFILE_FRAME f, inline i
+ USING (symbol_set_id)
+ ),
+ child AS (
+ SELECT
+ s.ts,
+ spc.id,
+ spc.parent_id,
+ name
+ FROM perf_sample s, stack_profile_callsite spc
+ ON (s.callsite_id = spc.id),
+ frame USING (frame_id)
+ UNION ALL
+ SELECT
+ child.ts,
+ parent.id,
+ parent.parent_id,
+ COALESCE(f.name || ',', '') || child.name AS name
+ FROM child, stack_profile_callsite parent
+ ON (child.parent_id = parent.id)
+ LEFT JOIN frame f
+ USING (frame_id)
+ )
+SELECT ts, name AS stack FROM child WHERE parent_id IS NULL ORDER BY ts ASC;
+
+SELECT COUNT(*) AS misaligned_count
+FROM slice_stack s
+FULL JOIN perf_stack p
+ USING (ts)
+WHERE s.stack <> p.stack;
diff --git a/test/trace_processor/diff_tests/parser/simpleperf/perf_test.sql b/test/trace_processor/diff_tests/parser/simpleperf/perf_test.sql
new file mode 100644
index 000000000..fad6c5c31
--- /dev/null
+++ b/test/trace_processor/diff_tests/parser/simpleperf/perf_test.sql
@@ -0,0 +1,45 @@
+WITH
+ counter_delta_base AS (
+ SELECT
+ *,
+ LAG(value) OVER (PARTITION BY track_id ORDER BY ts) AS lag_value
+ FROM counter
+ ),
+ counter_delta AS (
+ SELECT
+ id,
+ type,
+ ts,
+ track_id,
+ IIF(lag_value IS NULL, value, value - lag_value) AS delta,
+ arg_set_id
+ FROM counter_delta_base
+ )
+SELECT
+ CAST(SUM(c.delta) AS INTEGER) AS event_count,
+ thread.name AS command,
+ pid,
+ tid,
+ spm.name AS shared_object,
+ IIF(
+ spf.name IS NOT NULL AND spf.name <> '',
+ spf.name,
+ format(
+ '%s[+%x]',
+ -- substring after last /
+ replace(spm.name, rtrim(spm.name, replace(spm.name, '/', '')), ''),
+ spf.rel_pc)) AS symbol
+FROM counter_delta AS c, perf_counter_track AS t
+ON c.track_id = t.id,
+perf_sample AS s
+ON c.ts = s.ts AND t.perf_session_id = s.perf_session_id AND t.cpu = s.cpu,
+thread USING (utid),
+process USING (upid),
+stack_profile_callsite AS spc ON (s.callsite_id = spc.id),
+stack_profile_frame AS spf ON (spc.frame_id = spf.id),
+stack_profile_mapping AS spm
+ON (spf.mapping = spm.id)
+WHERE
+ s.cpu IN (2, 6, 7)
+GROUP BY command, pid, tid, shared_object, symbol
+ORDER BY event_count DESC;
diff --git a/test/trace_processor/diff_tests/parser/simpleperf/perf_with_add_counter_test.sql b/test/trace_processor/diff_tests/parser/simpleperf/perf_with_add_counter_test.sql
new file mode 100644
index 000000000..17ff666de
--- /dev/null
+++ b/test/trace_processor/diff_tests/parser/simpleperf/perf_with_add_counter_test.sql
@@ -0,0 +1,67 @@
+WITH
+ counter_delta_base AS (
+ SELECT
+ *,
+ LAG(value) OVER (PARTITION BY track_id ORDER BY ts) AS lag_value
+ FROM counter
+ ),
+ counter_delta AS (
+ SELECT
+ id,
+ type,
+ ts,
+ track_id,
+ IIF(lag_value IS NULL, value, value - lag_value) AS delta,
+ arg_set_id
+ FROM counter_delta_base
+ ),
+ named_counter AS (
+ SELECT
+ perf_session_id,
+ ts,
+ cpu,
+ SUM(cast_int !(IIF(t.name = 'cpu-cycles', c.delta, 0)))
+ AS cpu_cycles,
+ SUM(cast_int !(IIF(t.name = 'instructions', c.delta, 0)))
+ AS instructions,
+ SUM(
+ cast_int
+ !(IIF(t.name NOT IN ('cpu-cycles', 'instructions'), c.delta, 0)))
+ AS others
+ FROM counter_delta AS c, perf_counter_track AS t
+ ON (c.track_id = t.id)
+ GROUP BY
+ perf_session_id,
+ ts,
+ cpu
+ )
+SELECT
+ SUM(c.cpu_cycles) AS cpu_cycles,
+ SUM(c.instructions) AS instructions,
+ -- Additional column (not present in simpleperf output) to validate that there
+ -- are no other counters.
+ SUM(c.others) AS others,
+ thread.name AS command,
+ pid,
+ tid,
+ spm.name AS shared_object,
+ IIF(
+ spf.name IS NOT NULL AND spf.name <> '',
+ spf.name,
+ format(
+ '%s[+%x]',
+ -- substring after last /
+ replace(spm.name, rtrim(spm.name, replace(spm.name, '/', '')), ''),
+ spf.rel_pc)) AS symbol
+FROM
+ named_counter AS c,
+ perf_sample AS s
+USING (perf_session_id, ts, cpu),
+thread USING (utid),
+process USING (upid),
+stack_profile_callsite AS spc ON (s.callsite_id = spc.id),
+stack_profile_frame AS spf ON (spc.frame_id = spf.id),
+stack_profile_mapping AS spm
+ON (spf.mapping = spm.id)
+GROUP BY command, pid, tid, shared_object, symbol
+ORDER BY cpu_cycles DESC;
diff --git a/test/trace_processor/diff_tests/parser/simpleperf/tests.py b/test/trace_processor/diff_tests/parser/simpleperf/tests.py
new file mode 100644
index 000000000..cb3cd3deb
--- /dev/null
+++ b/test/trace_processor/diff_tests/parser/simpleperf/tests.py
@@ -0,0 +1,160 @@
+#!/usr/bin/env python3
+# Copyright (C) 2024 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License a
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from python.generators.diff_tests.testing import Csv, Path, DataPath
+from python.generators.diff_tests.testing import DiffTestBlueprint
+from python.generators.diff_tests.testing import TestSuite
+
+
+# These diff tests are based on the same test data simpleperf uses for its
+# testing
+# (https://android.googlesource.com/platform/system/extras/+/refs/heads/main/simpleperf/testdata).
+# Basically we load these perf files and make sure we can get the same data we
+# would get via `simpleperf report`
+class Simpleperf(TestSuite):
+ # simpleperf report -i perf.data --print-event-count --csv --cpu 2,6,7
+ def test_perf(self):
+ return DiffTestBlueprint(
+ trace=DataPath('simpleperf/perf.data'),
+ query=Path('perf_test.sql'),
+ out=Csv('''
+ "event_count","command","pid","tid","shared_object","symbol"
+ 130707953,"t2",26130,26130,"/t2","t2[+51c]"
+ 126249237,"elf",26083,26083,"/elf","elf[+51c]"
+ 109687208,"t1",26124,26124,"/t1","t1[+523]"
+ 107027760,"t1",26124,26124,"/t1","t1[+51c]"
+ 101887409,"t2",26130,26130,"/t2","t2[+523]"
+ 92421568,"elf",26083,26083,"/elf","elf[+523]"
+ 61539363,"t1",26124,26124,"/t1","t1[+518]"
+ 60355129,"elf",26083,26083,"/elf","elf[+513]"
+ 54840659,"t1",26124,26124,"/t1","t1[+4ed]"
+ 52233968,"elf",26083,26083,"/elf","elf[+4ed]"
+ 50833094,"t1",26124,26124,"/t1","t1[+4f7]"
+ 50746374,"t2",26130,26130,"/t2","t2[+4ed]"
+ 49185691,"elf",26083,26083,"/elf","elf[+4f7]"
+ 47520901,"t2",26130,26130,"/t2","t2[+513]"
+ 45979652,"elf",26083,26083,"/elf","elf[+518]"
+ 44834371,"t2",26130,26130,"/t2","t2[+4f7]"
+ 42928068,"t2",26130,26130,"/t2","t2[+518]"
+ 39608138,"t1",26124,26124,"/t1","t1[+513]"
+ 1390415,"t1",26124,26124,"/t1","t1[+4fa]"
+ 1390305,"t2",26130,26130,"/t2","t2[+4fa]"
+ 1390173,"elf",26083,26083,"/elf","elf[+500]"
+ 1389030,"t2",26130,26130,"/t2","t2[+500]"
+ 693786,"t2",26130,26130,"/lib/modules/3.13.0-76-generic/kernel/drivers/ata/pata_acpi.ko","pata_acpi.ko[+ffffffffa05c4da4]"
+ '''))
+
+ def test_perf_tracks(self):
+ return DiffTestBlueprint(
+ trace=DataPath('simpleperf/perf.data'),
+ query='''
+ SELECT
+ name,
+ unit,
+ description,
+ cpu,
+ is_timebase
+ FROM perf_counter_track
+ ORDER BY perf_session_id, name, cpu;
+ ''',
+ out=Csv('''
+ "name","unit","description","cpu","is_timebase"
+ "","","",2,1
+ "","","",6,1
+ "","","",7,1
+ "","","",16,1
+ '''))
+
+ def test_perf_with_add_counter_tracks(self):
+ return DiffTestBlueprint(
+ trace=DataPath('simpleperf/perf_with_add_counter.data'),
+ query='''
+ SELECT
+ name,
+ unit,
+ description,
+ cpu,
+ is_timebase
+ FROM perf_counter_track
+ ORDER BY perf_session_id, name, cpu;
+ ''',
+ out=Csv('''
+ "name","unit","description","cpu","is_timebase"
+ "cpu-cycles","","",40,1
+ "instructions","","",40,0
+ '''))
+
+ # simpleperf report -i perf.data --print-event-count --csv
+ # The thread name in this trace changes over time. simpleperf shows samples
+ # with the old and new name. Perfetto does not support threads changing names,
+ # it only keeps the last name, thus there is a slight mismatch in the outputs.
+ def test_perf_with_add_counter(self):
+ return DiffTestBlueprint(
+ trace=DataPath('simpleperf/perf_with_add_counter.data'),
+ query=Path('perf_with_add_counter_test.sql'),
+ out=Csv('''
+ "cpu_cycles","instructions","others","command","pid","tid","shared_object","symbol"
+ 1011567,1188389,0,"sleep",689664,689664,"[kernel.kallsyms]","[kernel.kallsyms][+ffffffffa8cc9d30]"
+ 219490,233619,0,"sleep",689664,689664,"[kernel.kallsyms]","[kernel.kallsyms][+ffffffffa8e498c6]"
+ 191017,157031,0,"sleep",689664,689664,"[kernel.kallsyms]","[kernel.kallsyms][+ffffffffa94d0901]"
+ 175099,140443,0,"sleep",689664,689664,"/lib/x86_64-linux-gnu/libc-2.32.so","_dl_addr"
+ 152310,130151,0,"sleep",689664,689664,"[kernel.kallsyms]","[kernel.kallsyms][+ffffffffa8e30c70]"
+ 122439,87058,0,"sleep",689664,689664,"[kernel.kallsyms]","[kernel.kallsyms][+ffffffffa960015d]"
+ 89368,68332,0,"sleep",689664,689664,"[kernel.kallsyms]","[kernel.kallsyms][+ffffffffa8e03757]"
+ 40272,30457,0,"sleep",689664,689664,"/lib/x86_64-linux-gnu/ld-2.32.so","ld-2.32.so[+1767b]"
+ 14742,7858,0,"sleep",689664,689664,"[kernel.kallsyms]","[kernel.kallsyms][+ffffffffa8ce7a78]"
+ 7551,1953,0,"sleep",689664,689664,"[kernel.kallsyms]","[kernel.kallsyms][+ffffffffa8cc90c5]"
+ 7080,2940,0,"sleep",689664,689664,"[kernel.kallsyms]","[kernel.kallsyms][+ffffffffa8cc8119]"
+ 3520,295,0,"sleep",689664,689664,"[kernel.kallsyms]","[kernel.kallsyms][+ffffffffa8c6b3e6]"
+ '''))
+
+ def test_build_id_feature(self):
+ return DiffTestBlueprint(
+ trace=DataPath('simpleperf/perf.data'),
+ query='''
+ SELECT build_id, name
+ FROM stack_profile_mapping
+ WHERE build_id <> ""
+ ORDER BY name
+ ''',
+ out=Csv('''
+ "build_id","name"
+ "0b12a384a9f4a3f3659b7171ca615dbec3a81f71","/elf"
+ "0b12a384a9f4a3f3659b7171ca615dbec3a81f71","/elf"
+ "47111a47babdcd27ca2f9ff450dc1897ded761ed","/lib/modules/3.13.0-76-generic/kernel/drivers/ata/pata_acpi.ko"
+ "0b12a384a9f4a3f3659b7171ca615dbec3a81f71","/t1"
+ "0b12a384a9f4a3f3659b7171ca615dbec3a81f71","/t2"
+ '''))
+
+ def test_clocks_align(self):
+ return DiffTestBlueprint(
+ trace=DataPath('zip/perf_track_sym.zip'),
+ query=Path('clocks_align_test.sql'),
+ out=Csv('''
+ "misaligned_count"
+ 0
+ '''))
+
+ def test_cmdline(self):
+ return DiffTestBlueprint(
+ trace=DataPath('simpleperf/perf.data'),
+ query='''
+ SELECT cmdline
+ FROM perf_session
+ ''',
+ out=Csv('''
+ "cmdline"
+ "/ssd/android/aosp_master/out/host/linux-x86/bin/simpleperf record -p 26083,26090,26124,26130 sleep 0.0001"
+ '''))
diff --git a/test/trace_processor/diff_tests/parser/translated_args/process_track_name.textproto b/test/trace_processor/diff_tests/parser/translated_args/process_track_name.textproto
new file mode 100644
index 000000000..22dc8fb78
--- /dev/null
+++ b/test/trace_processor/diff_tests/parser/translated_args/process_track_name.textproto
@@ -0,0 +1,100 @@
+packet {
+ translation_table {
+ process_track_name {
+ raw_to_deobfuscated_name { key: "raw_track_name" value: "explicitly_renamed" }
+ raw_to_deobfuscated_name { key: "raw_slice1" value: "should_not_be_renamed" }
+ raw_to_deobfuscated_name { key: "raw_slice2" value: "implicitly_renamed" }
+ raw_to_deobfuscated_name { key: "raw_counter" value: "renamed_counter" }
+ }
+ }
+}
+packet {
+ trusted_packet_sequence_id: 1
+ timestamp: 1000
+ track_descriptor {
+ uuid: 1
+ process: {
+ process_name: "exampleProcess"
+ pid: 1234
+ }
+ }
+}
+# Define a named track
+packet {
+ trusted_packet_sequence_id: 1
+ timestamp: 1001
+ track_descriptor {
+ uuid: 2
+ name: "raw_track_name"
+ parent_uuid: 1
+ }
+}
+# define a track who's name will be implicitly defined by slice names
+packet {
+ trusted_packet_sequence_id: 1
+ timestamp: 1002
+ track_descriptor {
+ uuid: 3
+ parent_uuid: 1
+ }
+}
+# Named track for the counter
+packet {
+ trusted_packet_sequence_id: 1
+ timestamp: 1002
+ track_descriptor {
+ uuid: 4
+ name: "raw_counter"
+ parent_uuid: 1
+ counter {
+ }
+ }
+}
+# Counter Event
+packet {
+ trusted_packet_sequence_id: 1
+ timestamp: 1004
+ track_event {
+ track_uuid: 4
+ type: 4
+ counter_value: 99
+ }
+}
+
+# begin/end pair for explicitly named track
+packet {
+ trusted_packet_sequence_id: 1
+ timestamp: 1500
+ track_event {
+ track_uuid: 2
+ name: "raw_slice1"
+ type: 1
+ }
+}
+packet {
+ trusted_packet_sequence_id: 1
+ timestamp: 2000
+ track_event {
+ track_uuid: 2
+ type: 2
+ }
+}
+
+# begin/end pair for implicitly named slice
+packet {
+ trusted_packet_sequence_id: 1
+ timestamp: 3000
+ track_event {
+ track_uuid: 3
+ name: "raw_slice2"
+ type: 1
+ }
+}
+packet {
+ trusted_packet_sequence_id: 1
+ timestamp: 4000
+ track_event {
+ track_uuid: 3
+ type: 2
+ }
+} \ No newline at end of file
diff --git a/test/trace_processor/diff_tests/parser/translated_args/tests.py b/test/trace_processor/diff_tests/parser/translated_args/tests.py
index 7e28f3877..3bada0dd7 100644
--- a/test/trace_processor/diff_tests/parser/translated_args/tests.py
+++ b/test/trace_processor/diff_tests/parser/translated_args/tests.py
@@ -121,6 +121,25 @@ class TranslatedArgs(TestSuite):
"slice_begin"
"""))
+ def test_process_track_name(self):
+ return DiffTestBlueprint(
+ trace=Path('process_track_name.textproto'),
+ query="""
+ SELECT
+ name
+ FROM track
+ WHERE
+ name IS NOT NULL
+ AND type in ('process_track', 'process_counter_track')
+ ORDER BY name;
+ """,
+ out=Csv("""
+ "name"
+ "explicitly_renamed"
+ "implicitly_renamed"
+ "renamed_counter"
+ """))
+
def test_native_symbol_arg(self):
return DiffTestBlueprint(
trace=Path('native_symbol_arg.textproto'),
diff --git a/test/trace_processor/diff_tests/parser/zip/stacks_test.sql b/test/trace_processor/diff_tests/parser/zip/stacks_test.sql
new file mode 100644
index 000000000..68543f197
--- /dev/null
+++ b/test/trace_processor/diff_tests/parser/zip/stacks_test.sql
@@ -0,0 +1,48 @@
+WITH
+ symbol AS (
+ SELECT
+ id,
+ symbol_set_id,
+ replace(replace(name, '(anonymous namespace)::', ''), '()', '') AS name
+ FROM stack_profile_symbol
+ ),
+ symbol_agg AS (
+ SELECT
+ id,
+ symbol_set_id,
+ string_agg(name, ',')
+ OVER (
+ PARTITION BY symbol_set_id
+ ORDER BY id DESC
+ RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
+ ) AS name
+ FROM symbol
+ WHERE name IN ('main', 'A', 'B', 'C', 'D', 'E')
+ ),
+ inline AS (
+ SELECT symbol_set_id, name FROM symbol_agg WHERE id = symbol_set_id
+ ),
+ frame AS (
+ SELECT f.id AS frame_id, i.name
+ FROM STACK_PROFILE_FRAME f, inline i
+ USING (symbol_set_id)
+ ),
+ child AS (
+ SELECT
+ spc.id,
+ spc.parent_id,
+ name
+ FROM perf_sample s, stack_profile_callsite spc
+ ON (s.callsite_id = spc.id),
+ frame USING (frame_id)
+ UNION ALL
+ SELECT
+ parent.id,
+ parent.parent_id,
+ COALESCE(f.name || ',', '') || child.name AS name
+ FROM child, stack_profile_callsite parent
+ ON (child.parent_id = parent.id)
+ LEFT JOIN frame f
+ USING (frame_id)
+ )
+SELECT DISTINCT name FROM child WHERE parent_id IS NULL ORDER BY name \ No newline at end of file
diff --git a/test/trace_processor/diff_tests/parser/zip/tests.py b/test/trace_processor/diff_tests/parser/zip/tests.py
new file mode 100644
index 000000000..9827072a9
--- /dev/null
+++ b/test/trace_processor/diff_tests/parser/zip/tests.py
@@ -0,0 +1,60 @@
+#!/usr/bin/env python3
+# Copyright (C) 2023 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License a
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from python.generators.diff_tests.testing import Csv, Path, DataPath
+from python.generators.diff_tests.testing import DiffTestBlueprint
+from python.generators.diff_tests.testing import TestSuite
+
+
+class Zip(TestSuite):
+
+ def test_perf_proto_sym(self):
+ return DiffTestBlueprint(
+ trace=DataPath('zip/perf_track_sym.zip'),
+ query=Path('stacks_test.sql'),
+ out=Csv('''
+ "name"
+ "main,A"
+ "main,A,B"
+ "main,A,B,C"
+ "main,A,B,C,D"
+ "main,A,B,C,D,E"
+ "main,A,B,C,E"
+ "main,A,B,D"
+ "main,A,B,D,E"
+ "main,A,B,E"
+ "main,A,C"
+ "main,A,C,D"
+ "main,A,C,D,E"
+ "main,A,C,E"
+ "main,A,D"
+ "main,A,D,E"
+ "main,A,E"
+ "main,B"
+ "main,B,C"
+ "main,B,C,D"
+ "main,B,C,D,E"
+ "main,B,C,E"
+ "main,B,D"
+ "main,B,D,E"
+ "main,B,E"
+ "main,C"
+ "main,C,D"
+ "main,C,D,E"
+ "main,C,E"
+ "main,D"
+ "main,D,E"
+ "main,E"
+ '''))
diff --git a/test/trace_processor/diff_tests/stdlib/android/tests.py b/test/trace_processor/diff_tests/stdlib/android/tests.py
index 59a8877a9..6781e3e32 100644
--- a/test/trace_processor/diff_tests/stdlib/android/tests.py
+++ b/test/trace_processor/diff_tests/stdlib/android/tests.py
@@ -1244,16 +1244,16 @@ class AndroidStdlib(TestSuite):
""",
out=Csv("""
"ts","dur","score","bucket","process_name","oom_adj_ts","oom_adj_dur","oom_adj_thread_name","oom_adj_reason","oom_adj_trigger"
- 1737065264829,701108081,925,"cached_app","com.android.providers.calendar",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
- 1737066678827,3470211742,935,"cached_app","com.android.imsserviceentitlement",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
- 1737066873002,3470017567,945,"cached_app","com.android.carrierconfig",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
- 1737067058812,3469831757,955,"cached_app_lmk_first","com.android.messaging",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
- 1737067246975,699224817,955,"cached_app_lmk_first","android.process.acore",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
- 1737068421919,3468468650,965,"cached_app_lmk_first","com.android.shell",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
- 1737068599673,697908135,965,"cached_app_lmk_first","android.process.media",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
- 1737068933602,3467956967,975,"cached_app_lmk_first","com.android.gallery3d",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
- 1737069091010,3467799559,975,"cached_app_lmk_first","com.android.packageinstaller",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
- 1737069240534,3467650035,985,"cached_app_lmk_first","com.android.managedprovisioning",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
+1737065264829,701108081,925,"cached","com.android.providers.calendar",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
+1737066678827,3470211742,935,"cached","com.android.imsserviceentitlement",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
+1737066873002,3470017567,945,"cached","com.android.carrierconfig",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
+1737067058812,3469831757,955,"cached","com.android.messaging",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
+1737067246975,699224817,955,"cached","android.process.acore",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
+1737068421919,3468468650,965,"cached","com.android.shell",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
+1737068599673,697908135,965,"cached","android.process.media",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
+1737068933602,3467956967,975,"cached","com.android.gallery3d",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
+1737069091010,3467799559,975,"cached","com.android.packageinstaller",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
+1737069240534,3467650035,985,"cached","com.android.managedprovisioning",1737064421516,29484835,"binder:642_1","processEnd","IActivityManager#1598246212"
"""))
def test_broadcast_minsdk_u(self):
diff --git a/test/trace_processor/diff_tests/stdlib/counters/tests.py b/test/trace_processor/diff_tests/stdlib/counters/tests.py
index 270d074ce..d99eaf9d2 100644
--- a/test/trace_processor/diff_tests/stdlib/counters/tests.py
+++ b/test/trace_processor/diff_tests/stdlib/counters/tests.py
@@ -23,7 +23,7 @@ class StdlibCounterIntervals(TestSuite):
def test_intervals_counter_leading(self):
return DiffTestBlueprint(
- trace=DataPath('counters.json'),
+ trace=DataPath('counters.json'),
query="""
INCLUDE PERFETTO MODULE counters.intervals;
diff --git a/test/trace_processor/diff_tests/stdlib/cpu/tests.py b/test/trace_processor/diff_tests/stdlib/cpu/tests.py
index 0c32ed3da..34cf2136a 100644
--- a/test/trace_processor/diff_tests/stdlib/cpu/tests.py
+++ b/test/trace_processor/diff_tests/stdlib/cpu/tests.py
@@ -18,7 +18,172 @@ from python.generators.diff_tests.testing import DiffTestBlueprint
from python.generators.diff_tests.testing import TestSuite
-class CpuStdlib(TestSuite):
+class Cpu(TestSuite):
+
+ def test_cpu_utilization_per_second(self):
+ return DiffTestBlueprint(
+ trace=DataPath('example_android_trace_30s.pb'),
+ query="""
+ INCLUDE PERFETTO MODULE cpu.utilization.system;
+
+ SELECT * FROM cpu_utilization_per_second;
+ """,
+ out=Csv("""
+ "ts","utilization","unnormalized_utilization"
+ 70000000000,0.004545,0.036362
+ 71000000000,0.022596,0.180764
+ 72000000000,0.163393,1.307146
+ 73000000000,0.452122,3.616972
+ 74000000000,0.525557,4.204453
+ 75000000000,0.388632,3.109057
+ 76000000000,0.425447,3.403579
+ 77000000000,0.201112,1.608896
+ 78000000000,0.280247,2.241977
+ 79000000000,0.345228,2.761827
+ 80000000000,0.303258,2.426064
+ 81000000000,0.487522,3.900172
+ 82000000000,0.080542,0.644336
+ 83000000000,0.362450,2.899601
+ 84000000000,0.076438,0.611501
+ 85000000000,0.110689,0.885514
+ 86000000000,0.681488,5.451901
+ 87000000000,0.808331,6.466652
+ 88000000000,0.941768,7.534142
+ 89000000000,0.480556,3.844446
+ 90000000000,0.453268,3.626142
+ 91000000000,0.280310,2.242478
+ 92000000000,0.006381,0.051049
+ 93000000000,0.030991,0.247932
+ 94000000000,0.031981,0.255845
+ 95000000000,0.027931,0.223446
+ 96000000000,0.063066,0.504529
+ 97000000000,0.023847,0.190773
+ 98000000000,0.011291,0.090328
+ 99000000000,0.024065,0.192518
+ 100000000000,0.001964,0.015711
+ """))
+
+ def test_cpu_process_utilization_per_second(self):
+ return DiffTestBlueprint(
+ trace=DataPath('example_android_trace_30s.pb'),
+ query="""
+ INCLUDE PERFETTO MODULE cpu.utilization.process;
+
+ SELECT *
+ FROM cpu_process_utilization_per_second(10);
+ """,
+ out=Csv("""
+ "ts","utilization","unnormalized_utilization"
+ 72000000000,0.000187,0.001495
+ 73000000000,0.000182,0.001460
+ 77000000000,0.000072,0.000579
+ 78000000000,0.000275,0.002204
+ 82000000000,0.000300,0.002404
+ 83000000000,0.000004,0.000034
+ 87000000000,0.000133,0.001065
+ 88000000000,0.000052,0.000416
+ 89000000000,0.000212,0.001697
+ 92000000000,0.000207,0.001658
+ 97000000000,0.000353,0.002823
+ """))
+
+ def test_cpu_thread_utilization_per_second(self):
+ return DiffTestBlueprint(
+ trace=DataPath('example_android_trace_30s.pb'),
+ query="""
+ INCLUDE PERFETTO MODULE cpu.utilization.thread;
+
+ SELECT *
+ FROM cpu_thread_utilization_per_second(10);
+ """,
+ out=Csv("""
+ "ts","utilization","unnormalized_utilization"
+ 70000000000,0.000024,0.000195
+ 72000000000,0.000025,0.000200
+ 73000000000,0.000053,0.000420
+ 74000000000,0.000044,0.000352
+ 75000000000,0.000058,0.000461
+ 76000000000,0.000075,0.000603
+ 77000000000,0.000051,0.000407
+ 78000000000,0.000047,0.000374
+ 79000000000,0.000049,0.000396
+ 80000000000,0.000084,0.000673
+ 81000000000,0.000041,0.000329
+ 82000000000,0.000048,0.000383
+ 83000000000,0.000040,0.000323
+ 84000000000,0.000018,0.000145
+ 85000000000,0.000053,0.000421
+ 86000000000,0.000121,0.000972
+ 87000000000,0.000049,0.000392
+ 88000000000,0.000036,0.000285
+ 89000000000,0.000033,0.000266
+ 90000000000,0.000050,0.000401
+ 91000000000,0.000025,0.000201
+ 92000000000,0.000009,0.000071
+ """))
+
+ def test_cpu_cycles_per_cpu(self):
+ return DiffTestBlueprint(
+ trace=DataPath('android_postboot_unlock.pftrace'),
+ query=("""
+ INCLUDE PERFETTO MODULE cpu.utilization.system;
+
+ SELECT
+ *
+ FROM cpu_cycles_per_cpu;
+ """),
+ out=Csv("""
+ "cpu","cpu_type","millicycles","megacycles","runtime","min_freq","max_freq","avg_freq"
+ 0,"little",4007488375822,4007,2260291804,930000,1803000,1775516
+ 1,"little",3985923237512,3985,2247149674,930000,1803000,1776869
+ 2,"little",4047926756581,4047,2276274170,930000,1803000,1781496
+ 3,"little",3992276081242,3992,2248956757,930000,1803000,1778975
+ 4,"mid",5134318459625,5134,2203887266,553000,2348000,2335531
+ 5,"mid",5615703220380,5615,2438499077,553000,2348000,2308698
+ 6,"big",4715590442538,4715,1737264802,500000,2850000,2725191
+ 7,"big",4594701918170,4594,1719270548,500000,2850000,2685290
+ """))
+
+ def test_cpu_cycles_per_thread(self):
+ return DiffTestBlueprint(
+ trace=DataPath('android_cpu_eos.pb'),
+ query=("""
+ INCLUDE PERFETTO MODULE cpu.utilization.thread;
+
+ SELECT
+ AVG(millicycles) AS millicycles,
+ AVG(megacycles) AS megacycles,
+ AVG(runtime) AS runtime,
+ AVG(min_freq) AS min_freq,
+ AVG(max_freq) AS max_freq,
+ AVG(avg_freq) AS avg_freq
+ FROM cpu_cycles_per_thread;
+ """),
+ out=Csv("""
+ "millicycles","megacycles","runtime","min_freq","max_freq","avg_freq"
+ 25048302186.035053,24.624742,16080173.697531,1402708.453608,1648468.453608,1582627.707216
+ """))
+
+ def test_cpu_cycles_per_process(self):
+ return DiffTestBlueprint(
+ trace=DataPath('android_cpu_eos.pb'),
+ query=("""
+ INCLUDE PERFETTO MODULE cpu.utilization.process;
+
+ SELECT
+ AVG(millicycles) AS millicycles,
+ AVG(megacycles) AS megacycles,
+ AVG(runtime) AS runtime,
+ AVG(min_freq) AS min_freq,
+ AVG(max_freq) AS max_freq,
+ AVG(avg_freq) AS avg_freq
+ FROM cpu_cycles_per_process;
+ """),
+ out=Csv("""
+ "millicycles","megacycles","runtime","min_freq","max_freq","avg_freq"
+ 83208401098.424652,82.753425,53163023.244898,1189742.465753,1683945.205479,1534667.547945
+ """))
+
# Test CPU frequency counter grouping.
def test_cpu_eos_counters_freq(self):
return DiffTestBlueprint(
diff --git a/test/trace_processor/diff_tests/stdlib/dynamic_tables/tests.py b/test/trace_processor/diff_tests/stdlib/dynamic_tables/tests.py
index 60b170c9a..135a60e88 100644
--- a/test/trace_processor/diff_tests/stdlib/dynamic_tables/tests.py
+++ b/test/trace_processor/diff_tests/stdlib/dynamic_tables/tests.py
@@ -203,9 +203,10 @@ class DynamicTables(TestSuite):
query="""
SELECT
TO_TIMECODE(0) AS t0,
- TO_TIMECODE(123456789123456789) AS tN
+ TO_TIMECODE(3599123456789) AS t1,
+ TO_TIMECODE(3600123456789) AS t2
""",
out=Csv("""
- "t0","tN"
- "00:00:00 000 000 000","33:33:09 123 456 789"
+ "t0","t1","t2"
+ "00:00:00 000 000 000","00:59:59 123 456 789","01:00:00 123 456 789"
"""))
diff --git a/test/trace_processor/diff_tests/stdlib/export/firefox_profile.out b/test/trace_processor/diff_tests/stdlib/export/firefox_profile.out
new file mode 100644
index 000000000..bf896f90d
--- /dev/null
+++ b/test/trace_processor/diff_tests/stdlib/export/firefox_profile.out
@@ -0,0 +1,2 @@
+"export_to_firefox_profile()"
+"{"meta":{"interval":1,"startTime":0,"processType":0,"categories":[{"name":"Other","color":"grey","subcategories":["Other"]}],"product":"Perfetto","stackwalk":1,"version":29,"preprocessedProfileVersion":48,"markerSchema":[],"sampleUnits":{"time":"ms","eventDelay":"ms","threadCPUDelta":"µs"}},"libs":[],"pages":null,"counters":null,"profilerOverhead":null,"threads":[{"processType":"default","name":"swapper","isMainThread":0,"pid":0,"tid":0,"samples":{"stack":[],"time":[],"weight":null,"weightType":"samples","length":0},"markers":{"data":[],"name":[],"startTime":[],"endTime":[],"phase":[],"category":[],"length":0},"stackTable":{"frame":[],"category":[],"subcategory":[],"prefix":[],"length":0},"frameTable":{"address":[],"inlineDepth":[],"category":[],"subcategory":[],"func":[],"nativeSymbol":[],"innerWindowID":[],"implementation":[],"line":[],"column":[],"length":0},"stringArray":[],"funcTable":{"name":[],"isJS":[],"relevantForJS":[],"resource":[],"fileName":[],"lineNumber":[],"columnNumber":[],"length":0},"resourceTable":{"length":0,"lib":[],"name":[],"host":[],"type":[]},"nativeSymbols":{"libIndex":[],"address":[],"name":[],"functionSize":[],"length":0}},{"processType":"default","name":"callstack_gen","isMainThread":0,"pid":21596,"tid":21596,"samples":{"stack":[7,9,11,32,35,37,39,41,44,46,48,51,53,55,57,58,60,63,65,67,86,89,91,93,95,98,100,102,102,105,107,108,109,110,112,112,7,9,114,117,119,121,39,123,126,128,130,133,135,53,136,57,138,141,144,146,148,151,153,154,156,159,161,177,102,105,179,180,109,181,181,183,186,188,114,190,35,192,193,195,198,126,200,202,205,135,221,222,57,234,141,237,239,241,244,153,153,245,95,248,161,250,102,105,252,252,253,254,255,183,258,260,190,262,265,37,39,195,268,271,128,273,276,53,222,57,277,279,63,281,67,284,153,286,287,156,290,292,294,296,299,252,108,254,255,112,301,7,303,305,308,121,37,193,41,126,310,48,313,133,315,136,316,138,319,146,148,89,344,153,245,346,290,100,102,349,349,179,350,109,255,352,258,354,356,305,265,358,39,41,271,128,360,133,53,379,136,57,279,141,146,148,244,153,245,380,95,383,250,102,386,349,388,108,254,181,112,112,391,393,190,265,121,395,396,195,44,200,48,276,53,53,136,397,60,63,65,399,89,244,286,400,402,383,250,102,102,349,179,403,254,254,404,183,186,9,305,308,121,121,193,195,126,200,406,133,409,411,412,397,414,237,146,148,399,244,153,400,95,417,292,419,421,424,179,425,180,109,255,112,428,303,190,262,265,358,429,431,126,451,128,130,276,135,452,397,279,481,237,483,399,244,286,506,287,95,159,250,102,509,105,179,403,510,404,112,535,258,303,190,538,37,396,431,431,44,540,130,543,53,135,452,544,279,237,483,148,547,550,286,245,95,248,250,102,349,349,552,403,254,181,112,186,554,578,305,265,358,39,195,271,310,48,205,53,579,452,57,279,63,146,581,244,286,582,95,95,98,419,584,349,179,403,585,109,586,183,186,9,588,538,121,193,431,126,608,46,130,205,610,412,611,613,141,65,148,148,89,153,287,95,159,292,102,105,105,179,403,254,255,183,616,188,645,190,308,358,39,195,271,200,48,276,53,646,452,397,613,649,65,651,89,653,287,95,95,159,250,102,105,179,179,403,654,655,112,391,188,9,190,658,121,659,431,44,126,661,130,276,315,222,662,138,279,141,146,67,547,286,286,93,156,159,250,102,665,668,252,403,109,181,112,670,258,393,190,265,358,193,193,195,126,672,202,276,53,411,222,397,674,141,146,704,148,244,153,245,706,383,419,250,102,105,179,728,180,254,729,112,258,9,190,538,538,119,39,195,198,310,202,133,53,579,397,397,613,237,239,148,732,153,733,706,290,250,250,102,349,252,108,254,255,181,352,258,9,190,538,121,39,735,44,737,739,130,205,741,136,397,138,141,146,399,744,153,91,245,95,747,250,102,750,752,179,403,254,753,183,258,9,305,756,358,193,39,123,44,200,48,276,315,757,57,782,279,237,784,786,550,91,582,95,383,250,102,105,252,179,787,109,181,789,792,186,9,305,308,192,193,123,126,271,794,130,276,53,136,58,397,60,237,65,67,244,91,816,733,95,290,161,102,349,509,179,403,254,181,183,819,391,188,190,265,37,193,821,44,126,310,130,824,411,222,397,279,237,65,146,148,284,153,245,706,290,292,826,105,105,828,180,254,255,112,7,851,9,114,265,853,854,123,857,128,130,276,824,53,222,397,60,141,146,148,860,874,153,287,876,290,250,878,881,752,179,403,109,181,183,258,188,305,265,883,121,884,195,271,310,130,276,53,757,316,279,141,901,146,399,89,653,245,156,904,250,102,102,105,179,108,905,255,255,183,7,393,588,265,358,193,39,123,908,310,48,276,53,53,136,57,910,63,784,148,244,244,153,245,156,913,292,296,102,349,179,108,254,404,181,915,428,303,917,265,121,918,195,431,126,310,920,276,53,921,57,279,237,63,483,148,550,153,922,924,290,250,102,102,105,179,108,109,255,183,7,258,303,114,308,121,925,431,126,310,130,276,276,315,222,397,613,237,483,241,241,928,286,287,95,383,292,930,349,105,932,403,933,934,112,7,9,190,265,121,121,39,195,126,310,920,276,53,53,136,935,279,63,65,67,860,91,287,95,876,159,250,937,105,179,403,403,933,181,112,7,303,114,538,265,939,193,431,942,310,130,276,276,411,222,662,138,141,65,148,399,244,91,245,156,98,292,419,102,349,179,967,350,109,181,352,970,9,11,973,308,121,659,975,44,46,48,48,276,315,136,57,279,978,65,399,550,244,91,287,156,290,419,102,105,105,107,403,254,181,112,258,9,114,308,981,37,193,431,984,200,130,130,276,135,985,397,279,63,146,399,89,244,91,986,95,98,419,102,349,349,252,108,109,729,112,7,391,393,190,265,358,39,988,44,310,920,276,991,135,222,992,994,141,146,148,244,732,91,245,95,159,250,102,665,105,179,403,254,995,352,186,997,9,305,117,121,39,195,44,200,1012,130,205,1014,136,992,138,63,141,146,399,860,153,1015,924,95,159,292,102,1018,105,179,403,1019,181,112,112,258,303,190,265,192,1020,1022,1025,857,128,130,1028,135,222,1029,613,1032,649,146,148,284,286,154,876,290,292,1051,294,349,107,403,109,110,112,183,258,303,588,538,121,193,1053,126,1071,200,130,991,135,222,1072,279,141,65,148,1077,244,153,245,1079,290,292,1081,881,105,252,1082,109,110,112,186,393,9,305,265,121,659,195,44,310,130,133,409,411,1083,397,613,141,1085,786,284,1087,287,346,876,290,161,102,105,932,350,510,1088,255,789,616,303,190,538,658,121,193,975,126,128,130,133,135,1089,1090,1090,138,144,239,399,1093,91,245,156,159,250,102,102,349,179,108,933,181,1095,258,186,303,1097,265,121,1098,41,44,1100,1110,130,409,315,985,397,1112,237,146,67,284,89,1114,245,156,383,161,102,105,252,179,180,109,181,352,970,303,588,538,119,193,193,431,44,1116,920,276,135,136,662,138,141,65,483,67,860,286,287,876,290,161,102,105,299,179,403,109,255,112,352,391,393,262,658,121,429,195,195,44,200,920,409,610,136,57,57,279,649,281,148,89,653,1118,287,706,159,161,102,1081,349,252,1082,933,254,181,670,258,303,917,265,1121,121,39,1123,126,200,1125,130,133,53,222,397,613,141,1150,483,148,244,91,245,95,1153,98,1155,102,105,105,179,403,933,181,352,183,258,9,114,538,121,1175,1020,735,126,310,1177,1180,135,222,57,674,279,1183,146,67,244,153,287,706,417,1153,250,102,105,179,350,254,1184,181,112,792,393,305,1187,883,193,195,126,198,310,1177,1190,315,452,397,138,63,483,67,284,244,153,287,95,98,161,421,349,105,252,1191,109,404,112,7,303,190,308,1121,883,39,195,126,310,920,276,53,222,662,613,138,141,65,148,860,653,400,95,747,161,102,421,349,179,403,109,1192,352,7,9,9,588,1187,121,193,123,1195,46,920,130,1028,135,222,57,613,63,65,239,148,244,153,1196,876,290,159,1198,102,349,252,107,108,254,404,183,258,391,1200,305,265,121,193,195,195,126,310,48,276,135,222,57,613,237,237,65,148,860,153,380,876,98,1202,102,102,349,179,403,1203,181,670,186,186,1205,190,308,358,193,1207,271,310,130,276,276,135,136,1072,279,141,784,148,284,153,245,287,156,290,419,878,105,179,108,403,1019,255,1209,258,9,588,658,1228,37,1229,195,126,128,1231,276,135,757,57,60,141,141,65,148,89,153,287,95,98,250,102,1233,105,179,1234,654,181,183,391,9,11,588,35,121,193,123,1237,310,48,133,409,1239,222,57,60,237,65,241,399,244,1241,245,876,159,250,102,826,881,752,905,905,655,112,391,393,588,190,35,358,193,195,1237,310,310,130,1244,411,136,397,279,1183,63,146,148,550,153,287,876,159,250,102,102,105,1246,108,254,181,915,7,186,9,190,1249,121,1098,431,126,46,48,130,276,53,136,397,279,63,146,67,89,653,287,245,876,290,250,102,105,252,388,108,254,255,352,258,260,588,265,121,1251,39,195,44,200,130,276,1014,136,397,58,613,63,483,241,744,91,986,706,383,250,102,102,105,1253,108,1254,181,112,7,1263,9,11,265,121,1264,431,126,310,130,202,1244,411,222,397,279,319,1266,67,67,284,286,245,876,290,250,250,1081,349,179,108,403,109,181,1268,1271,303,305,190,658,1273,39,123,1195,200,1293,360,276,53,222,57,279,141,1299,65,67,284,153,400,156,159,419,1327,102,105,252,1328,254,404,301,183,428,303,305,265,1330,39,41,1237,200,920,409,276,53,136,611,279,237,483,67,244,1241,287,876,876,98,250,102,105,252,403,109,254,110,112,7,9,190,538,883,193,195,44,310,310,1332,205,1014,222,57,613,63,1334,241,244,244,653,287,95,98,250,102,102,750,252,403,254,181,352,1337,303,9,190,973,358,193,123,271,46,130,205,1360,135,55,397,138,141,65,148,241,89,653,245,156,290,250,250,421,349,252,403,108,254,181,112,258,303,190,756,538,121,39,431,1363,540,920,130,276,135,136,397,1365,237,141,146,241,244,153,380,95,290,98,250,102,105,179,252,108,254,181,112,7,1387,9,190,658,121,396,431,735,44,310,130,205,53,1404,579,57,138,63,146,67,148,89,286,582,156,290,250,102,102,105,179,1405,254,109,586,112,7,188,190,308,1426,121,39,1428,126,46,1440,202,276,53,136,397,279,141,141,146,148,89,653,1441,95,159,250,102,102,668,252,403,585,255,352,1444,7,303,1446,265,192,193,1428,126,794,202,543,409,135,55,57,910,141,483,67,928,286,922,876,1458,159,250,102,105,1246,252,108,254,255,301,7,1460,114,1474,1249,1488,1489,195,126,44,46,130,205,1014,136,57,397,613,141,239,244,653,153,287,95,290,161,102,102,386,552,403,254,255,112,352,428,9,190,538,358,884,431,1195,739,200,130,276,53,1083,57,279,141,146,281,67,244,286,733,95,159,383,419,1491,105,179,179,108,254,1492,112,258,1200,1494,190,308,192,39,123,126,200,1502,130,205,53,222,397,613,279,63,65,148,284,153,245,876,290,1521,1523,102,1526,252,1234,109,181,181,112,792,9,190,35,395,39,123,126,310,310,920,205,53,452,57,279,1529,1531,1533,284,244,653,287,876,290,161,1491,105,105,828,403,254,404,670,391,9,588,117,1542,358,39,431,1237,200,130,409,1239,222,1543,279,1546,141,483,241,89,91,287,876,383,292,584,937,105,252,108,933,181,112,186,9,1551,305,1121,37,1489,195,126,310,48,205,205,53,222,662,279,1183,483,148,284,244,91,1196,1553,290,1523,161,102,349,252,403,254,254,181,183,258,303,190,308,538,121,1098,195,857,46,48,1578,205,741,1579,57,279,1582,1587,483,148,89,153,245,156,98,290,419,102,665,179,108,109,1019,655,112,7,188,190,308,358,193,431,44,271,46,130,205,411,136,397,613,141,144,65,148,284,153,380,706,159,419,102,102,105,179,108,1588,255,1209,186,186,9,305,265,1590,918,123,908,310,1592,409,205,411,222,397,279,141,146,148,89,653,287,95,876,98,161,102,105,252,1597,403,109,181,112,258,9,190,1249,358,121,193,195,126,737,130,543,53,55,57,1365,138,63,146,148,284,153,245,287,1599,98,161,102,299,105,1601,108,254,181,112,258,258,9,190,265,358,193,195,1237,271,310,48,276,315,136,397,935,279,63,65,148,284,1612,653,400,95,383,292,102,102,105,179,403,254,1613,255,352,258,9,114,265,121,1621,1020,431,1025,1623,1177,276,53,53,136,397,279,1529,146,1625,244,244,653,287,706,98,250,102,102,349,179,403,109,1626,255,112,391,393,305,265,121,192,193,195,44,200,920,205,1647,53,757,57,279,1650,146,148,244,244,1652,245,95,98,250,1654,349,349,1656,403,254,181,301,7,9,114,35,265,1273,193,195,271,672,130,276,53,1657,1658,57,279,63,146,67,284,153,153,380,876,290,419,102,105,932,252,108,254,181,352,970,1200,190,1249,358,39,193,195,268,310,202,991,53,222,1659,613,237,1687,65,148,284,286,287,876,98,98,250,102,105,179,350,1688,255,255,112,258,260,114,35,358,918,1428,268,46,310,130,133,411,452,992,1690,237,483,241,1693,244,653,287,95,290,250,102,102,349,252,1234,933,934,1694,183,1444,9,305,981,37,39,193,123,1237,46,920,276,53,452,452,613,237,1266,239,241,89,153,400,95,1715,159,250,102,1755,105,252,1082,109,995,1757,258,1763,9,114,1121,358,39,1123,126,672,200,202,276,741,136,1072,613,141,65,67,1766,1087,91,245,1553,1153,250,102,252,179,108,109,181,183,1769,9,190,114,265,37,193,41,271,200,130,409,205,315,222,1090,1690,63,1771,241,732,1652,287,876,706,383,250,1773,349,179,108,254,109,729,183,1769,9,190,35,121,193,195,1776,200,46,920,276,53,222,397,1690,141,1334,1778,284,547,153,1015,1780,159,1198,102,105,349,179,108,109,1694,670,112,7,260,190,308,37,429,41,431,126,310,130,276,135,222,136,57,279,141,1782,1784,244,653,286,287,95,290,1786,102,424,1789,252,108,109,181,112,391,303,1446,190,1792,358,193,195,271,46,48,991,135,1808,222,397,138,649,65,241,89,1810,245,156,876,290,250,584,349,179,403,654,109,255,112,391,9,305,1121,1330,193,431,268,1363,310,202,276,1014,222,57,138,141,65,1822,399,1825,91,245,95,1828,250,102,349,105,252,403,109,255,670,7,1833,1460,190,265,121,39,195,268,128,1332,130,276,1835,222,1090,279,319,483,148,244,153,286,245,95,290,250,102,105,349,252,108,109,181,183,258,258,303,190,538,358,39,123,431,44,310,48,205,610,136,1859,397,910,144,483,1778,244,153,286,245,156,290,161,102,105,349,179,403,254,255,112,186,258,1861,190,121,854,193,123,1237,310,130,130,276,53,412,397,613,1582,237,483,399,244,153,1862,876,706,1865,419,102,105,252,179,403,654,181,670,1271,188,9,190,538,121,193,195,126,126,310,1332,543,135,1866,277,1867,613,141,146,67,860,153,287,287,95,290,250,1869,105,105,179,403,109,181,183,258,1879,1881,356,538,121,39,431,1237,310,1892,48,276,315,222,397,279,144,146,148,67,1093,153,245,95,159,419,102,386,105,107,350,1254,181,670,7,9,305,190,265,37,1489,195,271,1894,1332,133,315,610,55,397,279,63,146,399,284,153,287,287,876,290,250,102,105,1246,179,108,109,181,112,391,393,190,538,37,37,925,41,126,200,130,313,53,136,136,57,613,144,483,148,89,153,1895,287,346,159,250,296,509,252,179,403,1203,753,352,186,9,9,114,756,121,925,431,126,271,310,130,991,53,579,57,279,613,144,146,399,860,91,287,706,156,159,1897,102,105,179,179,403,109,255,670,1900,303,190,308,1909,37,193,123,908,310,273,276,610,136,57,1072,1112,141,65,241,244,153,245,95,904,1897,294,102,105,1253,350,1203,1910,112,186,428,393,190,308,37,193,195,126,672,1935,130,276,411,136,57,910,1938,65,148,244,1766,153,733,156,290,161,102,1789,107,932,403,109,181,183,970,188,1940,538,37,37,39,195,1237,310,130,409,53,222,57,1365,613,63,146,67,284,286,287,876,159,161,250,102,105,252,108,109,109,655,352,258,354,190,308,308,192,39,1022,126,1623,130,409,1943,53,136,57,613,141,1334,1965,148,151,653,287,95,1828,290,292,102,349,252,179,108,254,255,301,258,1975,9,1977,1187,358,193,431,195,44,1979,48,409,135,136,222,57,279,63,1981,67,244,91,1087,1862,95,98,419,102,349,105,252,108,254,254,255,112,258,393,190,265,192,121,193,195,44,310,48,276,1239,53,452,544,138,144,1531,241,244,244,153,287,1780,98,161,102,102,105,252,403,109,181,181,352,258,9,588,35,121,2003,39,195,908,672,202,205,2004,53,222,1659,279,141,146,241,651,89,91,245,156,290,161,1786,1081,386,179,403,2005,404,995,183,186,260,588,308,121,39,195,268,672,2007,2009,205,53,136,397,613,1183,146,148,89,153,286,733,876,159,161,102,105,252,179,108,109,181,352,186,393,114,35,358,2024,2025,195,126,46,130,276,53,136,397,279,63,2034,483,241,284,286,287,95,383,250,102,102,349,179,403,254,255,670,301,7,188,190,1792,358,193,195,126,310,48,130,133,411,222,57,138,63,65,399,860,1766,286,245,2036,290,2038,102,930,349,252,108,254,109,995,2040,7,9,190,308,121,37,1098,195,126,310,130,205,53,53,222,2041,279,63,146,1778,547,244,153,2042,95,290,1523,102,102,105,252,108,654,109,181,2044,7,9,190,981,192,192,39,1053,126,200,2046,205,2047,53,1866,57,613,2050,146,148,241,244,153,245,156,159,250,250,102,105,252,2051,1588,109,255,183,7,303,190,265,121,39,2052,431,1237,128,130,276,53,412,316,60,141,2055,146,2057,89,1810,287,706,290,292,102,930,105,2059,1191,254,1492,112,391,303,2078,305,265,358,39,123,2081,310,1231,409,53,53,136,277,2083,141,483,241,89,153,2103,245,95,248,292,102,349,252,2125,403,254,181,352,258,9,190,308,37,358,39,431,126,46,130,205,135,136,935,138,1938,2127,146,241,244,153,245,402,747,250,102,102,386,932,350,109,181,255,183,616,303,190,538,121,1489,123,1123,1237,1100,2009,205,53,2135,222,57,2083,1582,146,399,89,2156,286,986,95,290,2158,102,2162,349,179,108,109,404,255,352,258,9,190,538,358,39,195,1237,126,739,48,276,53,1089,544,138,141,146,651,67,89,653,287,2164,98,161,1773,421,105,179,108,933,181,183,7,303,190,190,265,37,39,195,126,46,48,409,53,136,2173,935,279,63,146,241,284,653,287,95,156,98,250,2175,105,252,108,1328,2005,934,112,258,9,1977,308,358,193,2177,44,1894,1894,48,409,135,222,1543,2179,63,239,241,244,89,286,733,2181,290,161,2175,105,349,252,1191,109,255,112,7,2190,393,2192,35,939,39,431,123,271,794,130,276,1014,2198,757,57,279,63,65,67,241,1093,153,245,706,98,1523,102,102,105,2200,108,109,1203,1910,112,258,1460,114,538,37,39,429,195,126,310,130,205,53,222,1072,2202,237,237,146,148,244,653,2203,156,2206,161,102,878,299,179,403,1088,255,112,7,9,2212,190,973,121,39,195,44,1623,130,276,53,136,222,397,279,237,146,241,244,153,582,95,290,2242,419,102,349,107,403,109,181,255,112,186,9,588,1249,121,2243,195,1025,44,46,202,205,53,222,57,138,141,146,2249,148,89,153,287,95,159,161,102,2252,105,1246,108,109,181,183,186,393,1205,190,973,358,193,1022,271,46,46,920,133,610,222,57,674,613,141,65,651,244,653,287,876,156,913,292,102,881,752,252,2253,109,655,301,7,303,9,262,265,853,193,431,271,310,130,2259,1190,53,1083,1072,279,141,146,148,284,2283,653,2284,95,159,250,584,105,179,252,1082,1588,255,112,258,9,190,305,35,192,39,195,126,128,48,1943,53,452,2296,1029,279,1938,146,67,732,1114,287,156,290,2327,250,102,105,179,108,109,933,181,112,7,188,114,265,37,193,41,126,1237,46,130,276,53,136,397,613,141,146,148,241,244,153,287,924,2206,292,102,2330,179,179,403,254,181,183,258,303,588,308,265,121,193,41,126,46,737,130,276,53,2334,222,397,138,63,65,241,928,244,653,245,156,417,2337,419,2339,105,252,2345,108,254,255,183,7,9,1977,265,538,121,918,195,44,310,2350,130,205,135,2351,935,613,144,146,148,244,153,153,287,876,290,292,102,105,252,179,108,254,729,670,258,260,190,265,538,119,39,195,44,200,130,205,205,53,136,57,138,141,146,241,89,153,287,380,876,290,250,102,299,179,787,108,254,255,112,258,393,305,265,121,193,41,123,271,661,202,205,53,55,1659,613,237,1531,148,148,1825,1810,287,876,98,419,102,349,2380,932,403,109,1492,2382,258,9,190,2386,308,358,193,1022,195,126,310,130,409,53,222,136,57,414,237,1085,67,89,1118,653,2042,95,290,250,102,2394,105,179,403,254,181,352,112,391,1200,190,265,121,193,39,41,942,1979,130,276,411,135,136,57,613,1938,483,148,284,286,245,706,95,98,161,102,750,1253,108,2401,933,2402,112,7,188,305,35,192,193,193,195,198,128,360,409,53,136,397,613,141,483,1531,399,89,153,287,876,98,161,102,881,509,179,108,254,181,352,258,9,190,265,265,37,39,195,271,200,920,205,135,412,397,1112,279,63,146,241,89,286,245,95,98,292,102,102,2405,179,403,1088,181,112,428,303,9,11,265,37,39,41,271,310,310,130,991,135,222,397,279,144,141,2407,148,89,91,287,95,156,1828,250,102,349,179,828,403,254,1613,1209,258,9,2414,190,538,121,193,123,126,44,540,48,205,315,1089,57,1112,63,2428,146,241,284,153,245,95,98,250,102,105,105,179,253,109,181,112,186,9,190,356,308,192,39,2430,126,46,1231,276,53,2435,222,397,414,2050,483,148,89,286,287,706,98,250,292,1233,349,179,403,109,586,112,112,7,1861,305,265,37,925,1428,126,126,200,130,276,2437,136,57,138,237,146,148,2451,284,91,400,95,290,1523,102,105,252,2453,108,254,1694,670,7,303,1446,265,853,2456,39,431,198,310,130,409,1014,579,1658,2041,674,144,65,148,244,286,1810,154,95,98,250,102,2330,750,179,1082,254,255,352,2459,258,9,305,538,121,39,123,735,126,46,360,409,610,757,316,397,138,1650,1531,148,284,286,380,93,876,290,250,1773,668,252,2200],"time":[38623894771186,38623895026761,38623895277493,38623895526802,38623895776232,38623896025703,38623896275133,38623896524686,38623896774238,38623897023831,38623897273017,38623897522773,38623897772895,38623898024523,38623898273343,38623898522733,38623898772529,38623899022407,38623899272285,38623899522122,38623899771960,38623900021878,38623900271878,38623900521878,38623900771756,38623901021634,38623901271837,38623901522000,38623901772082,38623902022285,38623902272448,38623902522651,38623902772733,38623903022814,38623903272895,38623903522855,38623903773017,38623904023140,38623904273465,38623904523791,38623904773831,38623905023669,38623905273953,38623905523994,38623905773913,38623906023953,38623906273953,38623906523872,38623906773791,38623907023669,38623907273669,38623907523709,38623907773669,38623908023669,38623908273384,38623908523506,38623908773628,38623909023587,38623909273953,38623909542467,38623909805325,38623910065498,38623910324043,38623910581408,38623910837755,38623911093086,38623911347887,38623911601916,38623911855252,38623912136665,38623912388984,38623912637967,38623912886543,38623913134753,38623913384712,38623913633857,38623913883206,38623914132718,38623914382189,38623914631782,38623914881294,38623915130928,38623915380684,38623915630480,38623915880277,38623916130073,38623916379870,38623916629910,38623916879829,38623917148791,38623917381701,38623917629219,38623917879219,38623918129463,38623918379666,38623918630032,38623918880032,38623919130277,38623919380399,38623919630439,38623919880480,38623920142117,38623920380032,38623920616645,38623920854805,38623921094469,38623921335965,38623921578315,38623921821683,38623922065986,38623922311144,38623922557319,38623922803983,38623923050727,38623923298164,38623923545967,38623923794095,38623924042467,38623924290921,38623924539578,38623924788724,38623925037910,38623925287462,38623925536852,38623925786323,38623926035794,38623926285184,38623926534777,38623926784533,38623927034248,38623927284126,38623927533882,38623927783678,38623928033475,38623928283393,38623928533271,38623928783231,38623929033109,38623929283475,38623929533109,38623929782539,38623930032865,38623930282783,38623930532661,38623930782458,38623931032336,38623931282091,38623931532051,38623931782010,38623932032010,38623932281969,38623932531929,38623932781766,38623933031807,38623933284736,38623933534940,38623933784696,38623934034451,38623934284167,38623934533841,38623934783719,38623935033638,38623935283516,38623935533434,38623935783393,38623936033434,38623936283434,38623936533312,38623936783231,38623937033353,38623937283678,38623937533597,38623937812324,38623938062365,38623938309150,38623938555773,38623938802803,38623939050361,38623939298205,38623939546374,38623939794909,38623940043647,38623940292508,38623940541572,38623940790718,38623941039985,38623941289660,38623941539009,38623941788480,38623942037869,38623942287381,38623942536974,38623942786649,38623943036364,38623943286079,38623943535672,38623943785876,38623944036120,38623944286120,38623944535998,38623944785835,38623945035713,38623945311144,38623945574084,38623945833564,38623946091296,38623946348091,38623946603828,38623946858833,38623947113024,38623947366523,38623947619534,38623947872220,38623948124417,38623948376330,38623948627917,38623948879219,38623949152534,38623949381823,38623949630114,38623949881294,38623950132515,38623950383817,38623950634630,38623950885526,38623951136217,38623951386950,38623951637397,38623951887926,38623952138252,38623952388577,38623952637967,38623952889106,38623953139391,38623953389757,38623953639717,38623953889798,38623954139676,38623954389066,38623954639635,38623954889595,38623955138862,38623955389513,38623955639595,38623955889473,38623956139432,38623956389310,38623956639310,38623956889310,38623957139513,38623957389595,38623957639635,38623957889676,38623958139798,38623958389920,38623958640002,38623958890083,38623959140164,38623959390246,38623959640164,38623959890246,38623960140286,38623960390327,38623960640449,38623960890531,38623961140490,38623961390571,38623961640571,38623961890734,38623962140856,38623962390856,38623962640775,38623962890815,38623963140815,38623963390612,38623963640531,38623963890571,38623964140531,38623964390490,38623964640449,38623964890408,38623965139880,38623965390653,38623965640653,38623965890775,38623966140653,38623966390490,38623966640449,38623966890449,38623967140531,38623967390531,38623967640571,38623967890571,38623968140408,38623968390368,38623968640408,38623968890490,38623969140693,38623969390693,38623969640978,38623969891426,38623970141344,38623970391263,38623970641141,38623970891100,38623971140978,38623971390815,38623971640734,38623971890856,38623972140937,38623972390937,38623972640856,38623972890856,38623973140897,38623973391182,38623973641100,38623973890937,38623974140897,38623974390856,38623974640815,38623974890571,38623975140490,38623975390531,38623975640449,38623975890531,38623976140408,38623976390408,38623976640449,38623976890531,38623977140775,38623977390653,38623977640490,38623977890368,38623978140124,38623978389920,38623978639839,38623978889635,38623979139635,38623979389554,38623979639473,38623979889310,38623980139310,38623980389310,38623980639351,38623980899727,38623981137967,38623981374946,38623981613187,38623981852892,38623982094266,38623982336901,38623982580635,38623982825223,38623983070666,38623983316800,38623983563382,38623983810452,38623984058092,38623984306017,38623984554268,38623984802721,38623985051460,38623985300646,38623985549792,38623985799059,38623986048490,38623986298490,38623986548490,38623986799141,38623987047432,38623987297513,38623987547269,38623987796292,38623988046618,38623988296414,38623988546089,38623988795763,38623989045641,38623989295845,38623989545885,38623989795926,38623990046007,38623990295967,38623990545967,38623990796089,38623991046007,38623991295885,38623991545885,38623991795926,38623992046007,38623992295926,38623992546007,38623992795926,38623993046007,38623993296211,38623993546048,38623993795845,38623994045763,38623994295601,38623994545478,38623994795438,38623995045438,38623995295275,38623995545194,38623995795112,38623996044990,38623996295072,38623996545112,38623996795072,38623997045112,38623997294583,38623997545356,38623997795682,38623998045845,38623998296333,38623998546414,38623998796130,38623999045885,38623999296170,38623999546170,38623999796170,38624000046130,38624000296170,38624000546170,38624000796130,38624001046007,38624001296130,38624001546252,38624001796414,38624002046618,38624002295885,38624002546699,38624002796862,38624003049873,38624003296862,38624003546455,38624003796414,38624004046455,38624004296414,38624004546414,38624004796414,38624005046536,38624005296699,38624005546455,38624005796414,38624006072782,38624006335843,38624006595405,38624006853258,38624007110013,38624007366157,38624007621121,38624007875272,38624008128771,38624008381742,38624008634386,38624008885811,38624009138455,38624009390734,38624009641385,38624009893053,38624010143379,38624010394884,38624010645535,38624010896064,38624011146553,38624011396878,38624011647163,38624011897407,38624012147733,38624012397895,38624012648058,38624012898343,38624013154040,38624013404284,38624013653633,38624013903022,38624014152697,38624014402575,38624014652249,38624014902005,38624015151802,38624015401558,38624015651232,38624015901069,38624016150988,38624016400907,38624016650825,38624016900784,38624017150866,38624017400866,38624017650662,38624017900622,38624018150581,38624018400500,38624018650337,38624018900256,38624019150011,38624019400256,38624019650215,38624019900174,38624020150093,38624020399971,38624020650011,38624020900011,38624021150093,38624021400378,38624021650540,38624021900622,38624022150500,38624022400540,38624022650418,38624022900337,38624023150296,38624023400296,38624023650174,38624023900052,38624024150093,38624024400011,38624024649971,38624024900011,38624025150215,38624025400174,38624025651395,38624025901395,38624026150500,38624026401110,38624026650988,38624026901273,38624027159777,38624027397326,38624027634102,38624027872301,38624028112251,38624028368843,38624028596260,38624028838122,38624029083239,38624029329251,38624029575264,38624029821886,38624030068631,38624030316230,38624030564277,38624030812446,38624031060819,38624031309476,38624031558418,38624031807238,38624032056343,38624032305488,38624032554797,38624032804186,38624033053576,38624033303291,38624033553250,38624033803128,38624034053006,38624034302925,38624034552925,38624034802762,38624035052681,38624035302559,38624035552396,38624035802274,38624036052152,38624036302111,38624036552070,38624036802111,38624037052070,38624037302355,38624037552396,38624037802314,38624038052314,38624038302355,38624038552437,38624038802518,38624039052599,38624039302599,38624039552599,38624039802599,38624040052559,38624040302640,38624040552477,38624040802518,38624041052599,38624041302925,38624041552721,38624041802437,38624042052274,38624042302111,38624042551948,38624042801867,38624043051704,38624043301541,38624043551297,38624043801338,38624044051175,38624044301134,38624044551094,38624044801094,38624045051134,38624045301338,38624045551379,38624045801460,38624046051582,38624046301663,38624046551704,38624046801785,38624047051989,38624047302030,38624047552030,38624047802152,38624048052111,38624048302030,38624048552152,38624048802192,38624049052274,38624049302396,38624049552559,38624049802640,38624050052518,38624050302477,38624050552274,38624050802437,38624051052396,38624051302437,38624051552437,38624051802396,38624052052437,38624052328315,38624052591540,38624052851183,38624053366239,38624053623400,38624053863919,38624054103625,38624054344469,38624054586738,38624054830065,38624055074409,38624055319608,38624055565539,38624055811917,38624056058988,38624056306506,38624056553779,38624056802437,38624057050931,38624057299141,38624057547798,38624057797513,38624058046862,38624058296130,38624058545479,38624058794827,38624059044298,38624059293810,38624059543363,38624059792996,38624060042793,38624060292630,38624060542467,38624060792264,38624061042183,38624061292183,38624061542549,38624061792508,38624062042549,38624062292752,38624062543159,38624062801623,38624063039253,38624063276029,38624063514391,38624063754382,38624063995796,38624064238512,38624064482205,38624064726875,38624064972358,38624065218818,38624065464465,38624065711942,38624065959500,38624066207262,38624066455594,38624066703763,38624066952339,38624067201118,38624067450060,38624067699084,38624067948351,38624068197660,38624068447131,38624068696520,38624068946032,38624069195869,38624069445747,38624069695462,38624069945299,38624070195177,38624070444933,38624070694811,38624070944730,38624071194648,38624071444567,38624071694404,38624071944364,38624072194242,38624072444242,38624072694160,38624072944201,38624073194445,38624073444323,38624073694486,38624073944404,38624074194404,38624074444404,38624074694404,38624074944282,38624075223172,38624075473172,38624075719998,38624075966743,38624076213732,38624076461291,38624076709053,38624076957222,38624077206164,38624077454699,38624077703519,38624077952339,38624078201200,38624078450304,38624078699816,38624078949206,38624079198636,38624079448148,38624079697782,38624079947415,38624080197090,38624080446805,38624080696357,38624080946235,38624081196235,38624081446357,38624081696479,38624081946520,38624082196520,38624082446642,38624082696642,38624082946683,38624083196602,38624083446276,38624083696561,38624083946846,38624084196846,38624084446927,38624084696846,38624084946764,38624085197008,38624085446846,38624085696642,38624085946480,38624086196276,38624086446276,38624086696235,38624086946154,38624087196073,38624087445991,38624087695951,38624087972277,38624088235379,38624088495063,38624088752998,38624089009753,38624089265693,38624089520902,38624089775744,38624090029569,38624090282824,38624090535632,38624090788154,38624091040189,38624091292061,38624091543566,38624091794868,38624092045967,38624092296740,38624092547513,38624092798245,38624093048815,38624093298937,38624093549832,38624093800321,38624094050524,38624094300768,38624094551012,38624094801134,38624095051338,38624095301663,38624095551785,38624095801745,38624096051663,38624096301745,38624096551745,38624096801745,38624097051785,38624097301908,38624097551704,38624097802030,38624098052070,38624098316230,38624098553942,38624098790148,38624099027900,38624099266792,38624099507840,38624099751777,38624099994412,38624100238757,38624100483914,38624100730008,38624100976346,38624101223538,38624101470649,38624101718249,38624101966174,38624102214424,38624102462878,38624102711535,38624102960477,38624103209500,38624103458687,38624103707954,38624103957262,38624104206774,38624104456367,38624104706082,38624104955798,38624105205228,38624105455635,38624105705635,38624105955431,38624106205187,38624106454984,38624106704862,38624106954780,38624107204658,38624107454577,38624107704984,38624107954495,38624108204211,38624108454251,38624108704292,38624108954333,38624109204536,38624109454618,38624109704699,38624109954658,38624110204618,38624110454618,38624110704618,38624110954577,38624111204373,38624111454373,38624111704414,38624111954414,38624112204292,38624112454333,38624112704373,38624112954373,38624113204536,38624113454658,38624113704821,38624113954902,38624114204943,38624114456164,38624114706245,38624114956123,38624115206042,38624115455798,38624115705675,38624115955635,38624116205635,38624116455675,38624116705472,38624116955675,38624117206001,38624117455838,38624117705635,38624117955391,38624118205147,38624118455106,38624118705065,38624118954943,38624119204862,38624119454780,38624119704780,38624119954618,38624120204495,38624120454495,38624120704495,38624120954495,38624121204658,38624121454821,38624121704740,38624121954699,38624122204740,38624122454740,38624122704536,38624122954373,38624123204373,38624123476468,38624123739692,38624123999784,38624124258410,38624124515490,38624124771593,38624125026924,38624125281725,38624125535957,38624125789782,38624126042874,38624126295275,38624126547594,38624126799385,38624127051012,38624127302437,38624127553657,38624127804797,38624128055326,38624128306383,38624128556994,38624128807360,38624129057808,38624129310575,38624129560941,38624129810859,38624130060819,38624130310697,38624130560615,38624130810412,38624131060290,38624131310412,38624131560371,38624131810330,38624132060249,38624132310168,38624132560086,38624132810168,38624133060127,38624133310493,38624133560330,38624133810900,38624134070422,38624134308092,38624134544787,38624134782865,38624135022814,38624135264066,38624135506660,38624135750150,38624135994819,38624136240221,38624136486274,38624136732897,38624136980090,38624137227892,38624137475532,38624137723498,38624137971911,38624138220609,38624138469592,38624138718452,38624138967516,38624139216825,38624139466174,38624139715482,38624139964871,38624140214465,38624140464058,38624140713773,38624140963529,38624141213529,38624141463691,38624141713569,38624141963488,38624142213488,38624142463407,38624142713488,38624142963447,38624143213407,38624143463488,38624143713529,38624143963569,38624144213529,38624144463407,38624144742663,38624144992703,38624145239652,38624145486600,38624145733914,38624145981554,38624146229439,38624146477689,38624146726224,38624146975125,38624147224027,38624147473091,38624147722318,38624147971707,38624148221219,38624148470772,38624148720202,38624148969917,38624149219917,38624149469551,38624149719225,38624149968940,38624150218615,38624150468330,38624150717964,38624150967801,38624151217720,38624151467679,38624151717476,38624151967435,38624152217313,38624152467150,38624152717150,38624152967109,38624153217313,38624153467394,38624153717760,38624153967638,38624154217801,38624154467964,38624154718005,38624154968005,38624155217923,38624155467964,38624155718045,38624155968086,38624156218127,38624156468127,38624156718167,38624156968249,38624157218412,38624157468330,38624157718289,38624157968249,38624158218208,38624158468249,38624158718289,38624158968249,38624159244779,38624159507922,38624159767647,38624160025703,38624160282580,38624160538480,38624160793485,38624161047717,38624161301460,38624161555570,38624161808540,38624162060819,38624162312731,38624162564277,38624162815661,38624163066759,38624163317655,38624163568468,38624163819364,38624164070015,38624164320544,38624164571032,38624164821317,38624165071642,38624165322131,38624165572415,38624165822660,38624166072944,38624166323107,38624166573392,38624166823514,38624167073514,38624167323555,38624167573595,38624167824165,38624168074531,38624168324531,38624168574328,38624168824328,38624169074287,38624169324653,38624169589383,38624169827135,38624170063219,38624170300850,38624170540311,38624170781318,38624171023669,38624171267118,38624171511543,38624171756701,38624172002510,38624172248848,38624172495959,38624172743355,38624172991239,38624173239815,38624173488146,38624173736681,38624173985298,38624174233955,38624174482816,38624174731799,38624174981392,38624175230659,38624175480090,38624175729683,38624175979154,38624176228828,38624176478421,38624176728136,38624176978055,38624177228136,38624177478177,38624177728096,38624177978055,38624178228014,38624178478014,38624178727892,38624178977933,38624179227933,38624179477974,38624179728014,38624179978014,38624180228055,38624180478014,38624180727974,38624180977892,38624181228177,38624181478218,38624181728014,38624181977811,38624182227689,38624182477648,38624182727445,38624182977404,38624183227282,38624183477282,38624183727119,38624183977119,38624184227119,38624184477079,38624184727079,38624184977079,38624185227363,38624185477282,38624185727160,38624185976997,38624186226916,38624186476916,38624186726875,38624186976916,38624187226875,38624187476834,38624187726794,38624187976631,38624188226753,38624188476712,38624188726753,38624188976712,38624189227079,38624189477160,38624189727323,38624189977363,38624190227445,38624190477404,38624190727485,38624190977607,38624191227689,38624191477730,38624191727770,38624191977892,38624192227892,38624192477892,38624192727933,38624192978055,38624193228259,38624193477811,38624193727892,38624193977730,38624194227567,38624194477526,38624194727689,38624194977730,38624195227567,38624195477404,38624195727404,38624195977404,38624196227404,38624196477363,38624196727363,38624196977282,38624197227445,38624197477445,38624197727404,38624197977363,38624198227282,38624198477241,38624198727160,38624198977119,38624199227119,38624199477079,38624199726997,38624199976834,38624200226834,38624200476794,38624200726875,38624200977079,38624201227241,38624201477241,38624201727282,38624201977404,38624202227567,38624202477567,38624202727811,38624202977445,38624203227526,38624203477404,38624203727404,38624203977241,38624204227282,38624204477282,38624204727241,38624204977079,38624205227363,38624205477689,38624205727730,38624205977526,38624206227404,38624206477404,38624206727241,38624206977119,38624207227038,38624207477201,38624207727119,38624207977160,38624208227119,38624208477079,38624208727079,38624208977038,38624209227485,38624209477485,38624209727201,38624209977282,38624210227079,38624210477282,38624210727241,38624210977201,38624211227241,38624211477201,38624211727119,38624211977038,38624212226956,38624212476875,38624212726916,38624212976916,38624213227241,38624213477241,38624213727526,38624213977648,38624214230415,38624214479642,38624214729805,38624214979357,38624215229276,38624215478991,38624215728462,38624215978503,38624216228340,38624216478055,38624216727933,38624216977811,38624217227974,38624217477079,38624217727730,38624217977485,38624218227363,38624218477485,38624218727445,38624218977526,38624219227445,38624219477363,38624219746650,38624220009793,38624220270129,38624220528796,38624220786405,38624221042712,38624221298571,38624221553576,38624221807808,38624222061592,38624222314684,38624222567288,38624222819730,38624223071846,38624223323595,38624223574857,38624223825915,38624224077013,38624224328153,38624224578397,38624224829658,38624225080309,38624225331205,38624225581571,38624225831652,38624226081611,38624226331774,38624226581896,38624226832100,38624227082100,38624227332262,38624227582222,38624227832140,38624228082262,38624228332303,38624228582303,38624228832385,38624229082466,38624229332751,38624229582913,38624229833036,38624230083117,38624230333117,38624230583158,38624230833239,38624231083320,38624231333361,38624231583565,38624231833646,38624232083646,38624232333605,38624232583687,38624232833768,38624233083727,38624233334053,38624233583890,38624233833931,38624234084094,38624234333849,38624234583971,38624234834989,38624235083565,38624235333402,38624235583198,38624235833117,38624236083239,38624236333320,38624236583198,38624236833076,38624237083036,38624237333280,38624237583239,38624237833198,38624238083239,38624238333320,38624238583361,38624238833320,38624239083402,38624239333402,38624239583524,38624239833565,38624240083565,38624240333524,38624240583565,38624240843859,38624241089383,38624241326362,38624241563586,38624241802192,38624242042630,38624242284370,38624242527290,38624242771349,38624243016263,38624243261869,38624243508084,38624243754829,38624244002103,38624244249702,38624244497627,38624244745999,38624244994697,38624245243761,38624245492907,38624245742215,38624245992012,38624246241361,38624246490710,38624246739855,38624246989733,38624247239448,38624247489163,38624247738512,38624247988635,38624248238512,38624248488268,38624248738106,38624248987983,38624249238146,38624249488146,38624249738187,38624249988024,38624250237983,38624250487861,38624250737699,38624250987617,38624251237455,38624251487495,38624251737536,38624251987536,38624252237536,38624252487536,38624252737495,38624252987495,38624253237861,38624253487902,38624253737902,38624253987739,38624254237617,38624254487617,38624254737617,38624254987577,38624255237536,38624255487495,38624255737495,38624255987495,38624256237373,38624256487373,38624256737373,38624256987373,38624257237658,38624257486966,38624257737780,38624257987861,38624258237943,38624258487577,38624258737699,38624258987658,38624259237739,38624259487658,38624259737739,38624259987617,38624260237699,38624260487617,38624260737658,38624260987902,38624261238106,38624261492134,38624261737780,38624261987210,38624262237251,38624262487332,38624262737332,38624262987373,38624263237455,38624263487455,38624263737455,38624263987455,38624264237455,38624264487414,38624264737373,38624264987536,38624265237821,38624265487780,38624265737780,38624266001045,38624266269111,38624266530220,38624266789131,38624267046740,38624267302477,38624267558377,38624267813748,38624268067858,38624268321276,38624268574247,38624268826484,38624269078682,38624269330879,38624269582222,38624269833849,38624270084907,38624270335803,38624270586616,38624270837227,38624271087715,38624271338285,38624271588773,38624271839139,38624272089505,38624272339749,38624272589953,38624272840034,38624273090197,38624273340726,38624273590807,38624273840929,38624274090889,38624274340889,38624274590929,38624274841011,38624275091052,38624275341214,38624275591092,38624275841174,38624276091296,38624276341255,38624276603910,38624276841784,38624277078112,38624277316190,38624277555651,38624277796740,38624278039009,38624278282458,38624278526883,38624278772000,38624279017931,38624279264391,38624279511177,38624279758776,38624280006579,38624280254911,38624280503446,38624280752184,38624281000923,38624281250191,38624281499539,38624281748970,38624281998482,38624282247871,38624282497464,38624282747179,38624282996895,38624283246732,38624283496447,38624283746284,38624283996976,38624284246773,38624284496569,38624284746488,38624284996284,38624285246528,38624285496488,38624285746406,38624285996447,38624286246447,38624286496406,38624286746284,38624286996162,38624287246081,38624287496162,38624287746162,38624287996203,38624288246284,38624288496284,38624288746325,38624288996284,38624289246610,38624289496528,38624289746366,38624289996325,38624290246122,38624290496406,38624290746488,38624290996447,38624291246488,38624291496406,38624291746203,38624291996284,38624292246244,38624292496284,38624292746244,38624292996325,38624293246773,38624293496447,38624293746732,38624293996813,38624294246691,38624294496651,38624294746569,38624294996528,38624295246488,38624295496488,38624295746447,38624295996366,38624296246528,38624296496366,38624296746325,38624296996122,38624297246366,38624297496366,38624297746162,38624297996040,38624298246162,38624298496284,38624298746203,38624298996040,38624299245837,38624299495633,38624299745552,38624299995511,38624300245470,38624300495389,38624300745348,38624300995308,38624301245308,38624301495308,38624301769193,38624302032295,38624302291898,38624302550728,38624302808093,38624303064074,38624303318957,38624303573555,38624303827136,38624304080554,38624304333117,38624304585355,38624304837308,38624305088569,38624305341052,38624305592313,38624305843290,38624306094022,38624306344551,38624306595161,38624306845690,38624307096097,38624307346382,38624307596707,38624307847074,38624308097196,38624308347236,38624308597359,38624308847562,38624309347684,38624309597847,38624309832588,38624310066963,38624310303576,38624310542345,38624310782621,38624311024076,38624311266955,38624311510811,38624311755562,38624312001248,38624312260200,38624312494779,38624312728340,38624312964017,38624313201810,38624313441271,38624313682157,38624313924385,38624314167752,38624314412056,38624314657092,38624314902982,38624315149483,38624315396471,38624315643989,38624315891792,38624316139920,38624316388374,38624316636909,38624316885770,38624317134671,38624317384061,38624317633491,38624317883288,38624318132962,38624318382474,38624318632149,38624318881742,38624319131375,38624319381172,38624319630928,38624319880724,38624320130806,38624320380521,38624320630684,38624320880602,38624321130765,38624321380643,38624321630399,38624321880318,38624322130318,38624322380033,38624322630236,38624322880195,38624323130155,38624323380155,38624323630236,38624323880155,38624324130073,38624324379992,38624324629911,38624324879870,38624325130073,38624325380277,38624325630440,38624325880521,38624326130602,38624326380562,38624326630684,38624326880724,38624327130806,38624327380928,38624327631009,38624327881091,38624328131172,38624328381131,38624328631050,38624328880969,38624329134183,38624329381091,38624329630602,38624329880480,38624330130440,38624330380277,38624330630277,38624330880155,38624331130033,38624331379911,38624331629911,38624331879911,38624332129992,38624332380033,38624332629992,38624332880073,38624333130195,38624333380358,38624333630277,38624333880195,38624334130073,38624334379951,38624334629707,38624334879992,38624335129829,38624335379829,38624335630155,38624335880195,38624336130073,38624336380033,38624336630195,38624336880236,38624337130480,38624337402372,38624337665759,38624337926053,38624338184598,38624338442044,38624338698270,38624338953519,38624339208158,38624339462105,38624339715482,38624339968330,38624340220731,38624340472888,38624340724719,38624340976265,38624341227730,38624341478625,38624341729357,38624341979927,38624342230374,38624342480781,38624342731107,38624342981310,38624343231636,38624343481880,38624343732083,38624343982328,38624344232328,38624344482409,38624344732653,38624344982816,38624345233182,38624345483589,38624345733833,38624345983955,38624346234159,38624346484362,38624346734566,38624346984688,38624347234769,38624347484891,38624347735298,38624347994250,38624348232083,38624348468941,38624348707222,38624348947212,38624349188911,38624349430936,38624349674019,38624349918200,38624350163236,38624350408923,38624350655261,38624350902453,38624351149645,38624351397326,38624351645210,38624351893460,38624352141507,38624352391100,38624352640083,38624352889269,38624353138578,38624353387886,38624353639147,38624353888618,38624354138008,38624354387642,38624354636991,38624354886869,38624355136543,38624355386340,38624355635851,38624355885811,38624356135689,38624356385607,38624356635404,38624356885119,38624357135282,38624357385444,38624357635485,38624357885363,38624358135241,38624358385119,38624358634997,38624358884875,38624359134916,38624359384753,38624359634631,38624359884468,38624360134387,38624360384468,38624360634468,38624360884427,38624361134590,38624361384427,38624361634305,38624361884427,38624362134468,38624362384509,38624362634549,38624362884671,38624363134631,38624363384590,38624363634590,38624363884549,38624364134549,38624364384468,38624364634427,38624364884346,38624365134509,38624365384549,38624365634509,38624365884509,38624366134549,38624366384468,38624366634387,38624366884468,38624367134468,38624367384427,38624367634305,38624367884346,38624368134387,38624368384427,38624368634346,38624368884387,38624369134631,38624369384509,38624369634631,38624369884590,38624370134631,38624370384549,38624370634509,38624370884224,38624371134509,38624371384509,38624371634387,38624371884468,38624372134468,38624372385485,38624372634509,38624372884387,38624373160754,38624373424019,38624373683703,38624373941678,38624374198392,38624374454374,38624374709460,38624374963651,38624375217232,38624375470324,38624375723050,38624375975329,38624376227038,38624376478747,38624376730212,38624376981351,38624377232694,38624377483467,38624377734037,38624377984484,38624378234932,38624378485257,38624378735664,38624378985868,38624379235990,38624379486152,38624379736397,38624379986519,38624380236763,38624380486844,38624380737088,38624380987048,38624381237414,38624381487536,38624381737617,38624381987617,38624382237658,38624382487699,38624382737658,38624382987536,38624383237658,38624383487577,38624383737577,38624383987577,38624384237536,38624384487617,38624384737495,38624384987536,38624385237780,38624385487739,38624385737292,38624385987210,38624386237210,38624386487210,38624386736926,38624386986844,38624387236844,38624387486804,38624387736763,38624387986519,38624388236519,38624388486478,38624388736437,38624388986397,38624389236641,38624389486722,38624389737088,38624389987210,38624390237292,38624390487414,38624390737495,38624390987536,38624391237455,38624391487455,38624391737577,38624391987699,38624392237780,38624392487739,38624392737699,38624392987780,38624393237984,38624393488024,38624393737739,38624393988024,38624394237984,38624394487821,38624394737739,38624394987699,38624395237699,38624395487617,38624395737617,38624395987617,38624396237373,38624396487292,38624396737536,38624396987699,38624397238065,38624397487577,38624397737495,38624397987373,38624398237251,38624398487129,38624398737088,38624398987007,38624399236926,38624399486804,38624399737292,38624399986885,38624400236763,38624400486844,38624400736763,38624400986681,38624401237455,38624401495145,38624401733304,38624401970324,38624402208727,38624402448758,38624402690295,38624402932604,38624403176908,38624403421659,38624403666979,38624403913399,38624404160388,38624404407458,38624404654894,38624404902738,38624405151558,38624405399727,38624405648221,38624405896919,38624406145820,38624406394925,38624406644071,38624406893420,38624407142769,38624407392240,38624407641833,38624407891589,38624408141100,38624408391100,38624408640938,38624408890694,38624409140653,38624409390816,38624409640897,38624409890816,38624410140694,38624410390694,38624410640694,38624410890694,38624411140694,38624411390734,38624411640734,38624411890816,38624412140856,38624412390897,38624412640897,38624412890775,38624413152697,38624413391629,38624413640246,38624413890042,38624414140490,38624414390734,38624414640775,38624414890897,38624415141019,38624415391182,38624415641304,38624415891426,38624416141589,38624416391629,38624416649401,38624416891792,38624417171211,38624417754463,38624418001737,38624418230781,38624418460192,38624418692370,38624418926867,38624419163806,38624419402982,38624419643542,38624419885404,38624420128364,38624420372424,38624420617826,38624420863594,38624421355700,38624421600492,38624421829658,38624422060127,38624422323189,38624422558906,38624422792630,38624423028104,38624423265490,38624423504911,38624423745877,38624423988146,38624424231432,38624424475939,38624424721097,38624424966906,38624425213814,38624425460884,38624425708320,38624425956164,38624426204292,38624426470690,38624426733060,38624426992459,38624427250231,38624427506782,38624427762560,38624428017443,38624428271594,38624428525215,38624428778226,38624429030830,38624429283312,38624429535754,38624429787178,38624430038561,38624430289619,38624430540555,38624430791288,38624431041979,38624431292630,38624431542915,38624431793403,38624432043810,38624432294095,38624432544421,38624432794461,38624433044706,38624433295072,38624433545275,38624433795479,38624434045601,38624434295641,38624434545601,38624434795560,38624435045641,38624435295682,38624435545723,38624435795804,38624436045764,38624436295764,38624436545682,38624436795845,38624437058906,38624437297025,38624437533638,38624437771594,38624438011299,38624438252469,38624438495023,38624438738757,38624438983386,38624439228788,38624439474841,38624439721463,38624439968330,38624440215848,38624440466743,38624440716377,38624440964668,38624441213407,38624441461494,38624441709989,38624441958809,38624442207751,38624442456815,38624442706123,38624442955513,38624443205106,38624443454699,38624443704251,38624443953967,38624444203723,38624444453478,38624444703234,38624444953031,38624445203031,38624445453112,38624445703153,38624445953153,38624446203153,38624446453234,38624446703234,38624446953275,38624447203316,38624447453316,38624447703194,38624447953112,38624448203275,38624448453234,38624448703275,38624448953194,38624449203397,38624449453397,38624449703356,38624449953031,38624450202909,38624450452827,38624450702705,38624450952624,38624451202583,38624451452502,38624451702461,38624451952298,38624452202217,38624452452380,38624452702502,38624452952258,38624453202583,38624453452746,38624453702583,38624453952827,38624454201891,38624454452543,38624454702624,38624454952543,38624455202502,38624455452298,38624455702420,38624455951688,38624456202461,38624456452502,38624456702543,38624456952543,38624457202583,38624457452624,38624457702746,38624457952746,38624458202543,38624458452543,38624458702543,38624458952543,38624459202543,38624459452583,38624459702543,38624459952583,38624460202543,38624460452502,38624460702624,38624460952583,38624461202868,38624461452868,38624461702827,38624461952705,38624462226102,38624462488513,38624462749255,38624463007596,38624463264758,38624463520739,38624463775907,38624464030261,38624464284085,38624464537381,38624464790067,38624465042346,38624465294584,38624465546333,38624465797798,38624466049059,38624466300158,38624466551094,38624466801745,38624467052640,38624467303128,38624467553617,38624467803983,38624468054349,38624468304593,38624468554837,38624468805163,38624469055407,38624469305936,38624469556221,38624469806506,38624470056587,38624470306709,38624470556913,38624470807035,38624471057157,38624471307238,38624471557279,38624471807279,38624472057442,38624472307320,38624472557971,38624472814766,38624473052722,38624473289986,38624473528267,38624473768338,38624474009753,38624474252429,38624474496162,38624474740873,38624474986153,38624475232206,38624475478747,38624475726021,38624475972806,38624476221545,38624476469958,38624476718330,38624476966947,38624477216092,38624477465482,38624477714953,38624477964872,38624478214180,38624478463732,38624478713529,38624478963163,38624479212878,38624479462715,38624479712471,38624479962267,38624480212145,38624480462064,38624480712064,38624480961983,38624481212349,38624481462186,38624481711820,38624481961657,38624482211332,38624482461210,38624482711047,38624482961006,38624483210965,38624483460925,38624483710843,38624483960762,38624484210721,38624484460721,38624484710477,38624484960477,38624485210803,38624485460965,38624485711047,38624485961169,38624486211210,38624486461210,38624486711169,38624486961250,38624487211413,38624487461454,38624487711454,38624487961535,38624488211535,38624488461576,38624488711576,38624488961657,38624489211861,38624489461779,38624489711779,38624489961738,38624490211779,38624490461779,38624490711779,38624490961820,38624491243477,38624491493395,38624491739896,38624491986397,38624492233223,38624492480415,38624492728137,38624492976306,38624493224881,38624493473376,38624493721992,38624493970731,38624494219795,38624494468900,38624494718168,38624494967435,38624495216947,38624495466418,38624495716092,38624495965645,38624496215238,38624496464912,38624496714668,38624496964505,38624497214587,38624497464709,38624497714872,38624497994291,38624498256945,38624498516141,38624498773791,38624499030179,38624499285713,38624499540392,38624499794543,38624500047961,38624500301013,38624500553576,38624500805773,38624501057442,38624501309435,38624501560697,38624501811755,38624502062731,38624502313464,38624502564033,38624502814603,38624503065051,38624503315498,38624503565824,38624503816190,38624504066434,38624504316516,38624504566800,38624504816963,38624505066922,38624505317777,38624505567940,38624505818021,38624506068469,38624506317858,38624506568021,38624506818143,38624507068224,38624507318184,38624507568143,38624507818102,38624508067980,38624508317940,38624508567940,38624508817980,38624509068021,38624509318265,38624509568224,38624509818387,38624510068428,38624510318347,38624510568306,38624510818306,38624511068306,38624511318102,38624511568021,38624511818021,38624512068062,38624512318062,38624512568062,38624512817980,38624513067980,38624513318347,38624513568306,38624513818306,38624514068225,38624514318225,38624514568184,38624514817736,38624515067451,38624515317980,38624515568184,38624515818225,38624516068387,38624516318265,38624516568102,38624516818102,38624517068062,38624517318347,38624517568062,38624517818225,38624518068265,38624518318184,38624518568021,38624518818021,38624519068021,38624519317980,38624519567980,38624519817940,38624520067899,38624520317777,38624520567736,38624520817818,38624521067818,38624521318062,38624521567940,38624521817940,38624522068062,38624522318062,38624522568062,38624522818102,38624523068102,38624523318021,38624523567899,38624523817899,38624524067899,38624524317940,38624524567940,38624524817980,38624525067899,38624525318062,38624525568184,38624525818265,38624526085030,38624526322822,38624526558825,38624526796089,38624527035388,38624527275744,38624527518420,38624527761950,38624528005806,38624528251167,38624528496162,38624528743151,38624528990425,38624529237821,38624529485257,38624529733386,38624529981595,38624530229968,38624530478584,38624530727364,38624530976428,38624531225532,38624531474800,38624531724108,38624531973498,38624532223091,38624532472806,38624532722359,38624532972155,38624533222237,38624533471789,38624533721952,38624533971830,38624534221626,38624534471626,38624534721504,38624534971341,38624535221219,38624535471179,38624535721138,38624535971057,38624536221016,38624536470894,38624536720934,38624536970975,38624537220365,38624537471382,38624537721423,38624537971463,38624538221911,38624538471708,38624538721952,38624538971911,38624539221952,38624539472033,38624539722033,38624539972074,38624540222074,38624540471992,38624540721992,38624540971992,38624541221870,38624541472277,38624541722033,38624541972440,38624542222359,38624542472277,38624542722399,38624542972318,38624543222237,38624543472155,38624543722196,38624543972033,38624544222196,38624544472277,38624544722277,38624544972237,38624545222603,38624545472603,38624545722766,38624545972603,38624546222725,38624546472806,38624546722847,38624546972847,38624547222969,38624547472928,38624547722928,38624547972928,38624548223050,38624548473050,38624548723132,38624548973172,38624549223457,38624549473295,38624549723172,38624549973091,38624550222847,38624550472725,38624550722521,38624550972481,38624551238838,38624551504178,38624551765043,38624552023872,38624552281400,38624552537788,38624552793404,38624553048083,38624553302111,38624553555733,38624553809029,38624554061511,38624554313667,38624554565539,38624554817085,38624555068550,38624555319527,38624555570503,38624555821398,38624556072171,38624556322741,38624556573270,38624556823677,38624557074043,38624557324898,38624557575183,38624557825508,38624558075671,38624558325915,38624558575915,38624558825956,38624559076078,38624559326118,38624559576240,38624559826403,38624560107328,38624560357409,38624560603869,38624560850329,38624561344877,38624561592435,38624561837471,38624562058662,38624562280668,38624562506091,38624562735135,38624562967313,38624563202095,38624563439074,38624563678088,38624563918770,38624564160754,38624564407906,38624564649890,38624564894396,38624565140002,38624565386055,38624565633044,38624565880562,38624566128080,38624566375882,38624566624173,38624566872342,38624567121406,38624567370226,38624567619291,38624567868355,38624568117663,38624568366971,38624568616157,38624568866076,38624569115913,38624569365669,38624569615466,38624569865181,38624570114977,38624570364815,38624570614571,38624570864489,38624571114367,38624571364245,38624571614042,38624571864042,38624572113960,38624572363920,38624572613920,38624572863960,38624573363838,38624573613879,38624573848498,38624574082954,38624574319486,38624574557849,38624574798002,38624575039660,38624575282377,38624575526151,38624575770861,38624576016385,38624576262560,38624576509305,38624576756538,38624577004178,38624577252429,38624577500882,38624577749458,38624577998400,38624578247505,38624578496651,38624578745959,38624578995389,38624579244942,38624579494616,38624579744250,38624579993802,38624580243518,38624580493518,38624580743233,38624580993070,38624581243111,38624581492989,38624581742704,38624581992378,38624582242460,38624582492460,38624582741931,38624582992053,38624583242053,38624583491890,38624583741809,38624583991768,38624584241605,38624584491646,38624584741524,38624584991524,38624585240954,38624585491402,38624585741605,38624585991686,38624586241564,38624586491524,38624586741524,38624587015694,38624587278837,38624587538724,38624587796984,38624588053983,38624588309964,38624588564929,38624588819364,38624589073148,38624589326647,38624589579618,38624589832181,38624590084297,38624590336087,38624590587390,38624590838976,38624591090238,38624591341214,38624591592028,38624591842679,38624592093208,38624592343737,38624592594307,38624592844795,38624593095121,38624593345731,38624593595935,38624593846016,38624594095975,38624594346097,38624594596301,38624594846382,38624595096463,38624595346545,38624595596504,38624595846463,38624596096504,38624596346504,38624596596504,38624596846586,38624597096545,38624597356799,38624597602567,38624597839261,38624598076444,38624598315295,38624598555692,38624598797554,38624599040596,38624599284615,38624599529488,38624599775256,38624600021553,38624600268420,38624600515734,38624600763537,38624601011584,38624601260282,38624601508817,38624601757434,38624602006213,38624602255358,38624602504504,38624602753853,38624603003202,38624603252713,38624603502307,38624603751900,38624604001452,38624604251086,38624604501004,38624604750882,38624605000720,38624605250760,38624605500679,38624605750760,38624606000638,38624606250557,38624606500191,38624606750476,38624607000313,38624607250231,38624607499824,38624607750231,38624608000150,38624608250150,38624608500109,38624608750028,38624608999906,38624609249947,38624609500231,38624609750557,38624610000679,38624610250801,38624610500882,38624610750964,38624611000923,38624611251004,38624611500964,38624611750882,38624612000964,38624612251004,38624612501086,38624612751045,38624613001045,38624613251208,38624613501086,38624613751208,38624614000720,38624614250557,38624614500842,38624614750801,38624615000679,38624615250557,38624615500435,38624615750394,38624616000272,38624616250272,38624616500150,38624616749947,38624616999906,38624617249458,38624617500272,38624617750394,38624618000353,38624618250353,38624618500313,38624618750435,38624619000476,38624619250476,38624619500516,38624619750394,38624620000435,38624620250435,38624620500394,38624620750435,38624621000272,38624621250272,38624621500313,38624621750516,38624622000191,38624622250394,38624622506823,38624622780220,38624623042956,38624623302111,38624623559720,38624623815987,38624624071480,38624624326159,38624624580106,38624624833605,38624625086494,38624625339383,38624625591703,38624625843778,38624626095731,38624626347115,38624626598457,38624626849637,38624627100532,38624627351306,38624627602038,38624627852730,38624628103218,38624628353747,38624628604113,38624628854357,38624629128649,38624629363187,38624629610380,38624629859769,38624630109444,38624630359077,38624630608874,38624630858548,38624631108508,38624631358345,38624631608223,38624631858019,38624632107979,38624632357897,38624632607857,38624632857653,38624633107816,38624633357857,38624633607857,38624633857857,38624634107775,38624634357450,38624634607246,38624634857572,38624635107450,38624635357572,38624635607694,38624635857653,38624636107572,38624636357531,38624636607328,38624636857613,38624637357653,38624637607735,38624637842150,38624638076688,38624638313138,38624638551501,38624638791491,38624639032987,38624639275825,38624639519681,38624639764514,38624640010038,38624640256254,38624640502876,38624640749947,38624640997668,38624641245959,38624641494372,38624641743355,38624641992297,38624642241320,38624642490384,38624642739774,38624642989204,38624643238716,38624643488269,38624643737862,38624643987455,38624644237048,38624644487170,38624644736926,38624644986844,38624645236763,38624645486682,38624645736315,38624645986153,38624646235949,38624646485827,38624646735705,38624646985583,38624647235339,38624647485135,38624647735095,38624647985054,38624648234973,38624648485013,38624648734891,38624648984932,38624649235095,38624649485176,38624649735135,38624649985054,38624650235013,38624650484973,38624650735339,38624650995389,38624651232979,38624651469551,38624651707710,38624651947538,38624652188871,38624652431343,38624652674914,38624652919584,38624653165189,38624653411242,38624653657661,38624653904569,38624654151883,38624654399564,38624654647814,38624654896187,38624655144763,38624655393298,38624655642525,38624655891630,38624656140775,38624656390083,38624656639432,38624656889107,38624657138944,38624657388578,38624657638293,38624657887927,38624658137683,38624658387479,38624658637276,38624658887113,38624659136869,38624659386787,38624659636706,38624659886625,38624660136503,38624660386462,38624660636299,38624660886299,38624661136462,38624661386299,38624661636299,38624661885607,38624662136014,38624662386421,38624662636421,38624662886421,38624663136462,38624663386503,38624663636340,38624663886258,38624664136299,38624664386258,38624664636258,38624664886177,38624665136096,38624665386625,38624665636543,38624665886421,38624666136869,38624666387357,38624666637113,38624666887357,38624667137357,38624667387398,38624667637398,38624667887398,38624668137438,38624668387479,38624668637276,38624668887316,38624669137479,38624669387398,38624669637316,38624669887113,38624670136991,38624670386747,38624670636665,38624670886543,38624671136462,38624671386543,38624671636421,38624671886503,38624672136584,38624672386421,38624672636381,38624672886258,38624673136503,38624673386462,38624673636462,38624673886299,38624674136381,38624674386258,38624674636299,38624674886218,38624675136096,38624675386177,38624675636096,38624675886014,38624676161893,38624676425117,38624676684924,38624676943103,38624677200305,38624677456205,38624677711779,38624677966337,38624678220243,38624678473579,38624678726387,38624678978625,38624679230537,38624679482328,38624679733793,38624679985135,38624680236193,38624680487251,38624680738024,38624680988635,38624681239571,38624681489896,38624681740466,38624681990791,38624682240995,38624682491198,38624682741280,38624682991402,38624683241605,38624683491727,38624683741809,38624683991890,38624684241890,38624684491890,38624684741849,38624684991931,38624685242175,38624685492338,38624685742297,38624685992338,38624686242378,38624686508044,38624686745837,38624686982165,38624687219755,38624687458972,38624687699003,38624687942004,38624688185331,38624688429675,38624688674385,38624688921048,38624689167508,38624689414619,38624689661934,38624689909126,38624690157214,38624690405261,38624690653755,38624690902453,38624691151192,38624691400174,38624691649320,38624691898669,38624692148018,38624692397530,38624692647041,38624692896594,38624693146431,38624693396268,38624693645983,38624693895861,38624694145658,38624694395454,38624694645414,38624694895292,38624695145129,38624695395048,38624695644925,38624695894885,38624696144763,38624696394722,38624696644722,38624696894681,38624697144844,38624697394844,38624697645088,38624697895129,38624698150948,38624698400907,38624698649971,38624698899198,38624699148872,38624699398343,38624699647855,38624699897448,38624700147082,38624700401314,38624700646634,38624700895821,38624701145739,38624701395943,38624701646512,38624701896390,38624702146390,38624702396228,38624702646268,38624702896512,38624703146228,38624703396431,38624703646553,38624703896553,38624704146594,38624704396594,38624704646594,38624704896553,38624705146838,38624705396512,38624705646228,38624705896024,38624706145780,38624706395617,38624706645617,38624706895495,38624707145373,38624707395292,38624707644925,38624707895007,38624708145332,38624708395251,38624708645007,38624708894966,38624709144437,38624709395251,38624709645088,38624709895332,38624710145048,38624710395292,38624710645210,38624710895129,38624711145210,38624711395129,38624711664131,38624711927315,38624712187813,38624712446602,38624712704048,38624712960559,38624713216296,38624713471545,38624713725899,38624713979724,38624714232857,38624714485624,38624714737862,38624714989937,38624715241768,38624715493314,38624715744657,38624715995756,38624716246732,38624716497383,38624716748034,38624716998726,38624717249173,38624717499499,38624717750109,38624718000272,38624718250394,38624718500394,38624718750638,38624719000842,38624719250882,38624719500964,38624719750964,38624720001045,38624720251005,38624720501167,38624720751249,38624721001249,38624721251615,38624721501534,38624721751493,38624722001330,38624722251371,38624722501411,38624722751371,38624723001411,38624723251208,38624723501249,38624723751208,38624724001249,38624724251289,38624724501289,38624724772774,38624725023018,38624725270007,38624725518420,38624725766670,38624726014798,38624726263212,38624726511787,38624726760689,38624727009794,38624727259021,38624727508329,38624727757637,38624728007108,38624728256579,38624728506294,38624728755969,38624729005684,38624729255603,38624729505358,38624729755277,38624730004992,38624730254585,38624730504463,38624730754260,38624731004056,38624731254585,38624731504423,38624731754178,38624732003894,38624732253853,38624732503690,38624732753568,38624733003405,38624733253527,38624733503568,38624733753568,38624734003487,38624734253487,38624734503405,38624734753487,38624735003283,38624735253243,38624735503243,38624735753243,38624736003161,38624736253202,38624736503243,38624736753120,38624737002998,38624737252591,38624737503202,38624737753568,38624738003568,38624738253446,38624738503405,38624738753365,38624739003202,38624739253243,38624739503243,38624739753161,38624740003161,38624740253039,38624740502795,38624740753202,38624741003243,38624741253609,38624741503487,38624741753690,38624742003609,38624742253487,38624742503487,38624742753446,38624743003527,38624743253568,38624743503527,38624743753527,38624744003365,38624744253527,38624744503527,38624744753487,38624745003446,38624745253731,38624745503690,38624745753609,38624746003649,38624746253568,38624746503568,38624746753446,38624747003446,38624747266101,38624747503853,38624747740100,38624747977933,38624748217557,38624748458768,38624748701200,38624748944689,38624749189400,38624749434354,38624749680082,38624749926135,38624750173083,38624750420397,38624750668037,38624750915922,38624751164131,38624751412666,38624751661446,38624751910550,38624752159655,38624752408841,38624752658313,38624752907906,38624753157621,38624753407214,38624753656888,38624753906522,38624754156197,38624754406034,38624754655790,38624754905708,38624755155546,38624755405424,38624755655342,38624755905301,38624756155301,38624756405179,38624756655057,38624756904895,38624757155098,38624757405139,38624757655098,38624757905057,38624758155057,38624758405057,38624758655057,38624758904854,38624759154854,38624759404854,38624759654691,38624759904813,38624760154895,38624760404976,38624760655017,38624760905017,38624761155301,38624761405179,38624761655261,38624761905424,38624762155383,38624762405383,38624762655301,38624762905098,38624763155261,38624763405342,38624763655301,38624763905261,38624764155139,38624764405057,38624764655220,38624764905139,38624765155424,38624765405586,38624765655668,38624765905627,38624766155749,38624766405749,38624766686714,38624766936674,38624767183296,38624767429919,38624767676949,38624767924426,38624768172310,38624768420357,38624768668729,38624768917386,38624769166451,38624769415352,38624769664172,38624769913195,38624770162300,38624770411608,38624770660957,38624770910428,38624771159940,38624771409493,38624771659126,38624771908923,38624772158760,38624772432198,38624772695259,38624772955025,38624773213610,38624773470935,38624773727160,38624773982369,38624774237007,38624774490873,38624774744169,38624774996936,38624775249336,38624775501411,38624775753039,38624776004504,38624776255847,38624776506905,38624776757841,38624777008573,38624777259590,38624777510160,38624777760607,38624778011014,38624778261340,38624778511543,38624778761787,38624779011869,38624779262032,38624779512154,38624779762276,38624780012357,38624780262479,38624780512561,38624780762520,38624781012520,38624781262845,38624781512927,38624781762886,38624782012927,38624782262927,38624782512967,38624782762886,38624783012764,38624783262764,38624783512845,38624783762805,38624784012886,38624784262845,38624784512276,38624784762561,38624785012642,38624785263008,38624785513090,38624785763212,38624786013090,38624786263049,38624786513090,38624786763049,38624787013090,38624787263090,38624787513049,38624787763049,38624788012886,38624788262886,38624788512886,38624788762845,38624789012845,38624789263171,38624789513130,38624789763090,38624790013171,38624790263212,38624790513130,38624790762967,38624791013008,38624791262967,38624791512886,38624791762845,38624792012601,38624792262072,38624792512967,38624792763171,38624793013090,38624793263700,38624793523466,38624793760852,38624793997546,38624794236031,38624794475085,38624794716866,38624794959745,38624795203397,38624795448107,38624795693469,38624795939603,38624796186226,38624796433337,38624796680936,38624796928861,38624797177152,38624797425769,38624797674426,38624797923246,38624798172188,38624798421374,38624798670804,38624798920357,38624799169787,38624799419258,38624799668811,38624799918363,38624800168160,38624800417834,38624800667631,38624800917427,38624801167468,38624801417305,38624801667224,38624801917020,38624802166980,38624802416695,38624802666613,38624802916613,38624803166613,38624803416573,38624803666451,38624803916410,38624804166410,38624804416328,38624804666288,38624804916410,38624805166613,38624805416695,38624805666654,38624805916410,38624806166573,38624806416532,38624806666491,38624806916451,38624807166369,38624807416206,38624807666206,38624807916247,38624808166288,38624808416247,38624808666288,38624808916166,38624809166939,38624809417102,38624809666776,38624809916857,38624810166735,38624810416939,38624810666939,38624810916939,38624811166776,38624811416776,38624811666613,38624811916654,38624812166613,38624812416573,38624812666573,38624812916532,38624813166695,38624813416857,38624813666776,38624813916735,38624814166532,38624814416532,38624814666451,38624814916451,38624815166410,38624815416410,38624815666369,38624815916369,38624816166410,38624816416328,38624816665881,38624816916288,38624817166613,38624817416695,38624817666695,38624817918729,38624818168973,38624818418729,38624818693835,38624818956774,38624819216255,38624819474231,38624819730822,38624819986600,38624820241524,38624820495715,38624820749336,38624821002347,38624821254748,38624821507474,38624821759916,38624822011706,38624822263293,38624822514432,38624822765531,38624823016426,38624823267077,38624823517606,38624823768257,38624824018705,38624824269152,38624824519478,38624824769763,38624825020007,38624825270007,38624825520577,38624825770983,38624826021106,38624826271187,38624826521268,38624826771187,38624827021268,38624827271390,38624827521146,38624827771065,38624828021472,38624828271309,38624828521594,38624828771431,38624829032784,38624829277168,38624829513700,38624829750883,38624829989733,38624830230171,38624830472115,38624830715279,38624830959460,38624831204496,38624831450264,38624831696643,38624831943428,38624832190743,38624832438423,38624832686389,38624832934761,38624833183622,38624833432686,38624833681587,38624833930814,38624834181506,38624834430936,38624834680245,38624834929593,38624835179227,38624835462268,38624835711942,38624835957914,38624836204048,38624836450549,38624836697619,38624836945137,38624837193306,38624837441272,38624837689644,38624837938301,38624838187080,38624838436023,38624838685209,38624838934191,38624839183907,38624839433459,38624839682889,38624839932401,38624840182035,38624840431831,38624840681628,38624840931384,38624841181343,38624841431384,38624841681221,38624841931018,38624842180936,38624842430773,38624842680651,38624842930651,38624843180651,38624843430489,38624843680529,38624843930570,38624844180529,38624844430489,38624844680407,38624844930326,38624845180489,38624845430529,38624845680611,38624845930570,38624846180611,38624846430570,38624846680448,38624846930285,38624847180367,38624847429553,38624847680082,38624847930529,38624848180407,38624848430611,38624848680651,38624848930651,38624849180936,38624849430936,38624849680814,38624849930448,38624850180977,38624850432198,38624850682645,38624850933215,38624851182727,38624851432360,38624851682035,38624851931872,38624852181669,38624852431465,38624852681302,38624852931018,38624853181140,38624853431099,38624853680977,38624853930814,38624854197741,38624854462552,38624854723173,38624854981840,38624855239367,38624855495837,38624855751493,38624856006050,38624856259997,38624856513415,38624856766345,38624857018868,38624857271512,38624857523710,38624857774849,38624858026680,38624858277779,38624858528552,38624858779366,38624859030098,38624859280708,38624859531237,38624859781644,38624860033068,38624860283475,38624860533597,38624860783719,38624861033760,38624861283801,38624861534452,38624861784452,38624862034655,38624862284777,38624862534818,38624862784818,38624863034899,38624863284940,38624863534940,38624863784899,38624864036324,38624864285022,38624864535306,38624864795031,38624865032702,38624865269559,38624865507474,38624865747505,38624865988798,38624866231270,38624866474922,38624866718656,38624866964465,38624867210762,38624867457466,38624867704577,38624867952095,38624868200061,38624868448026,38624868696561,38624868945178,38624869194323,38624869443469,38624869692777,38624869942085,38624870191556,38624870441149,38624870689969,38624870940417,38624871190295,38624871439929,38624871689766,38624871939563,38624872189522,38624872439196,38624872689074,38624872938993,38624873189156,38624873439115,38624873689115,38624873939034,38624874188912,38624874439318,38624874688749,38624874938789,38624875188789,38624875438749,38624875688749,38624875938789,38624876188749,38624876438667,38624876688667,38624876938708,38624877188952,38624877438912,38624877688708,38624877938708,38624878188667,38624878438667,38624878688952,38624878938952,38624879188912,38624879438912,38624879688830,38624879938789,38624880188667,38624880438586,38624880688789,38624880938871,38624881189074,38624881439196,38624881689156,38624881939156,38624882188993,38624882438830,38624882688871,38624882938708,38624883188749,38624883438749,38624883688789,38624883938789,38624884188830,38624884438749,38624884688627,38624884938464,38624885188749,38624885438912,38624885688871,38624885938830,38624886188749,38624886438749,38624886688708,38624886938749,38624887188667,38624887438586,38624887688667,38624887938627,38624888188667,38624888438627,38624888688667,38624888938627,38624889188789,38624889438912,38624889688871,38624889965197,38624890228422,38624890488106,38624890746081,38624891002876,38624891258736,38624891513741,38624891767932,38624892021553,38624892274727,38624892527494,38624892779691,38624893031766,38624893283801,38624893534981,38624893786202,38624894037015,38624894287666,38624894538643,38624894789213,38624895039742,38624895290149,38624895540474,38624895790718,38624896041003,38624896291247,38624896541491,38624896791695,38624897041858,38624897292102,38624897542386,38624897792509,38624898042386,38624898292671,38624898542834,38624898792793,38624899042834,38624899292631,38624899542753,38624899792997,38624900042834,38624900309720,38624900547310,38624900783353,38624901020821,38624901260079,38624901500638,38624901742948,38624901985990,38624902230009,38624902474963,38624902720691,38624902966906,38624903213773,38624903464709,38624903712430,38624903960152,38624904212430,38624904460803,38624904708728,38624904956815,38624905205391,38624905459175,38624905708117,38624905956612,38624906205066,38624906453886,38624906703031,38624906952095,38624907201363,38624907450590,38624907699979,38624907949288,38624908198881,38624908448514,38624908698189,38624908947904,38624909197985,38624909447172,38624909697945,38624909947945,38624910197985,38624910447945,38624910698026,38624910948148,38624911198148,38624911448026,38624911698067,38624911948067,38624912197945,38624912447945,38624912697782,38624912947945,38624913198026,38624913448270,38624913697985,38624913948230,38624914198026,38624914448067,38624914697945,38624914947823,38624915197904,38624915447823,38624915698026,38624915951892,38624916197904,38624916447334,38624916697375,38624916947375,38624917197579,38624917447660,38624917697782,38624917947823,38624918197823,38624918447863,38624918697863,38624918947863,38624919197863,38624919447701,38624919697579,38624919947579,38624920197538,38624920447579,38624920696846,38624920947701,38624921197985,38624921447863,38624921697701,38624921947334,38624922197334,38624922447375,38624922697131,38624922947090,38624923196765,38624923447009,38624923696928,38624923946887,38624924196846,38624924446805,38624924696846,38624924946724,38624925196968,38624925466296,38624925729358,38624925989652,38624926248726,38624926506294,38624926762723,38624927018217,38624927272977,38624927526761,38624927780179,38624928033109,38624928285551,38624928537748,38624928789457,38624929040922,38624929292631,38624929543770,38624929794706,38624930045316,38624930296089,38624930546740,38624930797229,38624931047636,38624931298042,38624931548409,38624931798571,38624932048653,38624932298856,38624932549019,38624932799182,38624933049304,38624933299711,38624933549996,38624933800158,38624934050077,38624934300036,38624934549955,38624934800158,38624935050118,38624935300118,38624935550036,38624935800525,38624936059720,38624936297513,38624936534208,38624936772245,38624937012194,38624937253812,38624937496366,38624937739774,38624937984078,38624938229154,38624938475248,38624938721748,38624938968493,38624939216255,38624939464058,38624939712186,38624939960721,38624940209257,38624940458077,38624940707059,38624940956123,38624941205676,38624941455269,38624941704781,38624941954333,38624942203967,38624942453479,38624942703234,38624942953194,38624943202868,38624943452746,38624943702624,38624943952624,38624944202421,38624944452299,38624944702258,38624944952258,38624945202461,38624945452258,38624945702177,38624945951932,38624946201729,38624946451566,38624946701403,38624946951403,38624947201281,38624947451037,38624947700997,38624947950956,38624948204781,38624948450915,38624948700386,38624948950345,38624949200834,38624949451037,38624949701200,38624949951281,38624950201281,38624950451403,38624950701444,38624950951525,38624951201607,38624951451444,38624951701688,38624951952095,38624952201403,38624952451973,38624952702177,38624952952421,38624953202380,38624953452258,38624953702136,38624953951892,38624954201892,38624954451770,38624954701525,38624954951322,38624955201119,38624955451159,38624955701200,38624955951159,38624956201119,38624956451119,38624956701119,38624956950997,38624957201363,38624957451322,38624957701200,38624957951037,38624958200997,38624958450997,38624958700915,38624958950956,38624959200915,38624959450956,38624959700874,38624959950834,38624960200874,38624960451037,38624960701119,38624960950997,38624961226957,38624961490751,38624961749906,38624962007841,38624962264880,38624962520658,38624962775663,38624963030057,38624963283638,38624963536771,38624963789416,38624964041654,38624964293689,38624964545438,38624964796822,38624965048042,38624965299385,38624965549792,38624965800565,38624966050809,38624966301298,38624966551745,38624966801908,38624967052030,38624967302193,38624967552152,38624967802315,38624968052437,38624968302356,38624968552518,38624968802803,38624969052518,38624969302885,38624969553291,38624969803210,38624970053291,38624970303251,38624970553169,38624970803088,38624971053047,38624971303169,38624971568632,38624971806465,38624972042631,38624972313952,38624972553129,38624972790108,38624973028430,38624973268664,38624973509916,38624973752347,38624973995796,38624974240181,38624974485380,38624974731270,38624974977852,38624975224922,38624975472522,38624975720406,38624975968615,38624976217028,38624976465523,38624976714343,38624976963610,38624977212919,38624977462512,38624977712024,38624977961576,38624978211088,38624978460721,38624978710274,38624978960030,38624979209786,38624979459582,38624979709460,38624979959419,38624980209297,38624980459094,38624980709135,38624980959012,38624981209094,38624981459216,38624981709379,38624981959379,38624982209419,38624982459460,38624982713692,38624982959501,38624983209094,38624983459135,38624983709175,38624983959297,38624984209297,38624984459460,38624984709460,38624984959541,38624985209908,38624985459786,38624985709582,38624985959501,38624986209501,38624986459216,38624986709094,38624986959094,38624987208931,38624987458931,38624987708768,38624987958931,38624988209338,38624988459297,38624988709297,38624988959135,38624989209297,38624989459297,38624989709257,38624989958931,38624990209094,38624990459053,38624990709135,38624990958972,38624991208972,38624991458931,38624991708931,38624991958809,38624992208728,38624992458768,38624992708809,38624992958768,38624993208931,38624993459175,38624993709216,38624993959297,38624994209379,38624994459460,38624994709460,38624994959216,38624995209460,38624995459664,38624995709704,38624995959704,38624996209826,38624996459908,38624996729927,38624996993151,38624997253731,38624997512072,38624997770455,38624998027128,38624998282662,38624998537341,38624998791451,38624999044747,38624999297025,38624999550362,38624999802681,38625000054431,38625000306140,38625000557564,38625000808581,38625001059436,38625001310494,38625001561104,38625001811429,38625002061836,38625002312040,38625002562365,38625002812447,38625003062528,38625003312691,38625003562935,38625003812813,38625004062894,38625004313627,38625004563423,38625004813586,38625005063179,38625005313952,38625005564481,38625005813830,38625006063627,38625006313505,38625006563667,38625006813667,38625007064074,38625007322782,38625007560372,38625007797107,38625008035266,38625008275337,38625008516711,38625008759387,38625009002958,38625009248075,38625009493314,38625009739001,38625009985461,38625010232043,38625010479683,38625010727486,38625010975411,38625011223702,38625011472318,38625011720975,38625011969999,38625012219063,38625012468168,38625012717639,38625012966988,38625013216703,38625013466459,38625013716215,38625013965197,38625014215645,38625014465482,38625014716499,38625014965238,38625015214872,38625015464709,38625015714668,38625015964709,38625016214587,38625016464628,38625016714546,38625016964628,38625017214953,38625017464791,38625017714628,38625017964709,38625018214668,38625018464628,38625018714628,38625018964506,38625019214506,38625019464506,38625019714506,38625019964546,38625020215035,38625020464465,38625020714424,38625020964302,38625021214709,38625021464831,38625021714791,38625021964628,38625022214587,38625022468656,38625022714424,38625022963733,38625023213773,38625023463977,38625023714058,38625023964139,38625024214180,38625024464221,38625024714221,38625024964262,38625025213773,38625025464709,38625025714872,38625025964831,38625026214750,38625026464262,38625026714628,38625026964587,38625027214587,38625027464587,38625027714587,38625027964546,38625028214668,38625028464791,38625028714750,38625028964668,38625029214872,38625029464913,38625029714872,38625029964709,38625030214628,38625030464465,38625030714506,38625030964384,38625031214343,38625031464506,38625031714587,38625031964668,38625032214709,38625032492175,38625032754301,38625033014514,38625033272896,38625033530180,38625033785876,38625034041207,38625034295601,38625034549345,38625034802559,38625035055285,38625035307483,38625035559436,38625035811145,38625036062610,38625036313790,38625036564970,38625036815824,38625037066719,38625037317614,38625037568184,38625037818591,38625038068876,38625038319242,38625038569486,38625038819608,38625039069690,38625039319771,38625039569893,38625039820097,38625040070137,38625040320219,38625040570219,38625040820219,38625041070422,38625041323881,38625041574003,38625041823677,38625042073108,38625042322863,38625042572497,38625042822253,38625043071968,38625043321765,38625043571643,38625043822904,38625044072782,38625044322538,38625044572253,38625044822050,38625045086169,38625045324166,38625045560331,38625045798165,38625046037504,38625046278348,38625046520495,38625046763659,38625047007678,38625047253487,38625047498726,38625047746081,38625047993192,38625048240425],"weight":null,"weightType":"samples","length":4610},"markers":{"data":[],"name":[],"startTime":[],"endTime":[],"phase":[],"category":[],"length":0},"stackTable":{"frame":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,5,6,7,42,43,44,45,46,47,48,49,50,51,52,4,39,53,40,41,5,6,7,54,55,56,57,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,58,59,60,61,62,63,64,65,66,67,68,69,5,6,7,70,71,72,73,74,75,76,77,78,79,80,53,68,69,56,57,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,88,89,90,91,92,103,104,105,8,9,106,107,108,109,110,86,87,111,88,89,112,113,114,54,55,115,116,117,118,119,120,121,122,21,22,23,24,123,124,125,126,127,128,129,130,131,132,112,113,114,42,43,106,107,64,65,130,68,69,133,134,135,54,55,136,137,138,139,140,141,142,143,144,145,146,147,148,149,21,22,23,150,151,152,153,80,154,155,156,157,158,159,160,161,162,163,164,165,112,113,114,93,94,166,167,168,169,170,39,171,172,173,8,9,174,175,176,102,39,90,91,92,177,178,179,180,168,169,170,181,182,183,112,113,114,184,185,186,187,188,189,68,69,190,191,192,193,194,195,196,130,90,91,92,42,43,197,198,199,200,201,202,203,204,205,54,55,166,167,192,193,194,8,9,206,207,208,209,210,211,171,172,173,212,213,214,143,144,145,146,147,148,149,21,22,23,24,25,26,27,215,216,217,218,219,220,221,222,223,224,225,226,227,228,88,89,229,230,231,232,195,196,233,234,235,236,237,238,239,240,241,242,21,22,23,24,123,124,125,243,244,245,246,247,103,104,105,248,249,250,251,252,103,104,105,93,94,253,254,53,130,255,256,257,258,259,260,257,261,262,263,264,265,266,267,268,223,224,269,270,271,93,94,272,273,274,275,276,277,181,182,183,257,131,132,278,279,15,16,17,18,19,20,21,22,23,24,123,124,125,243,280,281,282,283,284,285,286,287,15,16,17,18,19,20,21,22,23,24,25,26,27,215,288,289,290,291,220,221,292,293,294,295,296,297,42,43,298,299,143,144,145,146,147,148,149,21,22,23,24,123,124,125,243,280,281,300,301,302,303,304,305,306,307,285,286,287,15,16,17,18,19,20,21,22,23,24,123,124,125,243,244,245,308,309,310,311,312,313,61,62,63,314,315,316,317,318,319,320,321,322,323,324,325,326,327,314,315,328,329,117,118,119,120,121,122,21,22,23,24,25,26,27,58,330,331,332,333,334,335,336,337,338,339,340,53,341,342,338,189,255,256,343,344,345,346,347,348,349,350,351,21,22,23,24,25,26,27,215,352,353,354,355,356,357,131,132,358,359,360,361,362,143,144,145,146,147,148,149,21,22,23,24,25,26,27,215,216,217,218,219,220,221,292,293,294,295,363,364,365,133,134,135,366,367,36,37,368,369,370,371,372,373,374,375,257,376,377,378,379,380,381,40,41,382,383,204,205,361,362,143,144,145,146,147,148,149,21,22,23,24,25,26,27,28,29,30,31,384,220,221,292,293,294,295,385,386,387,40,41,388,389,390,391,392,393,394,395,21,22,23,24,25,26,27,215,352,396,397,398,399,400,401,402,403,404,357,405,406,407,408,70,71,409,410,370,371,372,181,182,183,411,412,413,414,415,416,417,418,419,368,420,421,117,118,119,120,121,122,21,22,23,24,25,422,423,424,425,426,334,427,428,429,430,431,432,177,178,179,180,433,434,435,133,134,135,190,191,436,437,438,439,440,441,442,443,21,22,23,24,123,124,125,243,244,245,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,278,279,15,16,17,18,19,20,21,22,23,24,123,124,125,243,244,245,308,309,310,460,461,462,463,464,465,466,467,33,34,35,288,289,290,291,220,221,292,293,294,295,385,386,468,469,131,132,470,471,472,473,474,475,476,111,343,344,345,346,347,348,349,350,351,21,22,23,24,123,477,478,479,358,359,360,480,481,482,483,405,406,484,485,486,487,488,489,490,247,491,492,493,189,204,205,369,494,495,496,497,498,499,500,284,211,67,501,502,503,504,269,270,271,505,506,507,508,509,510,511,21,22,23,24,25,422,423,424,425,426,334,427,428,429,430,431,512,513,171,172,173,320,321,322,204,205,181,182,183,323,324,325,171,172,173,514,369,223,224,515,516,517,111,451,452,357,518,519,520,521,522,523,524,525,526,527,21,22,23,24,25,528,529,530,531,373,532,533,534,535,319,434,435,484,485,486,536,537,538,401,539,540,541,520,521,522,523,524,525,526,527,21,22,23,24,25,26,27,215,352,542,543,544,545,546,547,548,143,144,145,146,147,148,149,21,22,23,24,25,528,549,550,247,330,331,332,551,552,553,554,555,556,557,480,314,315,558,559,514,560,369,417,418,419,223,224,561,562,401,563,564,26,27,28,29,30,31,565,566,567,568,544,545,84,85,518,519,569,570,494,495,496,553,554,150,571,546,547,548,143,144,145,146,147,148,149,21,22,23,24,123,124,125,243,280,281,300,301,572,573,574,481,482,483,382,383,575,576,577,578,579,580,581,21,22,23,24,123,124,125,243,280,281,300,582,583,584,585,586,587,588,589,590,591,111,108,109,110,592,593,594,595,319,358,359,360,319,177,178,382,383,518,519,52,70,71,487,488,544,545,596,597,15,16,17,18,19,20,21,22,23,24,25,422,423,424,425,598,599,357,600,601,602,603,604,103,104,105,605,606,607,608,609,610,611,612,613,402,403,404,607,608,614,615,268,25,26,27,58,330,616,617,218,618,211,70,71,451,452,481,482,483,569,570,619,620,117,118,119,120,121,122,21,22,23,24,25,422,423,424,425,426,621,622,25,26,27,215,352,623,361,362,143,144,145,146,147,148,149,21,22,23,24,25,26,27,624,625,626,627,220,221,292,293,294,295,628,629,630,631,632,633,634,563,564,269,270,271,635,636,345,346,347,348,349,350,351,21,22,23,24,25,26,27,215,352,637,309,310,638,639,589,590,591,640,641,343,344,345,346,347,348,349,350,351,21,22,23,24,25,26,27,215,216,217,218,219,642,643,644,645,646,647,648,649,21,22,23,24,25,26,27,215,352,650,651,212,213,214,143,144,145,146,147,148,149,21,22,23,24,25,26,27,624,625,626,652,258,259,653,654,218,219,220,221,292,293,294,295,628,655,211,539,540,541,656,657,658,659,156,157,158,159,160,161,162,163,164,165,190,191,422,423,653,654,218,219,220,221,292,293,294,295,363,660,661,662,156,157,158,159,160,161,162,163,164,663,664,665,189,666,667,67,668,669,123,124,125,243,280,281,282,670,278,279,15,16,17,18,19,20,21,22,23,24,25,422,423,424,425,426,671,407,408,672,673,674,465,466,467,382,383,561,562,26,27,215,352,675,676,677,678,679,373,680,681,682,123,124,125,243,683,684,685,686,687,688,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,689,690,691,692,693,694,484,485,486,637,309,310,311,695,560,696,697,698,699,216,217,218,219,700,487,488,701,702,123,124,125,243,280,281,300,301,572,573,703,704,25,422,423,424,425,598,705,706,177,178,668,669,707,708,709,15,16,17,18,19,20,21,22,23,24,25,26,27,58,330,331,332,551,552,481,482,483,462,463,710,711,712,713,714,535,704,278,279,15,16,17,18,19,20,21,22,23,24,25,26,27,215,288,289,290,291,220,221,292,293,294,295,628,715,716,684,685,150,151,717,247,285,286,287,15,16,17,18,19,20,21,22,23,24,25,26,27,215,216,217,218,718,719,720,721,15,16,17,18,19,20,21,22,23,24,25,26,27,215,352,396,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,553,554,123,124,125,243,280,743,744,745,746,484,485,486,229,230,747,748,448,449,450,656,657,405,406,407,408,749,750,751,752,753,754,755,744,745,746,24,25,26,27,624,625,626,627,220,221,292,293,294,295,385,756,631,632,215,216,217,218,219,220,221,292,293,294,295,757,81,82,83,133,134,135,331,332,333,621,758,759,760,575,576,577,578,579,580,581,21,22,23,24,25,422,423,424,425,426,334,427,428,429,430,431,761,751,752,704,465,466,467,307,762,763,764,28,29,30,31,384,220,221,292,293,765,407,408,26,27,215,352,637,309,310,638,766,692,767,229,230,416,190,191,465,466,467,58,330,331,332,333,768,769,770,771,464,361,362,143,144,145,146,147,148,149,21,22,23,24,123,124,125,243,244,245,308,309,310,638,766,772,269,270,271,773,774,775,776,777,328,329,117,118,119,120,121,122,21,22,23,24,25,26,27,215,352,637,309,310,778,779,334,427,428,429,430,431,512,780,781,782,339,340,751,752,374,375,436,437,438,439,440,441,442,443,21,22,23,24,25,26,27,624,625,626,627,220,221,783,784,493,785,786,787,788,28,29,30,31,384,220,221,292,293,294,295,789,790,791,792,704,123,124,125,243,280,281,300,582,793,434,435,229,230,640,641,464,401,684,685,794,795,796,358,359,360,797,67,58,59,798,773,774,799,800,520,521,522,523,524,525,526,527,21,22,23,24,25,528,549,801,802,803,804,539,540,541,258,259,575,576,577,578,579,580,581,21,22,23,24,123,124,125,243,280,281,300,582,793,805,806,807,808,809,810,811,21,22,23,24,25,26,27,28,29,30,31,565,566,567,812,813,814,123,124,125,243,244,245,444,815,816,817,345,346,347,348,349,350,351,21,22,23,24,25,26,27,624,625,626,818,819,314,315,820,821,822,823,640,641,123,124,125,243,244,245,444,445,824,825,826,684,685,487,488,451,452,215,352,396,397,827,828,829,830,831,749,750,280,281,300,301,832,833,834,835,553,554,836,539,540,541,123,124,125,243,280,837,546,547,548,143,144,145,146,147,148,149,21,22,23,24,25,26,27,624,625,626,627,220,221,292,293,294,295,296,838,839,416,58,330,331,332,551,840,841,842,843,844,528,549,801,802,803,804,596,597,15,16,17,18,19,20,21,22,23,24,25,422,423,424,425,426,334,427,428,429,430,845,464,653,654,218,219,220,221,292,293,294,295,789,846,343,344,345,346,347,348,349,350,351,21,22,23,24,25,26,27,28,29,30,31,384,220,221,292,293,294,295,789,790,791,847,848,849,850,444,851,852,853,854,855,856,857,858,58,330,331,332,551,859,624,625,626,627,860,707,861,862,863,143,144,145,146,147,148,149,21,22,23,24,25,26,27,215,216,217,218,219,220,221,292,293,294,295,864,258,259,865,866,867,868,123,124,125,243,280,281,300,869,643,644,645,646,647,870,871,373,872,873,874,518,519,244,245,308,309,310,638,875,330,616,617,218,219,220,221,292,293,294,295,296,838,876,640,641,25,26,27,877,878,879,880,28,29,30,31,384,220,221,292,293,294,295,296,838,881,882,883,884,885,886,589,590,591],"category":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"subcategory":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"prefix":[null,0,1,2,3,4,5,6,4,8,3,10,3,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,3,33,34,3,36,2,38,38,40,38,42,43,38,45,2,47,2,49,50,2,52,1,54,54,56,56,56,59,56,61,62,56,64,54,66,54,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,54,87,88,54,90,1,92,92,94,92,96,97,92,99,1,101,1,103,104,1,106,2,3,4,4,111,3,113,3,115,116,3,118,3,120,38,122,38,124,125,38,127,2,129,2,131,132,2,134,54,56,137,56,139,140,56,142,143,56,145,54,147,54,149,150,54,152,92,92,155,92,157,158,92,160,1,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,1,178,2,4,4,182,4,184,185,4,187,3,189,3,191,38,38,194,38,196,197,38,199,2,201,2,203,204,2,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,54,56,223,224,225,226,227,228,229,230,231,232,233,56,235,236,56,238,54,240,54,242,243,92,92,246,247,92,249,1,251,2,3,4,4,256,257,4,259,3,261,3,263,264,38,266,267,38,269,270,2,272,2,274,275,56,56,278,56,280,54,282,283,54,285,92,92,288,289,92,291,1,293,1,295,1,297,298,4,300,4,302,3,304,3,306,307,38,309,2,311,312,2,314,56,56,317,318,54,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,92,345,1,347,348,2,4,351,4,353,3,355,3,357,2,359,2,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,92,92,381,382,1,384,385,1,387,4,389,390,4,392,3,394,38,56,54,398,92,92,401,2,4,2,405,2,407,408,2,410,54,56,413,92,415,416,92,418,1,420,1,422,423,2,4,426,427,38,38,430,38,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,54,56,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,56,482,54,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,1,507,508,3,4,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,3,536,537,38,539,2,541,542,56,54,545,546,54,548,549,1,551,4,553,3,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,54,54,580,92,1,583,3,4,3,587,38,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,2,609,56,56,612,4,614,615,4,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,54,56,647,648,54,650,54,652,3,4,3,656,657,38,38,660,56,1,663,664,1,666,667,4,669,38,671,56,673,56,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,92,705,1,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,4,54,730,731,92,38,734,38,736,38,738,2,740,54,742,743,92,745,746,1,748,749,1,751,4,3,754,755,54,56,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,56,783,54,785,2,4,788,4,790,791,38,793,54,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,4,817,818,38,820,2,822,823,1,825,1,827,4,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,3,852,38,38,855,856,54,858,859,337,861,862,863,864,865,866,867,868,869,870,871,872,873,92,875,1,877,1,879,880,3,882,38,56,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,92,902,903,3,38,906,907,56,909,92,911,912,4,914,3,916,38,2,919,54,92,92,923,38,54,926,927,1,929,1,931,3,4,56,1,936,3,938,38,940,941,1,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,4,968,969,3,971,972,38,974,56,976,977,3,979,980,38,982,983,54,92,38,987,2,989,990,56,56,993,4,4,996,38,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,2,1013,92,1,1016,1017,3,38,38,1021,38,1023,1024,2,1026,1027,56,56,1030,1031,92,1033,1034,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,38,1052,38,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,56,84,1073,1074,1075,1076,92,1078,1,1080,2,54,56,1084,54,1086,3,54,56,54,1091,1092,4,1094,3,1096,38,38,1099,1010,1101,1102,1103,1104,1105,1106,1107,1108,1109,56,1111,54,1113,38,1115,54,1117,3,1119,1120,38,1122,1008,1124,56,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,92,1151,1152,92,1154,38,1156,1157,1158,1159,1160,1161,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,2,1176,2,1178,1179,56,1181,1182,4,3,1185,1186,2,1188,1189,2,4,38,1193,1194,92,92,1197,4,1199,92,1201,3,4,1204,38,1206,4,1208,3,1210,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227,38,2,1230,1,1232,2,38,1235,1236,2,1238,54,1240,2,1242,1243,1,1245,3,1247,1248,3,1250,1,1252,3,840,1255,1256,1257,1258,1259,1260,1261,1262,38,56,1265,4,1267,4,1269,1270,3,1272,2,1274,1275,1276,1277,1278,1279,1280,1281,1282,1283,1284,1285,1286,1287,1288,1289,1290,1291,1292,1139,1294,1295,1296,1297,1298,92,1300,1301,1302,1303,1304,1305,1306,1307,1308,1309,1310,1311,1312,1313,1314,1315,1316,1317,1318,1319,1320,1321,1322,1323,1324,1325,1326,2,3,1329,2,1331,56,1333,4,1335,1336,2,1338,1339,1340,1341,1342,1343,1344,1345,1346,1347,1348,1349,1350,1351,1352,1353,1354,1355,1356,1357,1358,1359,38,1361,1362,56,1364,4,1366,1367,1368,1369,1370,1371,1372,1373,1374,1375,1376,1377,1378,1379,1380,1381,1382,1383,1384,1385,1386,54,1388,1389,1390,1391,1392,1393,1394,1395,1396,1397,1398,1399,1400,1401,1402,1403,2,3,1406,1407,1408,1409,1410,1411,1412,1413,1414,1415,1416,1417,1418,1419,1420,1421,1422,1423,1424,1425,38,1427,1288,1429,1430,1431,1432,1433,1434,1435,1436,1437,1438,1439,92,4,1442,1443,3,1445,92,1447,1448,1449,1450,1451,1452,1453,1454,1455,1456,1457,4,1459,25,1461,1462,1463,1464,1465,1466,1467,1468,1469,1470,1471,1472,1473,3,1475,1476,1477,1478,1479,1480,1481,1482,1483,1484,1485,1486,1487,38,1,1490,4,3,1493,1009,1495,1496,1497,1498,1499,1500,1501,92,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,1515,1516,1517,1518,1519,1520,92,1522,1,1524,1525,56,1527,1528,56,1530,54,1532,1222,1534,1535,1536,1537,1538,1539,1540,1541,56,465,1544,1545,629,1547,1548,1549,1550,92,1552,2,1554,1555,1556,1557,1558,1559,1560,1561,1562,1563,1564,1565,1566,1567,1568,1569,1570,1571,1572,1573,1574,1575,1576,1577,54,56,1580,1581,1298,1583,1584,1585,1586,3,3,1589,2,1591,722,1593,1594,1595,1596,92,1598,1,1600,333,1602,1603,1604,1605,1606,1607,1608,1609,1610,1611,4,1166,1614,1615,1616,1617,1618,1619,1620,38,1622,54,1624,3,2,1627,1628,1629,1630,1631,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,1642,1643,1644,1645,1646,56,1648,1649,54,1651,1,1653,1,1655,219,54,56,56,1660,1661,1662,1663,1664,1665,1666,1667,1668,1669,1670,1671,1672,1673,1674,1675,1676,1677,1678,1679,1680,1681,1682,1683,1684,1685,1686,3,56,1689,79,1691,1692,4,92,1695,1696,1697,1698,1699,1700,1701,1702,1703,1704,1705,1706,1707,1708,1709,1710,1711,1712,1713,1714,1,1716,1717,1718,1719,1720,1721,1722,1723,1724,1725,1726,1727,1728,1729,1730,1731,1732,1733,1734,1735,1736,1737,1738,1739,1740,1741,1742,1743,1744,1745,1746,1747,1748,1749,1750,1751,1752,1753,1754,4,1756,1378,1758,1759,1760,1761,1762,54,1764,1765,4,1767,1768,56,1770,1,1772,38,1774,1775,54,1777,92,1779,56,1781,54,1783,92,1785,1,1787,1788,3,1790,1791,217,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,54,1809,690,1811,1812,1813,1814,1815,1816,1817,1818,1819,1820,1821,54,1823,1824,92,1826,1827,1259,1829,1830,1831,1832,2,1834,56,1836,1837,1838,1839,1840,1841,1842,1843,1844,1845,1846,1847,1848,1849,1850,1851,1852,1853,1854,1855,1856,1857,1858,4,1860,92,92,1863,1864,54,776,1,1868,1381,1870,1871,1872,1873,1874,1875,1876,1877,1878,4,1880,1286,1882,1883,1884,1885,1886,1887,1888,1889,1890,1891,38,1893,92,92,1896,4,1898,1899,1535,1901,1902,1903,1904,1905,1906,1907,1908,4,38,1911,1912,1913,1914,1915,1916,1917,1918,1919,1920,1921,1922,1923,1924,1925,1926,1927,1928,1929,1930,1931,1932,1933,1934,56,1936,1937,3,1939,2,1941,1942,54,1944,1945,1946,1947,1948,1949,1950,1951,1952,1953,1954,1955,1956,1957,1958,1959,1960,1961,1962,1963,1964,1831,1966,1967,1968,1969,1970,1971,1972,1973,1974,3,1976,38,1978,56,1980,3,1982,1983,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999,2000,2001,2002,1356,3,2,2006,2,2008,1996,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,38,1671,2026,2027,2028,2029,2030,2031,2032,2033,92,2035,92,2037,4,2039,56,92,4,2043,2,2045,1645,56,2048,2049,2,38,1674,2053,2054,54,2056,1,2058,4,2060,2061,2062,2063,2064,2065,2066,2067,2068,2069,2070,2071,2072,2073,2074,2075,2076,2077,38,2079,2080,56,2082,92,2084,2085,2086,2087,2088,2089,2090,2091,2092,2093,2094,2095,2096,2097,2098,2099,2100,2101,2102,2,2104,2105,2106,2107,2108,2109,2110,2111,2112,2113,2114,2115,2116,2117,2118,2119,2120,2121,2122,2123,2124,887,2126,1398,2128,2129,2130,2131,2132,2133,2134,54,2136,2137,2138,2139,2140,2141,2142,2143,2144,2145,2146,2147,2148,2149,2150,2151,2152,2153,2154,2155,92,2157,1718,2159,2160,2161,92,2163,1846,2165,2166,2167,2168,2169,2170,2171,2172,1,2174,38,2176,56,2178,92,2180,1257,2182,2183,2184,2185,2186,2187,2188,2189,3,2191,376,2193,2194,2195,2196,2197,1,2199,56,2201,92,92,2204,2205,566,2207,2208,2209,2210,2211,92,2213,2214,2215,2216,2217,2218,2219,2220,2221,2222,2223,2224,2225,2226,2227,2228,2229,2230,2231,2232,2233,2234,2235,2236,2237,2238,2239,2240,2241,38,1958,2244,2245,2246,2247,2248,1,2250,2251,2,1567,2254,2255,2256,2257,2258,54,2260,2261,2262,2263,2264,2265,2266,2267,2268,2269,2270,2271,2272,2273,2274,2275,2276,2277,2278,2279,2280,2281,2282,92,1849,2285,2286,2287,2288,2289,2290,2291,2292,2293,2294,2295,92,2297,2298,2299,2300,2301,2302,2303,2304,2305,2306,2307,2308,2309,2310,2311,2312,2313,2314,2315,2316,2317,2318,2319,2320,2321,2322,2323,2324,2325,2326,1,2328,2329,378,2331,2332,2333,2240,2335,2336,1,2338,2117,2340,2341,2342,2343,2344,1102,2346,2347,2348,2349,54,1,2352,2353,2354,2355,2356,2357,2358,2359,2360,2361,2362,2363,2364,2365,2366,2367,2368,2369,2370,2371,2372,2373,2374,2375,2376,2377,2378,2379,4,2381,14,2383,2384,2385,1728,2387,2388,2389,2390,2391,2392,2393,3,2395,2396,2397,2398,2399,2400,4,1,2403,2404,56,2406,1550,2408,2409,2410,2411,2412,2413,2053,2415,2416,2417,2418,2419,2420,2421,2422,2423,2424,2425,2426,2427,38,2429,372,2431,2432,2433,2434,2,2436,83,2438,2439,2440,2441,2442,2443,2444,2445,2446,2447,2448,2449,2450,1,2452,2010,2454,2455,4,2457,2458],"length":2460},"frameTable":{"address":[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"inlineDepth":[0,0,0,0,0,0,1,2,0,1,0,1,0,1,2,0,1,2,0,0,1,0,1,2,0,0,0,1,0,0,0,0,0,0,1,2,0,1,0,0,0,1,0,1,0,1,0,1,2,0,1,0,0,0,0,1,0,1,0,0,0,0,1,2,0,1,0,0,0,1,0,1,0,1,0,1,2,0,1,0,0,0,1,2,0,1,0,1,0,1,0,1,2,0,1,0,1,0,1,2,0,1,0,0,1,2,0,1,0,1,2,0,0,1,2,0,1,0,1,2,0,0,1,0,0,0,0,0,1,0,0,0,1,0,1,2,0,1,0,1,2,0,1,0,0,1,2,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,2,0,1,2,0,1,0,0,1,0,1,0,1,2,0,1,0,1,2,0,0,1,0,1,2,0,1,0,1,0,1,0,1,2,0,1,0,1,2,0,1,0,0,1,2,0,0,0,0,0,0,0,0,0,1,0,1,2,0,0,1,0,1,0,1,0,0,0,1,2,0,0,1,0,0,0,0,0,0,1,2,0,1,0,1,0,1,0,0,1,0,0,1,0,1,2,0,1,0,0,1,2,0,1,0,1,2,0,0,1,0,0,0,0,0,0,1,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,2,0,0,0,0,0,0,0,0,1,0,1,2,0,0,1,2,0,1,2,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,0,1,2,0,0,1,0,0,0,0,1,0,0,1,2,0,1,0,0,0,0,1,0,0,0,1,2,0,0,1,0,1,2,0,1,2,0,1,0,0,0,0,0,0,0,1,2,0,0,1,0,0,0,0,0,0,0,1,2,0,1,0,1,0,1,0,1,2,0,1,0,0,1,2,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,2,0,0,1,0,0,0,0,0,1,2,0,1,0,1,2,0,1,0,1,0,0,0,1,0,0,1,2,0,0,0,1,0,1,2,0,1,0,0,0,0,0,1,2,0,1,2,0,1,0,1,0,1,0,0,1,2,0,1,0,1,0,1,0,1,0,0,1,2,0,0,1,0,0,0,0,1,2,0,1,0,0,0,1,2,0,0,1,0,0,0,1,0,1,2,0,0,1,2,0,1,2,0,0,0,1,0,1,2,0,0,0,0,0,1,0,1,0,0,1,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0,0,0,1,2,0,0,1,0,0,0,1,0,1,2,0,1,2,0,1,2,0,0,1,0,0,0,1,0,1,0,0,1,0,1,0,1,2,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,0,0,0,1,0,0,0,1,2,0,0,1,0,0,0,0,0,0,0,1,0,1,0,0,1,0,0,0,0,1,0,1,0,0,0,1,2,0,0,0,0,0,0,0,0,0,0,1,0,1,2,0,0,0,0,0,0,0,0,1,0,1,0,0,1,0,0,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,0,1,0,1,0,1,0,1,2,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,2,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,2,0,0,1,0,0,1,0,0,1,0,0,0,1,2,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,2,0,0,0,0,0,1,2,0,0,0,0,0,0,0,1,0,0,0,1,2,0,0,1,2,0,0,0,0,0,1,2,0,0,0,0,0,1,0,0,1,0,0,0],"category":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"subcategory":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"func":[35,33,37,1,7,13,19,25,13,25,7,19,7,19,25,26,219,195,220,27,227,228,229,231,199,230,44,45,81,47,86,87,91,7,19,25,7,25,1,13,13,19,13,25,1,19,1,19,25,1,25,37,7,13,13,25,7,19,81,186,43,7,19,25,7,25,37,13,13,19,13,25,37,19,37,19,25,37,25,1,7,7,19,25,7,25,7,25,13,19,13,19,25,13,25,1,19,1,19,25,1,25,7,13,19,25,7,19,7,19,25,13,13,19,25,37,19,20,215,193,216,21,227,230,48,105,109,37,25,1,13,13,19,13,19,25,1,19,1,19,25,1,25,30,28,221,196,222,29,227,199,202,201,76,13,19,0,0,0,0,0,0,0,0,0,0,7,19,7,19,25,13,19,25,37,25,1,13,25,7,19,13,19,25,1,19,1,19,25,13,13,25,7,19,25,7,25,37,19,37,19,37,19,25,13,19,1,19,25,1,25,13,7,19,25,81,80,85,115,234,95,111,112,13,19,37,19,25,1,13,25,7,19,1,19,1,6,4,205,188,206,5,227,109,106,65,51,13,37,19,25,37,25,7,25,7,19,13,13,19,1,1,19,1,19,25,1,25,7,13,19,25,37,19,37,19,25,1,13,25,106,93,92,93,7,13,19,25,80,84,114,233,112,180,166,169,170,164,7,25,92,97,98,150,37,19,25,7,62,110,100,146,142,173,13,25,1,19,25,13,7,19,25,7,19,25,37,25,7,19,186,82,182,183,60,155,156,130,7,7,19,37,19,13,19,24,22,217,194,218,23,227,80,64,176,1,25,13,13,19,25,13,25,170,136,7,7,19,7,13,7,19,25,13,13,25,37,19,25,37,19,25,13,25,91,170,178,177,37,42,40,225,198,226,41,227,64,63,57,174,117,13,7,19,25,13,19,13,25,1,25,37,19,25,37,25,13,7,19,25,13,19,44,45,83,184,185,155,160,157,158,159,133,1,13,19,7,12,10,209,190,210,11,227,62,50,118,52,13,19,25,13,19,1,19,25,37,19,37,25,146,151,7,25,13,13,19,25,177,135,37,19,37,19,25,7,25,48,103,107,7,13,19,25,13,19,25,13,19,7,19,1,19,7,7,19,25,37,19,37,25,37,19,7,25,37,38,223,197,224,39,227,134,147,7,1,19,25,13,25,13,18,16,213,192,214,17,227,44,79,1,25,37,19,25,7,1,19,25,13,19,25,64,52,13,19,13,19,25,79,69,183,67,13,19,37,19,1,7,25,7,7,19,13,25,91,94,121,181,7,25,202,98,143,129,13,14,211,191,212,15,227,97,144,1,19,1,19,25,13,19,25,1,19,25,1,7,25,185,175,1,19,37,19,1,1,25,7,25,1,19,25,37,25,37,25,82,88,116,1,19,60,154,113,81,90,235,232,170,172,1,7,25,1,19,1,19,64,146,141,13,19,95,7,8,207,189,208,9,227,101,1,116,83,89,172,7,19,13,19,136,7,25,0,0,0,37,19,7,19,93,60,37,19,25,64,49,140,125,123,230,46,102,106,13,19,1,19,25,91,99,145,126,124,7,142,7,25,1,19,96,37,25,127,13,68,139,7,1,25,37,19,37,25,201,163,7,201,234,37,19,25,63,66,58,59,74,200,75,71,72,73,237,0,0,0,0,0,0,0,0,0,0,93,7,19,25,37,19,7,19,13,25,37,19,25,178,163,154,1,25,134,155,37,19,166,141,122,60,131,137,153,173,7,19,1,19,25,146,149,132,138,152,112,110,1,19,1,19,170,167,168,171,144,1,19,183,1,43,37,25,78,69,70,32,1,2,203,187,204,3,227,31,22,217,50,7,19,232,148,26,219,195,120,118,37,19,57,54,53,55,56,98,128,37,25,13,96,164,162,34,37,19,25,1,159,167,161,37,19,25,50,119,236,164,36,179,37,19,34,95,37,19,25,170,26,219,195,77,97,9,61,37,19,25,141,162,81,102,1,25,165,37,25,47,104,108],"nativeSymbol":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"innerWindowID":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"implementation":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"line":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"column":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"length":887},"stringArray":["","(anonymous namespace)::A()","(anonymous namespace)::A()::$_0::operator()() const","(anonymous namespace)::A()::$_0::operator()() const::'lambda0'(unsigned int)::operator()(unsigned int) const","(anonymous namespace)::A()::ScopedEvent72::EventFinalizer::~EventFinalizer()","(anonymous namespace)::A()::ScopedEvent72::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int)::operator()(unsigned int) const","(anonymous namespace)::A()::ScopedEvent72::~ScopedEvent72()","(anonymous namespace)::B()","(anonymous namespace)::B()::$_0::operator()() const","(anonymous namespace)::B()::$_0::operator()() const::'lambda0'(unsigned int)::operator()(unsigned int) const","(anonymous namespace)::B()::ScopedEvent60::EventFinalizer::~EventFinalizer()","(anonymous namespace)::B()::ScopedEvent60::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int)::operator()(unsigned int) const","(anonymous namespace)::B()::ScopedEvent60::~ScopedEvent60()","(anonymous namespace)::C()","(anonymous namespace)::C()::$_0::operator()() const","(anonymous namespace)::C()::$_0::operator()() const::'lambda0'(unsigned int)::operator()(unsigned int) const","(anonymous namespace)::C()::ScopedEvent49::EventFinalizer::~EventFinalizer()","(anonymous namespace)::C()::ScopedEvent49::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int)::operator()(unsigned int) const","(anonymous namespace)::C()::ScopedEvent49::~ScopedEvent49()","(anonymous namespace)::D()","(anonymous namespace)::D()::$_0::operator()() const","(anonymous namespace)::D()::$_0::operator()() const::'lambda0'(unsigned int)::operator()(unsigned int) const","(anonymous namespace)::D()::ScopedEvent39::EventFinalizer::~EventFinalizer()","(anonymous namespace)::D()::ScopedEvent39::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int)::operator()(unsigned int) const","(anonymous namespace)::D()::ScopedEvent39::~ScopedEvent39()","(anonymous namespace)::E()","(anonymous namespace)::E()::$_0::operator()() const","(anonymous namespace)::E()::$_0::operator()() const::'lambda0'(unsigned int)::operator()(unsigned int) const","(anonymous namespace)::E()::ScopedEvent30::EventFinalizer::~EventFinalizer()","(anonymous namespace)::E()::ScopedEvent30::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int)::operator()(unsigned int) const","(anonymous namespace)::E()::ScopedEvent30::~ScopedEvent30()","__aarch64_ldadd4_relax","__kernel_clock_gettime","__libc_init","__strcmp_aarch64","_start_main","decltype(std::__ndk1::__unwrap_iter_impl<unsigned char const*, true>::__unwrap(std::declval<unsigned char const*>())) std::__ndk1::__unwrap_iter[abi:v170000]<unsigned char const*, std::__ndk1::__unwrap_iter_impl<unsigned char const*, true>, 0>(unsigned char const*)","main","main::$_0::operator()() const","main::$_0::operator()() const::'lambda0'(unsigned int)::operator()(unsigned int) const","main::ScopedEvent94::EventFinalizer::~EventFinalizer()","main::ScopedEvent94::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int)::operator()(unsigned int) const","main::ScopedEvent94::~ScopedEvent94()","perfetto::Category::GetNameSize(unsigned long) const","perfetto::EventContext perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::WriteTrackEvent<unsigned long, perfetto::StaticString, perfetto::Track, void>(perfetto::DataSource<perfetto::perfetto_track_event::TrackEvent, perfetto::internal::TrackEventDataSourceTraits>::TraceContext&, unsigned long const&, perfetto::StaticString const&, perfetto::protos::pbzero::perfetto_pbzero_enum_TrackEvent::Type, perfetto::Track const&)","perfetto::EventContext perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::WriteTrackEventImpl<unsigned long, perfetto::StaticString, perfetto::Track, void>(perfetto::DataSource<perfetto::perfetto_track_event::TrackEvent, perfetto::internal::TrackEventDataSourceTraits>::TraceContext&, unsigned long const&, perfetto::StaticString const&, perfetto::protos::pbzero::perfetto_pbzero_enum_TrackEvent::Type, perfetto::Track const&, perfetto::TraceTimestamp const&)","perfetto::EventContext::EventContext(perfetto::EventContext&&)","perfetto::EventContext::EventContext(perfetto::TraceWriterBase*, protozero::MessageHandle<perfetto::protos::pbzero::TracePacket>, perfetto::internal::TrackEventIncrementalState*, perfetto::internal::TrackEventTlsState*)","perfetto::EventContext::~EventContext()","perfetto::PatchList::empty() const","perfetto::SharedMemoryABI::Chunk::IncrementPacketCount()","perfetto::SharedMemoryABI::Chunk::is_valid() const","perfetto::SharedMemoryABI::ChunkHeader::Packets std::__ndk1::__cxx_atomic_load[abi:v170000]<perfetto::SharedMemoryABI::ChunkHeader::Packets>(std::__ndk1::__cxx_atomic_base_impl<perfetto::SharedMemoryABI::ChunkHeader::Packets> const*, std::__ndk1::memory_order)","perfetto::SharedMemoryABI::TryAcquireChunk(unsigned long, unsigned long, perfetto::SharedMemoryABI::ChunkState, perfetto::SharedMemoryABI::ChunkHeader const*)","perfetto::SharedMemoryABI::TryAcquireChunkForWriting(unsigned long, unsigned long, perfetto::SharedMemoryABI::ChunkHeader const*)","perfetto::SharedMemoryABI::page_header(unsigned long)","perfetto::SharedMemoryABI::page_start(unsigned long)","perfetto::SharedMemoryArbiterImpl::GetNewChunk(perfetto::SharedMemoryABI::ChunkHeader const&, perfetto::BufferExhaustedPolicy)","perfetto::SharedMemoryArbiterImpl::ReturnCompletedChunk(perfetto::SharedMemoryABI::Chunk, unsigned int, perfetto::PatchList*)","perfetto::SharedMemoryArbiterImpl::UpdateCommitDataRequest(perfetto::SharedMemoryABI::Chunk, unsigned short, unsigned int, perfetto::PatchList*)","perfetto::SmallInternedDataTraits::Index<char const*>::LookUpOrInsert(unsigned long*, char const* const&)","perfetto::StaticString::StaticString(char const*)","perfetto::TraceWriterImpl::FinishTracePacket()","perfetto::TraceWriterImpl::GetNewBuffer()","perfetto::TraceWriterImpl::NewTracePacket()","perfetto::TraceWriterImpl::OnMessageFinalized(protozero::Message*)","perfetto::TraceWriterImpl::ReturnCompletedChunk()","perfetto::TrackEventInternedDataIndex<perfetto::internal::InternedEventCategory, 1ul, char const*, perfetto::SmallInternedDataTraits>::GetOrCreateIndexForField(perfetto::internal::TrackEventIncrementalState*)","perfetto::TrackEventInternedDataIndex<perfetto::internal::InternedEventName, 2ul, char const*, perfetto::SmallInternedDataTraits>::GetOrCreateIndexForField(perfetto::internal::TrackEventIncrementalState*)","perfetto::base::GetBootTimeNs()","perfetto::base::GetTimeInternalNs(int)","perfetto::base::ThreadTaskRunner::PostDelayedTask(std::__ndk1::function<void ()>, unsigned int)","perfetto::base::UnixTaskRunner::PostDelayedTask(std::__ndk1::function<void ()>, unsigned int)","perfetto::base::UnixTaskRunner::WakeUp()","perfetto::internal::(anonymous namespace)::NonReentrantTaskRunner::PostDelayedTask(std::__ndk1::function<void ()>, unsigned int)","perfetto::internal::(anonymous namespace)::NonReentrantTaskRunner::PostDelayedTask(std::__ndk1::function<void ()>, unsigned int)::'lambda'()::operator()() const","perfetto::internal::DataSourceStaticState::TryGetCached(unsigned int, unsigned long)","perfetto::internal::TrackEventCategoryRegistry::GetCategoryState(unsigned long) const","perfetto::internal::TrackEventInternal::GetTimeNs()","perfetto::internal::TrackEventInternal::GetTraceTime()","perfetto::internal::TrackEventInternal::NewTracePacket(perfetto::TraceWriterBase*, perfetto::internal::TrackEventIncrementalState*, perfetto::internal::TrackEventTlsState const&, perfetto::TraceTimestamp, unsigned int)","perfetto::internal::TrackEventInternal::WriteEvent(perfetto::TraceWriterBase*, perfetto::internal::TrackEventIncrementalState*, perfetto::internal::TrackEventTlsState&, perfetto::Category const*, perfetto::protos::pbzero::perfetto_pbzero_enum_TrackEvent::Type, perfetto::TraceTimestamp const&, bool)","perfetto::internal::TrackEventInternal::WriteEvent(perfetto::TraceWriterBase*, perfetto::internal::TrackEventIncrementalState*, perfetto::internal::TrackEventTlsState&, perfetto::Category const*, perfetto::protos::pbzero::perfetto_pbzero_enum_TrackEvent::Type, perfetto::TraceTimestamp const&, bool)::$_0::operator()(char const*, unsigned long) const","perfetto::internal::TrackEventInternal::WriteEventName(perfetto::StaticString, perfetto::EventContext&, perfetto::internal::TrackEventTlsState const&)","perfetto::protos::pbzero::TracePacket::set_sequence_flags(unsigned int)","perfetto::protos::pbzero::TracePacket::set_timestamp(unsigned long)","perfetto::protos::pbzero::TrackEvent* perfetto::protos::pbzero::TracePacket::set_track_event<perfetto::protos::pbzero::TrackEvent>()","perfetto::protos::pbzero::TrackEvent* protozero::Message::BeginNestedMessage<perfetto::protos::pbzero::TrackEvent>(unsigned int)","perfetto::protos::pbzero::TrackEvent::add_category_iids(unsigned long)","perfetto::protos::pbzero::TrackEvent::set_name_iid(unsigned long)","perfetto::protos::pbzero::TrackEvent::set_type(perfetto::protos::pbzero::perfetto_pbzero_enum_TrackEvent::Type)","protozero::Message::BeginNestedMessageInternal(unsigned int)","protozero::Message::EndNestedMessage()","protozero::Message::Finalize()","protozero::Message::Reset(protozero::ScatteredStreamWriter*, protozero::MessageArena*)","protozero::Message::WriteToStream(unsigned char const*, unsigned char const*)","protozero::Message::is_finalized() const","protozero::MessageArena::DeleteLastMessage(protozero::Message*)","protozero::MessageArena::DeleteLastMessageInternal()","protozero::MessageArena::NewMessage()","protozero::MessageArena::Reset()","protozero::MessageHandle<perfetto::protos::pbzero::TracePacket>::MessageHandle(perfetto::protos::pbzero::TracePacket*)","protozero::MessageHandle<perfetto::protos::pbzero::TracePacket>::MessageHandle(protozero::MessageHandle<perfetto::protos::pbzero::TracePacket>&&)","protozero::MessageHandle<perfetto::protos::pbzero::TracePacket>::operator bool() const","protozero::MessageHandle<perfetto::protos::pbzero::TracePacket>::operator->() const","protozero::MessageHandle<perfetto::protos::pbzero::TracePacket>::~MessageHandle()","protozero::MessageHandleBase::FinalizeMessage()","protozero::MessageHandleBase::operator bool() const","protozero::MessageHandleBase::operator->() const","protozero::MessageHandleBase::~MessageHandleBase()","protozero::RootMessage<perfetto::protos::pbzero::TracePacket>::Reset(protozero::ScatteredStreamWriter*)","protozero::ScatteredStreamWriter::WriteBytes(unsigned char const*, unsigned long)","protozero::ScatteredStreamWriter::WriteBytesUnsafe(unsigned char const*, unsigned long)","protozero::ScatteredStreamWriter::bytes_available() const","protozero::internal::FieldWriter<(protozero::proto_utils::ProtoSchemaType)13>::Append(protozero::Message&, unsigned int, unsigned int)","protozero::internal::FieldWriter<(protozero::proto_utils::ProtoSchemaType)4>::Append(protozero::Message&, unsigned int, unsigned long)","protozero::proto_utils::MakeTagVarInt(unsigned int)","pthread_mutex_lock","std::__ndk1::__atomic_base<perfetto::SharedMemoryABI::ChunkHeader::Packets, false>::load[abi:v170000](std::__ndk1::memory_order) const","std::__ndk1::__atomic_base<perfetto::SharedMemoryABI::ChunkHeader::Packets, false>::store[abi:v170000](perfetto::SharedMemoryABI::ChunkHeader::Packets, std::__ndk1::memory_order)","std::__ndk1::__atomic_base<unsigned char, false>::load[abi:v170000](std::__ndk1::memory_order) const","std::__ndk1::__atomic_base<unsigned int, true>::fetch_add[abi:v170000](unsigned int, std::__ndk1::memory_order)","std::__ndk1::__compressed_pair<std::__ndk1::__forward_begin_node<std::__ndk1::__forward_list_node<protozero::MessageArena::Block, void*>*>, std::__ndk1::allocator<std::__ndk1::__forward_list_node<protozero::MessageArena::Block, void*> > >::first[abi:v170000]()","std::__ndk1::__compressed_pair_elem<std::__ndk1::__forward_begin_node<std::__ndk1::__forward_list_node<perfetto::Patch, void*>*>, 0, false>::__get[abi:v170000]() const","std::__ndk1::__compressed_pair_elem<std::__ndk1::__forward_begin_node<std::__ndk1::__forward_list_node<protozero::MessageArena::Block, void*>*>, 0, false>::__get[abi:v170000]()","std::__ndk1::__forward_list_base<perfetto::Patch, std::__ndk1::allocator<perfetto::Patch> >::__before_begin[abi:v170000]() const","std::__ndk1::__forward_list_base<protozero::MessageArena::Block, std::__ndk1::allocator<protozero::MessageArena::Block> >::__before_begin[abi:v170000]()","std::__ndk1::__forward_list_const_iterator<std::__ndk1::__forward_list_node<protozero::MessageArena::Block, void*>*>::__forward_list_const_iterator[abi:v170000](std::__ndk1::__forward_list_node<protozero::MessageArena::Block, void*>*)","std::__ndk1::__forward_list_const_iterator<std::__ndk1::__forward_list_node<protozero::MessageArena::Block, void*>*>::__forward_list_const_iterator[abi:v170000](std::nullptr_t)","std::__ndk1::__forward_node_traits<std::__ndk1::__forward_list_node<protozero::MessageArena::Block, void*>*>::__as_iter_node[abi:v170000](std::__ndk1::__forward_list_node<protozero::MessageArena::Block, void*>*)","std::__ndk1::__map_iterator<std::__ndk1::__tree_iterator<std::__ndk1::__value_type<char const*, unsigned long>, std::__ndk1::__tree_node<std::__ndk1::__value_type<char const*, unsigned long>, void*>*, long> >::__map_iterator[abi:v170000](std::__ndk1::__tree_iterator<std::__ndk1::__value_type<char const*, unsigned long>, std::__ndk1::__tree_node<std::__ndk1::__value_type<char const*, unsigned long>, void*>*, long>)","std::__ndk1::__map_iterator<std::__ndk1::__tree_iterator<std::__ndk1::__value_type<char const*, unsigned long>, std::__ndk1::__tree_node<std::__ndk1::__value_type<char const*, unsigned long>, void*>*, long> >::operator->[abi:v170000]() const","std::__ndk1::__map_value_compare<char const*, std::__ndk1::__value_type<char const*, unsigned long>, std::__ndk1::less<char const*>, true>::operator()[abi:v170000](char const* const&, std::__ndk1::__value_type<char const*, unsigned long> const&) const","std::__ndk1::__tree<std::__ndk1::__value_type<char const*, unsigned long>, std::__ndk1::__map_value_compare<char const*, std::__ndk1::__value_type<char const*, unsigned long>, std::__ndk1::less<char const*>, true>, std::__ndk1::allocator<std::__ndk1::__value_type<char const*, unsigned long> > >::value_comp[abi:v170000]()","std::__ndk1::__tree_node_base<void*>*& std::__ndk1::__tree<std::__ndk1::__value_type<char const*, unsigned long>, std::__ndk1::__map_value_compare<char const*, std::__ndk1::__value_type<char const*, unsigned long>, std::__ndk1::less<char const*>, true>, std::__ndk1::allocator<std::__ndk1::__value_type<char const*, unsigned long> > >::__find_equal<char const*>(std::__ndk1::__tree_end_node<std::__ndk1::__tree_node_base<void*>*>*&, char const* const&)","std::__ndk1::__unwrap_iter_impl<unsigned char const*, true>::__rewrap[abi:v170000](unsigned char const*, unsigned char const*)","std::__ndk1::__unwrap_iter_impl<unsigned char*, true>::__rewrap[abi:v170000](unsigned char*, unsigned char*)","std::__ndk1::__value_type<char const*, unsigned long>::__get_value[abi:v170000]()","std::__ndk1::__value_type<char const*, unsigned long>::__get_value[abi:v170000]() const","std::__ndk1::array<std::__ndk1::pair<unsigned long, std::__ndk1::unique_ptr<perfetto::internal::BaseTrackEventInternedDataIndex, std::__ndk1::default_delete<perfetto::internal::BaseTrackEventInternedDataIndex> > >, 32ul>::data[abi:v170000]()","std::__ndk1::forward_list<perfetto::Patch, std::__ndk1::allocator<perfetto::Patch> >::empty[abi:v170000]() const","std::__ndk1::forward_list<protozero::MessageArena::Block, std::__ndk1::allocator<protozero::MessageArena::Block> >::before_begin[abi:v170000]()","std::__ndk1::forward_list<protozero::MessageArena::Block, std::__ndk1::allocator<protozero::MessageArena::Block> >::begin[abi:v170000]()","std::__ndk1::forward_list<protozero::MessageArena::Block, std::__ndk1::allocator<protozero::MessageArena::Block> >::cbegin[abi:v170000]() const","std::__ndk1::forward_list<protozero::MessageArena::Block, std::__ndk1::allocator<protozero::MessageArena::Block> >::empty[abi:v170000]() const","std::__ndk1::forward_list<protozero::MessageArena::Block, std::__ndk1::allocator<protozero::MessageArena::Block> >::front[abi:v170000]()","std::__ndk1::forward_list<protozero::MessageArena::Block, std::__ndk1::allocator<protozero::MessageArena::Block> >::resize(unsigned long)","std::__ndk1::less<char const*>::operator()[abi:v170000](char const* const&, char const* const&) const","std::__ndk1::make_unsigned<std::__ndk1::conditional<std::is_unsigned<unsigned int>::value, unsigned int, long>::type>::type protozero::proto_utils::ExtendValueForVarIntSerialization<unsigned int>(unsigned int)","std::__ndk1::operator!=[abi:v170000](std::__ndk1::__forward_list_iterator<std::__ndk1::__forward_list_node<protozero::MessageArena::Block, void*>*> const&, std::__ndk1::__forward_list_iterator<std::__ndk1::__forward_list_node<protozero::MessageArena::Block, void*>*> const&)","std::__ndk1::operator==[abi:v170000](std::__ndk1::__forward_list_const_iterator<std::__ndk1::__forward_list_node<protozero::MessageArena::Block, void*>*> const&, std::__ndk1::__forward_list_const_iterator<std::__ndk1::__forward_list_node<protozero::MessageArena::Block, void*>*> const&)","std::__ndk1::operator==[abi:v170000](std::__ndk1::__forward_list_iterator<std::__ndk1::__forward_list_node<protozero::MessageArena::Block, void*>*> const&, std::__ndk1::__forward_list_iterator<std::__ndk1::__forward_list_node<protozero::MessageArena::Block, void*>*> const&)","std::__ndk1::pair<char const* const, unsigned long> const* std::__ndk1::__launder[abi:v170000]<std::__ndk1::pair<char const* const, unsigned long> const>(std::__ndk1::pair<char const* const, unsigned long> const*)","std::__ndk1::pair<char const* const, unsigned long>* std::__ndk1::__launder[abi:v170000]<std::__ndk1::pair<char const* const, unsigned long> >(std::__ndk1::pair<char const* const, unsigned long>*)","std::__ndk1::pair<char const*, unsigned long>::pair[abi:v170000]<char const* const&, unsigned long&, (void*)0>(char const* const&, unsigned long&)","std::__ndk1::pair<std::__ndk1::__map_iterator<std::__ndk1::__tree_iterator<std::__ndk1::__value_type<char const*, unsigned long>, std::__ndk1::__tree_node<std::__ndk1::__value_type<char const*, unsigned long>, void*>*, long> >, bool> std::__ndk1::map<char const*, unsigned long, std::__ndk1::less<char const*>, std::__ndk1::allocator<std::__ndk1::pair<char const* const, unsigned long> > >::insert[abi:v170000]<std::__ndk1::pair<char const*, unsigned long>, void>(std::__ndk1::pair<char const*, unsigned long>&&)","std::__ndk1::pair<std::__ndk1::__map_iterator<std::__ndk1::__tree_iterator<std::__ndk1::__value_type<char const*, unsigned long>, std::__ndk1::__tree_node<std::__ndk1::__value_type<char const*, unsigned long>, void*>*, long> >, bool>::pair[abi:v170000]<std::__ndk1::__tree_iterator<std::__ndk1::__value_type<char const*, unsigned long>, std::__ndk1::__tree_node<std::__ndk1::__value_type<char const*, unsigned long>, void*>*, long>, bool, (void*)0>(std::__ndk1::pair<std::__ndk1::__tree_iterator<std::__ndk1::__value_type<char const*, unsigned long>, std::__ndk1::__tree_node<std::__ndk1::__value_type<char const*, unsigned long>, void*>*, long>, bool>&&)","std::__ndk1::pair<std::__ndk1::__tree_iterator<std::__ndk1::__value_type<char const*, unsigned long>, std::__ndk1::__tree_node<std::__ndk1::__value_type<char const*, unsigned long>, void*>*, long>, bool> std::__ndk1::__tree<std::__ndk1::__value_type<char const*, unsigned long>, std::__ndk1::__map_value_compare<char const*, std::__ndk1::__value_type<char const*, unsigned long>, std::__ndk1::less<char const*>, true>, std::__ndk1::allocator<std::__ndk1::__value_type<char const*, unsigned long> > >::__emplace_unique[abi:v170000]<std::__ndk1::pair<char const*, unsigned long> >(std::__ndk1::pair<char const*, unsigned long>&&)","std::__ndk1::pair<std::__ndk1::__tree_iterator<std::__ndk1::__value_type<char const*, unsigned long>, std::__ndk1::__tree_node<std::__ndk1::__value_type<char const*, unsigned long>, void*>*, long>, bool> std::__ndk1::__tree<std::__ndk1::__value_type<char const*, unsigned long>, std::__ndk1::__map_value_compare<char const*, std::__ndk1::__value_type<char const*, unsigned long>, std::__ndk1::less<char const*>, true>, std::__ndk1::allocator<std::__ndk1::__value_type<char const*, unsigned long> > >::__emplace_unique_extract_key[abi:v170000]<std::__ndk1::pair<char const*, unsigned long> >(std::__ndk1::pair<char const*, unsigned long>&&, std::__ndk1::__extract_key_first_tag)","std::__ndk1::pair<std::__ndk1::__tree_iterator<std::__ndk1::__value_type<char const*, unsigned long>, std::__ndk1::__tree_node<std::__ndk1::__value_type<char const*, unsigned long>, void*>*, long>, bool> std::__ndk1::__tree<std::__ndk1::__value_type<char const*, unsigned long>, std::__ndk1::__map_value_compare<char const*, std::__ndk1::__value_type<char const*, unsigned long>, std::__ndk1::less<char const*>, true>, std::__ndk1::allocator<std::__ndk1::__value_type<char const*, unsigned long> > >::__emplace_unique_key_args<char const*, std::__ndk1::pair<char const*, unsigned long> >(char const* const&, std::__ndk1::pair<char const*, unsigned long>&&)","std::__ndk1::pair<std::__ndk1::__tree_iterator<std::__ndk1::__value_type<char const*, unsigned long>, std::__ndk1::__tree_node<std::__ndk1::__value_type<char const*, unsigned long>, void*>*, long>, bool> std::__ndk1::__tree<std::__ndk1::__value_type<char const*, unsigned long>, std::__ndk1::__map_value_compare<char const*, std::__ndk1::__value_type<char const*, unsigned long>, std::__ndk1::less<char const*>, true>, std::__ndk1::allocator<std::__ndk1::__value_type<char const*, unsigned long> > >::__insert_unique[abi:v170000]<std::__ndk1::pair<char const*, unsigned long>, void>(std::__ndk1::pair<char const*, unsigned long>&&)","std::__ndk1::pair<std::__ndk1::__unwrap_ref_decay<unsigned char const*&>::type, std::__ndk1::__unwrap_ref_decay<unsigned char*>::type> std::__ndk1::make_pair[abi:v170000]<unsigned char const*&, unsigned char*>(unsigned char const*&, unsigned char*&&)","std::__ndk1::pair<std::__ndk1::__unwrap_ref_decay<unsigned char const*>::type, std::__ndk1::__unwrap_ref_decay<unsigned char const*>::type> std::__ndk1::make_pair[abi:v170000]<unsigned char const*, unsigned char const*>(unsigned char const*&&, unsigned char const*&&)","std::__ndk1::pair<std::__ndk1::__unwrap_ref_decay<unsigned char const*>::type, std::__ndk1::__unwrap_ref_decay<unsigned char*>::type> std::__ndk1::make_pair[abi:v170000]<unsigned char const*, unsigned char*>(unsigned char const*&&, unsigned char*&&)","std::__ndk1::pair<unsigned char const*, unsigned char const*> std::__ndk1::__unwrap_range[abi:v170000]<unsigned char const*, unsigned char const*>(unsigned char const*, unsigned char const*)","std::__ndk1::pair<unsigned char const*, unsigned char const*>::pair[abi:v170000]<unsigned char const*, unsigned char const*, (void*)0>(unsigned char const*&&, unsigned char const*&&)","std::__ndk1::pair<unsigned char const*, unsigned char*> std::__ndk1::__copy[abi:v170000]<std::__ndk1::_ClassicAlgPolicy, unsigned char const*, unsigned char const*, unsigned char*>(unsigned char const*, unsigned char const*, unsigned char*)","std::__ndk1::pair<unsigned char const*, unsigned char*> std::__ndk1::__copy_trivial::operator()[abi:v170000]<unsigned char const, unsigned char, 0>(unsigned char const*, unsigned char const*, unsigned char*) const","std::__ndk1::pair<unsigned char const*, unsigned char*> std::__ndk1::__copy_trivial_impl[abi:v170000]<unsigned char const, unsigned char>(unsigned char const*, unsigned char const*, unsigned char*)","std::__ndk1::pair<unsigned char const*, unsigned char*> std::__ndk1::__dispatch_copy_or_move[abi:v170000]<std::__ndk1::_ClassicAlgPolicy, std::__ndk1::__copy_loop<std::__ndk1::_ClassicAlgPolicy>, std::__ndk1::__copy_trivial, unsigned char const*, unsigned char const*, unsigned char*>(unsigned char const*, unsigned char const*, unsigned char*)","std::__ndk1::pair<unsigned char const*, unsigned char*> std::__ndk1::__unwrap_and_dispatch[abi:v170000]<std::__ndk1::__overload<std::__ndk1::__copy_loop<std::__ndk1::_ClassicAlgPolicy>, std::__ndk1::__copy_trivial>, unsigned char const*, unsigned char const*, unsigned char*, 0>(unsigned char const*, unsigned char const*, unsigned char*)","std::__ndk1::pair<unsigned char const*, unsigned char*>::pair[abi:v170000]<unsigned char const*&, unsigned char*, (void*)0>(unsigned char const*&, unsigned char*&&)","std::__ndk1::pair<unsigned char const*, unsigned char*>::pair[abi:v170000]<unsigned char const*, unsigned char*, (void*)0>(unsigned char const*&&, unsigned char*&&)","std::__ndk1::pointer_traits<std::__ndk1::__forward_begin_node<std::__ndk1::__forward_list_node<protozero::MessageArena::Block, void*>*>*>::pointer_to[abi:v170000](std::__ndk1::__forward_begin_node<std::__ndk1::__forward_list_node<protozero::MessageArena::Block, void*>*>&)","std::__ndk1::unique_lock<std::__ndk1::mutex>::unique_lock[abi:v170000](std::__ndk1::mutex&)","std::__ndk1::unique_ptr<perfetto::internal::BaseTrackEventInternedDataIndex, std::__ndk1::default_delete<perfetto::internal::BaseTrackEventInternedDataIndex> >::get[abi:v170000]() const","std::__ndk1::unique_ptr<protozero::RootMessage<perfetto::protos::pbzero::TracePacket>, std::__ndk1::default_delete<protozero::RootMessage<perfetto::protos::pbzero::TracePacket> > >::get[abi:v170000]() const","unsigned char const* std::__ndk1::__rewrap_iter[abi:v170000]<unsigned char const*, unsigned char const*, std::__ndk1::__unwrap_iter_impl<unsigned char const*, true> >(unsigned char const*, unsigned char const*)","unsigned char const* std::__ndk1::__rewrap_range[abi:v170000]<unsigned char const*, unsigned char const*>(unsigned char const*, unsigned char const*)","unsigned char const* std::__ndk1::__to_address[abi:v170000]<unsigned char const>(unsigned char const*)","unsigned char* std::__ndk1::copy[abi:v170000]<unsigned char const*, unsigned char*>(unsigned char const*, unsigned char const*, unsigned char*)","unsigned int std::__ndk1::__cxx_atomic_fetch_add[abi:v170000]<unsigned int>(std::__ndk1::__cxx_atomic_base_impl<unsigned int>*, unsigned int, std::__ndk1::memory_order)","unsigned long perfetto::TrackEventInternedDataIndex<perfetto::internal::InternedEventCategory, 1ul, char const*, perfetto::SmallInternedDataTraits>::Get<unsigned long&>(perfetto::EventContext*, char const* const&, unsigned long&)","unsigned long perfetto::TrackEventInternedDataIndex<perfetto::internal::InternedEventCategory, 1ul, char const*, perfetto::SmallInternedDataTraits>::Get<unsigned long&>(perfetto::internal::TrackEventIncrementalState*, char const* const&, unsigned long&)","unsigned long perfetto::TrackEventInternedDataIndex<perfetto::internal::InternedEventName, 2ul, char const*, perfetto::SmallInternedDataTraits>::Get<>(perfetto::EventContext*, char const* const&)","unsigned long perfetto::TrackEventInternedDataIndex<perfetto::internal::InternedEventName, 2ul, char const*, perfetto::SmallInternedDataTraits>::Get<>(perfetto::internal::TrackEventIncrementalState*, char const* const&)","void perfetto::Category::ForEachGroupMember<perfetto::internal::TrackEventInternal::WriteEvent(perfetto::TraceWriterBase*, perfetto::internal::TrackEventIncrementalState*, perfetto::internal::TrackEventTlsState&, perfetto::Category const*, perfetto::protos::pbzero::perfetto_pbzero_enum_TrackEvent::Type, perfetto::TraceTimestamp const&, bool)::$_0>(perfetto::internal::TrackEventInternal::WriteEvent(perfetto::TraceWriterBase*, perfetto::internal::TrackEventIncrementalState*, perfetto::internal::TrackEventTlsState&, perfetto::Category const*, perfetto::protos::pbzero::perfetto_pbzero_enum_TrackEvent::Type, perfetto::TraceTimestamp const&, bool)::$_0) const","void perfetto::DataSource<perfetto::perfetto_track_event::TrackEvent, perfetto::internal::TrackEventDataSourceTraits>::CallIfEnabled<perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CategoryTracePointTraits, void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::A()::$_0::operator()() const::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::A()::$_0::operator()() const::'lambda0'(unsigned int))::'lambda'(unsigned int)>(void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::A()::$_0::operator()() const::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::A()::$_0::operator()() const::'lambda0'(unsigned int))::'lambda'(unsigned int), (anonymous namespace)::A()::$_0::operator()() const::'lambda0'(unsigned int)::TracePointData)","void perfetto::DataSource<perfetto::perfetto_track_event::TrackEvent, perfetto::internal::TrackEventDataSourceTraits>::CallIfEnabled<perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CategoryTracePointTraits, void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::A()::ScopedEvent72::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::A()::ScopedEvent72::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int))::'lambda'(unsigned int)>(void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::A()::ScopedEvent72::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::A()::ScopedEvent72::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int))::'lambda'(unsigned int), (anonymous namespace)::A()::ScopedEvent72::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int)::TracePointData)","void perfetto::DataSource<perfetto::perfetto_track_event::TrackEvent, perfetto::internal::TrackEventDataSourceTraits>::CallIfEnabled<perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CategoryTracePointTraits, void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::B()::$_0::operator()() const::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::B()::$_0::operator()() const::'lambda0'(unsigned int))::'lambda'(unsigned int)>(void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::B()::$_0::operator()() const::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::B()::$_0::operator()() const::'lambda0'(unsigned int))::'lambda'(unsigned int), (anonymous namespace)::B()::$_0::operator()() const::'lambda0'(unsigned int)::TracePointData)","void perfetto::DataSource<perfetto::perfetto_track_event::TrackEvent, perfetto::internal::TrackEventDataSourceTraits>::CallIfEnabled<perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CategoryTracePointTraits, void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::B()::ScopedEvent60::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::B()::ScopedEvent60::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int))::'lambda'(unsigned int)>(void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::B()::ScopedEvent60::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::B()::ScopedEvent60::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int))::'lambda'(unsigned int), (anonymous namespace)::B()::ScopedEvent60::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int)::TracePointData)","void perfetto::DataSource<perfetto::perfetto_track_event::TrackEvent, perfetto::internal::TrackEventDataSourceTraits>::CallIfEnabled<perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CategoryTracePointTraits, void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::C()::$_0::operator()() const::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::C()::$_0::operator()() const::'lambda0'(unsigned int))::'lambda'(unsigned int)>(void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::C()::$_0::operator()() const::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::C()::$_0::operator()() const::'lambda0'(unsigned int))::'lambda'(unsigned int), (anonymous namespace)::C()::$_0::operator()() const::'lambda0'(unsigned int)::TracePointData)","void perfetto::DataSource<perfetto::perfetto_track_event::TrackEvent, perfetto::internal::TrackEventDataSourceTraits>::CallIfEnabled<perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CategoryTracePointTraits, void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::C()::ScopedEvent49::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::C()::ScopedEvent49::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int))::'lambda'(unsigned int)>(void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::C()::ScopedEvent49::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::C()::ScopedEvent49::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int))::'lambda'(unsigned int), (anonymous namespace)::C()::ScopedEvent49::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int)::TracePointData)","void perfetto::DataSource<perfetto::perfetto_track_event::TrackEvent, perfetto::internal::TrackEventDataSourceTraits>::CallIfEnabled<perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CategoryTracePointTraits, void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::D()::$_0::operator()() const::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::D()::$_0::operator()() const::'lambda0'(unsigned int))::'lambda'(unsigned int)>(void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::D()::$_0::operator()() const::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::D()::$_0::operator()() const::'lambda0'(unsigned int))::'lambda'(unsigned int), (anonymous namespace)::D()::$_0::operator()() const::'lambda0'(unsigned int)::TracePointData)","void perfetto::DataSource<perfetto::perfetto_track_event::TrackEvent, perfetto::internal::TrackEventDataSourceTraits>::CallIfEnabled<perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CategoryTracePointTraits, void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::D()::ScopedEvent39::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::D()::ScopedEvent39::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int))::'lambda'(unsigned int)>(void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::D()::ScopedEvent39::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::D()::ScopedEvent39::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int))::'lambda'(unsigned int), (anonymous namespace)::D()::ScopedEvent39::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int)::TracePointData)","void perfetto::DataSource<perfetto::perfetto_track_event::TrackEvent, perfetto::internal::TrackEventDataSourceTraits>::CallIfEnabled<perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CategoryTracePointTraits, void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::E()::$_0::operator()() const::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::E()::$_0::operator()() const::'lambda0'(unsigned int))::'lambda'(unsigned int)>(void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::E()::$_0::operator()() const::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::E()::$_0::operator()() const::'lambda0'(unsigned int))::'lambda'(unsigned int), (anonymous namespace)::E()::$_0::operator()() const::'lambda0'(unsigned int)::TracePointData)","void perfetto::DataSource<perfetto::perfetto_track_event::TrackEvent, perfetto::internal::TrackEventDataSourceTraits>::CallIfEnabled<perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CategoryTracePointTraits, void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::E()::ScopedEvent30::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::E()::ScopedEvent30::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int))::'lambda'(unsigned int)>(void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::E()::ScopedEvent30::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::E()::ScopedEvent30::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int))::'lambda'(unsigned int), (anonymous namespace)::E()::ScopedEvent30::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int)::TracePointData)","void perfetto::DataSource<perfetto::perfetto_track_event::TrackEvent, perfetto::internal::TrackEventDataSourceTraits>::CallIfEnabled<perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CategoryTracePointTraits, void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<main::$_0::operator()() const::'lambda0'(unsigned int)>(unsigned long, main::$_0::operator()() const::'lambda0'(unsigned int))::'lambda'(unsigned int)>(void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<main::$_0::operator()() const::'lambda0'(unsigned int)>(unsigned long, main::$_0::operator()() const::'lambda0'(unsigned int))::'lambda'(unsigned int), main::$_0::operator()() const::'lambda0'(unsigned int)::TracePointData)","void perfetto::DataSource<perfetto::perfetto_track_event::TrackEvent, perfetto::internal::TrackEventDataSourceTraits>::CallIfEnabled<perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CategoryTracePointTraits, void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<main::ScopedEvent94::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int)>(unsigned long, main::ScopedEvent94::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int))::'lambda'(unsigned int)>(void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<main::ScopedEvent94::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int)>(unsigned long, main::ScopedEvent94::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int))::'lambda'(unsigned int), main::ScopedEvent94::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int)::TracePointData)","void perfetto::DataSource<perfetto::perfetto_track_event::TrackEvent, perfetto::internal::TrackEventDataSourceTraits>::TraceWithInstances<perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CategoryTracePointTraits, void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::TraceForCategoryImplNoTimestamp<unsigned long, perfetto::StaticString, perfetto::Track, void>(unsigned int, unsigned long const&, perfetto::StaticString const&, perfetto::protos::pbzero::perfetto_pbzero_enum_TrackEvent::Type, perfetto::Track const&)::'lambda'(perfetto::DataSource<perfetto::perfetto_track_event::TrackEvent, perfetto::internal::TrackEventDataSourceTraits>::TraceContext)>(unsigned int, perfetto::StaticString, unsigned long::TracePointData)","void perfetto::internal::(anonymous namespace)::NonReentrantTaskRunner::CallWithGuard<perfetto::internal::(anonymous namespace)::NonReentrantTaskRunner::PostDelayedTask(std::__ndk1::function<void ()>, unsigned int)::'lambda'()>(perfetto::internal::(anonymous namespace)::NonReentrantTaskRunner::PostDelayedTask(std::__ndk1::function<void ()>, unsigned int)::'lambda'()) const","void perfetto::internal::DataSourceType::FirstActiveInstance<perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CategoryTracePointTraits>(perfetto::internal::DataSourceType::InstancesIterator*, perfetto::internal::DataSourceThreadLocalState*, perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CategoryTracePointTraits::TracePointData)","void perfetto::internal::DataSourceType::NextIteration<perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CategoryTracePointTraits>(perfetto::internal::DataSourceType::InstancesIterator*, perfetto::internal::DataSourceThreadLocalState*, perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CategoryTracePointTraits::TracePointData)","void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::A()::$_0::operator()() const::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::A()::$_0::operator()() const::'lambda0'(unsigned int))","void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::A()::$_0::operator()() const::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::A()::$_0::operator()() const::'lambda0'(unsigned int))::'lambda'(unsigned int)::operator()(unsigned int) const","void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::A()::ScopedEvent72::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::A()::ScopedEvent72::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int))","void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::A()::ScopedEvent72::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::A()::ScopedEvent72::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int))::'lambda'(unsigned int)::operator()(unsigned int) const","void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::B()::$_0::operator()() const::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::B()::$_0::operator()() const::'lambda0'(unsigned int))","void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::B()::$_0::operator()() const::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::B()::$_0::operator()() const::'lambda0'(unsigned int))::'lambda'(unsigned int)::operator()(unsigned int) const","void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::B()::ScopedEvent60::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::B()::ScopedEvent60::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int))","void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::B()::ScopedEvent60::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::B()::ScopedEvent60::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int))::'lambda'(unsigned int)::operator()(unsigned int) const","void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::C()::$_0::operator()() const::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::C()::$_0::operator()() const::'lambda0'(unsigned int))","void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::C()::$_0::operator()() const::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::C()::$_0::operator()() const::'lambda0'(unsigned int))::'lambda'(unsigned int)::operator()(unsigned int) const","void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::C()::ScopedEvent49::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::C()::ScopedEvent49::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int))","void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::C()::ScopedEvent49::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::C()::ScopedEvent49::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int))::'lambda'(unsigned int)::operator()(unsigned int) const","void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::D()::$_0::operator()() const::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::D()::$_0::operator()() const::'lambda0'(unsigned int))","void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::D()::$_0::operator()() const::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::D()::$_0::operator()() const::'lambda0'(unsigned int))::'lambda'(unsigned int)::operator()(unsigned int) const","void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::D()::ScopedEvent39::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::D()::ScopedEvent39::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int))","void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::D()::ScopedEvent39::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::D()::ScopedEvent39::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int))::'lambda'(unsigned int)::operator()(unsigned int) const","void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::E()::$_0::operator()() const::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::E()::$_0::operator()() const::'lambda0'(unsigned int))","void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::E()::$_0::operator()() const::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::E()::$_0::operator()() const::'lambda0'(unsigned int))::'lambda'(unsigned int)::operator()(unsigned int) const","void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::E()::ScopedEvent30::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::E()::ScopedEvent30::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int))","void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<(anonymous namespace)::E()::ScopedEvent30::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int)>(unsigned long, (anonymous namespace)::E()::ScopedEvent30::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int))::'lambda'(unsigned int)::operator()(unsigned int) const","void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<main::$_0::operator()() const::'lambda0'(unsigned int)>(unsigned long, main::$_0::operator()() const::'lambda0'(unsigned int))","void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<main::$_0::operator()() const::'lambda0'(unsigned int)>(unsigned long, main::$_0::operator()() const::'lambda0'(unsigned int))::'lambda'(unsigned int)::operator()(unsigned int) const","void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<main::ScopedEvent94::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int)>(unsigned long, main::ScopedEvent94::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int))","void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::CallIfCategoryEnabled<main::ScopedEvent94::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int)>(unsigned long, main::ScopedEvent94::EventFinalizer::~EventFinalizer()::'lambda0'(unsigned int))::'lambda'(unsigned int)::operator()(unsigned int) const","void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::TraceForCategory<unsigned long, perfetto::StaticString>(unsigned int, unsigned long const&, perfetto::StaticString const&, perfetto::protos::pbzero::perfetto_pbzero_enum_TrackEvent::Type)","void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::TraceForCategoryBody<unsigned long, perfetto::StaticString>(unsigned int, unsigned long const&, perfetto::StaticString const&, perfetto::protos::pbzero::perfetto_pbzero_enum_TrackEvent::Type)","void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::TraceForCategoryImplNoTimestamp<unsigned long, perfetto::StaticString, perfetto::Track, void>(unsigned int, unsigned long const&, perfetto::StaticString const&, perfetto::protos::pbzero::perfetto_pbzero_enum_TrackEvent::Type, perfetto::Track const&)","void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::TraceForCategoryImplNoTimestamp<unsigned long, perfetto::StaticString, perfetto::Track, void>(unsigned int, unsigned long const&, perfetto::StaticString const&, perfetto::protos::pbzero::perfetto_pbzero_enum_TrackEvent::Type, perfetto::Track const&)::'lambda'(perfetto::DataSource<perfetto::perfetto_track_event::TrackEvent, perfetto::internal::TrackEventDataSourceTraits>::TraceContext)::operator()(perfetto::DataSource<perfetto::perfetto_track_event::TrackEvent, perfetto::internal::TrackEventDataSourceTraits>::TraceContext) const","void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::TraceWithInstances<unsigned long, void perfetto::internal::TrackEventDataSource<perfetto::perfetto_track_event::TrackEvent, &(perfetto::perfetto_track_event::internal::kCategoryRegistry)>::TraceForCategoryImplNoTimestamp<unsigned long, perfetto::StaticString, perfetto::Track, void>(unsigned int, unsigned long const&, perfetto::StaticString const&, perfetto::protos::pbzero::perfetto_pbzero_enum_TrackEvent::Type, perfetto::Track const&)::'lambda'(perfetto::DataSource<perfetto::perfetto_track_event::TrackEvent, perfetto::internal::TrackEventDataSourceTraits>::TraceContext)>(unsigned int, unsigned long const&, perfetto::StaticString)","void protozero::Message::AppendVarInt<perfetto::protos::pbzero::perfetto_pbzero_enum_TrackEvent::Type>(unsigned int, perfetto::protos::pbzero::perfetto_pbzero_enum_TrackEvent::Type)","void protozero::Message::AppendVarInt<unsigned int>(unsigned int, unsigned int)","void protozero::Message::AppendVarInt<unsigned long>(unsigned int, unsigned long)","void protozero::internal::FieldWriter<(protozero::proto_utils::ProtoSchemaType)14>::Append<perfetto::protos::pbzero::perfetto_pbzero_enum_TrackEvent::Type>(protozero::Message&, unsigned int, perfetto::protos::pbzero::perfetto_pbzero_enum_TrackEvent::Type)","void std::__ndk1::__cxx_atomic_store[abi:v170000]<perfetto::SharedMemoryABI::ChunkHeader::Packets>(std::__ndk1::__cxx_atomic_base_impl<perfetto::SharedMemoryABI::ChunkHeader::Packets>*, perfetto::SharedMemoryABI::ChunkHeader::Packets, std::__ndk1::memory_order)","write"],"funcTable":{"name":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237],"isJS":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"relevantForJS":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"resource":[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"fileName":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"lineNumber":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"columnNumber":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"length":238},"resourceTable":{"length":0,"lib":[],"name":[],"host":[],"type":[]},"nativeSymbols":{"libIndex":[],"address":[],"name":[],"functionSize":[],"length":0}},{"processType":"default","name":"","isMainThread":0,"pid":16388,"tid":16388,"samples":{"stack":[],"time":[],"weight":null,"weightType":"samples","length":0},"markers":{"data":[],"name":[],"startTime":[],"endTime":[],"phase":[],"category":[],"length":0},"stackTable":{"frame":[],"category":[],"subcategory":[],"prefix":[],"length":0},"frameTable":{"address":[],"inlineDepth":[],"category":[],"subcategory":[],"func":[],"nativeSymbol":[],"innerWindowID":[],"implementation":[],"line":[],"column":[],"length":0},"stringArray":[],"funcTable":{"name":[],"isJS":[],"relevantForJS":[],"resource":[],"fileName":[],"lineNumber":[],"columnNumber":[],"length":0},"resourceTable":{"length":0,"lib":[],"name":[],"host":[],"type":[]},"nativeSymbols":{"libIndex":[],"address":[],"name":[],"functionSize":[],"length":0}},{"processType":"default","name":"ThreadPoolForegroundWorker","isMainThread":0,"pid":16388,"tid":16414,"samples":{"stack":[],"time":[],"weight":null,"weightType":"samples","length":0},"markers":{"data":[],"name":[],"startTime":[],"endTime":[],"phase":[],"category":[],"length":0},"stackTable":{"frame":[],"category":[],"subcategory":[],"prefix":[],"length":0},"frameTable":{"address":[],"inlineDepth":[],"category":[],"subcategory":[],"func":[],"nativeSymbol":[],"innerWindowID":[],"implementation":[],"line":[],"column":[],"length":0},"stringArray":[],"funcTable":{"name":[],"isJS":[],"relevantForJS":[],"resource":[],"fileName":[],"lineNumber":[],"columnNumber":[],"length":0},"resourceTable":{"length":0,"lib":[],"name":[],"host":[],"type":[]},"nativeSymbols":{"libIndex":[],"address":[],"name":[],"functionSize":[],"length":0}},{"processType":"default","name":"","isMainThread":0,"pid":3353,"tid":3353,"samples":{"stack":[],"time":[],"weight":null,"weightType":"samples","length":0},"markers":{"data":[],"name":[],"startTime":[],"endTime":[],"phase":[],"category":[],"length":0},"stackTable":{"frame":[],"category":[],"subcategory":[],"prefix":[],"length":0},"frameTable":{"address":[],"inlineDepth":[],"category":[],"subcategory":[],"func":[],"nativeSymbol":[],"innerWindowID":[],"implementation":[],"line":[],"column":[],"length":0},"stringArray":[],"funcTable":{"name":[],"isJS":[],"relevantForJS":[],"resource":[],"fileName":[],"lineNumber":[],"columnNumber":[],"length":0},"resourceTable":{"length":0,"lib":[],"name":[],"host":[],"type":[]},"nativeSymbols":{"libIndex":[],"address":[],"name":[],"functionSize":[],"length":0}},{"processType":"default","name":"ThreadPoolForegroundWorker","isMainThread":0,"pid":3353,"tid":15835,"samples":{"stack":[],"time":[],"weight":null,"weightType":"samples","length":0},"markers":{"data":[],"name":[],"startTime":[],"endTime":[],"phase":[],"category":[],"length":0},"stackTable":{"frame":[],"category":[],"subcategory":[],"prefix":[],"length":0},"frameTable":{"address":[],"inlineDepth":[],"category":[],"subcategory":[],"func":[],"nativeSymbol":[],"innerWindowID":[],"implementation":[],"line":[],"column":[],"length":0},"stringArray":[],"funcTable":{"name":[],"isJS":[],"relevantForJS":[],"resource":[],"fileName":[],"lineNumber":[],"columnNumber":[],"length":0},"resourceTable":{"length":0,"lib":[],"name":[],"host":[],"type":[]},"nativeSymbols":{"libIndex":[],"address":[],"name":[],"functionSize":[],"length":0}},{"processType":"default","name":"","isMainThread":0,"pid":16339,"tid":16339,"samples":{"stack":[],"time":[],"weight":null,"weightType":"samples","length":0},"markers":{"data":[],"name":[],"startTime":[],"endTime":[],"phase":[],"category":[],"length":0},"stackTable":{"frame":[],"category":[],"subcategory":[],"prefix":[],"length":0},"frameTable":{"address":[],"inlineDepth":[],"category":[],"subcategory":[],"func":[],"nativeSymbol":[],"innerWindowID":[],"implementation":[],"line":[],"column":[],"length":0},"stringArray":[],"funcTable":{"name":[],"isJS":[],"relevantForJS":[],"resource":[],"fileName":[],"lineNumber":[],"columnNumber":[],"length":0},"resourceTable":{"length":0,"lib":[],"name":[],"host":[],"type":[]},"nativeSymbols":{"libIndex":[],"address":[],"name":[],"functionSize":[],"length":0}},{"processType":"default","name":"ThreadPoolForegroundWorker","isMainThread":0,"pid":16339,"tid":16403,"samples":{"stack":[],"time":[],"weight":null,"weightType":"samples","length":0},"markers":{"data":[],"name":[],"startTime":[],"endTime":[],"phase":[],"category":[],"length":0},"stackTable":{"frame":[],"category":[],"subcategory":[],"prefix":[],"length":0},"frameTable":{"address":[],"inlineDepth":[],"category":[],"subcategory":[],"func":[],"nativeSymbol":[],"innerWindowID":[],"implementation":[],"line":[],"column":[],"length":0},"stringArray":[],"funcTable":{"name":[],"isJS":[],"relevantForJS":[],"resource":[],"fileName":[],"lineNumber":[],"columnNumber":[],"length":0},"resourceTable":{"length":0,"lib":[],"name":[],"host":[],"type":[]},"nativeSymbols":{"libIndex":[],"address":[],"name":[],"functionSize":[],"length":0}},{"processType":"default","name":"","isMainThread":0,"pid":9376,"tid":9376,"samples":{"stack":[],"time":[],"weight":null,"weightType":"samples","length":0},"markers":{"data":[],"name":[],"startTime":[],"endTime":[],"phase":[],"category":[],"length":0},"stackTable":{"frame":[],"category":[],"subcategory":[],"prefix":[],"length":0},"frameTable":{"address":[],"inlineDepth":[],"category":[],"subcategory":[],"func":[],"nativeSymbol":[],"innerWindowID":[],"implementation":[],"line":[],"column":[],"length":0},"stringArray":[],"funcTable":{"name":[],"isJS":[],"relevantForJS":[],"resource":[],"fileName":[],"lineNumber":[],"columnNumber":[],"length":0},"resourceTable":{"length":0,"lib":[],"name":[],"host":[],"type":[]},"nativeSymbols":{"libIndex":[],"address":[],"name":[],"functionSize":[],"length":0}},{"processType":"default","name":"ThreadPoolForegroundWorker","isMainThread":0,"pid":9376,"tid":16326,"samples":{"stack":[],"time":[],"weight":null,"weightType":"samples","length":0},"markers":{"data":[],"name":[],"startTime":[],"endTime":[],"phase":[],"category":[],"length":0},"stackTable":{"frame":[],"category":[],"subcategory":[],"prefix":[],"length":0},"frameTable":{"address":[],"inlineDepth":[],"category":[],"subcategory":[],"func":[],"nativeSymbol":[],"innerWindowID":[],"implementation":[],"line":[],"column":[],"length":0},"stringArray":[],"funcTable":{"name":[],"isJS":[],"relevantForJS":[],"resource":[],"fileName":[],"lineNumber":[],"columnNumber":[],"length":0},"resourceTable":{"length":0,"lib":[],"name":[],"host":[],"type":[]},"nativeSymbols":{"libIndex":[],"address":[],"name":[],"functionSize":[],"length":0}}],"profilingLog":null,"profileGatheringLog":null}"
diff --git a/test/trace_processor/diff_tests/stdlib/export/tests.py b/test/trace_processor/diff_tests/stdlib/export/tests.py
new file mode 100644
index 000000000..0c76dc606
--- /dev/null
+++ b/test/trace_processor/diff_tests/stdlib/export/tests.py
@@ -0,0 +1,29 @@
+#!/usr/bin/env python3
+# Copyright (C) 2024 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License a
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from python.generators.diff_tests.testing import DataPath, Path, DiffTestBlueprint, TestSuite
+
+
+class ExportTests(TestSuite):
+
+ def test_to_firefox_profile(self):
+ return DiffTestBlueprint(
+ trace=DataPath('zip/perf_track_sym.zip'),
+ query="""
+ INCLUDE PERFETTO MODULE export.to_firefox_profile;
+
+ SELECT export_to_firefox_profile();
+ """,
+ out=Path('firefox_profile.out'))
diff --git a/test/trace_processor/diff_tests/stdlib/gpu/tests.py b/test/trace_processor/diff_tests/stdlib/gpu/tests.py
new file mode 100644
index 000000000..2c23e80e2
--- /dev/null
+++ b/test/trace_processor/diff_tests/stdlib/gpu/tests.py
@@ -0,0 +1,40 @@
+#!/usr/bin/env python3
+# Copyright (C) 2023 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License a
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from python.generators.diff_tests.testing import Path, DataPath, Metric, Systrace
+from python.generators.diff_tests.testing import Csv, Json, TextProto, BinaryProto
+from python.generators.diff_tests.testing import DiffTestBlueprint
+from python.generators.diff_tests.testing import TestSuite
+from python.generators.diff_tests.testing import PrintProfileProto
+
+
+class Gpu(TestSuite):
+
+ def test_gpu_frequency(self):
+ return DiffTestBlueprint(
+ trace=Path('../../metrics/graphics/gpu_frequency_metric.textproto'),
+ query="""
+ INCLUDE PERFETTO MODULE gpu.frequency;
+ SELECT *
+ FROM gpu_frequency;
+ """,
+ out=Csv("""
+ "ts","dur","gpu_id","gpu_freq"
+ 200001000000,2000000,0,585000
+ 200003000000,1000000,0,0
+ 200004000000,2000000,0,603000
+ 200002000000,3000000,1,400000
+ 200005000000,1000000,1,758000
+ """))
diff --git a/test/trace_processor/diff_tests/stdlib/memory/tests.py b/test/trace_processor/diff_tests/stdlib/memory/tests.py
new file mode 100644
index 000000000..d781b542a
--- /dev/null
+++ b/test/trace_processor/diff_tests/stdlib/memory/tests.py
@@ -0,0 +1,111 @@
+#!/usr/bin/env python3
+# Copyright (C) 2024 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License a
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from python.generators.diff_tests.testing import Path, DataPath, Metric, Systrace
+from python.generators.diff_tests.testing import Csv, Json, TextProto, BinaryProto
+from python.generators.diff_tests.testing import DiffTestBlueprint
+from python.generators.diff_tests.testing import TestSuite
+from python.generators.diff_tests.testing import PrintProfileProto
+
+
+class Memory(TestSuite):
+
+ def test_memory_rss_and_swap_per_process(self):
+ return DiffTestBlueprint(
+ trace=DataPath('android_postboot_unlock.pftrace'),
+ query="""
+ INCLUDE PERFETTO MODULE memory.linux.process;
+
+ SELECT *
+ FROM memory_rss_and_swap_per_process
+ WHERE upid = 1
+ LIMIT 5
+ """,
+ out=Csv("""
+ "ts","dur","upid","pid","process_name","anon_rss","file_rss","shmem_rss","rss","swap","anon_rss_and_swap","rss_and_swap"
+ 37592474220,12993896,1,1982,"com.android.systemui",125865984,"[NULL]","[NULL]","[NULL]","[NULL]",125865984,"[NULL]"
+ 37605468116,1628,1,1982,"com.android.systemui",126050304,"[NULL]","[NULL]","[NULL]","[NULL]",126050304,"[NULL]"
+ 37605469744,1302,1,1982,"com.android.systemui",126050304,"[NULL]",2990080,"[NULL]","[NULL]",126050304,"[NULL]"
+ 37605471046,685791,1,1982,"com.android.systemui",126046208,"[NULL]",2990080,"[NULL]","[NULL]",126046208,"[NULL]"
+ 37606156837,6510,1,1982,"com.android.systemui",126042112,"[NULL]",2990080,"[NULL]","[NULL]",126042112,"[NULL]"
+ """))
+
+ def test_memory_rss_high_watermark_per_process(self):
+ return DiffTestBlueprint(
+ trace=DataPath('android_postboot_unlock.pftrace'),
+ query="""
+ INCLUDE PERFETTO MODULE memory.linux.high_watermark;
+
+ SELECT *
+ FROM memory_rss_high_watermark_per_process
+ WHERE upid = 1
+ LIMIT 10;
+ """,
+ out=Csv("""
+ "ts","dur","upid","pid","process_name","rss_high_watermark"
+ 37592474220,12993896,1,1982,"com.android.systemui",125865984
+ 37605468116,1628,1,1982,"com.android.systemui",126050304
+ 37605469744,333774129,1,1982,"com.android.systemui",129040384
+ 37939243873,120479574,1,1982,"com.android.systemui",372977664
+ 38059723447,936,1,1982,"com.android.systemui",373043200
+ 38059724383,6749186,1,1982,"com.android.systemui",373174272
+ 38066473569,7869426,1,1982,"com.android.systemui",373309440
+ 38074342995,11596761,1,1982,"com.android.systemui",373444608
+ 38085939756,4877848,1,1982,"com.android.systemui",373579776
+ 38090817604,11930827,1,1982,"com.android.systemui",373714944
+ """))
+
+ def test_memory_oom_score_with_rss_and_swap_per_process(self):
+ return DiffTestBlueprint(
+ trace=DataPath('sched_wakeup_trace.atr'),
+ query="""
+ INCLUDE PERFETTO MODULE memory.linux.process;
+ SELECT *
+ FROM memory_oom_score_with_rss_and_swap_per_process
+ WHERE oom_adj_reason IS NOT NULL
+ ORDER BY ts
+ LIMIT 10;
+ """,
+ out=Csv("""
+ "ts","dur","score","bucket","upid","process_name","pid","oom_adj_id","oom_adj_ts","oom_adj_dur","oom_adj_track_id","oom_adj_thread_name","oom_adj_reason","oom_adj_trigger","anon_rss","file_rss","shmem_rss","rss","swap","anon_rss_and_swap","rss_and_swap"
+ 1737065264829,701108081,925,"cached",269,"com.android.providers.calendar",1937,332,1737064421516,29484835,1217,"binder:642_1","processEnd","IActivityManager#1598246212",49229824,57495552,835584,107560960,0,49229824,107560960
+ 1737066678827,2934486383,935,"cached",287,"com.android.imsserviceentitlement",2397,332,1737064421516,29484835,1217,"binder:642_1","processEnd","IActivityManager#1598246212",48881664,57081856,831488,106795008,0,48881664,106795008
+ 1737066873002,2934292208,945,"cached",292,"com.android.carrierconfig",2593,332,1737064421516,29484835,1217,"binder:642_1","processEnd","IActivityManager#1598246212",48586752,49872896,823296,99282944,0,48586752,99282944
+ 1737067058812,2934106398,955,"cached",288,"com.android.messaging",2416,332,1737064421516,29484835,1217,"binder:642_1","processEnd","IActivityManager#1598246212",54956032,71417856,843776,127217664,0,54956032,127217664
+ 1737067246975,699224817,955,"cached",267,"android.process.acore",1866,332,1737064421516,29484835,1217,"binder:642_1","processEnd","IActivityManager#1598246212",52498432,72048640,856064,125403136,0,52498432,125403136
+ 1737068421919,2932743291,965,"cached",273,"com.android.shell",2079,332,1737064421516,29484835,1217,"binder:642_1","processEnd","IActivityManager#1598246212",48738304,52056064,823296,101617664,0,48738304,101617664
+ 1737068599673,970398,965,"cached",271,"android.process.media",2003,332,1737064421516,29484835,1217,"binder:642_1","processEnd","IActivityManager#1598246212",49917952,60444672,839680,111202304,0,49917952,111202304
+ 1737068933602,2932231608,975,"cached",286,"com.android.gallery3d",2371,332,1737064421516,29484835,1217,"binder:642_1","processEnd","IActivityManager#1598246212",49561600,54521856,831488,104914944,0,49561600,104914944
+ 1737069091010,682459310,975,"cached",289,"com.android.packageinstaller",2480,332,1737064421516,29484835,1217,"binder:642_1","processEnd","IActivityManager#1598246212",49364992,52539392,827392,102731776,0,49364992,102731776
+ 1737069240534,489635,985,"cached",268,"com.android.managedprovisioning",1868,332,1737064421516,29484835,1217,"binder:642_1","processEnd","IActivityManager#1598246212",50683904,53985280,815104,105484288,0,50683904,105484288
+ """))
+
+ def test_memory_gpu_per_process(self):
+ return DiffTestBlueprint(
+ trace=Path('../../metrics/graphics/gpu_metric.py'),
+ query="""
+ INCLUDE PERFETTO MODULE memory.android.gpu;
+ SELECT *
+ FROM memory_gpu_per_process;
+ """,
+ out=Csv("""
+ "ts","dur","upid","gpu_memory"
+ 2,2,2,6
+ 4,6,2,8
+ 4,5,1,2
+ 9,1,1,8
+ 6,1,3,7
+ 7,3,3,10
+ """))
diff --git a/test/trace_processor/diff_tests/stdlib/sched/tests.py b/test/trace_processor/diff_tests/stdlib/sched/tests.py
index 352718576..1de62b5dc 100644
--- a/test/trace_processor/diff_tests/stdlib/sched/tests.py
+++ b/test/trace_processor/diff_tests/stdlib/sched/tests.py
@@ -60,108 +60,6 @@ class StdlibSched(TestSuite):
390,2
"""))
- def test_sched_utilization_per_second(self):
- return DiffTestBlueprint(
- trace=DataPath('example_android_trace_30s.pb'),
- query="""
- INCLUDE PERFETTO MODULE sched.utilization.system;
-
- SELECT * FROM sched_utilization_per_second;
- """,
- out=Csv("""
- "ts","utilization","unnormalized_utilization"
- 70000000000,0.004545,0.036362
- 71000000000,0.022596,0.180764
- 72000000000,0.163393,1.307146
- 73000000000,0.452122,3.616972
- 74000000000,0.525557,4.204453
- 75000000000,0.388632,3.109057
- 76000000000,0.425447,3.403579
- 77000000000,0.201112,1.608896
- 78000000000,0.280247,2.241977
- 79000000000,0.345228,2.761827
- 80000000000,0.303258,2.426064
- 81000000000,0.487522,3.900172
- 82000000000,0.080542,0.644336
- 83000000000,0.362450,2.899601
- 84000000000,0.076438,0.611501
- 85000000000,0.110689,0.885514
- 86000000000,0.681488,5.451901
- 87000000000,0.808331,6.466652
- 88000000000,0.941768,7.534142
- 89000000000,0.480556,3.844446
- 90000000000,0.453268,3.626142
- 91000000000,0.280310,2.242478
- 92000000000,0.006381,0.051049
- 93000000000,0.030991,0.247932
- 94000000000,0.031981,0.255845
- 95000000000,0.027931,0.223446
- 96000000000,0.063066,0.504529
- 97000000000,0.023847,0.190773
- 98000000000,0.011291,0.090328
- 99000000000,0.024065,0.192518
- 100000000000,0.001964,0.015711
- """))
-
- def test_sched_process_utilization_per_second(self):
- return DiffTestBlueprint(
- trace=DataPath('example_android_trace_30s.pb'),
- query="""
- INCLUDE PERFETTO MODULE sched.utilization.process;
-
- SELECT *
- FROM sched_process_utilization_per_second(10);
- """,
- out=Csv("""
- "ts","utilization","unnormalized_utilization"
- 72000000000,0.000187,0.001495
- 73000000000,0.000182,0.001460
- 77000000000,0.000072,0.000579
- 78000000000,0.000275,0.002204
- 82000000000,0.000300,0.002404
- 83000000000,0.000004,0.000034
- 87000000000,0.000133,0.001065
- 88000000000,0.000052,0.000416
- 89000000000,0.000212,0.001697
- 92000000000,0.000207,0.001658
- 97000000000,0.000353,0.002823
- """))
-
- def test_sched_thread_utilization_per_second(self):
- return DiffTestBlueprint(
- trace=DataPath('example_android_trace_30s.pb'),
- query="""
- INCLUDE PERFETTO MODULE sched.utilization.thread;
-
- SELECT *
- FROM sched_thread_utilization_per_second(10);
- """,
- out=Csv("""
- "ts","utilization","unnormalized_utilization"
- 70000000000,0.000024,0.000195
- 72000000000,0.000025,0.000200
- 73000000000,0.000053,0.000420
- 74000000000,0.000044,0.000352
- 75000000000,0.000058,0.000461
- 76000000000,0.000075,0.000603
- 77000000000,0.000051,0.000407
- 78000000000,0.000047,0.000374
- 79000000000,0.000049,0.000396
- 80000000000,0.000084,0.000673
- 81000000000,0.000041,0.000329
- 82000000000,0.000048,0.000383
- 83000000000,0.000040,0.000323
- 84000000000,0.000018,0.000145
- 85000000000,0.000053,0.000421
- 86000000000,0.000121,0.000972
- 87000000000,0.000049,0.000392
- 88000000000,0.000036,0.000285
- 89000000000,0.000033,0.000266
- 90000000000,0.000050,0.000401
- 91000000000,0.000025,0.000201
- 92000000000,0.000009,0.000071
- """))
-
def test_sched_time_in_state_for_thread(self):
return DiffTestBlueprint(
trace=DataPath('example_android_trace_30s.pb'),
diff --git a/test/trace_processor/diff_tests/syntax/table_tests.py b/test/trace_processor/diff_tests/syntax/table_tests.py
index 7de63e9d4..ca6a5d32e 100644
--- a/test/trace_processor/diff_tests/syntax/table_tests.py
+++ b/test/trace_processor/diff_tests/syntax/table_tests.py
@@ -78,7 +78,6 @@ class PerfettoTable(TestSuite):
3,"perfetto_table_info","track_id","uint32",0,0
4,"perfetto_table_info","value","double",0,0
5,"perfetto_table_info","arg_set_id","uint32",1,0
- 6,"perfetto_table_info","machine_id","uint32",1,0
"""))
def test_perfetto_table_info_runtime_table(self):
@@ -178,6 +177,37 @@ class PerfettoTable(TestSuite):
3073,8,4529,8
"""))
+ def test_distinct_multi_column(self):
+ return DiffTestBlueprint(
+ trace=TextProto(''),
+ query="""
+ CREATE PERFETTO TABLE foo AS
+ WITH data(a, b) AS (
+ VALUES
+ -- Needed to defeat any id/sorted detection.
+ (2, 3),
+ (0, 2),
+ (0, 1)
+ )
+ SELECT * FROM data;
+
+ CREATE TABLE bar AS
+ SELECT 1 AS b;
+
+ WITH multi_col_distinct AS (
+ SELECT DISTINCT a FROM foo CROSS JOIN bar USING (b)
+ ), multi_col_group_by AS (
+ SELECT a FROM foo CROSS JOIN bar USING (b) GROUP BY a
+ )
+ SELECT
+ (SELECT COUNT(*) FROM multi_col_distinct) AS cnt_distinct,
+ (SELECT COUNT(*) FROM multi_col_group_by) AS cnt_group_by
+ """,
+ out=Csv("""
+ "cnt_distinct","cnt_group_by"
+ 1,1
+ """))
+
def test_limit(self):
return DiffTestBlueprint(
trace=TextProto(''),
diff --git a/test/trace_processor/diff_tests/tables/tests_counters.py b/test/trace_processor/diff_tests/tables/tests_counters.py
index 4cc79a014..4a543bef6 100644
--- a/test/trace_processor/diff_tests/tables/tests_counters.py
+++ b/test/trace_processor/diff_tests/tables/tests_counters.py
@@ -133,23 +133,25 @@ class TablesCounters(TestSuite):
['ftrace_events', 'sys_stats', 'process_stats', 'process_tree'],
{'machine_id': 1001}),
query="""
- SELECT ts, dur, machine_id
- FROM experimental_counter_dur
+ SELECT ts, dur, m.raw_id as raw_machine_id
+ FROM experimental_counter_dur c
+ JOIN counter_track t on c.track_id = t.id
+ JOIN machine m on t.machine_id = m.id
WHERE track_id IN (1, 2, 3)
ORDER BY dur LIMIT 10;
""",
out=Csv("""
- "ts","dur","machine_id"
- 100351738640,-1,1
- 100351738640,-1,1
- 100351738640,-1,1
- 70731059648,19510835,1
- 70731059648,19510835,1
- 70731059648,19510835,1
- 73727335051,23522762,1
- 73727335051,23522762,1
- 73727335051,23522762,1
- 86726132752,24487554,1
+ "ts","dur","raw_machine_id"
+ 100351738640,-1,1001
+ 100351738640,-1,1001
+ 100351738640,-1,1001
+ 70731059648,19510835,1001
+ 70731059648,19510835,1001
+ 70731059648,19510835,1001
+ 73727335051,23522762,1001
+ 73727335051,23522762,1001
+ 73727335051,23522762,1001
+ 86726132752,24487554,1001
"""))
# Tests counter.machine_id and process_counter_track.machine.
@@ -174,7 +176,6 @@ class TablesCounters(TestSuite):
AND t.machine_id is not NULL
)
AND value != 17952.000000
- AND counter.machine_id is not NULL
LIMIT 20;
""",
out=Path('filter_row_vector_example_android_trace_30s.out'))
@@ -186,16 +187,16 @@ class TablesCounters(TestSuite):
query="""
SELECT
ts,
- lead(ts, 1, ts) OVER (PARTITION BY name ORDER BY ts) - ts AS dur,
- value, c.machine_id
+ lead(ts, 1, ts) OVER (PARTITION BY track_id ORDER BY ts) - ts AS dur,
+ value
FROM counter c
- JOIN cpu_counter_track t ON t.id = c.track_id
+ JOIN cpu_counter_track t on c.track_id = t.id
WHERE cpu = 1;
""",
out=Csv("""
- "ts","dur","value","machine_id"
- 1000,1,3000.000000,1
- 1001,0,4000.000000,1
+ "ts","dur","value"
+ 1000,1,3000.000000
+ 1001,0,4000.000000
"""))
def test_synth_1_filter_counter_machine_id(self):
@@ -205,14 +206,14 @@ class TablesCounters(TestSuite):
['ftrace_events', 'process_stats', 'process_tree'],
{'machine_id': 1001}),
query="""
- SELECT COUNT(*), machine_id
+ SELECT COUNT(*)
FROM counter
WHERE
track_id = 0;
""",
out=Csv("""
- "COUNT(*)","machine_id"
- 2,1
+ "COUNT(*)"
+ 2
"""))
def test_memory_counters_machine_id(self):
@@ -222,9 +223,11 @@ class TablesCounters(TestSuite):
['ftrace_events', 'sys_stats', 'process_stats', 'process_tree'],
{'machine_id': 1001}),
query="""
- SELECT count(*), machine_id FROM counters WHERE -1 < ts group by machine_id;
+ SELECT count(*)
+ FROM counters
+ WHERE -1 < ts group by machine_id;
""",
out=Csv("""
- "count(*)","machine_id"
- 98688,1
+ "count(*)"
+ 98688
"""))
diff --git a/test/trace_processor/diff_tests/tables/tests_sched.py b/test/trace_processor/diff_tests/tables/tests_sched.py
index ad23a5d80..7944b2de3 100644
--- a/test/trace_processor/diff_tests/tables/tests_sched.py
+++ b/test/trace_processor/diff_tests/tables/tests_sched.py
@@ -129,16 +129,16 @@ class TablesSched(TestSuite):
""",
out=Csv("""
"id","type","ts","name","cpu","utid","arg_set_id","common_flags"
- 3,"ftrace_event",1735489788930,"sched_waking",0,300,4,1
- 4,"ftrace_event",1735489812571,"sched_waking",0,300,5,1
- 5,"ftrace_event",1735489833977,"sched_waking",1,305,6,1
- 8,"ftrace_event",1735489876788,"sched_waking",1,297,9,1
- 9,"ftrace_event",1735489879097,"sched_waking",0,304,10,1
- 12,"ftrace_event",1735489933912,"sched_waking",0,428,13,1
- 14,"ftrace_event",1735489972385,"sched_waking",1,232,15,1
- 17,"ftrace_event",1735489999987,"sched_waking",1,232,15,1
- 19,"ftrace_event",1735490039439,"sched_waking",1,298,18,1
- 20,"ftrace_event",1735490042084,"sched_waking",1,298,19,1
+ 3,"__intrinsic_ftrace_event",1735489788930,"sched_waking",0,300,4,1
+ 4,"__intrinsic_ftrace_event",1735489812571,"sched_waking",0,300,5,1
+ 5,"__intrinsic_ftrace_event",1735489833977,"sched_waking",1,305,6,1
+ 8,"__intrinsic_ftrace_event",1735489876788,"sched_waking",1,297,9,1
+ 9,"__intrinsic_ftrace_event",1735489879097,"sched_waking",0,304,10,1
+ 12,"__intrinsic_ftrace_event",1735489933912,"sched_waking",0,428,13,1
+ 14,"__intrinsic_ftrace_event",1735489972385,"sched_waking",1,232,15,1
+ 17,"__intrinsic_ftrace_event",1735489999987,"sched_waking",1,232,15,1
+ 19,"__intrinsic_ftrace_event",1735490039439,"sched_waking",1,298,18,1
+ 20,"__intrinsic_ftrace_event",1735490042084,"sched_waking",1,298,19,1
"""))
def test_thread_executing_span_graph(self):
@@ -487,22 +487,24 @@ class TablesSched(TestSuite):
table_name,
critical_path_utid
FROM _thread_executing_span_critical_path_stack((select utid from thread where tid = 3487), start_ts, end_ts), trace_bounds
- ORDER BY ts
- LIMIT 11
+ WHERE ts = 1737500355691
+ ORDER BY utid, id
""",
out=Csv("""
"id","ts","dur","utid","stack_depth","name","table_name","critical_path_utid"
- 11889,1737349401439,57188,1477,0,"thread_state: R","thread_state",1477
- 11889,1737349401439,57188,1477,1,"[NULL]","thread_state",1477
- 11889,1737349401439,57188,1477,2,"[NULL]","thread_state",1477
- 11889,1737349401439,57188,1477,3,"process_name: com.android.providers.media.module","thread_state",1477
- 11889,1737349401439,57188,1477,4,"thread_name: rs.media.module","thread_state",1477
- 11891,1737349458627,1884896,1477,0,"thread_state: Running","thread_state",1477
- 11891,1737349458627,1884896,1477,1,"[NULL]","thread_state",1477
- 11891,1737349458627,1884896,1477,2,"[NULL]","thread_state",1477
- 11891,1737349458627,1884896,1477,3,"process_name: com.android.providers.media.module","thread_state",1477
- 11891,1737349458627,1884896,1477,4,"thread_name: rs.media.module","thread_state",1477
- 11891,1737349458627,1884896,1477,5,"cpu: 0","thread_state",1477
+ 4271,1737500355691,1456753,1477,5,"bindApplication","slice",1477
+ 13120,1737500355691,1456753,1477,0,"thread_state: S","thread_state",1477
+ 13120,1737500355691,1456753,1477,1,"[NULL]","thread_state",1477
+ 13120,1737500355691,1456753,1477,2,"[NULL]","thread_state",1477
+ 13120,1737500355691,1456753,1477,3,"process_name: com.android.providers.media.module","thread_state",1477
+ 13120,1737500355691,1456753,1477,4,"thread_name: rs.media.module","thread_state",1477
+ 4800,1737500355691,1456753,1498,11,"HIDL::IComponentStore::getStructDescriptors::client","slice",1477
+ 4801,1737500355691,1456753,1498,12,"binder transaction","slice",1477
+ 13648,1737500355691,1456753,1498,6,"blocking thread_state: R+","thread_state",1477
+ 13648,1737500355691,1456753,1498,7,"blocking process_name: com.android.providers.media.module","thread_state",1477
+ 13648,1737500355691,1456753,1498,8,"blocking thread_name: CodecLooper","thread_state",1477
+ 13648,1737500355691,1456753,1498,9,"[NULL]","thread_state",1477
+ 13648,1737500355691,1456753,1498,10,"[NULL]","thread_state",1477
"""))
def test_thread_executing_span_critical_path_graph(self):
@@ -682,7 +684,9 @@ class TablesSched(TestSuite):
trace=DataPath('android_sched_and_ps.pb'),
trace_modifier=TraceInjector(['ftrace_events'], {'machine_id': 1001}),
query="""
- SELECT ts, cpu, machine_id FROM sched WHERE ts >= 81473797418963 LIMIT 10;
+ SELECT ts, cpu.cpu, machine_id
+ FROM sched LEFT JOIN cpu USING (ucpu)
+ WHERE ts >= 81473797418963 LIMIT 10;
""",
out=Csv("""
"ts","cpu","machine_id"
@@ -704,9 +708,47 @@ class TablesSched(TestSuite):
trace=DataPath('android_sched_and_ps.pb'),
trace_modifier=TraceInjector(['ftrace_events'], {'machine_id': 1001}),
query="""
- SELECT count(*) FROM raw WHERE machine_id is NULL;
+ SELECT count(*)
+ FROM raw LEFT JOIN cpu USING (ucpu)
+ WHERE machine_id is NULL;
""",
out=Csv("""
"count(*)"
0
"""))
+
+ def test_sched_cpu_id(self):
+ return DiffTestBlueprint(
+ trace=DataPath('sched_switch_original.pb'),
+ query="""
+ SELECT cpu, cluster_id
+ FROM cpu
+ """,
+ out=Csv("""
+ "cpu","cluster_id"
+ 0,0
+ 1,0
+ 2,0
+ 3,0
+ 4,0
+ 7,0
+ """))
+
+ def test_sched_cpu_id_machine_id(self):
+ return DiffTestBlueprint(
+ trace=DataPath('sched_switch_original.pb'),
+ trace_modifier=TraceInjector(['ftrace_events'], {'machine_id': 1001}),
+ query="""
+ SELECT cpu, cluster_id, machine.raw_id as raw_machine_id
+ FROM cpu
+ JOIN machine ON cpu.machine_id = machine.id
+ """,
+ out=Csv("""
+ "cpu","cluster_id","raw_machine_id"
+ 0,0,1001
+ 1,0,1001
+ 2,0,1001
+ 3,0,1001
+ 4,0,1001
+ 7,0,1001
+ """))