diff --git a/profile.json b/profile.json new file mode 100644 index 0000000000000..cb82fc5e169f1 --- /dev/null +++ b/profile.json @@ -0,0 +1 @@ +{"$schema":"https://www.speedscope.app/file-format-schema.json","profiles":[{"type":"sampled","name":"Thread 0x16F8D7000 \"\"","unit":"seconds","startValue":0.0,"endValue":12.02,"samples":[[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]],"weights":[0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01]},{"type":"sampled","name":"Thread 0x1708E3000 \"Thread-1 (run_server)\"","unit":"seconds","startValue":0.0,"endValue":11.53,"samples":[[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381],[385,384,383,382,381]],"weights":[0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01]},{"type":"sampled","name":"Thread 0x1F5DD4F40 \"MainThread\"","unit":"seconds","startValue":0.0,"endValue":14.3,"samples":[[11,5,4,3,8,7,10,5,4,3,8,7,9,5,4,3,8,7,6,5,4,3,2,1,0],[20,19,18,17,16,15,5,4,3,8,7,14,5,13,7,5,13,7,5,4,3,2,1,12],[20,19,18,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21],[20,19,18,39,38,37,36,35,34,33,32,31,30,29,28,27,26],[20,19,18,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,40],[20,19,18,39,38,37,36,35,34,33,32,31,30,44,43,42,41],[20,19,18,39,38,37,36,35,34,33,32,31,30,44,43,47,46,45],[20,19,18,39,38,37,36,35,34,33,32,31,30,44,43,42,48],[20,19,18,39,38,37,36,35,34,33,32,31,30,44,43,42,48],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,13,7,53,5,4,3,51,52,5,4,3,51,50,5,4,3,8,7,49,5,4,3,2,1,0],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,13,7,53,5,4,3,51,52,5,4,3,51,50,5,4,3,8,7,49,5,4,3,2,1,12],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,13,7,53,5,4,3,51,52,5,4,3,51,50,5,4,3,8,7,59,5,4,3,8,7,58],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,4,3,51,66,5,4,3,51,65,5,4,3,8,7,64,5,4,3,8,7,63,5,4,3,8,7,62,5,4,3,8,7,61,5,13,7,5,4,3,8,7,60,5,4,3,2,1,0],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,4,3,51,66,5,4,3,51,65,5,4,3,8,7,64,5,4,3,8,7,63,5,4,3,8,7,62,5,4,3,8,7,61,5,13,7,5,4,3,8,7,68,5,4,3,8,7,67,5,4,3,2,1,0],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,4,3,51,66,5,4,3,51,65,5,4,3,8,7,64,5,4,3,8,7,63,5,4,3,8,7,62,5,4,3,8,7,61,5,13,7,5,4,3,8,7,68,5,4,3,8,7,67,5,4,3,2,1,12],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,4,3,51,66,5,4,3,51,65,5,4,3,8,7,73,5,4,3,8,7,72,5,4,3,8,7,71,70,7,5,4,3,8,7,69,5,4,3,2,1,0],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,4,3,51,66,5,4,3,51,65,5,4,3,8,7,81,5,4,3,8,7,80,5,4,3,8,7,79,5,4,3,8,7,78,5,4,76,75,74,7,5,4,3,8,7,77,5,4,76,75,74,7],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,4,3,51,66,5,4,3,51,65,5,4,3,8,7,88,70,7,5,4,3,8,7,87,70,7,5,4,3,8,7,86,5,4,3,8,7,85,5,84,83,82],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,13,7,53,5,4,3,51,91,5,4,3,90,89],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,13,7,53,5,4,3,51,91,5,4,3,90,89],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,13,7,53,5,4,3,51,107,5,4,3,51,106,5,4,3,8,7,105,5,4,3,8,7,104,5,4,3,8,7,103,5,4,3,8,7,102,5,4,3,8,7,101,5,4,3,8,7,100,5,4,3,8,7,99,5,4,3,8,7,98,97,96,95,94,93,92],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,13,7,53,5,4,3,51,107,5,4,3,51,106,5,4,3,8,7,105,5,4,3,8,7,104,5,4,3,8,7,124,5,13,7,5,4,3,8,7,123,5,4,3,8,7,122,5,4,3,8,7,121,5,4,3,8,7,120,5,13,7,5,4,3,8,7,119,5,4,3,8,7,118,5,4,3,8,7,117,5,4,3,51,116,5,4,3,51,115,70,7,5,4,3,51,114,5,4,3,51,113,5,4,3,51,112,111,110,109,108],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,13,7,53,5,4,3,51,107,5,4,3,51,106,5,4,3,8,7,105,5,4,3,8,7,104,5,4,3,8,7,124,5,13,7,5,4,3,8,7,123,5,4,3,8,7,122,5,4,3,8,7,121,5,4,3,8,7,120,5,13,7,5,4,3,8,7,119,5,4,3,8,7,118,5,4,3,8,7,117,5,4,3,51,116,5,4,3,51,115,70,7,5,4,3,51,114,5,4,3,51,113,5,4,3,51,112,111,110,109,108],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,13,7,53,5,4,3,51,107,5,4,3,51,106,5,4,3,8,7,105,5,4,3,8,7,104,5,4,3,8,7,124,5,13,7,5,4,3,8,7,123,5,4,3,8,7,122,5,4,3,8,7,121,5,4,3,8,7,120,5,13,7,5,4,3,8,7,119,5,4,3,8,7,127,5,4,3,8,7,126,5,4,3,8,7,125,5,4,3,2,1,0],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,13,7,53,5,4,3,51,107,5,4,3,51,106,5,4,3,8,7,133,5,4,3,8,7,132,5,4,3,8,7,131,5,4,3,8,7,130,70,7,5,4,3,2,129,128],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,13,7,53,5,4,3,51,107,5,4,3,51,106,5,4,3,8,7,133,5,4,3,8,7,132,5,4,3,8,7,131,5,4,3,8,7,130,70,7,5,4,3,2,129,128],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,13,7,53,5,4,3,51,107,5,4,3,51,106,5,4,3,8,7,133,5,4,3,8,7,132,5,4,3,8,7,131,5,4,3,8,7,130,70,7,5,4,3,2,129,128],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,13,7,53,5,4,3,51,107,5,4,3,51,106,5,4,3,8,7,133,5,4,3,8,7,138,5,4,3,8,7,137,5,4,3,8,7,136,5,4,3,8,7,135,70,7,5,4,3,8,7,134],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,13,7,53,5,13,7,53,5,13,7,53,5,4,3,51,148,5,4,3,147,146,145,144,143,142,141,140,139],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,13,7,53,5,13,7,53,5,13,7,53,5,4,3,51,148,5,4,3,147,146,145,144,143,142,141,140,149],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,13,7,53,5,13,7,53,5,13,7,53,5,4,3,51,148,5,4,3,147,146,145,144,143,142,141,140,149],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,13,7,53,5,13,7,53,5,13,7,53,5,4,3,51,152,5,4,3,150,51,151,5,4,3,150,90,89],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,13,7,53,5,13,7,53,5,13,7,53,5,4,3,51,152,5,4,3,150,51,151,5,4,3,150,51,154,5,4,3,150,90,153],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,13,7,53,5,13,7,53,5,13,7,53,5,4,3,51,152,5,4,3,150,51,151,5,4,3,150,51,160,5,13,7,5,4,3,150,51,159,5,4,3,150,51,158,5,4,3,150,51,157,5,4,3,150,51,156,5,4,3,150,51,155],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,13,7,53,5,13,7,53,5,13,7,53,5,4,3,51,164,5,4,3,150,51,163,5,4,3,150,51,162,5,4,3,150,51,161,5,4,3,150,90,89],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,13,7,53,5,13,7,53,5,13,7,53,5,4,3,51,164,5,4,3,150,51,163,5,4,3,150,51,162,5,4,3,150,51,161,5,4,3,150,51,165,5,4,3,150,90,89],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,13,7,53,5,13,7,53,5,13,7,53,5,4,3,51,164,5,4,3,150,51,163,5,4,3,150,51,162,5,4,3,150,51,161,5,4,3,150,51,176,175,174,173,172,171,170,169,168,167,166],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,13,7,53,5,13,7,53,5,13,7,53,5,4,3,51,164,5,4,3,150,51,163,5,4,3,150,51,177,5,4,3,150,90,89],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,13,7,53,5,13,7,53,5,4,3,150,51,180,70,7,5,4,3,150,51,179,5,4,3,150,51,178,5,4,3,150,90,89],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,13,7,53,5,13,7,53,5,4,3,150,51,180,70,7,5,4,3,150,51,179,5,4,3,150,51,178,5,4,3,150,90,89],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,4,3,150,51,186,5,4,3,150,51,185,5,4,3,150,51,184,5,4,3,150,51,183,182,181],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,4,3,150,51,186,5,4,3,150,51,198,5,13,7,5,4,3,150,51,197,5,4,3,150,51,196,5,4,3,150,51,195,5,4,3,150,51,194,5,13,7,5,4,3,150,51,193,70,7,5,4,3,150,51,192,5,4,3,150,51,191,5,84,83,190,189,188,187],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,4,3,150,51,186,5,4,3,150,51,198,5,13,7,5,4,3,150,51,197,5,4,3,150,51,196,5,4,3,150,51,195,5,4,3,150,51,194,5,13,7,5,4,3,150,51,193,70,7,5,4,3,150,51,192,5,4,3,150,51,191,5,84,83,190,189,199],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,4,3,150,51,204,5,4,3,150,51,203,5,4,3,150,8,7,202,5,4,3,150,8,7,201,70,7,5,4,3,150,2,200,1,0],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,4,3,150,51,204,5,4,3,150,51,203,5,4,3,150,8,7,202,5,4,3,150,8,7,201,70,7,5,4,3,150,2,200,1,0],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,4,3,150,51,204,5,4,3,150,51,203,5,4,3,150,8,7,202,5,4,3,150,8,7,201,70,7,5,4,3,150,2,200,1,12],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,13,7,53,5,4,3,150,51,205,5,4,3,150,90,89],[20,19,18,39,38,37,36,35,34,57,56,55,54,53,5,13,7,53,5,4,3,150,51,205,5,4,3,150,51,206,5,4,3,150,90,89],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,215,5,13,7,5,4,3,150,8,7,214,5,4,3,150,8,7,213,5,4,3,150,8,7,212,5,4,3,150,8,7,211,5,4,3,150,8,7,210,5,13,7,5,4,3,150,8,7,209,5,4,3,150,8,7,208,5,4,3,150,8,7,207,5,4,3,150,2,200,1,0],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,215,5,13,7,5,4,3,150,8,7,214,5,4,3,150,8,7,213,5,4,3,150,8,7,212,5,4,3,150,8,7,211,5,4,3,150,8,7,210,5,13,7,5,4,3,150,8,7,209,5,4,3,150,8,7,208,5,4,3,150,8,7,207,5,4,3,150,2,200,1,0],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,215,5,13,7,5,4,3,150,8,7,214,5,4,3,150,8,7,213,5,4,3,150,8,7,212,5,4,3,150,8,7,211,5,4,3,150,8,7,210,5,13,7,5,4,3,150,8,7,232,231,230,54,53,5,4,3,150,8,7,229,70,7,5,4,3,150,8,7,228,5,4,3,150,8,7,227,70,7,5,84,83,190,189,83,226,225,224],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,215,5,13,7,5,4,3,150,8,7,214,5,4,3,150,8,7,213,5,4,3,150,8,7,212,5,4,3,150,8,7,211,5,4,3,150,8,7,210,5,13,7,5,4,3,150,8,7,232,231,230,54,53,5,4,3,150,8,7,229,70,7,5,4,3,150,8,7,235,5,4,3,150,8,7,234,97,233],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,215,5,13,7,5,4,3,150,8,7,214,5,4,3,150,8,7,244,5,4,3,150,8,7,243,5,4,3,150,8,7,242,5,4,3,150,8,7,241,5,4,3,150,8,7,240,5,4,3,150,8,7,239,5,4,3,147,146,238,142,141,140,237,236],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,215,5,13,7,5,4,3,150,8,7,214,5,4,3,150,8,7,244,5,4,3,150,8,7,249,5,84,83,190,189,83,248,247,246,245],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,259,5,4,3,150,8,7,258,5,4,3,150,8,7,257,5,4,3,150,8,7,256,5,13,7,5,4,3,150,8,7,255,5,4,3,150,8,7,254,5,4,3,150,8,7,253,5,4,3,150,2,200,252,251,250],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,259,5,4,3,150,8,7,258,5,4,3,150,8,7,257,5,4,3,150,8,7,256,5,13,7,5,4,3,150,8,7,255,5,4,3,150,8,7,254,5,4,3,150,8,7,253,5,4,3,150,2,200,252,251,250],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,259,5,4,3,150,8,7,258,5,4,3,150,8,7,257,5,4,3,150,8,7,256,5,13,7,5,4,3,150,8,7,255,5,4,3,150,8,7,254,5,4,3,150,8,7,264,263,262,261,260],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,259,5,4,3,150,8,7,258,5,4,3,150,8,7,257,5,4,3,150,8,7,256,5,13,7,5,4,3,150,8,7,267,5,4,3,150,8,7,266,5,4,3,150,8,7,265],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,259,5,4,3,150,8,7,258,5,4,3,150,8,7,257,5,4,3,150,8,7,256,5,13,7,5,4,3,150,8,7,267,5,4,3,150,8,7,266,5,4,3,150,8,7,276,5,4,3,150,8,7,275,5,4,3,150,8,7,274,5,13,7,5,4,3,150,8,7,273,5,4,3,150,8,7,272,5,4,3,150,8,7,271,5,4,3,150,8,7,270,5,4,3,150,8,7,269,5,4,3,150,8,7,268,5,4,3,150,2,200,1,12],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,259,5,4,3,150,8,7,258,5,4,3,150,8,7,257,5,4,3,150,8,7,256,5,13,7,5,4,3,150,8,7,267,5,4,3,150,8,7,266,5,4,3,150,8,7,276,5,4,3,150,8,7,275,5,4,3,150,8,7,274,5,13,7,5,4,3,150,8,7,273,5,4,3,150,8,7,272,5,4,3,150,8,7,271,5,4,3,150,8,7,270,5,4,3,150,8,7,269,5,4,3,150,8,7,268,5,4,3,150,2,200,1,12],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,259,5,4,3,150,8,7,258,5,4,3,150,8,7,257,5,4,3,150,8,7,256,5,13,7,5,4,3,150,8,7,267,5,4,3,150,8,7,266,5,4,3,150,8,7,276,5,4,3,150,8,7,275,5,4,3,150,8,7,274,5,13,7,5,4,3,150,8,7,273,5,4,3,150,8,7,272,5,4,3,150,8,7,278,5,4,3,150,8,7,277,111,110,109,108],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,259,5,4,3,150,8,7,258,5,4,3,150,8,7,257,5,4,3,150,8,7,256,5,13,7,5,4,3,150,8,7,267,5,4,3,150,8,7,266,5,4,3,150,8,7,276,5,4,3,150,8,7,288,5,4,3,150,8,7,287,5,4,3,150,8,7,286,5,4,3,150,8,7,285,5,4,3,150,8,7,284,97,283,282,281,280,279],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,259,5,4,3,150,8,7,258,5,4,3,150,8,7,257,5,4,3,150,8,7,256,5,13,7,5,4,3,150,8,7,267,5,4,3,150,8,7,266,5,4,3,150,8,7,276,5,4,3,150,8,7,288,5,4,3,150,8,7,291,290,97,289],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,259,5,4,3,150,8,7,258,5,4,3,150,8,7,257,5,4,3,150,8,7,256,5,13,7,5,4,3,150,8,7,267,5,4,3,150,8,7,266,5,4,3,150,8,7,276,5,4,3,150,8,7,288,5,4,3,150,8,7,291,290,97,289],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,259,5,4,3,150,8,7,258,5,4,3,150,8,7,257,5,4,3,150,8,7,256,5,13,7,5,4,3,150,8,7,267,5,4,3,150,8,7,266,5,4,3,150,8,7,305,5,4,3,150,8,7,304,5,4,3,150,8,7,303,302,301,300,299,298,297,296,295,294,293,231,230,54,292],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,259,5,4,3,150,8,7,258,5,4,3,150,8,7,257,5,4,3,150,8,7,256,5,13,7,5,4,3,150,8,7,267,5,4,3,150,8,7,266,5,4,3,150,8,7,305,5,4,3,150,8,7,304,5,4,3,150,8,7,303,302,301,300,299,298,297,296,295,294,293,231,230,54,292],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,259,5,4,3,150,8,7,258,5,4,3,150,8,7,257,5,4,3,150,8,7,256,5,13,7,5,4,3,150,8,7,267,5,4,3,150,8,7,266,5,4,3,150,8,7,305,5,4,3,150,8,7,304,5,4,3,150,8,7,309,308,307,306],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,259,5,4,3,150,8,7,258,5,4,3,150,8,7,257,5,4,3,150,8,7,256,5,13,7,5,4,3,150,8,7,267,5,4,3,150,8,7,266,5,4,3,150,8,7,314,5,4,3,150,8,7,313,312,311,310],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,259,5,4,3,150,8,7,258,5,4,3,150,8,7,257,5,4,3,150,8,7,256,5,13,7,5,4,3,150,8,7,267,5,4,3,150,8,7,266,5,4,3,150,8,7,314,5,4,3,150,8,7,313,312,311,310],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,259,5,4,3,150,8,7,258,5,4,3,150,8,7,257,5,4,3,150,8,7,256,5,13,7,5,4,3,150,8,7,318,5,4,3,150,8,7,317,5,4,3,150,8,7,316,5,4,3,150,8,7,315,5,4,3,150,2,200,1,0],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,259,5,4,3,150,8,7,258,5,4,3,150,8,7,257,5,4,3,150,8,7,256,5,13,7,5,4,3,150,8,7,325,5,4,3,150,8,7,324,5,4,3,150,8,7,323,5,4,3,150,8,7,322,5,4,3,150,8,7,321,5,4,3,150,8,7,320,312,311,319],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,259,5,4,3,150,8,7,258,5,4,3,150,8,7,328,327,326],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,334,5,4,3,150,8,7,333,5,4,3,150,8,7,332,5,4,3,150,8,7,331,5,4,3,150,8,7,330,5,4,3,150,8,7,329,5,4,3,150,2,200,129,128],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,334,5,4,3,150,8,7,333,5,4,3,150,8,7,332,5,4,3,150,8,7,331,5,4,3,150,8,7,330,5,4,3,150,8,7,329,5,4,3,150,2,200,129,128],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,334,5,4,3,150,8,7,333,5,4,3,150,8,7,332,5,4,3,150,8,7,331,5,4,3,150,8,7,330,5,4,3,150,8,7,329,5,4,3,150,8,7,345,344,343,342,341,340,339,338,337,336,335],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,334,5,4,3,150,8,7,333,5,4,3,150,8,7,332,5,4,3,150,8,7,331,5,4,3,150,8,7,330,5,4,3,150,8,7,329,5,4,3,150,8,7,345,344,343,342,341,340,339,338,337,336],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,346,5,4,3,150,2,200],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,348,5,4,3,147,146,238,142,141,140,237,347],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,359,5,4,3,150,8,7,358,5,4,3,150,8,7,357,5,4,3,150,8,7,356,355,354,353,352,43,42,351,350,349],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,359,5,4,3,150,8,7,358,5,4,3,150,8,7,357,5,4,3,150,8,7,356,355,354,353,352,43,42,351,350,349],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,359,5,4,3,150,8,7,358,5,4,3,150,8,7,357,5,4,3,150,8,7,356,355,354,353,352,43,42,351,350,349],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,359,5,4,3,150,8,7,358,5,4,3,150,8,7,357,5,4,3,150,8,7,356,355,354,353,352,43,42,351,350,349],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,359,5,4,3,150,8,7,358,5,4,3,150,8,7,357,5,4,3,150,8,7,356,355,354,353,352,43,42,351,361,22,360],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,359,5,4,3,150,8,7,368,367,366,365,364,363,362,362],[20,19,18,39,38,37,36,35,34,223,38,37,222,221,220,219,218,217,216,5,4,3,150,8,7,359,5,4,3,150,8,7,368,367,366,365,364,363,362,362],[20,19,18,39,38,37,36,35,34,223,38,37,36,377,376,375,374,373,372,54,53,371,370,369],[20,19,18,39,38,37,36,35,34,223,38,37,36,377,376,375,374,373,372,54,53,5,84,83,190,189,83,380,248,247,379,378],[20,19,395,38,37,36,394,393,38,37,36,392,391,38,37,36,390,389,388,387,386,42,41],[20,19,395,38,37,36,394,393,38,37,36,392,391,38,37,36,398,5,4,3,150,51,397,5,4,3,150,51,396,5,4,3,150,90,89],[20,19,395,38,37,36,394,393,38,37,36,392,391,38,37,36,398,5,4,3,150,51,397,5,4,3,150,51,396,5,4,3,150,90,89],[20,19,395,38,37,36,394,393,38,37,36,392,391,38,37,36,398,5,4,3,150,51,404,5,4,3,150,51,403,70,7,5,4,3,150,51,402,5,4,3,150,51,401,5,4,3,150,51,400,5,4,3,150,90,399],[20,19,395,38,37,36,394,393,38,37,36,392,391,38,37,36,398,5,4,3,150,51,404,5,4,3,150,51,403,70,7,5,4,3,150,51,402,5,4,3,150,51,401,5,4,3,150,51,400,5,4,3,150,90],[20,19,395,38,37,36,394,393,38,37,36,392,391,38,37,36,398,5,4,3,150,51,404,5,4,3,150,51,403,70,7,5,4,3,150,51,402,5,4,3,150,51,401,5,4,3,150,51,408,5,4,3,150,51,407,5,4,3,150,51,406,371,370,405],[20,19,395,38,37,36,394,393,38,37,36,392,391,38,37,36,398,5,4,3,150,51,404,5,4,3,150,51,403,70,7,5,4,3,150,51,402,5,4,3,150,51,401,5,4,3,150,51,408,5,4,3,150,51,407,5,4,3,150,51,411,5,4,3,150,51,410,5,84,83,190,189,83,380,248,247,379,409],[20,19,395,38,37,36,394,393,38,37,36,392,391,38,37,36,398,5,4,3,150,51,404,5,4,3,150,51,403,70,7,5,4,3,150,51,402,5,4,3,150,51,413,97,412,282],[20,19,395,38,37,36,394,393,38,37,36,392,391,38,37,36,398,5,4,3,150,51,404,5,4,3,150,51,403,70,7,5,4,3,150,51,402,5,4,3,150,51,413,97,412,282],[20,19,395,38,37,36,394,393,38,37,36,392,391,38,37,36,398,5,4,3,150,51,420,419,418,354,353,352,43,42,48,417,416,415,414],[20,19,395,38,37,36,394,393,38,37,36,392,391,38,37,36,398,5,4,3,150,51,420,419,418,354,353,352,43,42,41],[20,19,395,38,37,36,394,451,450,38,37,36,449,448,447,446,445,38,37,36,444,443,442,441,440,439,438,372,54,53,5,4,3,150,51,437,5,4,3,150,8,7,436,435,434,433,432,431,430,429,428,427,426,425,424,423,422,421],[20,19,395,38,37,36,394,451,450,38,37,36,449,448,447,446,445,38,37,36,444,443,442,441,440,439,438,372,54,53,5,4,3,150,51,437,5,4,3,150,8,7,436,435,434,433,432,431,430,454,453,452],[20,19,395,38,37,36,394,451,450,38,37,36,449,448,447,446,445,38,37,36,444,443,442,441,440,439,438,372,54,53,5,4,3,150,51,437,5,4,3,150,8,7,436,435,434,433,432,431,430,429,428,427,426,425,424,423,422,425,425,456,455],[20,19,395,38,37,36,394,451,450,38,37,36,449,448,447,446,445,38,37,36,444,443,442,441,440,439,438,372,54,53,5,4,3,150,51,437,5,4,3,150,8,7,436,435,434,433,432,425,425,425,425,425,425,425,425,459,458,457],[20,19,395,38,37,36,394,451,450,38,37,36,449,448,447,446,445,38,37,36,444,443,442,441,440,439,438,372,54,53,5,4,3,150,51,437,5,4,3,150,8,7,436,435,434,433,432,425,425,425,425,425,425,425,425,459,458,457],[20,19,395,38,37,36,394,451,450,38,37,36,449,448,447,446,445,38,37,36,444,443,442,441,440,439,438,372,54,53,5,4,3,150,51,437,5,4,3,150,8,7,436,435,434,433,432,431,430,429,428,467,466,465,464,463,462,461,460],[20,19,395,38,37,36,394,451,450,38,37,36,449,448,447,446,445,38,37,36,444,443,442,441,440,439,438,372,54,53,5,4,3,150,51,437,5,4,3,150,8,7,436,435,434,433,432,431,430,454,468,425],[20,19,395,38,37,36,394,451,450,38,37,36,449,448,447,446,445,38,37,36,444,443,442,441,440,439,438,372,54,53,5,4,3,150,51,437,5,4,3,150,8,7,436,435,434,433,432,431,430,429,428,470,469],[20,19,395,38,37,36,394,451,450,38,37,36,449,448,447,446,445,38,37,36,444,443,442,441,440,439,438,372,54,53,5,4,3,150,51,437,5,4,3,150,8,7,436,435,434,433,432,431,430,429,428,470,469],[20,19,395,38,37,36,394,451,450,38,37,36,449,448,447,446,445,38,37,36,444,443,442,441,440,439,438,372,54,53,5,4,3,150,51,437,5,4,3,150,8,7,436,435,434,433,432,431,430,429,428,427,426,425,474,473,472,465,464,463,471],[20,19,395,38,37,36,394,451,450,38,37,36,449,448,447,446,445,38,37,36,444,443,442,441,440,439,438,372,54,53,5,4,3,150,51,437,5,4,3,150,8,7,436,435,434,433,432,431,430,429,477,342,476,475],[20,19,395,38,37,36,394,451,450,38,37,36,449,448,447,446,445,38,37,36,444,443,442,441,440,439,438,372,54,53,5,4,3,150,51,437,5,4,3,150,8,7,436,435,434,433,432,431,482,481,480,479,478],[20,19,395,38,37,36,394,451,450,38,37,36,449,448,447,446,445,38,37,36,444,443,442,441,440,439,438,372,54,53,5,4,3,150,51,437,5,4,3,150,8,7,436,435,434,433,432,431,430,429,428,427,426,425,490,489,488,487,486,485,484,483],[20,19,395,38,37,36,394,451,450,38,37,36,449,448,447,446,445,38,37,36,444,443,442,441,440,439,438,372,54,53,5,4,3,150,51,437,5,4,3,150,8,7,436,435,434,433,432,431,430,429,428,427,426,425,424,423,422,425,425,456,491],[20,19,395,38,37,36,394,451,450,38,37,36,449,448,447,446,445,38,37,36,444,443,442,441,440,439,438,372,54,53,5,4,3,150,51,437,5,4,3,150,8,7,436,435,434,433,432,431,493,492],[20,19,395,38,37,36,394,451,450,38,37,36,449,448,447,446,445,38,37,36,444,443,442,441,440,439,438,372,54,53,5,4,3,150,51,437,5,4,3,150,8,7,436,435,434,433,432,431,430,429,428,427,426,425,495,494],[20,19,395,38,37,36,394,451,450,38,37,36,449,448,447,446,445,38,37,36,444,443,442,441,440,439,438,372,54,53,5,4,3,150,51,437,5,4,3,150,8,7,436,435,434,433,432,431,430,429,428,427,426,425,495,494],[20,19,395,38,37,36,394,451,450,38,37,36,449,448,447,446,445,38,37,36,444,443,442,441,440,439,438,372,54,53,5,4,3,150,51,437,5,4,3,150,8,7,497,435,434,496,432,431,482,481,480,479],[20,19,395,38,37,36,394,451,450,38,37,36,449,448,447,446,445,38,37,36,444,443,442,441,440,439,438,372,54,53,5,4,3,150,51,437,5,4,3,150,8,7,497,435,434,496,432,431,499,498],[20,19,395,38,37,36,394,451,450,38,37,36,449,448,447,446,445,38,37,36,444,443,442,441,440,439,438,372,54,53,5,4,3,150,51,437,5,4,3,150,8,7,497,435,434,496,432,431,430,429,428,427,426,425,502,501,500],[20,19,395,38,37,36,394,451,450,38,37,36,449,448,447,446,445,38,37,36,444,443,442,441,440,439,438,372,54,53,5,4,3,150,51,437,5,4,3,150,8,7,497,435,434,496,506,505,504,503],[20,19,395,38,37,36,394,451,450,38,37,36,449,448,447,446,445,38,37,36,444,443,442,441,440,439,438,372,54,53,5,4,3,150,51,437,5,4,3,150,8,7,497,435,434,496,432,431,482,481,480,479,507],[20,19,395,38,37,36,394,451,450,38,37,36,449,448,447,446,445,38,37,36,444,443,442,441,440,439,438,372,54,53,5,4,3,150,51,437,5,4,3,150,8,7,497,435,434,496,432,431,430,454,468,425,459,510,509,508],[20,19,395,38,37,36,394,451,450,38,37,36,449,448,447,446,445,38,37,36,444,443,442,441,440,439,438,372,54,53,5,4,3,150,51,437,5,4,3,150,8,7,497,435,434,496,432,431,430,454,453,511],[20,19,395,38,37,36,394,451,450,38,37,36,449,448,447,446,445,38,37,36,444,443,442,441,440,439,438,372,54,53,5,4,3,150,51,437,5,4,3,150,8,7,497,435,434,496,432,431,430,429,428,467,512],[20,19,395,38,37,36,394,451,450,38,37,36,449,448,447,446,445,38,37,36,444,443,442,517,516,515,38,37,36,514,513],[20,19,395,38,37,36,394,451,450,38,37,36,449,448,447,446,445,38,37,36,444,443,442,517,516,515,38,37,36,514,518],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,520,432,431,430,429,428,427,426,425,495,519],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,520,432,431,430,534,342,533,532,531,530],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,520,432,431,430,534,342,533,532,531,530,425,425,425,535],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,520,432,431,430,429,428,427,426,425,424,423,422],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,520,432,431,430,429,428,427,426,425,474,473,472,465,464,463,536],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,520,432,431,430,429,428,427,426,425,474,473,472,465,464,463,537],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,520,432,431,430,429,428,427,426,425,424,423,422,425,425,456,538],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,520,432,425,425,425,425,425,425,425,425,425,542,541,540,539],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,520,432,425,425,425,425,425,425,425,425,425,542,541,540,539],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,520,432,431,482,481,480,479,543],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,520,432,431,482,481,480,479,544],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,520,432,431,430,429,428,427,426,425,424,423,422,425,425,456,486,485],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,520,432,431,430,534,342,533,532,531,530,425,425,425,535],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,520,432,431,430,534,342,533,532,531,530,425,425,425,535],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,520,432,431,430,534,342,533,532,531,530,425,425,425,535],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,520,432,431,430,429,428,427,426,425,424,423,422,425,425,456,455],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,520,432,431,430,429,428,427,426,425,424,423,422,425,425,456,543],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,520,432,431,430,429,428,427,426,425,490,489,546,545,478],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,520,432,431,430,429,428,427,426,425,490,489,546,545,538],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,520,432,431,547],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,520,432,431,430,429,428,467,466,465,464,463,462,461,548],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,520,432,431,430,429,428,427,426,425,490,489,546,545,538],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,520,432,431,430,429,551,342,550,549],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,520,432,431,430,429,551,342,550,552],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,520,432,431,554,553],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,520,432,431,554,553],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,520,432,431,430,429,428,427,426,425,556,555],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,520,432,431,430,429,428,427,426,425,474,473,472,465,464,463,557],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,562,561,5,4,3,150,8,7,560,5,4,3,150,8,7,559,5,4,3,150,8,7,558,5,4,3,150,2,200,1,0],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,562,561,5,4,3,150,8,7,560,5,4,3,150,8,7,559,5,4,3,150,8,7,558,5,4,3,150,8,7,568,5,4,3,150,8,7,567,5,4,3,150,8,7,566,5,4,3,150,8,7,565,70,7,5,4,3,150,8,7,564,5,84,83,190,189,83,226,563],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,562,561,5,4,3,150,8,7,560,5,4,3,150,8,7,559,5,4,3,150,8,7,577,5,4,3,150,8,7,576,5,4,3,150,8,7,575,5,13,7,5,4,3,150,8,7,574,5,4,3,150,8,7,573,70,7,5,4,3,150,8,7,572,70,7,5,4,3,150,8,7,571,70,7,5,4,3,150,8,7,570,70,7,5,4,3,150,8,7,569,70,7,5,4,3,150,2,200,1,0],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,562,561,5,4,3,150,8,7,560,5,4,3,150,8,7,559,5,4,3,150,8,7,577,5,4,3,150,8,7,576,5,4,3,150,8,7,575,5,13,7,5,4,3,150,8,7,574,5,4,3,150,8,7,581,5,4,3,150,8,7,580,5,4,3,150,8,7,579,5,4,3,150,8,7,578],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,562,561,5,4,3,150,8,7,560,5,4,3,150,8,7,559,5,4,3,150,8,7,577,5,4,3,150,8,7,576,5,4,3,150,8,7,575,5,13,7,5,4,3,150,8,7,574,5,4,3,150,8,7,581,5,4,3,150,8,7,580,5,4,3,150,8,7,579,5,4,3,150,8,7,578],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,562,561,5,4,3,150,8,7,560,5,4,3,150,8,7,559,5,4,3,150,8,7,577,5,4,3,150,8,7,576,5,4,3,150,8,7,575,5,13,7,5,4,3,150,8,7,574,5,4,3,150,8,7,581,5,4,3,150,8,7,580,5,4,3,150,8,7,579,5,4,3,150,8,7,578],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,562,561,5,4,3,150,8,7,560,5,4,3,150,8,7,559,5,4,3,150,8,7,577,5,4,3,150,8,7,576,5,4,3,150,8,7,575,5,13,7,5,4,3,150,8,7,574,5,4,3,150,8,7,581,5,4,3,150,8,7,580,5,4,3,150,8,7,579,5,4,3,150,8,7,578],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,562,596,5,4,3,150,8,7,595,5,4,3,150,8,7,594,5,4,3,150,8,7,593,5,4,3,150,8,7,592,5,4,3,150,8,7,591,70,7,5,4,3,150,8,7,590,5,4,3,150,8,7,589,5,4,3,150,8,7,588,5,13,7,5,4,3,150,8,7,587,5,4,3,150,8,7,586,70,7,5,4,3,150,8,7,585,70,7,5,4,3,150,8,7,584,70,7,5,4,3,150,8,7,583,5,4,3,150,8,7,582],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,562,596,5,4,3,150,8,7,595,5,4,3,150,8,7,594,5,4,3,150,8,7,593,5,4,3,150,8,7,592,5,4,3,150,8,7,591,70,7,5,4,3,150,8,7,590,5,4,3,150,8,7,589,5,4,3,150,8,7,588,5,13,7,5,4,3,150,8,7,587,5,4,3,150,8,7,586,70,7,5,4,3,150,8,7,585,70,7,5,4,3,150,8,7,584,70,7,5,4,3,150,8,7,599,5,4,3,150,8,7,598,597],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,562,596,5,4,3,150,8,7,595,5,4,3,150,8,7,594,5,4,3,150,8,7,614,5,13,7,5,4,3,150,8,7,613,70,7,5,4,3,150,8,7,612,5,4,3,150,8,7,611,5,4,3,150,8,7,610,70,7,5,4,3,150,8,7,609,70,7,5,4,3,150,8,7,608,5,4,3,150,8,7,607,5,13,7,5,4,3,150,8,7,606,5,4,3,150,8,7,605,70,7,5,4,3,150,8,7,604,603,602,5,4,3,150,8,7,601,5,13,7,5,4,3,150,8,7,600,5,4,3,150,2,200,1,0],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,562,596,5,4,3,150,8,7,595,5,4,3,150,8,7,594,5,4,3,150,8,7,614,5,13,7,5,4,3,150,8,7,613,70,7,5,4,3,150,8,7,612,5,4,3,150,8,7,611,5,4,3,150,8,7,610,70,7,5,4,3,150,8,7,609,70,7,5,4,3,150,8,7,608,5,4,3,150,8,7,607,5,13,7,5,4,3,150,8,7,606,5,4,3,150,8,7,605,70,7,5,4,3,150,8,7,604,603,602,5,4,3,150,8,7,601,5,4,3,150,8,7,615],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,562,596,5,4,3,150,8,7,595,5,4,3,150,8,7,594,5,4,3,150,8,7,614,5,13,7,5,4,3,150,8,7,613,70,7,5,4,3,150,8,7,612,5,4,3,150,8,7,611,5,4,3,150,8,7,610,70,7,5,4,3,150,8,7,609,70,7,5,4,3,150,8,7,608,5,4,3,150,8,7,616],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,562,596,5,4,3,150,8,7,595,5,4,3,150,8,7,594,5,4,3,150,8,7,614,5,13,7,5,4,3,150,8,7,613,70,7,5,4,3,150,8,7,612,5,4,3,150,8,7,611,5,4,3,150,8,7,610,70,7,5,4,3,150,8,7,624,70,7,5,4,3,150,8,7,623,5,4,3,150,8,7,622,70,7,5,4,3,150,8,7,621,5,4,3,150,8,7,620,70,7,5,4,3,150,8,7,619,618,617],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,562,596,5,4,3,150,8,7,595,5,4,3,150,8,7,594,5,4,3,150,8,7,614,5,13,7,5,4,3,150,8,7,613,70,7,5,4,3,150,8,7,612,5,4,3,150,8,7,611,5,4,3,150,8,7,610,70,7,5,4,3,150,8,7,624,70,7,5,4,3,150,8,7,623,5,4,3,150,8,7,622,70,7,5,4,3,150,8,7,621,5,4,3,150,8,7,620,70,7,5,4,3,150,8,7,632,631,630,629,628,627,626,625],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,562,596,5,4,3,150,8,7,595,5,4,3,150,8,7,594,5,4,3,150,8,7,614,5,13,7,5,4,3,150,8,7,613,70,7,5,4,3,150,8,7,612,5,4,3,150,8,7,611,5,4,3,150,8,7,610,70,7,5,4,3,150,8,7,624,70,7,5,4,3,150,8,7,623,5,4,3,150,8,7,622,70,7,5,4,3,150,8,7,621,5,4,3,150,8,7,620,70,7,5,4,3,150,8,7,632,631,630,629,628,627,626,625],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,562,596,5,4,3,150,8,7,595,5,4,3,150,8,7,594,5,4,3,150,8,7,614,5,13,7,5,4,3,150,8,7,613,70,7,5,4,3,150,8,7,612,5,4,3,150,8,7,611,5,4,3,150,8,7,610,70,7,5,4,3,150,8,7,624,70,7,5,4,3,150,8,7,623,5,4,3,150,8,7,622,70,7,5,4,3,150,8,7,621,5,4,3,150,8,7,620,70,7,5,4,3,150,8,7,632,631,630,629,628,627,626,625],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,562,596,5,4,3,150,8,7,635,371,370,634,633],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,562,596,5,4,3,150,8,7,635,371,637,636],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,562,643,5,4,3,150,8,7,642,5,4,3,150,8,7,641,5,13,7,5,4,3,150,8,7,640,5,4,3,150,8,7,639,5,4,3,150,8,7,638,5,4,3,150,2,200,1,12],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,562,665,664,663,662,661,647,646,8,7,660,659,658,657,656,655,654,653,652,651,650,649,648,647,646,2,645,644,245],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,562,665,664,663,662,661,647,646,8,7,660,659,658,657,656,655,654,653,652,651,650,649,648,647,646,2,1,0],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,562,665,664,663,662,661,647,646,8,7,660,659,658,657,656,655,654,653,652,651,650,649,648,647,671,670,669,668,667,666],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,562,673,672,663,662,661,647,646,8,7,660,659,658,657,656,655,654,653,652,651,650,649,648,647,646,2,129,128],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,687,686,684,685,684,683,682,434,681,680,679,678,677,676,675,674],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,687,686,684,685,684,683,682,434,681,680,679,678,677,676,675],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,687,686,684,685,684,683,682,434,681,680,679,678,677,676,675],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,687,686,684,685,684,683,682,434,681,680,689,688],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,687,686,684,685,684,683,682,434,681,680,679,691,690],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,687,686,684,685,684,683,682,434,681,680,679,693,692],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,699,698,697,696,695,694],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,705],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,699,711,710,709,708,707,706],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,699,718,220,717,716,715,714,713,712],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,725,724,723,722,721,720,719],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,729,728,727,709,726],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,729,728,727,709,726],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,699,711,737,736,220,735,734,733,732,731,730],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,699,711,737,747,746,745,744,743,742,741,740,739,738],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,729,728,752,751,750,749,748],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,729,728,752,751,750,749],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,699,711,737,747,746,745,754,753],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,699,711,737,747,746,745,754,755],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,699,718,220,756,734,733,732,740,739,738],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,729,728,757],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,699,718,220,717,716,715,714,713,759,758],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,729,728,727,709,726],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,729,728,727,709,708,707,760],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,762,761],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,772,220,717,716,715,714,713,759,771,770,769,768,767,766,765,764,763],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,772,220,735,734,733,776,775,774,773],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,699,718,220,781,780,779,778,777],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,699,789,757,788,757,787,786,785,784,783,782],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,729,728,757,788,757,787,786,785,790,783],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,729,728,757,788,757,787,786,785,790,783],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,725,792,791],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,725,792,791],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,699,711,737,736,220,717],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,699,711,737,736,220,717],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,793,734,733,732,740,739,738],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,699,799,734,733,732,740,798,797,796,795,794],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,699,799,734,733,732,740,798,800],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,699,711,737,736,220,756,734,733,732,740,739,738],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,699,711,737,736,220,756,734,733,732,740,739,738],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,772,688,717,805,804,803,802,801],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,772,688,717,805,804,803,802,806],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,772,688,717,805,807],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,729,728,727,709,708,707,706,808],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,729,728,727,709,708,707,706,808,809],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,725,724,723,813,812,811,810],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,725,724,723,813,812,811,810],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,793,734,733,776,775,774,773,821,820,819,818,817,651,816,815,815,814],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,793,734,733,776,775,774,773,821,820,819,818,817,651,822],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,699,799,734,733,732,740,739,738],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,699,711,737,747,746,745,744,743,827,826,825,824,823],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,699,711,737,736,220,756,734,733,776,775,774,773,828,492],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,699,711,710,709,708,707,706],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,699,711,737,736,688,717,805,804,803,802,836,835,834,833,832,831,830,829],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,699,711,737,736,688,717,805,804,803,802,836,835,834,833,832,831,830,829],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,699,718,220,756,734,733,732,731,838,837],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,699,718,220,756,734,733,732,731,838,837],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,699,799,734,733,732,740,739,738],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,793,734,733,776,775,774,773,821,841,840,651,839],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,793,734,733,776,775,774,773,821,841,840,651,839],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,793,734,733,776,775,774,773,821,841,840,651,839],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,847,846,845,844,697,696,695,843,842],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,699,711,710,709,708,707,706,808,809,850,849,848],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,699,711,737,736,220,735,734,733,732,731,851],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,699,711,737,736,220,735,734,733,732,731,852],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,793,734,733,776,775,774,773,821,820,819,818,817,651,816,815,815],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,699,711,710,854,853],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,699,718,688,781,858,857,856,855],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,729,728],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,729,728,757,788,757,787,786,785,784,783,782,861,860,859],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,704,425,703,702,701,700,729,728,757,788,757,787,786,785,784,862],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,864,686,684,685,684,683,682,434,681,680,679,678,677,676,863],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,864,686,684,685,684,683,682,434,681,680,679,691,867,866],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,864,686,684,685,684,683,682,434,681,680,679,870,869,868],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,864,686,684,685,684,683,682,434,681,680,873,425,425,872,871],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,864,686,684,878,877,876,875,874,97],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,864,686,684,878,877,876,875,874,97],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,864,686,684,878,877,882,881,880,879],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,864,686,684,878,877,882,881,880,879],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,864,686,684,878,884,883],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,899,898,897,896,895,894,893,892,891,890,889,888,887,886,885],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,899,898,897,896,895,894,893,892,891,890,889,888,887,886,885],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,899,898,897,896,895,894,893,892,891,890,889,913,912,911,886,885,910,909,908],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,899,898,897,896,895,894,893,892,891,890,889,913,912,916,220,915,914],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,899,898,897,896,895,894,893,892,891,890,889,913,912,916,220,919,918,917],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,899,898,897,896,895,894,893,892,891,890,889,913,912,911,886,885,910,909,908],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,899,898,897,896,895,894,893,892,891,890,889,913,912,911,886,885,910,909,908],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,899,898,897,896,895,894,893,892,891,890,921,920,887],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,899,898,897,896,895,894,893,892,891,890,925,924,923,922],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,899,898,897,896,895,894,893,892,891,890,925,924,923,927,926],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,899,898,897,896,895,894,893,892,891,890,921,928],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,930,684,929],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,938,937,936,935,936,935,934,933],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,944,943,747,746,745,744,942,941,940,939],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,953,952,734,733,776,951,950],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,913,912,911,886,885,910,909,954],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,913,912,911,886,885,910,909,954],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,944,943,747,746,745,744,942,941,955],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,957,956,220,735,734,733,732,731],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,964,737,747,746,745,744,963],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,964,737,747,746,745,744,942,941,940,939,967],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,968],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,969,220,735,734,733,732,740,739,738],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,944,943,747,746,745,744,743,742,741],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,980,891,979,978,977,974,976,975,974,973,972,971,749,970],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,980,891,979,978,977,974,976,975,974,973,972,983,982,981],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,984,220,735,734,733,732,740,739,738],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,988,891,987,986,734,733,732,731,985],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,992,734,733,776,775,774,773,821,991,990,841,989],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,997,996,974,976,975,974,973,995,783,994,993],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,984,220,717,716,715,714,713,759,771,770,769,768,767,766,765,764,998],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,1000,999,736,220,735],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,992,734],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,944,943,736,220,756,734,733,732,740,798,797,1005,1004,1003,1002,1001],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,988,891,987,1007,757,788,757,787,786,785,784,783,1006],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1009,220,756,734,733,776,951,1008],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,988,891,987,1011,943,736,220,756,734,733,776,775,774,773,821,1010],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,984,220,756,734,733,732,731,1012],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1015,1014,1013],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1015,1014,1019,1018],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1016,1021,1020],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1016,1021,1023],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1016,1021,684],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1032,1031,1030,1029,1028,342,1027,1026,1025,1024],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1032,1031,1030,1029,1028,342,1027,1026,1025,1033],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,984,220,756,734,733,732,731,1012],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,984,220,756,734,733,732,731,1012],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,944,943,747,746,745,744,942,941,1034],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,944,943,747,746,745,744,942],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,944,943,747,746,745,744,1035],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,957,977],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,980,891,979,1036,734,733,732,740,739,738],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,980,891,979,1036,734,733,732,740,739,738],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1009,220,756,734,733,732],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,980,891,979,1039,1038,976,1038,973,971,1037],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,953,952,734,733,776,775,774,773,821,991,990,1041,1041,991,990,991,990,1041,1040],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,1000,999,747,746,745,744,743,742,741,740,798,797,1005,1004,1043,1002,1042],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,984,220,735],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1044,952,734,733,776,775,774,773,821,991,990,1041],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1044,952,734,733,776,775,774,773,821,991,990,1041],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,1049,1048,1047,1046,1045,862],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,953,952,734,733,732,740,798,1053,1004,1052,1051,1050],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,953,952,734,733,732,740,798,1053,1004,1052,1051,1050,1054],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,953,952,734,733,732,740,798,1053,1004,1052,1051,1050,1054],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,953,952,734,733,732,740,798,1053,1004,1052,1051,1050,1054],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,953,952,734,733,732,740,798,1053,1004,1052,1051,1050,1054],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,1055,1038,976,1038,973],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,957,1056,952,734,733,776,775,774,773,821,991,990],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,1058,974,976,975,974,973,995,783,994,1057],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,1058,974,976,975,974,973,995,783,994,1057],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,984,220,735,734,733,732,731,1059],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,980,891,979,1064,220,756,734,733,732,740,798,797,1005,1004,1003,1002,1063,1062,1061,1060],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,980,891,979,1064,220,756,734,733,732,740,798,797,1005,1004,1003,1002,1063,1062,1061,1060],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,988,891,987,1011,943,736,1065],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,1071,1070,1069,1068,1067,1066],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,1072],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,1072],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,992,734,733,776,775,774,773,821,991,990,1041,1073],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,992,734,733,776,775,774,773,821,991,990,1041,1040],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,1000,999,747,746,745,744,743,742,741,740,1074,651],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,1000,999,747,746,745,744,743,742,741,740,739,738],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,1000,999,747,746,745,744,743,742,741,740,739,738],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,1000,999,747,746,745,744,743,742,741,740,1075],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,980,891,979,978,1056,952,734,733,732,740,739,738],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,980,891,979,978,1056,952,734,733,732,740,739,738],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,969,220,735,734,733,732,740,739,738],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,957,977,974,976,975,974,973,995,749],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,913,912,1076],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,969,220,717,716,1079,1078,1077],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,957,1056,952,734,733,732,740,798,1053,1004,1052,1083,1082,1081,1080],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,964,737,736,220,735,734,733,732,731,1087,1086,1085,1084],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,984,220,756,734,733,1088],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1009,220,717,716,715,714,713,759,771,770,769,768,767,766,765],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1009,220,717,716,1079,1078,1089],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,988,891,987,1011,943,747,746,745,744,743,742,741,740,739,738],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,980,891,979,978,956,688,781,1091,1090],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,1095,1094,1093,1092],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,988,891,987,1100,688,781,858,857,1099,1098,1097,1096],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,980,891,979,1036,734,733,776,775,774,773,828],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1016,1021,684,1106,1105,1104,1103,1102,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1016,1021,684,1106,1105,1104,1103,1102,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1016,1021,684,1106,1105,1104,1103,1102,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1016,1021,684,1106,1105,1104,1103,1102,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1016,1021,684,1106,1105,1104,1103,1102,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1016,1021,684,1106,1105,1104,1103,1102,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1109,1108,1107],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,1110],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1115,1114,1030,1113,1112,1111,922],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1115,1114,1030,1118,342,1117,1116],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1120,1031,1030,1029,1112,1119],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1120,1031,1030,1029,1112,1121],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1120,1031,1030,1029,1112,1122],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1124,1123],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1021,684,1106],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1015],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1015,1127],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,930,684,1129,1128],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1133,1016,1132,1131,1130],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,938,937,936,935,936,935,934,933,1134],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1137,1136,788,1135],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,953,952,734,733,732,731,1139,1138,859,967],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,953,952,734,733,732,731,1139,1138,859,967],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,953,952,734,733,732,731,1139,1138,859,967],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,953,952,734,733,732,731,1139,1138,859,967],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,980,891,979,1064,688,717,805,804,803,802,836,835,834,833,832,831,830,829],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,980,891,979,1064,688,717,805,804,803,802,836,835,834,833,832,831,830,829],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,988,891,987,1011,943,747,746,745,744,743,742,741,740,798,797,1005,1004,1043,1002,1063,1143,1142,1141,1140],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1044,952,734,733,732,731,1139,1145,1144],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,980,891,979,978,956,220,756,734,733,732,740,798,797,1005,1004,1003,1147,1146],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,988,891,987,1011,943,736,220,756,734,733,1088],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1149,943,736,220,717,716,715,714,713,759,771,770,769,768,1148],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1149,943,736,220,717,716,715,714,713,759,771,770,769,768,1148,1150],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,969,220,717,716,715,714,713,712],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,888,924,1151],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,953,952,734,733,776,775,774,773,821,991,990,1041,1041,991,990,991,990,1152],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1044,952,734,733,776,951,950],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,988,891,987,1011,943,736,688,717,805,804,803,802,836,835,834,833],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,988,891,987,1011,943,736,688,717,805,804,803,802,836,835,834,833,832,1153],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,988,891,987,1011,943,747,746,745,744,743,742,741,1154],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,988,891,987,1011,943,747,746,745,744,743,742,741,1155],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,953,952,734,733,776,775,774,773,821,841],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,980,891,979,1064,220,735,734,733,732,740,1074,651],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,980,891,979,1064,220,735,734,733,732,740,1074,1156],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,980,891,979,1159,1158,1157],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,964,737,736,688,717,805,1160],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,992,734,733,776,775,774,773,821,991,990,1041,1161],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,964,737,736,220,717,716,715,714,713,759,771,770,769,768,767,766,765],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,964,737,736,220,717,716,715,714,713,759,771,770,769,768,767,766,765],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1044,952,734,733,776,775,774,773,821,991],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,992,734,733,732,740,798,1053,1004,1052,1083,1082,1081,1162],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,964,737,736,220,717,716,715,714,713,759,771,770,769,768,767,766,765],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,984,220,756],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,980,891,979,978,956,220,735,734,733,732,740,739,738],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1044,952,734,733,776,775,774,773,821,991,990,841,1163],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1149,943,736,220,717,716,715,714,713,759,771,770,769,768,767,766,765,764,763],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,964,737,736,220,717,716,715,714,713,759,771,770,769,768,767,766,765],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,964,737,736,220,717,716,715,714,713,759,771,770,769,768,767,766,765,1164],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,988,891,987,1011,943,736,688,781,858,857,1099,1098,1097,1096,1165],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,957,956,220,756,734,733,732,731,1087,1086,1085,1084],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,988,891,987,1168,1167,1166,708],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1009,220,717,1169],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,913,912,1170],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,913,912,911,886,1171],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,980,891,979,1174,1038,976,1038,973,983,1173,1172],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,988,891,987,986,734,733,776,775,774,773,821,991,990,1041,1175],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,988,891,987,986,734,733,776,775,774,773,821,991,990,1041,1175],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1176],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1133,1016,1132,1131,1181,1180,1179,1178,1177,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1133,1016,1132,1131,1181,1180,1179,1178,1177,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1133,1016,1132,1131,1181,1180,1179,1178,1177,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1133,1016,1132,1131,1181,1180,1179,1178,1177,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1133,1016,1132,1131,1181,1180,1179,1178,1177,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1133,1016,1132,1131,1181,1180,1179,1178,1177,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1133,1016,1132,1131,1181,1180,1179,1178,1177,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1016,1125,1016,1184,1183,1182,933],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1185],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1186,1123],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1032,1031,1030,1187,1028,342,1027,1026],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1032,1031,1030,1187,1028,342,1027,1026],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1191,684,1106,1190,1189,1188,539],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1021,1192],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1191,684,1106,1196,1195,1194,425,1193],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1199,1198,1197],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1199,1198],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,1203,1202,1201,1200],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1186,1204],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,930,684,1207,1206,1201,1205],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1209,1208],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1209,1208],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1209,1208],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1209,1208],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1209,1208],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1209,1208],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1209,1208],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1209,1208],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1209,1208],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1209,1208],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1209,1208],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1209,1208],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,938,937,936,935,936,935,1210,1134],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1016,1125,1016,1184,1183,1176],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1213,1212,1211],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,980,891,979,978,956,220,735,734,733,1214],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,984,220,717,716,715,714,713,759,771,770,769,768,1217,1216,1215],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,997,996,974,976,975,974,973,972,983,982,981],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,997,996,974,976,975,974,973,995,783,1220,1219,861,1218],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,997,996,974,976,975,974,973,995,783,1220,1219,861,1218],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,1000,999,747,746,745,744,743,827,826,825,824,823],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,1224,1223,788,1222,1221],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,988,891,987,1168,1167,1166],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1009,688,717,805,804,803,802,836,835,834,833,832,831,830,829],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,1058,974,976,975,974,973,995,749,1226,1225],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,944,943,747,746,745,744,743,742,741,740,798,797,1005,1004,1043,1002,1001],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1149,943,736,1065,1228,1227],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,988,891,987,1100,688,717,805,804,803,802,801],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,988,891,987,986,734,733,732,740,739,738],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,944,943,747,746,745,744,743],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,944,943,747,746,745,744,743],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,964,737,736,220,756,734,1229],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,964,737,736,220,756,734,733],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,988,891,987,1100,688,781,858,857,1230],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,988,891,987,1100,688,781,858,857,1230],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,988,891,987,1100,688,781,858,857,1231],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,953,952,734,733,776,775,774,773,821,991,990,1041,991,990,1041],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1044,952,734,733,776,775,774,773,821,991,990,991,990,1232],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,953,952,734,733,732,731,1139,1138,859],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,980,891,979,978,956,220,717,716,715,714,713,759,771,770,769,768,1234,1233],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,1236,1235,1038,976,1038,973,971,749],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1016,1125,1016,1184,1237],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1016,1125,1016,1239,1238],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,1110],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1016,1125,1016,1032,1031,1030,1244,1243,1242,1241,1240],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1016,1021,684,1106,1105,1249,1248,1247,1246,1245],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1016,1125,1016,1209,1252,1251,1250],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1253],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1182,1254],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1182,1254],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1115,1114,1030,1113,1112],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1115,1114,1030,1113,1112,1121],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1115,1114,1030,1256,1255,1116],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1261,1260,1030,1259,1258,1257],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1261,1260,1030,1259,1258],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1191,684,1106,1196,1195,1264,1263,1262,539],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1186,1265],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1186,1266],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1176,1267],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1268,1123],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1268,1123],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1271,1260,1030,1270,1028,342,1027,1269],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1271,1260,1030,1270,1028,475],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1268,1238],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1274,1273,1272,1273,1272,1273,1272,1273,1272,1273,1272],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1274,1273,1272,1273,1272,1273,1272,1273,1272,1273,1272],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1274,1273,1272,1273,1272,1273,1272,1273,1272,1273,1272],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1274,1273,1272,1273,1272,1273,1272,1273,1272,1273,1272],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1274,1273,1272,1273,1272,1273,1272,1273,1272,1273,1272],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1274,1273,1272,1273,1272,1273,1272,1273,1272,1273,1272],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1274,1273,1272,1273,1272,1273,1272,1273,1272,1273,1272],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1274,1273,1272,1273,1272,1273,1272,1273,1272,1273,1272],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1274,1273,1272,1273,1272,1273,1272,1273,1272,1273,1272],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1274,1273,1272,1273,1272,1273,1272,1273,1272,1273,1272],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,930,684,1207,1206],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1016,1021,684,1106,1105,1104,1103,1275],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1149,943,736,220,756,734,733,732,740,1277,1276],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,980,891,979,1159],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,944,943,747,746,745,744,743,742,741,740,798,797,1005,1004,1043,1279,1278],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,988,891,987,1011,943,736,220,717,716,715,714,713,759,771,770,769,768,767,766,765],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,957,1056,952,734,733,732,731,838,1280],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,957,1056,952,734,733,732,731,838,1280],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,1071,1070,1069,1068,1067,1283,1282,1281],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1149,943,736,220,717,716,715,714,713,759,771,770,769,768,767,766,765],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,984,688,717,805,804,803,802,1286,1285,1284],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,1236,1287],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,957,956,688,717,805,804,803,802,1288],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,984,220,756,734,733,732,740,798,797,1005,1290,1289],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,980,891,979,1064,220,756,734,733,732,740,739,738],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,980,891,979,1064,220,756,734,733,732,740,739,738],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,964,737,736,220,756,734,733,732,740,798,797,1005,1004,1003,1291],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,964,737,736,220,756,734,733,732,740,798,797,1005,1004,1003,1291],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,964,737,736,220,756,734,733,732,740,798,797,1005,1004,1003,1291],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,980,891,979,978,956,220,735,734,733,732,740,798,797,1292],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,969,220,735,734,733,732,740,1075],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,969,220,735,734,733,732,740,1293],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,1299,651,1298,1297,1296,1295,1294],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,944,943,747,1300,688],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,980,891,979,978,956,220,717,716,715,714,713,759,771,770,769,768,767,766,765],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,988,891,987,1100,220,735,734,733,776,775,774,773,821,1301],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,988,891,987,1011,943,736,220,756],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,1000,999,747,746,745,754],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,957,956,220,717,716,715,714,713,759,771,770,769,768,767,766,765],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,969,220,756,734,733,732,731,1302],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,1303],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,980,891,979,1064,220,756,734,733,732,740,798,797,1304],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,1000,999,736,220,717,716,715,714,713,759,771,770,769,768,767,766,765,764,1305],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1309,1307,976,1308,1307,973,1306,783],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,988,891,987,986,734,733,776,775,774,773,821,1301],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,1311,1310,342,1027,1026,1025],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,1311,1310,342,1027,1026,1025],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,957,977,974,976,975,974,973,995,749,1226,1313,1312],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,988,891,987,1011,943,736,220,756,734,733,732,740,798,1314],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,953,952,734,733,732,740,1075],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1016,1191,684,1106,1316,1315],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1016,1191,684,1106,1317],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1016,1021,684,1106,1105,1249,1318],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1186,1320,1319],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1186],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1176,1321],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1271,1260,1322],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1176],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1326,1325,1324,342,1323,475],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1328,1327],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1329],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1191,684,1106,1196,1331,1330],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1268,1123],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1182,1254],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1182,1254],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1126,1329],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1032,1031,1332,492],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,969,220,717,716,1079,1334,1333],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,913,912,911,886,885,910,909,1335],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,1000,999,736,220,717,716,1079,1078],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,992,734,733,776,775,774,773,821,991,990,1041],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,980,891,979,1036,734,733,776,775,774,773,821,991,990,991,990,1041,1040],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,957,956,220,717,716,715,714,713,759,771,770,769,768],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,992,734,733,776,775,1336],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,1000,999,736,220,717,716,715,714,713,759,771,770,769],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,1000,999,736,220,717,716,715,714,713,759,771,770,769],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,1000,999,736,220,717,716,715,714,713,759,771,770,769],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,944,943,736,688,717,805,804,1337],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,980,891,979,1064,220,756,734,733,732,740,798,797,1005,1004,1003,1279],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,980,891,979,1064,220,756,734,733,732,740,798,797,1005,1004,1003,1279],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,964,737,736,220,756,734,733,732,740,739,738],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1149,943,747,746,745,744,743,1338],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1149,943,747,746,745,744,743,827],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,1071,1070,1069,1068,1067,1283,1282,1339],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1149,943,747,746,745,744,743],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1149,943,747,746,745,744,942,941,940,939],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1149,943,747,746,745,744,942,941,940,939],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1343,1342,1341,1340],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1343,1342,1341,1344],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,992,734,733,732,740,798,1053,1004,1052,1083],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,953,952,734,733,732,740,739,738],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,944,943,747,746,745,744,942,941,940,939],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,984,220,717,716,715,714,713,759,771,770,769,768,767,766,765,764,1305],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,984,220,756,734,733,732,740,798,797,1346,1345],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,953,952,734,733,776,775,774,773,821,991,990,1041,991,990,1301],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,964,737,736,220,756,734,733,732,740,798,797,1005,1004,1003,1348,1347],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,964,737,736,220,756,734,733,732,740,798,797,1005,1004,1003,1348,1347],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,964,737,747,1350,1349],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1352,1351],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1354],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1016,1125,1016,1239,1123],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1016,1125,1016,1239,1123],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1186,1320,1355],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1115,1114,1030,1118,342,1117,1116],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1115,1114,1030,1118,342,1117,1116],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1359,1358,1357,1356],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1191,1360],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1363,342,1362,1361,1267],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1369,1368,492],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1369,1368,492],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1369,1368,492],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1369,1368,492],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1369,1368,492],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1369,1368,492],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1369,1368,492],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1369,1368,492],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1369,1368,492],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1369,1368,492],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1369,1368,492],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1369,1368,492],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1369,1368,492],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1369,1368,492],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1369,1368,492],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1369,1368,492],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1369,1368,492],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1376,1375,342,1376,1375,342,1374,1373,342,1027,1026,1025],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1376,1375,342,1376,1375,342,1374,1373,342,1027,1026,1025],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1376,1375,342,1376,1375,342,1374,1373,342,1027,1026,1025],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1378,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1363,1379],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1363,342,1380],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1381,1361,1267],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1381,1361,1382],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1384,1383,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1385,1373,475],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1384,1383,1361,1267],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,1245],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,475],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,475],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,475],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1369,1368],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1384,1383,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1378,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1378,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1374,1373,342,1027,1026,1025],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1378,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1378,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1378,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1378,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1378,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1378,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1378,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1378,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1378,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1378,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1378,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1378,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1378,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1378,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1378,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1378,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1378,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1378,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1378,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1378,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1378,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1378,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1378,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1374,1383,1361,1267],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1374,1383],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1386],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1388,1387],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1374,1373,1245],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1376,1375,342,1376,1375,342,1389,1134],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1389,1134],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1385,1391,1390],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1376,1375,342,1376,1375,342,1381,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1392],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1363,342,1393],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1363,475],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1378,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1376],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1369,1395,1394],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1363,1396],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,864,686,684,685,684,683,682,434,681,680,679,1398,1397],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,864,686,684,685,684,683,682,434,681,680,873,425,425,1399],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402,1401,1400],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402,1401,1400],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,809,850,849,848],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,809,850,849,848],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,809,850,849,848],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,809,1404],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,1405],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402,1406,1116],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,809],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1407],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,809,1408],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402,1401,1409],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402,1401,1411,1410],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1412],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402,1401,1414,1413],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402,1401,1414,1415],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1416],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,809,1417],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,809,1417],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,809,850,849,848],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402,1401,1419,1418],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1416],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402,1420],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402,1420],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402,1406,1116],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402,1401,1421],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402,1425,1424,1423,1422],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402,1401,1427,1426],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402,1401,1427,1428],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402,1401,1419,1429],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,809],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1412],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,1430],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402,1401,1432,1431],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402,1401,1432,1431],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,809],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1416],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,809],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,809],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,809,1404],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402,1401,1434,1121,1433],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402,1401,1435],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402,1401,1436],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402,1401,1436],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,809],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1416],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402,1406],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,809,850,849,848],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402,1401,1436],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402,1401,1400],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402,1401,1400],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402,1406,1116],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402,1406,1116],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402,1401,1437,1255],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402,1401,1432,1431],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1412],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1438],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1440,1439],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1440,1439],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402,1401,1444,1443,1442,1441,492],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1445],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,809,1446],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402,1401,1427,1447,1255,1116],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402,1425,1424,1423],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402,1425,1424,1423,1422],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,1448],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1440],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,709,708,707,706,808,1402],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,1449],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,954],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1450],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1452,1451],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1452,1455,1454,1453],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1452,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1452,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1452,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1452,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1452,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1452,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1452,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1452,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1452,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1452,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1452,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1452,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1452,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1452,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1452,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1452,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1452,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1452,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1452,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1452,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1452,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1452,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1452,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1452,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1452,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1452,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1452,1101],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1452,1122,492],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1335],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1450],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1456],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,954],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,908],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,908],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,908],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,1457],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1452],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,1457],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1452],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1450],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1450],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1450],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,954],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1452],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1452,1455,1454,1458],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1452,1455,1454,1458,1459],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,909,1450],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1403,912,911,886,885,910,1460],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,899,898,897,896,895,894,893,892,891,890,889,913,912,911,886,885,910,909,1452,1462,1461],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,899,898,897,896,895,894,893,892,891,890,889,913,912,911,886,885,910,909,1452,1462,1461],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,899,898,897,896,895,894,893,892,891,890,889,913,912,911,886,885,910,909,1452,1464,1463],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,899,898,897,896,895,894,893,892,891,890,889,913,912,911],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,899,898,897,896,895,894,893,892,891,890,889,913,912,916,688,1465],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,899,898,897,896,895,894,893,892,891,890,921,1467,1466,912,911],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,899,898,897,896,895,894,893,892,891,890,921,920,924,923],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1184,1183,1182,933],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,938,937,936,935,936,935,936,935,1468],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,938,1471,1470,1469],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,1049,1048,1047,1046,1045,862],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1149,943,736,220,781,780,1472],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1149,943,736,220,781,780,779,778,1473],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,1000,999,747,746,745,744,942,1474],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,1000,999,747,746,745,744,942],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,964,737,736,220,756,734,733,732,740,798,797,1005,1004,1003,1475],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1149,943,736,220,756,734,733,732,740,739,738],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1149,943,736,220,756,734,733,732,740,739,738],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,953,952,734,733,776,775,774,773,821,991,990,1041,1041,841,1476],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1009,688,717,805,804,803,802,836,835,834,833,832,831,830,829],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1009,688,717,805,804,803,802,836,835,834,833,832,831,830,829],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,997,996,974,976,975,974,973,995,1477],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,944,943,736,688,717,805,804,803,802,836,835,834,833,832,831,830,829],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1149,943,747,746,745,744,743,742,741,740,798,797,1005,1004,1043,1002,1063,1143,1142,1478],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,925],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,1481,1480,1479],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,1303,1483,1482],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,1303,1483,1482],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1044,952,734,733,732,731,1139,1485,1484],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1149,943,747,746,745,744,942,941,1034,1486],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,1055,1038,976,1038,973,971,783,1487,1219,861,1218],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1186,1265],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1186,1265],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1353,1489,1488,723,1025],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1032,1031,1030,1490],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1032,1031,1030,1490],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,944,943,736,220,735,734,733],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,1491,1178,1177,1119],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,1491,1178,1177,1121],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,1236,1235,1038,976,1038,973,971,783,1487,1219,861],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1149,943,736,220,735,734,733,776,775,1336],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,1303,1493,1492],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,1303,1493,1492],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,1303,1493,1494],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,984,220,735],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,984,220,735,1495],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,984,220,735,1495],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,1299,651,1298,1297,1296,1497,1496],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,957,1500,1499,1167,1166,1498],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,969,220,717,716,715,714,713,759,1502,1501],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,992,734,733,732,731,1012],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,964,737,747,746,745,744],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,1000,999,747,746,745,744,942,941,940,939],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,1000,999,736,220,756,734,733,732,740,798,797,1005,1004,1003,1002,1063,1143,1142,1503],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,964,737,747,746,745,744,743,827,826,825,824,823],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1009,220,717,716,1079,1334,1504],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,1000,999,747,746,745,1505],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1506],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,964,737,747,1507],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,953,952,734,733,776,775],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,957,1509,1508],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1016,1191,1014,1019,1018,1205],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1510,1198,1014,1013],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1510,1198,1014,1013],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1510,1198,1014,1013],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1510,1198,1014,1013],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1510,1198,1014,1013],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1510,1198,1014,1013],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1510,1198,1014,1013],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1510,1198,1014,1013],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1510,1198,1014,1013],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1510,1198,1014,1013],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1510,1198,1014,1013],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1510,1198,1014,1013],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1510,1198,1014,1013],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1510,1198,1014,1013],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1510,1198,1014,1013],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1510,1198,1014,1013],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1510,1198,1014,1013],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1510,1198,1014,1013],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1510,1198,1014,1013],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1510,1198,1014,1013],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1510,1198,1014,1013],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1510,1198,1014,1013],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1510,1198,1014,1013],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1510,1198,1014,1013],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1510,1198,1014,1013],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1510,1198,1014,1013],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1510,1198,1014,1013],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1510,1198,1014,1013],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1510,1198,1014,1013],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1510,1198,1014,1013],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1120,1031,1030,1490,1122],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1120,1031,1030,1490,1511],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1120,1031,1030,1490,1511,1512],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1261,1260,1030,1259,1258],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1261,1260,1030,1259,1514,1513],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,930,684],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,930,684],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1515,1273,1272,1273,1272,1273,1272,1273,1272,1273],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1184,1183,1176,1267],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1209,1252,1251,1250],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1209,1252,1251,1250],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1186,1516,1240],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1186,1516],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1186,1517],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,957,1520,1519,1167,1166,708,707,1518],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,953,952,734,733,776,775,774,773,821,991,990,1041,1041,841,840],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,953,952,734,733,776,775,774,773,821,991,990,1041],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,953,952,734,733,776,775,774,773,821,991,990,1041,1521],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,953,952,734,733,776,775,774,773,821,991,990,1041,1522],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,984,220,717,716,715,714,713,759,771,770,769,768,767,766],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1149,943,747,746,745,1523],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,957,977,974,976,975,974,973,995,749,1226,1225,1524],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,984,220,756,734,733,732,740,798,1525],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,953,952,734,733,732],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,1299],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1149,943,736,688,781,1091],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,1526,1048,1047,1046,1045,862],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1044,952,1530,825,1529,824,1528,1527],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,953,952,734,733,732,731,1531],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,953,952,734,733,732,1155],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1182,933,1134],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1534,1533,1532],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1016,1125,1016,1209,1535],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1191,684,1106,1190,1537,1248,1536],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1540,1031,1030,1244,1243,1539,1538],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1126,1016,1186,1123],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1542,1176,1541],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1543],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1126,1182],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1126,1182,1254],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1271,1260,1030,1544,1255,1116],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1353,1489,1546,1206,1315,1545],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1550,1549,1548,1547],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1133,1555,1554,1553],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,957],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,1236,1235,1038],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,1236,1235,1038],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,1058,974,976,975,974,973,972,1556],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1149,943,736,220,735],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1149,943,736,220,735],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,992,734,733,732,740,798,1053,1004,1052,1557],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,992,734,733,732,740,798,1053,1004,1052,1083],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,992,734,733,732,740,798,1053,1004,1052,1083],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,957,956,688,717,805,804,803,802,1286,1558,1150],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,1000,999,736,220,756,734,733,776,775,774,773,821,1559],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,1000,999,736,220,756,734,733,776,775,774,773,1560],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,957,977,974,976,975,974,973,972,983,982,1561],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,957,977,974,976,975,974,973,972,983,982,981],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,957,977,974,976,975,974,973,972,983,982,981],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,1567,1566,1539,1565,1564,1563,1562],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,1303,1483,1569,1568],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,964,737,747,746,745,744,1570],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,944,943,736,688,717,805,804,803,802,1286,1285,1284],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,944,943,736,688,717,805,804,803,802,1286,1285,1284],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,957,956,220,756,734,733,776,775,1336],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,921,1467,1466,912,1571],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,944,943,736,220,756,734,733,732,740,739,738],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,925,887,1572],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,957,956,220,756,734,733,732,740,739,738],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,1000,999,747,746,745,744,743,827,826,1574,1573],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1044,952,734,733,776,775,774,773,821,991,990,1301],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1149,943,736,220,717,716,715,714,713,759,771,770,769,768,767,766,765],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,957,1520,1519,1167,1166,726],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,1303,1575],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1016,1191,684,1106,1196,1195,1576],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1016,1125,1016,1209,1252,1251,1250,1577],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1016,1125,1016,1209,1252,1251,1250,1577],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1578],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1016,1021,684,1106,1105,1249,1248,1247,1246,342,1117,1116],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1016,1268,1123],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1016,1125,1016,1579,1198,1014,1013],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1578],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,1110],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1580],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1191,684,1106,1190,1189,1188,539],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1182,933,1134],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1555,1554,1553],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1329],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1021,684,1106,1316],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1271,1260,1030,1270,1028,342,1027],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1268],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1542],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1581],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,938,1471,1470,1582,1206,1330],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1016,1542,1176,1541],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1353,1552,684,1551,684,1586,1585,1584,1243,1583],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,938,937,936,935,936,935,936,935,934,933,1134],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,938,937,936,935,936,935,936,935,1468],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,938,937,936,935,936,935,936,935,1468,1587],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,938,937,936,935,1210,1134],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,957,956,220,735,734,733,732,731,1588],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,957,956,220,735,734,733,732,731,1588],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1149,943,736,220,717,716,715,714,713,759,771,770,769,768,767,766,765],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,957,956,220,717,716,715,714,713,759,771,770,769,768,1234,1593,1592,1591,1590,1589],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,957,956,220,717,716,715,714,713,759,771,770,769,768,1234,1593,1592,1591,1590,1594],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,969,220,717,716,1079],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,957,1500,1499,1167,1166],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1009,220,756,734,733,732,731,1302],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,944,943,747,746,745,744,743,742,741,740,739,738],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,953,952,734,733,732,740],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1149,943,747,746,745,744,743,742,1595],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,1000,999,747,746,745,744,743,742,741,740,739,738],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,944,943,747,746,745,754],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,1095,1094,788,1599,1598,783,1597,1596],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,1055,1038,976,1038,973,971,783,1487,1219,1603,1602,1601,1600],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,1055,1038,976,1038,973,971,783,1487,1219,1603,1602,1601,1600],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,1299,651,1298,1297,1296,1604,1050],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,1299,651,1298,1297,1296,1604,1524],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,964,737,736,688,717,805,804,803,802,836,835,834,833,832,831,1605],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,944,943,747,746,745,744,942,1606],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,944,943,747,746,745,744,942,1474],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,969,220,756,734,733,732,740,798,797,1005,1004,1003,1002,1063,1143],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,969,220,756,734,733,732,740,798,797,1005,1004,1003,1002,1063,1143,1142,1607],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1044,952,734,733,776,775,774,773,821,991,990,991],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1044,952,734,733,776,775,774,773,821,991,990,991],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1044,952,734,733,776,775,774,773,821,991,990,991],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1044,952,734,733,776,775,774,773,821,991,990,991],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,984,220,756,734,733,776,775,774,773,821,841],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,1000,999,736,220,756,734,733,732,740,798,797,1005,1004,1003,1608],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,984,220,781,780,779,778,1609],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,921,1610],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,984,688,717,805,804,803,802,836,835,834,833,832,831,830,829],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1115,1114,1030],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1115,1114,1030,1612,1611],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1124],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1016,1126,1016,1022,1016,1125,1016,1017,1016,1124],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1184,1183,1555,1554,1553],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,1299,1038,976,1038,973,971,1613],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,1000,999,736,220,735,734,733,776,775,774,773,821,841,1614],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1149,943,747,746,745,744,743,742,741,740,798,797,1005,1004,1043,1002,1001],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1149,943,747,746,745,744,743,742,741,740,798,797,1005,1004,1043,1002,1042],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1044,952,734,733,732,740,739,738],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,1044,952,734,733,732,740,739,738],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,1236,1287],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,962,961,960,891,959,958,1236,1287],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,966,965,964,737,1615],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,1224,1223,1093,1092],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,949,948,947,946,945,891,890,889,1224,1223,1093,1092],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1182,933,1134],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,1016,1022,1182,933,1134],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,907,906,905,904,903,902,901,900,932,931,1016,1017,1182,933,1134],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1385,1391],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1385,1391,1390],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1374,1391,1616],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1363,342,1380],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1617],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1374,1373,1618],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1378,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1385,1391],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1385,1391,1390],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1374,1391],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1385,1391],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1374,1383,1361,1382],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1374,1619],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1385,1391,1390],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1386,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1374,1383,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,475],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1369,1621],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1376,1375,342,1376,1375],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1389],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1378],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1384,1383,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1363,342,1362,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1385,1391,1616],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1386,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1378,1361,1382],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1378,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1378,1361,1267],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1374,1373,342,1027,1026,1025],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1376,1375,342,1376,1375,342,1374,1619],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,1622],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1369,1368,492],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1389],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1374,1383,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1364,1364,1363,342,1623,1620],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1378,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1372,342,1371,1370,342,1371,1370,342,1371,1370,342,1371,1370,342,1378,1361,1267],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1365,1364,1364,1364,1363,342,1380],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1381,1361],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,475],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1376,1375,342,1376,1375,342,1374,1373,342,1027,1026,1025],[20,19,395,38,37,36,394,451,529,38,37,36,528,38,37,36,527,526,525,443,524,38,37,36,523,522,38,37,36,521,865,1367,1366,1377,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1376,1375,342,1385,1391,1390,342,1624],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]],"weights":[0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01]}],"shared":{"frames":[{"name":"get_data","file":"","line":1131,"col":null},{"name":"get_code","file":"","line":1032,"col":null},{"name":"exec_module","file":"","line":936,"col":null},{"name":"_load_unlocked","file":"","line":690,"col":null},{"name":"_find_and_load_unlocked","file":"","line":1147,"col":null},{"name":"_find_and_load","file":"","line":1176,"col":null},{"name":"","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/unittest/__init__.py","line":61,"col":null},{"name":"_call_with_frames_removed","file":"","line":241,"col":null},{"name":"exec_module","file":"","line":940,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/debugging.py","line":14,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pytest/__init__.py","line":23,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/bin/pytest","line":5,"col":null},{"name":"get_data","file":"","line":1130,"col":null},{"name":"_find_and_load_unlocked","file":"","line":1126,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/junitxml.py","line":21,"col":null},{"name":"import_plugin","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/config/__init__.py","line":858,"col":null},{"name":"get_config","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/config/__init__.py","line":302,"col":null},{"name":"_prepareconfig","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/config/__init__.py","line":332,"col":null},{"name":"main","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/config/__init__.py","line":156,"col":null},{"name":"console_main","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/config/__init__.py","line":201,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/bin/pytest","line":8,"col":null},{"name":"parse_parts","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/pathlib.py","line":61,"col":null},{"name":"_parse_args","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/pathlib.py","line":502,"col":null},{"name":"_from_parts","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/pathlib.py","line":509,"col":null},{"name":"__new__","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/pathlib.py","line":477,"col":null},{"name":"make_file","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/importlib/metadata/__init__.py","line":651,"col":null},{"name":"make_files","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/importlib/metadata/__init__.py","line":659,"col":null},{"name":"wrapper","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/importlib/metadata/_functools.py","line":102,"col":null},{"name":"files","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/importlib/metadata/__init__.py","line":661,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/config/__init__.py","line":1291,"col":null},{"name":"_iter_rewritable_modules","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/config/__init__.py","line":932,"col":null},{"name":"_mark_plugins_for_rewrite","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/config/__init__.py","line":1294,"col":null},{"name":"_consider_importhook","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/config/__init__.py","line":1273,"col":null},{"name":"_preparse","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/config/__init__.py","line":1372,"col":null},{"name":"parse","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/config/__init__.py","line":1490,"col":null},{"name":"pytest_cmdline_parse","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/config/__init__.py","line":1140,"col":null},{"name":"_multicall","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pluggy/_callers.py","line":103,"col":null},{"name":"_hookexec","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pluggy/_manager.py","line":120,"col":null},{"name":"__call__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pluggy/_hooks.py","line":513,"col":null},{"name":"_prepareconfig","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/config/__init__.py","line":341,"col":null},{"name":"parse_parts","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/pathlib.py","line":59,"col":null},{"name":"read_text","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/pathlib.py","line":1059,"col":null},{"name":"read_text","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/importlib/metadata/__init__.py","line":939,"col":null},{"name":"entry_points","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/importlib/metadata/__init__.py","line":636,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/config/__init__.py","line":1290,"col":null},{"name":"","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/importlib/metadata/__init__.py","line":407,"col":null},{"name":"","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/importlib/metadata/__init__.py","line":402,"col":null},{"name":"_from_text_for","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/importlib/metadata/__init__.py","line":402,"col":null},{"name":"read_text","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/pathlib.py","line":1058,"col":null},{"name":"","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/asyncio/__init__.py","line":8,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pytest_asyncio/plugin.py","line":3,"col":null},{"name":"exec_module","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/assertion/rewrite.py","line":174,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pytest_asyncio/__init__.py","line":4,"col":null},{"name":"_gcd_import","file":"","line":1204,"col":null},{"name":"import_module","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/importlib/__init__.py","line":126,"col":null},{"name":"load","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/importlib/metadata/__init__.py","line":202,"col":null},{"name":"load_setuptools_entrypoints","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pluggy/_manager.py","line":421,"col":null},{"name":"_preparse","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/config/__init__.py","line":1377,"col":null},{"name":"","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/asyncio/queues.py","line":16,"col":null},{"name":"","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/asyncio/__init__.py","line":16,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/urllib3/util/__init__.py","line":4,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/urllib3/connection.py","line":15,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/urllib3/connectionpool.py","line":13,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/urllib3/__init__.py","line":13,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/requests/__init__.py","line":43,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/buildkite_test_collector/collector/api.py","line":7,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/buildkite_test_collector/pytest_plugin/__init__.py","line":11,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/urllib3/util/ssl_.py","line":60,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/urllib3/util/__init__.py","line":8,"col":null},{"name":"","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/http/cookiejar.py","line":36,"col":null},{"name":"_handle_fromlist","file":"","line":1232,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/requests/compat.py","line":62,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/requests/exceptions.py","line":9,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/requests/__init__.py","line":45,"col":null},{"name":"create_module","file":"","line":1233,"col":null},{"name":"module_from_spec","file":"","line":573,"col":null},{"name":"_load_unlocked","file":"","line":676,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/charset_normalizer/utils.py","line":10,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/charset_normalizer/cd.py","line":14,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/charset_normalizer/api.py","line":5,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/charset_normalizer/__init__.py","line":24,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/requests/__init__.py","line":48,"col":null},{"name":"find_spec","file":"","line":750,"col":null},{"name":"_find_spec","file":"","line":1078,"col":null},{"name":"_find_and_load_unlocked","file":"","line":1138,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/certifi/__init__.py","line":1,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/requests/certs.py","line":14,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/requests/utils.py","line":24,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/requests/__init__.py","line":151,"col":null},{"name":"_read_pyc","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/assertion/rewrite.py","line":390,"col":null},{"name":"exec_module","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/assertion/rewrite.py","line":162,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pytest_cases/__init__.py","line":10,"col":null},{"name":"_type_convert","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/typing.py","line":164,"col":null},{"name":"_type_check","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/typing.py","line":186,"col":null},{"name":"","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/typing.py","line":715,"col":null},{"name":"Union","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/typing.py","line":715,"col":null},{"name":"__getitem__","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/typing.py","line":502,"col":null},{"name":"inner","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/typing.py","line":376,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/httpx/_types.py","line":58,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/httpx/_multipart.py","line":8,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/httpx/_content.py","line":17,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/httpx/_models.py","line":11,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/httpx/_auth.py","line":12,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/httpx/_client.py","line":12,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/httpx/_api.py","line":6,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/httpx/__init__.py","line":2,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/respx/handlers.py","line":3,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/respx/__init__.py","line":2,"col":null},{"name":"_create_fn","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/dataclasses.py","line":433,"col":null},{"name":"_init_fn","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/dataclasses.py","line":580,"col":null},{"name":"_process_class","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/dataclasses.py","line":1027,"col":null},{"name":"wrap","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/dataclasses.py","line":1222,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/anyio/_core/_synchronization.py","line":67,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/anyio/abc/__init__.py","line":81,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/anyio/to_thread.py","line":7,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/anyio/_core/_fileio.py","line":24,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/anyio/__init__.py","line":103,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/httpcore/_synchronization.py","line":16,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/httpcore/_sync/connection.py","line":12,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/httpcore/_sync/__init__.py","line":1,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/httpcore/_api.py","line":5,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/httpcore/__init__.py","line":1,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/httpx/_transports/default.py","line":33,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/httpx/_transports/__init__.py","line":3,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/httpx/_client.py","line":30,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/h11/__init__.py","line":33,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/httpcore/_sync/http11.py","line":17,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/httpcore/_sync/connection.py","line":14,"col":null},{"name":"_compile_bytecode","file":"","line":729,"col":null},{"name":"get_code","file":"","line":1069,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/click/core.py","line":16,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/click/__init__.py","line":7,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/httpx/_main.py","line":8,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/httpx/__init__.py","line":15,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/attr/validators.py","line":92,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/attr/__init__.py","line":10,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/rich/pretty.py","line":33,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/rich/console.py","line":59,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/httpx/_main.py","line":12,"col":null},{"name":"_joinrealpath","file":"","line":435,"col":null},{"name":"realpath","file":"","line":416,"col":null},{"name":"resolve","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/pathlib.py","line":993,"col":null},{"name":"origin","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/internal/module.py","line":110,"col":null},{"name":"modules_with_origin","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/internal/module.py","line":482,"col":null},{"name":"_origin_map","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/internal/module.py","line":500,"col":null},{"name":"after_import","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/internal/module.py","line":513,"col":null},{"name":"call_back","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/internal/module.py","line":215,"col":null},{"name":"_exec_module","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/internal/module.py","line":317,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/__init__.py","line":11,"col":null},{"name":"_joinrealpath","file":"","line":451,"col":null},{"name":"_exec_module","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/internal/module.py","line":309,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/settings/__init__.py","line":2,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/__init__.py","line":17,"col":null},{"name":"_read_pyc","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/assertion/rewrite.py","line":367,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/settings/config.py","line":17,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/vendor/dogstatsd/context_async.py","line":52,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/vendor/dogstatsd/context.py","line":13,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/vendor/dogstatsd/base.py","line":29,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/vendor/dogstatsd/__init__.py","line":4,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/vendor/__init__.py","line":101,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/settings/config.py","line":19,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/internal/utils/version.py","line":4,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/internal/telemetry/writer.py","line":44,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/internal/telemetry/__init__.py","line":6,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/__init__.py","line":20,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/vendor/packaging/version.py","line":10,"col":null},{"name":"_optimize_charset","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/re/_compiler.py","line":371,"col":null},{"name":"_compile","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/re/_compiler.py","line":86,"col":null},{"name":"_compile","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/re/_compiler.py","line":111,"col":null},{"name":"_compile","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/re/_compiler.py","line":128,"col":null},{"name":"_compile","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/re/_compiler.py","line":119,"col":null},{"name":"_code","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/re/_compiler.py","line":582,"col":null},{"name":"compile","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/re/_compiler.py","line":749,"col":null},{"name":"_compile","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/re/__init__.py","line":294,"col":null},{"name":"compile","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/re/__init__.py","line":227,"col":null},{"name":"Version","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/vendor/packaging/version.py","line":218,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/vendor/packaging/version.py","line":216,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/internal/telemetry/writer.py","line":107,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/_trace/utils.py","line":16,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/_trace/trace_handlers.py","line":13,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/contrib/__init__.py","line":1,"col":null},{"name":"__new__","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/typing.py","line":2930,"col":null},{"name":"_CIVisibilityAPIBase","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/ext/ci_visibility/_ci_visibility_base.py","line":77,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/ext/ci_visibility/_ci_visibility_base.py","line":63,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/ext/ci_visibility/api.py","line":29,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/contrib/pytest/_utils.py","line":11,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/contrib/pytest/plugin.py","line":20,"col":null},{"name":"__exit__","file":"","line":1030,"col":null},{"name":"_find_spec","file":"","line":1070,"col":null},{"name":"find_spec","file":"","line":104,"col":null},{"name":"find_spec","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/internal/module.py","line":401,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/contrib/internal/coverage/patch.py","line":3,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/contrib/coverage/patch.py","line":1,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/contrib/coverage/__init__.py","line":29,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/internal/ci_visibility/utils.py","line":9,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/internal/ci_visibility/coverage.py","line":21,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/internal/ci_visibility/recorder.py","line":38,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/internal/ci_visibility/__init__.py","line":11,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/contrib/pytest/_utils.py","line":16,"col":null},{"name":"_find_spec","file":"","line":1081,"col":null},{"name":"get_code","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/internal/module.py","line":287,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/execnet/gateway.py","line":16,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/execnet/__init__.py","line":11,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/xdist/newhooks.py","line":22,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pytest_rerunfailures.py","line":20,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/typeguard/__init__.py","line":12,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/typeguard/_decorators.py","line":16,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/filelock/_soft.py","line":10,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/filelock/__init__.py","line":17,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/__init__.py","line":50,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/errors.py","line":23,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/decorator_utils.py","line":30,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_annotations.py","line":8,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_config/config_type.py","line":6,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_config/__init__.py","line":5,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/__init__.py","line":83,"col":null},{"name":"_resolve_warning_category","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/config/__init__.py","line":1951,"col":null},{"name":"parse_warning_filter","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/config/__init__.py","line":1913,"col":null},{"name":"apply_warning_filters","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/config/__init__.py","line":1965,"col":null},{"name":"catch_warnings_for_item","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/warnings.py","line":54,"col":null},{"name":"__enter__","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/contextlib.py","line":137,"col":null},{"name":"pytest_load_initial_conftests","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/warnings.py","line":148,"col":null},{"name":"_multicall","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pluggy/_callers.py","line":98,"col":null},{"name":"_preparse","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/config/__init__.py","line":1394,"col":null},{"name":"_is_marked_for_rewrite","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/assertion/rewrite.py","line":240,"col":null},{"name":"_early_rewrite_bailout","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/assertion/rewrite.py","line":209,"col":null},{"name":"find_spec","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/assertion/rewrite.py","line":98,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pydantic/aliases.py","line":10,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pydantic/_internal/_config.py","line":18,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pydantic/main.py","line":32,"col":null},{"name":"__getattr__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pydantic/__init__.py","line":404,"col":null},{"name":"_handle_fromlist","file":"","line":1229,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/__init__.py","line":51,"col":null},{"name":"__class_getitem__","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/typing.py","line":1844,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py","line":101,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pydantic/_internal/_model_construction.py","line":25,"col":null},{"name":"join","file":"","line":77,"col":null},{"name":"_joinrealpath","file":"","line":449,"col":null},{"name":"after_import","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/ddtrace/internal/module.py","line":510,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/yaml/dumper.py","line":4,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/yaml/__init__.py","line":9,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/yaml_utils.py","line":5,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/config_class.py","line":21,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/__init__.py","line":1,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_config/config_type.py","line":9,"col":null},{"name":"_path_stat","file":"","line":147,"col":null},{"name":"find_spec","file":"","line":1615,"col":null},{"name":"_get_spec","file":"","line":1479,"col":null},{"name":"find_spec","file":"","line":1507,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/__init__.py","line":18,"col":null},{"name":"_path_split","file":"","line":132,"col":null},{"name":"cache_from_source","file":"","line":463,"col":null},{"name":"get_code","file":"","line":1021,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/reconstruct.py","line":29,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/executor_definition.py","line":20,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/__init__.py","line":33,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_config/pythonic_config/conversion_utils.py","line":18,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_config/pythonic_config/config.py","line":17,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_config/pythonic_config/__init__.py","line":1,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/__init__.py","line":99,"col":null},{"name":"__eq__","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/typing.py","line":1687,"col":null},{"name":"_type_check","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/typing.py","line":190,"col":null},{"name":"__init__","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/typing.py","line":975,"col":null},{"name":"__init__","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/typing.py","line":1043,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/reconstruct.py","line":579,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/repository_definition/repository_definition.py","line":18,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/repository_definition/__init__.py","line":1,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/__init__.py","line":96,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/asset_graph_view/serializable_entity_subset.py","line":12,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/asset_graph_view/entity_subset.py","line":7,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":10,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operands/code_version_changed_condition.py","line":2,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operands/__init__.py","line":1,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/__init__.py","line":1,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/asset_spec.py","line":8,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/asset_graph.py","line":6,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/repository_definition/repository_definition.py","line":19,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_context.py","line":48,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operands/code_version_changed_condition.py","line":6,"col":null},{"name":"__setattr__","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/typing.py","line":1323,"col":null},{"name":"__init__","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/typing.py","line":1283,"col":null},{"name":"__init__","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/typing.py","line":1378,"col":null},{"name":"copy_with","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/typing.py","line":1596,"col":null},{"name":"__getitem__","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/typing.py","line":1593,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/resource_annotation.py","line":12,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/source_asset.py","line":33,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/asset_dep.py","line":12,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/assets.py","line":28,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/asset_graph.py","line":11,"col":null},{"name":"__hash__","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/typing.py","line":1395,"col":null},{"name":"AssetsDefinition","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/assets.py","line":385,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/assets.py","line":88,"col":null},{"name":"_gcd_import","file":"","line":1203,"col":null},{"name":"_common_field_schema","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py","line":1097,"col":null},{"name":"_generate_md_field_schema","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py","line":947,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py","line":591,"col":null},{"name":"_model_schema","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py","line":591,"col":null},{"name":"_generate_schema_inner","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py","line":784,"col":null},{"name":"generate_schema","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py","line":512,"col":null},{"name":"__call__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pydantic/_internal/_schema_generation_shared.py","line":83,"col":null},{"name":"__get_pydantic_core_schema__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pydantic/main.py","line":643,"col":null},{"name":"complete_model_class","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pydantic/_internal/_model_construction.py","line":534,"col":null},{"name":"__new__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pydantic/_internal/_model_construction.py","line":205,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/asset_selection.py","line":768,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/asset_job.py","line":25,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/repository_definition/repository_definition.py","line":20,"col":null},{"name":"wrapper","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pydantic/_migration.py","line":274,"col":null},{"name":"_collect_bases_data","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pydantic/_internal/_model_construction.py","line":252,"col":null},{"name":"__new__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pydantic/_internal/_model_construction.py","line":92,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/asset_selection.py","line":896,"col":null},{"name":"namedtuple","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/collections/__init__.py","line":436,"col":null},{"name":"_make_nmtuple","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/typing.py","line":2895,"col":null},{"name":"NamedTuple","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/typing.py","line":2970,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/cacheable_assets.py","line":25,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/repository_definition/repository_definition.py","line":21,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/execution/context/output.py","line":32,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/mem_io_manager.py","line":4,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/materialize.py","line":12,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/__init__.py","line":157,"col":null},{"name":"namedtuple","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/collections/__init__.py","line":503,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/execution/plan/handle.py","line":63,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/execution/context/system.py","line":56,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/events/__init__.py","line":45,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/event_api.py","line":11,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/run_status_sensor_definition.py","line":53,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/__init__.py","line":184,"col":null},{"name":"build","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pydantic/_internal/_decorators.py","line":431,"col":null},{"name":"__new__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pydantic/_internal/_model_construction.py","line":135,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_config/pythonic_config/config.py","line":69,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/execution/api.py","line":43,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/execution/build_resources.py","line":13,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/decorators/asset_check_decorator.py","line":33,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/asset_check_factories/utils.py","line":17,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/asset_check_factories/freshness_checks/last_update.py","line":6,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/__init__.py","line":115,"col":null},{"name":"_execute_child","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/subprocess.py","line":1908,"col":null},{"name":"__init__","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/subprocess.py","line":1026,"col":null},{"name":"run","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/subprocess.py","line":548,"col":null},{"name":"check_output","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/subprocess.py","line":466,"col":null},{"name":"from_subprocess","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/platform.py","line":762,"col":null},{"name":"get","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/platform.py","line":739,"col":null},{"name":"processor","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/platform.py","line":794,"col":null},{"name":"__get__","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/functools.py","line":1001,"col":null},{"name":"__iter__","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/platform.py","line":799,"col":null},{"name":"platform","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/platform.py","line":1212,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/telemetry.py","line":81,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/__init__.py","line":118,"col":null},{"name":"join","file":"","line":85,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/__init__.py","line":498,"col":null},{"name":"join_parsed_parts","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/pathlib.py","line":108,"col":null},{"name":"_make_child","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/pathlib.py","line":532,"col":null},{"name":"joinpath","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/pathlib.py","line":763,"col":null},{"name":"","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/importlib/metadata/__init__.py","line":1039,"col":null},{"name":"load","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/importlib/metadata/__init__.py","line":476,"col":null},{"name":"entry_points","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/importlib/metadata/__init__.py","line":1041,"col":null},{"name":"process_entries","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/fsspec/__init__.py","line":44,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/fsspec/__init__.py","line":70,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/upath_io_manager.py","line":7,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/fs_io_manager.py","line":21,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/__init__.py","line":567,"col":null},{"name":"parse_parts","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/pathlib.py","line":74,"col":null},{"name":"_make_child","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/pathlib.py","line":531,"col":null},{"name":"__subclasscheck__","file":"","line":123,"col":null},{"name":"safe_is_subclass","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_config/pythonic_config/type_check_utils.py","line":15,"col":null},{"name":"_is_annotated_as_resource_type","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_config/pythonic_config/resource.py","line":811,"col":null},{"name":"_is_annotated_as_resource_type","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_config/pythonic_config/resource.py","line":805,"col":null},{"name":"infer_schema_from_config_class","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_config/pythonic_config/config.py","line":419,"col":null},{"name":"to_config_schema","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_config/pythonic_config/config.py","line":299,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/fs_io_manager.py","line":137,"col":null},{"name":"_get_module_lock","file":"","line":188,"col":null},{"name":"__enter__","file":"","line":170,"col":null},{"name":"_find_and_load","file":"","line":1173,"col":null},{"name":"import_path","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/pathlib.py","line":582,"col":null},{"name":"_importconftest","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/config/__init__.py","line":710,"col":null},{"name":"_loadconftestmodules","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/config/__init__.py","line":659,"col":null},{"name":"_try_load_conftest","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/config/__init__.py","line":619,"col":null},{"name":"_set_initial_conftests","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/config/__init__.py","line":581,"col":null},{"name":"pytest_load_initial_conftests","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/config/__init__.py","line":1218,"col":null},{"name":"_fill_cache","file":"","line":1670,"col":null},{"name":"find_spec","file":"","line":1619,"col":null},{"name":"find_spec","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/assertion/rewrite.py","line":103,"col":null},{"name":"accept","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/socket.py","line":294,"col":null},{"name":"run_server","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pytest_rerunfailures.py","line":433,"col":null},{"name":"run","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/threading.py","line":982,"col":null},{"name":"_bootstrap_inner","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/threading.py","line":1045,"col":null},{"name":"_bootstrap","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/threading.py","line":1002,"col":null},{"name":"metadata","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/importlib/metadata/__init__.py","line":610,"col":null},{"name":"__getattr__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pluggy/_manager.py","line":74,"col":null},{"name":"project_name","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pluggy/_manager.py","line":70,"col":null},{"name":"_plugin_nameversions","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/terminal.py","line":1540,"col":null},{"name":"pytest_report_header","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/terminal.py","line":833,"col":null},{"name":"fixed_hook","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/config/compat.py","line":79,"col":null},{"name":"pytest_sessionstart","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/terminal.py","line":805,"col":null},{"name":"wrap_session","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/main.py","line":281,"col":null},{"name":"pytest_cmdline_main","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/main.py","line":330,"col":null},{"name":"main","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/config/__init__.py","line":175,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/hypothesis/control.py","line":23,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/hypothesis/__init__.py","line":21,"col":null},{"name":"pytest_report_header","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_hypothesis_pytestplugin.py","line":155,"col":null},{"name":"_read_pyc","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/assertion/rewrite.py","line":362,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/hypothesis/internal/conjecture/engine.py","line":75,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/hypothesis/strategies/_internal/collections.py","line":16,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/hypothesis/strategies/__init__.py","line":12,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/hypothesis/core.py","line":48,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/hypothesis/__init__.py","line":29,"col":null},{"name":"_get_module_lock","file":"","line":209,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/hypothesis/internal/conjecture/shrinker.py","line":17,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/hypothesis/internal/conjecture/pareto.py","line":17,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/hypothesis/internal/conjecture/engine.py","line":81,"col":null},{"name":"_fill_cache","file":"","line":1662,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/hypothesis/internal/conjecture/shrinking/__init__.py","line":11,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/hypothesis/internal/conjecture/shrinker.py","line":32,"col":null},{"name":"__getitem__","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/typing.py","line":1680,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/hypothesis/strategies/_internal/collections.py","line":107,"col":null},{"name":"_format_parsed_parts","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/pathlib.py","line":526,"col":null},{"name":"__str__","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/pathlib.py","line":542,"col":null},{"name":"__fspath__","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/pathlib.py","line":547,"col":null},{"name":"open","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/pathlib.py","line":1044,"col":null},{"name":"get_entry_points","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/hypothesis/entry_points.py","line":24,"col":null},{"name":"run","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/hypothesis/entry_points.py","line":34,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/hypothesis/__init__.py","line":57,"col":null},{"name":"wrapped_with_pre_call_fn","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/decorator_utils.py","line":201,"col":null},{"name":"to_definition","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/input.py","line":503,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/op_definition.py","line":138,"col":null},{"name":"__init__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/op_definition.py","line":137,"col":null},{"name":"wrapped_with_pre_call_fn","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/decorator_utils.py","line":203,"col":null},{"name":"dagster_internal_init","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/op_definition.py","line":204,"col":null},{"name":"__call__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/decorators/op_decorator.py","line":123,"col":null},{"name":"create_op_definition","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/decorators/decorator_assets_definition_builder.py","line":546,"col":null},{"name":"create_assets_definition","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/decorators/decorator_assets_definition_builder.py","line":565,"col":null},{"name":"create_assets_def_from_fn_and_decorator_args","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/decorators/asset_decorator.py","line":498,"col":null},{"name":"inner","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/decorators/asset_decorator.py","line":301,"col":null},{"name":"build_assets","file":"/Users/owen/src/dagster/python_modules/dagster-test/dagster_test/toys/auto_materializing/large_graph.py","line":44,"col":null},{"name":"auto_materialize_large_time_graph","file":"/Users/owen/src/dagster/python_modules/dagster-test/dagster_test/toys/auto_materializing/large_graph.py","line":68,"col":null},{"name":"__call__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/decorators/repository_decorator.py","line":119,"col":null},{"name":"repository","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/decorators/repository_decorator.py","line":419,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster-test/dagster_test/toys/auto_materializing/large_graph.py","line":66,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster_tests/definitions_tests/declarative_automation_tests/perf_tests/test_perf.py","line":12,"col":null},{"name":"importtestmodule","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/python.py","line":493,"col":null},{"name":"_getobj","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/python.py","line":546,"col":null},{"name":"obj","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/python.py","line":284,"col":null},{"name":"_patched_collect","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pytest_asyncio/plugin.py","line":667,"col":null},{"name":"collect","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/runner.py","line":389,"col":null},{"name":"from_call","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/runner.py","line":341,"col":null},{"name":"pytest_make_collect_report","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/runner.py","line":391,"col":null},{"name":"collect_one_node","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/runner.py","line":567,"col":null},{"name":"_collect_one_node","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/main.py","line":835,"col":null},{"name":"genitems","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/main.py","line":970,"col":null},{"name":"perform_collect","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/main.py","line":809,"col":null},{"name":"pytest_collection","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/main.py","line":347,"col":null},{"name":"_main","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/main.py","line":336,"col":null},{"name":"wrap_session","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/main.py","line":283,"col":null},{"name":"__exit__","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/warnings.py","line":494,"col":null},{"name":"dagster_internal_init","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/assets.py","line":393,"col":null},{"name":"create_assets_definition","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/decorators/decorator_assets_definition_builder.py","line":562,"col":null},{"name":"resolve_dagster_type","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/types/dagster_type.py","line":844,"col":null},{"name":"__init__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/input.py","line":116,"col":null},{"name":"deprecation_warning","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/warnings.py","line":65,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_annotations.py","line":260,"col":null},{"name":"wrapped_with_pre_call_fn","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/decorator_utils.py","line":202,"col":null},{"name":"get_annotations","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/inspect.py","line":251,"col":null},{"name":"_signature_from_function","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/inspect.py","line":2358,"col":null},{"name":"_signature_from_callable","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/inspect.py","line":2523,"col":null},{"name":"from_callable","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/inspect.py","line":3011,"col":null},{"name":"signature","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/inspect.py","line":3263,"col":null},{"name":"get_function_params","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/decorator_utils.py","line":73,"col":null},{"name":"validate_malformed_config","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/decorators/op_decorator.py","line":306,"col":null},{"name":"__call__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/decorators/op_decorator.py","line":90,"col":null},{"name":"dagster_internal_init","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/assets.py","line":395,"col":null},{"name":"update_wrapper","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/functools.py","line":56,"col":null},{"name":"__call__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/decorators/op_decorator.py","line":136,"col":null},{"name":"_signature_from_callable","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/inspect.py","line":2493,"col":null},{"name":"has_config_arg","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/decorators/op_decorator.py","line":295,"col":null},{"name":"resolve_checked_op_fn_inputs","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/decorators/op_decorator.py","line":402,"col":null},{"name":"__init__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/op_definition.py","line":142,"col":null},{"name":"__get__","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/functools.py","line":997,"col":null},{"name":"combined_outs_by_output_name","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/decorators/decorator_assets_definition_builder.py","line":501,"col":null},{"name":"create_op_definition","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/decorators/decorator_assets_definition_builder.py","line":550,"col":null},{"name":"resolve_dagster_type","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/types/dagster_type.py","line":842,"col":null},{"name":"__new__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/input.py","line":479,"col":null},{"name":"build_named_ins","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/decorators/decorator_assets_definition_builder.py","line":140,"col":null},{"name":"from_asset_outs_in_asset_centric_decorator","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/decorators/decorator_assets_definition_builder.py","line":407,"col":null},{"name":"create_assets_def_from_fn_and_decorator_args","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/decorators/asset_decorator.py","line":488,"col":null},{"name":"get_origin","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/typing.py","line":2463,"col":null},{"name":"is_closed_python_optional_type","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/typing_api.py","line":40,"col":null},{"name":"is_typing_type","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/typing_api.py","line":149,"col":null},{"name":"resolve_dagster_type","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/types/dagster_type.py","line":875,"col":null},{"name":"__init__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/output.py","line":68,"col":null},{"name":"to_definition","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/output.py","line":411,"col":null},{"name":"_resolve_output_defs_from_outs","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/op_definition.py","line":491,"col":null},{"name":"__init__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/op_definition.py","line":165,"col":null},{"name":"resolve_dagster_type","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/types/dagster_type.py","line":833,"col":null},{"name":"","file":"","line":1,"col":null},{"name":"create_assets_def_from_fn_and_decorator_args","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/decorators/asset_decorator.py","line":485,"col":null},{"name":"_validate_context_type_hint","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/op_definition.py","line":564,"col":null},{"name":"__init__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/op_definition.py","line":150,"col":null},{"name":"auto_materialize_large_static_graph","file":"/Users/owen/src/dagster/python_modules/dagster-test/dagster_test/toys/auto_materializing/large_graph.py","line":82,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster-test/dagster_test/toys/auto_materializing/large_graph.py","line":80,"col":null},{"name":"validate_resource_annotated_function","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_config/pythonic_config/resource.py","line":919,"col":null},{"name":"create_assets_def_from_fn_and_decorator_args","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/decorators/asset_decorator.py","line":412,"col":null},{"name":"__init__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_config/field.py","line":291,"col":null},{"name":"convert_user_facing_definition_config_schema","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/definition_config_schema.py","line":30,"col":null},{"name":"__init__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/op_definition.py","line":169,"col":null},{"name":"keys","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/assets.py","line":904,"col":null},{"name":"key","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/assets.py","line":884,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster-test/dagster_test/toys/auto_materializing/large_graph.py","line":37,"col":null},{"name":"build_assets","file":"/Users/owen/src/dagster/python_modules/dagster-test/dagster_test/toys/auto_materializing/large_graph.py","line":36,"col":null},{"name":"resolve_dagster_type","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/types/dagster_type.py","line":841,"col":null},{"name":"_get_subject","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_annotations.py","line":550,"col":null},{"name":"_get_subject","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_annotations.py","line":540,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_annotations.py","line":464,"col":null},{"name":"__exit__","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/warnings.py","line":492,"col":null},{"name":"validate_malformed_config","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/decorators/op_decorator.py","line":302,"col":null},{"name":"_preprocess_async_fixtures","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pytest_asyncio/plugin.py","line":234,"col":null},{"name":"pytest_pycollect_makeitem_preprocess_async_fixtures","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pytest_asyncio/plugin.py","line":539,"col":null},{"name":"collect","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/python.py","line":419,"col":null},{"name":"collect","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/python.py","line":552,"col":null},{"name":"_patched_collect","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pytest_asyncio/plugin.py","line":675,"col":null},{"name":"_preprocess_async_fixtures","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pytest_asyncio/plugin.py","line":237,"col":null},{"name":"_validate_context_type_hint","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/op_definition.py","line":567,"col":null},{"name":"test_eager_perf","file":"/Users/owen/src/dagster/python_modules/dagster/dagster_tests/definitions_tests/declarative_automation_tests/perf_tests/test_perf.py","line":18,"col":null},{"name":"pytest_pyfunc_call","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/python.py","line":159,"col":null},{"name":"runtest","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/python.py","line":1627,"col":null},{"name":"pytest_runtest_call","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/runner.py","line":174,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/runner.py","line":242,"col":null},{"name":"call_and_report","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/runner.py","line":241,"col":null},{"name":"runtestprotocol","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/runner.py","line":132,"col":null},{"name":"pytest_runtest_protocol","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/runner.py","line":113,"col":null},{"name":"pytest_runtestloop","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/main.py","line":362,"col":null},{"name":"_main","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/main.py","line":337,"col":null},{"name":"dagster_internal_init","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/asset_spec.py","line":218,"col":null},{"name":"to_spec","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/asset_out.py","line":152,"col":null},{"name":"_synthesize_specs","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/decorators/decorator_assets_definition_builder.py","line":616,"col":null},{"name":"specs","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/decorators/decorator_assets_definition_builder.py","line":580,"col":null},{"name":"create_assets_definition","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/decorators/decorator_assets_definition_builder.py","line":571,"col":null},{"name":"__new__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/asset_spec.py","line":151,"col":null},{"name":"_signature_from_callable","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/inspect.py","line":2447,"col":null},{"name":"_signature_from_callable","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/inspect.py","line":2458,"col":null},{"name":"resolve_dagster_type","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/types/dagster_type.py","line":843,"col":null},{"name":"__instancecheck__","file":"","line":119,"col":null},{"name":"make_asset_deps","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/decorators/asset_decorator.py","line":1082,"col":null},{"name":"_deps_and_non_argument_deps_to_asset_deps","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/decorators/asset_decorator.py","line":1072,"col":null},{"name":"asset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/decorators/asset_decorator.py","line":247,"col":null},{"name":"resolve_dagster_type","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/types/dagster_type.py","line":846,"col":null},{"name":"resolve_dagster_type","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/types/dagster_type.py","line":853,"col":null},{"name":"_checked_inferred_type","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/output.py","line":185,"col":null},{"name":"to_definition","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/output.py","line":406,"col":null},{"name":"create_assets_def_from_fn_and_decorator_args","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/decorators/asset_decorator.py","line":459,"col":null},{"name":"get_annotations","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/inspect.py","line":253,"col":null},{"name":"compute_required_resource_keys","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/decorators/decorator_assets_definition_builder.py","line":209,"col":null},{"name":"required_resource_keys","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/decorators/decorator_assets_definition_builder.py","line":538,"col":null},{"name":"create_op_definition","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/decorators/decorator_assets_definition_builder.py","line":551,"col":null},{"name":"compute_required_resource_keys","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/decorators/decorator_assets_definition_builder.py","line":213,"col":null},{"name":"op_resource_defs","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/decorators/asset_decorator.py","line":372,"col":null},{"name":"create_assets_def_from_fn_and_decorator_args","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/decorators/asset_decorator.py","line":455,"col":null},{"name":"opt_set_param","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_check/functions.py","line":1275,"col":null},{"name":"__init__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/op_definition.py","line":171,"col":null},{"name":"_signature_from_callable","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/inspect.py","line":2481,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/remote_representation/__init__.py","line":9,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/hosted_user_process.py","line":17,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/launcher/sync_in_memory_run_launcher.py","line":11,"col":null},{"name":"ephemeral","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/instance/__init__.py","line":521,"col":null},{"name":"test_eager_perf","file":"/Users/owen/src/dagster/python_modules/dagster/dagster_tests/definitions_tests/declarative_automation_tests/perf_tests/test_perf.py","line":33,"col":null},{"name":"_early_rewrite_bailout","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/_pytest/assertion/rewrite.py","line":199,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/grpc/aio/__init__.py","line":42,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/grpc/__init__.py","line":2346,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/remote_representation/origin.py","line":16,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/remote_representation/handle.py","line":9,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/remote_representation/external.py","line":62,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/google/protobuf/text_format.py","line":29,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/google/protobuf/internal/python_message.py","line":38,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/google/protobuf/descriptor_pool.py","line":43,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/grpc_health/v1/health_pb2.py","line":7,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_grpc/client.py","line":21,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_grpc/__init__.py","line":11,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_api/snapshot_execution_plan.py","line":15,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/remote_representation/code_location.py","line":22,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/remote_representation/__init__.py","line":56,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_grpc/types.py","line":579,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_grpc/impl.py","line":61,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_grpc/server.py","line":70,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_grpc/client.py","line":32,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/ddl.py","line":54,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/util.py","line":46,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/dml.py","line":34,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/crud.py","line":34,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/compiler.py","line":62,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/__init__.py","line":14,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/interfaces.py","line":38,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":30,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/events.py","line":19,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/__init__.py","line":18,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/__init__.py","line":13,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/sql.py","line":5,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/base.py","line":40,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/__init__.py","line":1,"col":null},{"name":"ephemeral","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/instance/__init__.py","line":523,"col":null},{"name":"__new__","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/enum.py","line":562,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/schema.py","line":129,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/util.py","line":60,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pygments/formatters/__init__.py","line":17,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/mako/ext/pygmentplugin.py","line":8,"col":null},{"name":"_install_pygments","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/mako/exceptions.py","line":271,"col":null},{"name":"_install_highlighting","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/mako/exceptions.py","line":287,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/mako/exceptions.py","line":292,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/alembic/util/pyfiles.py","line":13,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/alembic/util/__init__.py","line":24,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/alembic/ddl/base.py","line":16,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/alembic/ddl/mssql.py","line":18,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/alembic/ddl/__init__.py","line":1,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/alembic/runtime/migration.py","line":32,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/alembic/runtime/environment.py","line":22,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/alembic/context.py","line":1,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/alembic/__init__.py","line":3,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/sql.py","line":6,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/pygments/formatters/html.py","line":19,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/alembic/ddl/base.py","line":107,"col":null},{"name":"__init__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/elements.py","line":4899,"col":null},{"name":"__init__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/schema.py","line":2074,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/dialects/postgresql/pg_catalog.py","line":85,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/dialects/postgresql/base.py","line":1469,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py","line":183,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/dialects/postgresql/__init__.py","line":12,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/alembic/ddl/postgresql.py","line":20,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/alembic/ddl/__init__.py","line":4,"col":null},{"name":"__init__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/schema.py","line":4351,"col":null},{"name":"__init__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/schema.py","line":4925,"col":null},{"name":"__init__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/schema.py","line":827,"col":null},{"name":"_new","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/schema.py","line":477,"col":null},{"name":"__new__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/schema.py","line":427,"col":null},{"name":"warned","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/util/deprecations.py","line":281,"col":null},{"name":"__new__","file":"","line":2,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/dialects/postgresql/pg_catalog.py","line":90,"col":null},{"name":"__init__","file":"","line":75,"col":null},{"name":"_get_module_lock","file":"","line":196,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/__init__.py","line":6,"col":null},{"name":"acquire","file":"","line":113,"col":null},{"name":"__enter__","file":"","line":171,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_daemon/daemon.py","line":33,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_daemon/auto_run_reexecution/event_log_consumer.py","line":13,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_daemon/__init__.py","line":1,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/runs/base.py","line":21,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/runs/__init__.py","line":1,"col":null},{"name":"ephemeral","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/instance/__init__.py","line":526,"col":null},{"name":"path_stats","file":"","line":1148,"col":null},{"name":"get_code","file":"","line":1026,"col":null},{"name":"load_module_py","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/alembic/util/pyfiles.py","line":109,"col":null},{"name":"load_python_file","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/alembic/util/pyfiles.py","line":93,"col":null},{"name":"_from_filename","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/alembic/script/base.py","line":1036,"col":null},{"name":"_load_revisions","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/alembic/script/base.py","line":148,"col":null},{"name":"_revision_map","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/alembic/script/revision.py","line":191,"col":null},{"name":"__get__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/util/langhelpers.py","line":1141,"col":null},{"name":"_resolve_revision_number","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/alembic/script/revision.py","line":750,"col":null},{"name":"filter_for_lineage","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/alembic/script/revision.py","line":676,"col":null},{"name":"_stamp_revs","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/alembic/script/base.py","line":493,"col":null},{"name":"do_stamp","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/alembic/command.py","line":674,"col":null},{"name":"run_migrations","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/alembic/runtime/migration.py","line":612,"col":null},{"name":"run_migrations","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/alembic/runtime/environment.py","line":937,"col":null},{"name":"run_migrations","file":"","line":8,"col":null},{"name":"run_migrations_online","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/sql.py","line":145,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/alembic/env.py","line":16,"col":null},{"name":"run_env","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/alembic/script/base.py","line":578,"col":null},{"name":"stamp","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/alembic/command.py","line":686,"col":null},{"name":"stamp_alembic_rev","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/sql.py","line":68,"col":null},{"name":"__init__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/runs/in_memory.py","line":34,"col":null},{"name":"ephemeral","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/instance/__init__.py","line":536,"col":null},{"name":"cache_from_source","file":"","line":470,"col":null},{"name":"_get_cached","file":"","line":570,"col":null},{"name":"cached","file":"","line":398,"col":null},{"name":"_init_module_attrs","file":"","line":558,"col":null},{"name":"module_from_spec","file":"","line":579,"col":null},{"name":"load_module_py","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/alembic/util/pyfiles.py","line":108,"col":null},{"name":"__init__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/in_memory.py","line":39,"col":null},{"name":"ephemeral","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/instance/__init__.py","line":537,"col":null},{"name":"node_def","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/assets.py","line":856,"col":null},{"name":"get_resource_requirements","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/assets.py","line":1451,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/assets.py","line":1475,"col":null},{"name":"required_resource_keys","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/assets.py","line":1475,"col":null},{"name":"merge_resource_defs","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/resource_requirement.py","line":269,"col":null},{"name":"with_resources","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/assets.py","line":1495,"col":null},{"name":"with_resources","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/execution/with_resources.py","line":107,"col":null},{"name":"created_repo","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/definitions_class.py","line":299,"col":null},{"name":"_create_repository_using_definitions_args","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/definitions_class.py","line":290,"col":null},{"name":"get_inner_repository","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/definitions_class.py","line":600,"col":null},{"name":"_cached_method_wrapper","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/cached_method.py","line":104,"col":null},{"name":"get_repository_def","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/definitions_class.py","line":585,"col":null},{"name":"get_asset_graph","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/definitions_class.py","line":615,"col":null},{"name":"test_eager_perf","file":"/Users/owen/src/dagster/python_modules/dagster/dagster_tests/definitions_tests/declarative_automation_tests/perf_tests/test_perf.py","line":35,"col":null},{"name":"__exit__","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/contextlib.py","line":144,"col":null},{"name":"with_resources","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/assets.py","line":1500,"col":null},{"name":"get_resource_requirements","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/assets.py","line":1468,"col":null},{"name":"merge_resource_defs","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/resource_requirement.py","line":258,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/resource_requirement.py","line":262,"col":null},{"name":"merge_resource_defs","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/resource_requirement.py","line":259,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/events/__init__.py","line":290,"col":null},{"name":"_assert_type","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/events/__init__.py","line":290,"col":null},{"name":"step_materialization_data","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/events/__init__.py","line":773,"col":null},{"name":"asset_key","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/events/__init__.py","line":716,"col":null},{"name":"store_asset_event","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":238,"col":null},{"name":"store_event","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":456,"col":null},{"name":"store_event","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/in_memory.py","line":83,"col":null},{"name":"handle_new_event","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/instance/__init__.py","line":2420,"col":null},{"name":"report_dagster_event","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/instance/__init__.py","line":2522,"col":null},{"name":"report_runless_asset_event","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/instance/__init__.py","line":3241,"col":null},{"name":"test_eager_perf","file":"/Users/owen/src/dagster/python_modules/dagster/dagster_tests/definitions_tests/declarative_automation_tests/perf_tests/test_perf.py","line":36,"col":null},{"name":"test_eager_perf","file":"/Users/owen/src/dagster/python_modules/dagster/dagster_tests/definitions_tests/declarative_automation_tests/perf_tests/test_perf.py","line":37,"col":null},{"name":"iterencode","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/json/encoder.py","line":258,"col":null},{"name":"encode","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/json/encoder.py","line":200,"col":null},{"name":"dumps","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/json/__init__.py","line":238,"col":null},{"name":"serialize_value","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":839,"col":null},{"name":"_get_asset_entry_values","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":291,"col":null},{"name":"store_asset_event","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":253,"col":null},{"name":"_checkout","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/pool/base.py","line":1277,"col":null},{"name":"connect","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/pool/base.py","line":449,"col":null},{"name":"raw_connection","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":3302,"col":null},{"name":"__init__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":146,"col":null},{"name":"connect","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":3278,"col":null},{"name":"_connect","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/in_memory.py","line":51,"col":null},{"name":"store_asset_event","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":265,"col":null},{"name":"cron_string_iterator","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/schedules.py","line":666,"col":null},{"name":"reverse_cron_string_iterator","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/schedules.py","line":776,"col":null},{"name":"_reverse_iterate_time_windows","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":926,"col":null},{"name":"_get_last_partition_window","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":674,"col":null},{"name":"get_last_partition_window","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":690,"col":null},{"name":"get_last_partition_key","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":708,"col":null},{"name":"test_eager_perf","file":"/Users/owen/src/dagster/python_modules/dagster/dagster_tests/definitions_tests/declarative_automation_tests/perf_tests/test_perf.py","line":38,"col":null},{"name":"dumps","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/json/__init__.py","line":234,"col":null},{"name":"_event_to_row","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":219,"col":null},{"name":"prepare_insert_event","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":194,"col":null},{"name":"store_event","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":442,"col":null},{"name":"_init_compiled","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/default.py","line":1308,"col":null},{"name":"_execute_context","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":1815,"col":null},{"name":"_execute_clauseelement","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":1640,"col":null},{"name":"_execute_on_connection","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/elements.py","line":515,"col":null},{"name":"execute","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":1418,"col":null},{"name":"_connect","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/in_memory.py","line":54,"col":null},{"name":"has_asset_key_col","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":228,"col":null},{"name":"has_asset_key_index_cols","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":233,"col":null},{"name":"do_execute","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/default.py","line":941,"col":null},{"name":"_exec_single_context","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":1967,"col":null},{"name":"_execute_context","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":1846,"col":null},{"name":"exec_driver_sql","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":1779,"col":null},{"name":"_get_table_pragma","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/dialects/sqlite/base.py","line":2795,"col":null},{"name":"get_columns","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/dialects/sqlite/base.py","line":2215,"col":null},{"name":"cache","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/reflection.py","line":106,"col":null},{"name":"get_columns","file":"","line":2,"col":null},{"name":"get_columns","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/reflection.py","line":868,"col":null},{"name":"has_asset_key_col","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":229,"col":null},{"name":"_post_coercion","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/coercions.py","line":1341,"col":null},{"name":"expect","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/coercions.py","line":417,"col":null},{"name":"__init__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/dml.py","line":987,"col":null},{"name":"__init__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/dml.py","line":1213,"col":null},{"name":"insert","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/selectable.py","line":3076,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/reflection.py","line":96,"col":null},{"name":"cache","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/reflection.py","line":93,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/reflection.py","line":94,"col":null},{"name":"_connect","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/in_memory.py","line":53,"col":null},{"name":"values","file":"","line":2,"col":null},{"name":"checkout","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/pool/base.py","line":724,"col":null},{"name":"_checkout","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/pool/base.py","line":1263,"col":null},{"name":"iterencode","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/json/encoder.py","line":225,"col":null},{"name":"__new__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/events/__init__.py","line":551,"col":null},{"name":"report_runless_asset_event","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/instance/__init__.py","line":3243,"col":null},{"name":"update_wrapper","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/functools.py","line":53,"col":null},{"name":"decorating_function","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/functools.py","line":521,"col":null},{"name":"connect","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/default.py","line":621,"col":null},{"name":"connect","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/create.py","line":643,"col":null},{"name":"__connect","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/pool/base.py","line":896,"col":null},{"name":"__init__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/pool/base.py","line":674,"col":null},{"name":"_create_connection","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/pool/base.py","line":390,"col":null},{"name":"_do_get","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/pool/impl.py","line":308,"col":null},{"name":"checkout","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/pool/base.py","line":712,"col":null},{"name":"store_event","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":447,"col":null},{"name":"_generate_cache_key","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/cache_key.py","line":413,"col":null},{"name":"oneshot","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/util/langhelpers.py","line":1266,"col":null},{"name":"_compile_w_cache","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/elements.py","line":683,"col":null},{"name":"_execute_clauseelement","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":1632,"col":null},{"name":"_begin_impl","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":1101,"col":null},{"name":"_connection_begin_impl","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":2701,"col":null},{"name":"__init__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":2683,"col":null},{"name":"begin","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":861,"col":null},{"name":"_connect","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/in_memory.py","line":52,"col":null},{"name":"_literal_coercion","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/coercions.py","line":764,"col":null},{"name":"expect","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/coercions.py","line":396,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/dml.py","line":194,"col":null},{"name":"_get_crud_kv_pairs","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/dml.py","line":188,"col":null},{"name":"values","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/dml.py","line":1159,"col":null},{"name":"check","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/base.py","line":312,"col":null},{"name":"_generative","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/base.py","line":279,"col":null},{"name":"store_asset_event","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":258,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/dml.py","line":190,"col":null},{"name":"dst_safe_strftime","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":115,"col":null},{"name":"get_last_partition_key","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":712,"col":null},{"name":"store_event","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":448,"col":null},{"name":"_safe_close_cursor","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":2215,"col":null},{"name":"_soft_close","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/cursor.py","line":1566,"col":null},{"name":"_setup_dml_or_text_result","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/default.py","line":1972,"col":null},{"name":"_setup_result_proxy","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/default.py","line":1830,"col":null},{"name":"_exec_single_context","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":1983,"col":null},{"name":"store_asset_event","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":267,"col":null},{"name":"_setup_result_proxy","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/default.py","line":1854,"col":null},{"name":"_finalize_fairy","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/pool/base.py","line":1043,"col":null},{"name":"_checkin","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/pool/base.py","line":1385,"col":null},{"name":"close","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/pool/base.py","line":1510,"col":null},{"name":"close","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":1257,"col":null},{"name":"__exit__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":235,"col":null},{"name":"_finalize_fairy","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/pool/base.py","line":1044,"col":null},{"name":"close","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":1263,"col":null},{"name":"items","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":1067,"col":null},{"name":"pack_items","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":664,"col":null},{"name":"cron_string_iterator","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/schedules.py","line":732,"col":null},{"name":"_iterate_time_windows","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":914,"col":null},{"name":"_get_first_partition_window","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":630,"col":null},{"name":"_get_last_partition_window","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":667,"col":null},{"name":"get_cls_kwargs","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/util/langhelpers.py","line":469,"col":null},{"name":"get_cls_kwargs","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/util/langhelpers.py","line":470,"col":null},{"name":"_static_cache_key","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/type_api.py","line":978,"col":null},{"name":"_gen_cache_key","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/elements.py","line":2155,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/cache_key.py","line":1038,"col":null},{"name":"visit_dml_values","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/cache_key.py","line":1031,"col":null},{"name":"_gen_cache_key","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/cache_key.py","line":342,"col":null},{"name":"_generate_cache_key","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/cache_key.py","line":382,"col":null},{"name":"_static_cache_key","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/type_api.py","line":979,"col":null},{"name":"fetchall","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/cursor.py","line":1136,"col":null},{"name":"_fetchall_impl","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/cursor.py","line":2135,"col":null},{"name":"_allrows","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/result.py","line":548,"col":null},{"name":"fetchall","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/result.py","line":1317,"col":null},{"name":"_get_table_pragma","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/dialects/sqlite/base.py","line":2800,"col":null},{"name":"_generate_cache_key","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/cache_key.py","line":387,"col":null},{"name":"do_close","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/default.py","line":708,"col":null},{"name":"_close_connection","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/pool/base.py","line":376,"col":null},{"name":"__close","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/pool/base.py","line":883,"col":null},{"name":"close","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/pool/base.py","line":784,"col":null},{"name":"_do_return_conn","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/pool/impl.py","line":305,"col":null},{"name":"_return_conn","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/pool/base.py","line":458,"col":null},{"name":"checkin","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/pool/base.py","line":772,"col":null},{"name":"_finalize_fairy","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/pool/base.py","line":1035,"col":null},{"name":"construct_params","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/compiler.py","line":1914,"col":null},{"name":"_init_compiled","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/default.py","line":1390,"col":null},{"name":"dialect_options","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/base.py","line":583,"col":null},{"name":"_generated_cache_key_traversal","file":"","line":16,"col":null},{"name":"_gen_cache_key","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/cache_key.py","line":272,"col":null},{"name":"__str__","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/enum.py","line":1197,"col":null},{"name":"__format__","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/enum.py","line":1230,"col":null},{"name":"_tags_for_asset_event","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":425,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":413,"col":null},{"name":"store_asset_event_tags","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":404,"col":null},{"name":"store_event","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":463,"col":null},{"name":"__init__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":1062,"col":null},{"name":"_wrap_object","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":1078,"col":null},{"name":"_transform_for_serialization","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":967,"col":null},{"name":"_init_compiled","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/default.py","line":1389,"col":null},{"name":"_init_compiled","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/default.py","line":1416,"col":null},{"name":"_transform_for_serialization","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":961,"col":null},{"name":"serialize_value","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":833,"col":null},{"name":"_deactivate_from_connection","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":2690,"col":null},{"name":"_do_commit","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":2744,"col":null},{"name":"commit","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":2631,"col":null},{"name":"__exit__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/util.py","line":145,"col":null},{"name":"sub","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/re/__init__.py","line":185,"col":null},{"name":"safe_construct","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/elements.py","line":5455,"col":null},{"name":"__init__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/elements.py","line":1976,"col":null},{"name":"expect","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/coercions.py","line":415,"col":null},{"name":"get_resource_requirements","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/assets.py","line":1448,"col":null},{"name":"evaluate_automation_conditions","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition_tester.py","line":118,"col":null},{"name":"test_eager_perf","file":"/Users/owen/src/dagster/python_modules/dagster/dagster_tests/definitions_tests/declarative_automation_tests/perf_tests/test_perf.py","line":45,"col":null},{"name":"get_resource_requirements","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/op_definition.py","line":404,"col":null},{"name":"get_resource_requirements","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/assets.py","line":1456,"col":null},{"name":"ensure_resource_deps_satisfiable","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/execution/resources_init.py","line":102,"col":null},{"name":"get_transitive_required_resource_keys","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/execution/resources_init.py","line":379,"col":null},{"name":"merge_resource_defs","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/resource_requirement.py","line":268,"col":null},{"name":"_validate_self_deps","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/assets.py","line":1791,"col":null},{"name":"__init__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/assets.py","line":363,"col":null},{"name":"with_resources","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/assets.py","line":1501,"col":null},{"name":"resolve_assets_def_deps","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/resolved_asset_deps.py","line":162,"col":null},{"name":"__init__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/resolved_asset_deps.py","line":23,"col":null},{"name":"normalize_assets","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/asset_graph.py","line":204,"col":null},{"name":"from_assets","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/asset_graph.py","line":248,"col":null},{"name":"asset_graph","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/repository_definition/repository_definition.py","line":389,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/assets.py","line":974,"col":null},{"name":"keys_by_input_name","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/assets.py","line":974,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/asset_graph.py","line":209,"col":null},{"name":"normalize_assets","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/asset_graph.py","line":206,"col":null},{"name":"generate_asset_dep_graph","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/selector/subset_selector.py","line":109,"col":null},{"name":"from_assets","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/asset_graph.py","line":252,"col":null},{"name":"decode","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/json/decoder.py","line":337,"col":null},{"name":"loads","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/json/__init__.py","line":359,"col":null},{"name":"from_db_string","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/asset_key.py","line":98,"col":null},{"name":"_get_latest_materialization_records","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1227,"col":null},{"name":"get_asset_records","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1308,"col":null},{"name":"get_asset_records","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/instance/__init__.py","line":2207,"col":null},{"name":"inner","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/__init__.py","line":693,"col":null},{"name":"_blocking_batch_load","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/base.py","line":145,"col":null},{"name":"blocking_load","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/aiodataloader.py","line":97,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/aiodataloader.py","line":106,"col":null},{"name":"blocking_load_many","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/aiodataloader.py","line":106,"col":null},{"name":"blocking_get_many","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/loader.py","line":154,"col":null},{"name":"prefetch_asset_records","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/caching_instance_queryer.py","line":117,"col":null},{"name":"prefetch","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition_evaluator.py","line":114,"col":null},{"name":"async_evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition_evaluator.py","line":123,"col":null},{"name":"_run","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/asyncio/events.py","line":84,"col":null},{"name":"_run_once","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/asyncio/base_events.py","line":1936,"col":null},{"name":"run_forever","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/asyncio/base_events.py","line":608,"col":null},{"name":"run_until_complete","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/asyncio/base_events.py","line":641,"col":null},{"name":"run","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/asyncio/runners.py","line":118,"col":null},{"name":"run","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/asyncio/runners.py","line":190,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition_evaluator.py","line":118,"col":null},{"name":"evaluate_automation_conditions","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition_tester.py","line":135,"col":null},{"name":"unpack","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":588,"col":null},{"name":"_unpack_object","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":1209,"col":null},{"name":"raw_decode","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/json/decoder.py","line":353,"col":null},{"name":"deserialize_values","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":1172,"col":null},{"name":"deserialize_value","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":1129,"col":null},{"name":"_get_latest_materialization_records","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1231,"col":null},{"name":"__enter__","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/warnings.py","line":468,"col":null},{"name":"disable_dagster_warnings","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/warnings.py","line":146,"col":null},{"name":"deserialize_values","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":1166,"col":null},{"name":"_add_filter","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/warnings.py","line":187,"col":null},{"name":"simplefilter","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/warnings.py","line":180,"col":null},{"name":"disable_dagster_warnings","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/warnings.py","line":147,"col":null},{"name":"_construct_asset_record_from_row","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1198,"col":null},{"name":"get_asset_records","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1316,"col":null},{"name":"sequence_param","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_check/functions.py","line":1111,"col":null},{"name":"__new__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/asset_key.py","line":46,"col":null},{"name":"from_db_string","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/asset_key.py","line":103,"col":null},{"name":"get_asset_records","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1313,"col":null},{"name":"_check_iterable_items","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_check/functions.py","line":1775,"col":null},{"name":"sequence_param","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_check/functions.py","line":1119,"col":null},{"name":"_construct_asset_record_from_row","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1202,"col":null},{"name":"get_full_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/asset_graph_view/asset_graph_view.py","line":171,"col":null},{"name":"create","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_context.py","line":82,"col":null},{"name":"evaluate_entity","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition_evaluator.py","line":166,"col":null},{"name":"_evaluate_entity_async","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition_evaluator.py","line":133,"col":null},{"name":"get_node_unique_id","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":149,"col":null},{"name":"get_unique_id","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":155,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":159,"col":null},{"name":"get_unique_id","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":158,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operands/slice_conditions.py","line":33,"col":null},{"name":"evaluate_async","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_context.py","line":123,"col":null},{"name":"match","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/re/__init__.py","line":166,"col":null},{"name":"_resolve_type_affinity","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/dialects/sqlite/base.py","line":2332,"col":null},{"name":"_get_column_info","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/dialects/sqlite/base.py","line":2288,"col":null},{"name":"get_columns","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/dialects/sqlite/base.py","line":2251,"col":null},{"name":"can_read_asset_status_cache","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1287,"col":null},{"name":"get_asset_records","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1309,"col":null},{"name":"get_and_update_asset_status_cache_value","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/partition_status_cache.py","line":485,"col":null},{"name":"get_asset_status_cache_values","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/base.py","line":649,"col":null},{"name":"_blocking_batch_load","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/partition_status_cache.py","line":153,"col":null},{"name":"_batch_load","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/loader.py","line":113,"col":null},{"name":"dispatch_queue_batch","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/aiodataloader.py","line":334,"col":null},{"name":"get","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/util/_collections.py","line":529,"col":null},{"name":"_compile_w_cache","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/elements.py","line":699,"col":null},{"name":"db_fetch_mappings","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/sqlalchemy_compat.py","line":35,"col":null},{"name":"_get_latest_materialization_records","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1275,"col":null},{"name":"unpack","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":589,"col":null},{"name":"_resolve_type_affinity","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/dialects/sqlite/base.py","line":2334,"col":null},{"name":"_get_assets_details","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1599,"col":null},{"name":"_get_event_records","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":981,"col":null},{"name":"get_latest_planned_materialization_info","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":2986,"col":null},{"name":"get_latest_planned_materialization_info","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/instance/__init__.py","line":2282,"col":null},{"name":"get_last_planned_storage_id","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/partition_status_cache.py","line":278,"col":null},{"name":"_build_status_cache","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/partition_status_cache.py","line":300,"col":null},{"name":"get_and_update_asset_status_cache_value","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/partition_status_cache.py","line":501,"col":null},{"name":"get_columns","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/dialects/sqlite/base.py","line":2250,"col":null},{"name":"_fetch_raw_asset_rows","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1441,"col":null},{"name":"_fetch_asset_rows","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1402,"col":null},{"name":"get_asset_records","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1307,"col":null},{"name":"_compile","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/re/__init__.py","line":274,"col":null},{"name":"_build_status_cache","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/partition_status_cache.py","line":297,"col":null},{"name":"_get_event_records","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1002,"col":null},{"name":"_post_coercion","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/coercions.py","line":809,"col":null},{"name":"_boolean_compare","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/default_comparator.py","line":121,"col":null},{"name":"_in_impl","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/default_comparator.py","line":225,"col":null},{"name":"operate","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/type_api.py","line":194,"col":null},{"name":"in_","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/operators.py","line":925,"col":null},{"name":"in_op","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/operators.py","line":2102,"col":null},{"name":"operate","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/elements.py","line":1513,"col":null},{"name":"_get_assets_details","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1603,"col":null},{"name":"get_materialized_partitions","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1821,"col":null},{"name":"get_materialized_partitions","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/instance/__init__.py","line":2262,"col":null},{"name":"_build_status_cache","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/partition_status_cache.py","line":367,"col":null},{"name":"__init__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/elements.py","line":3878,"col":null},{"name":"_construct_for_op","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/elements.py","line":2882,"col":null},{"name":"_boolean_compare","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/default_comparator.py","line":135,"col":null},{"name":"_get_latest_materialization_records","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1274,"col":null},{"name":"_init_compiled","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/default.py","line":1329,"col":null},{"name":"update_asset_cached_status_data","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1519,"col":null},{"name":"update_asset_cached_status_data","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/instance/__init__.py","line":1921,"col":null},{"name":"get_and_update_asset_status_cache_value","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/partition_status_cache.py","line":514,"col":null},{"name":"_generated_cache_key_traversal","file":"","line":4,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/cache_key.py","line":336,"col":null},{"name":"_gen_cache_key","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/cache_key.py","line":335,"col":null},{"name":"_get_event_records","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1003,"col":null},{"name":"is_non_string_iterable","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/util/typing.py","line":360,"col":null},{"name":"_literal_coercion","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/coercions.py","line":849,"col":null},{"name":"_in_impl","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/default_comparator.py","line":219,"col":null},{"name":"_apply_asset_filter_to_query","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1580,"col":null},{"name":"_fetch_raw_asset_rows","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1448,"col":null},{"name":"update_wrapper","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/functools.py","line":50,"col":null},{"name":"can_write_asset_status_cache","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1290,"col":null},{"name":"get_and_update_asset_status_cache_value","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/partition_status_cache.py","line":511,"col":null},{"name":"_merge_cursor_description","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/cursor.py","line":496,"col":null},{"name":"__init__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/cursor.py","line":375,"col":null},{"name":"_init_metadata","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/cursor.py","line":1492,"col":null},{"name":"__init__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/cursor.py","line":1442,"col":null},{"name":"_setup_dml_or_text_result","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/default.py","line":1944,"col":null},{"name":"_literal_coercion","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/coercions.py","line":750,"col":null},{"name":"update_asset_cached_status_data","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1524,"col":null},{"name":"get","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/util/_collections.py","line":531,"col":null},{"name":"_fetch_raw_asset_rows","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1457,"col":null},{"name":"_gen_cache_key","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/cache_key.py","line":279,"col":null},{"name":"update_asset_cached_status_data","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1517,"col":null},{"name":"_init_compiled","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/default.py","line":1293,"col":null},{"name":"_make_key","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/cached_method.py","line":148,"col":null},{"name":"_cached_method_wrapper","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/cached_method.py","line":102,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/since_operator.py","line":39,"col":null},{"name":"evaluate_async","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_context.py","line":122,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/boolean_operators.py","line":45,"col":null},{"name":"__init__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/cached_method.py","line":123,"col":null},{"name":"_make_key","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/cached_method.py","line":153,"col":null},{"name":"_cached_method_wrapper","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/cached_method.py","line":86,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/dep_operators.py","line":36,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/dep_operators.py","line":124,"col":null},{"name":"_cached_method_wrapper","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/cached_method.py","line":103,"col":null},{"name":"__repr__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":508,"col":null},{"name":"__hash__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":514,"col":null},{"name":"_add_partitions_to_time_windows","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":1835,"col":null},{"name":"included_time_windows","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2054,"col":null},{"name":"_attempt_coerce_to_time_window_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2709,"col":null},{"name":"__or__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2171,"col":null},{"name":"_oper","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/asset_graph_view/entity_subset.py","line":70,"col":null},{"name":"compute_union","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/asset_graph_view/entity_subset.py","line":85,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/boolean_operators.py","line":102,"col":null},{"name":"__repr__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":509,"col":null},{"name":"_resolve_type_affinity","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/dialects/sqlite/base.py","line":2365,"col":null},{"name":"get_columns","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/dialects/sqlite/base.py","line":2221,"col":null},{"name":"get_materialized_partitions","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1830,"col":null},{"name":"expect","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/coercions.py","line":421,"col":null},{"name":"__eq__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/operators.py","line":582,"col":null},{"name":"get_materialized_partitions","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1815,"col":null},{"name":"_gen_cache_key","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/elements.py","line":2145,"col":null},{"name":"_gen_cache_key","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/cache_key.py","line":293,"col":null},{"name":"_merge_cursor_description","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/cursor.py","line":621,"col":null},{"name":"_init_metadata","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/cursor.py","line":1523,"col":null},{"name":"_fetch_raw_asset_rows","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1458,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/selectable.py","line":5196,"col":null},{"name":"__init__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/selectable.py","line":5195,"col":null},{"name":"select","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/_selectable_constructors.py","line":482,"col":null},{"name":"db_select","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/sqlalchemy_compat.py","line":11,"col":null},{"name":"_get_latest_materialization_records","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1259,"col":null},{"name":"__get__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/util/langhelpers.py","line":1253,"col":null},{"name":"_adapt_to_context","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/cursor.py","line":333,"col":null},{"name":"_init_metadata","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/cursor.py","line":1518,"col":null},{"name":"_setup_result_proxy","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/default.py","line":1847,"col":null},{"name":"_all_selected_columns","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/selectable.py","line":6337,"col":null},{"name":"_get_latest_materialization_records","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1253,"col":null},{"name":"_get_assets_details","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1600,"col":null},{"name":"is_non_string_iterable","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/util/typing.py","line":361,"col":null},{"name":"_get_latest_materialization_records","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1249,"col":null},{"name":"_init_compiled","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/default.py","line":1474,"col":null},{"name":"_cached_result_processor","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/type_api.py","line":914,"col":null},{"name":"get_result_processor","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/default.py","line":1782,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/cursor.py","line":632,"col":null},{"name":"_merge_cursor_description","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/cursor.py","line":625,"col":null},{"name":"get_materialized_partitions","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1829,"col":null},{"name":"index_connection","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/in_memory.py","line":61,"col":null},{"name":"dst_safe_strptime","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":122,"col":null},{"name":"start_time_for_partition_key","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":573,"col":null},{"name":"has_partition_key","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":996,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/partition_status_cache.py","line":263,"col":null},{"name":"get_validated_partition_keys","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/partition_status_cache.py","line":260,"col":null},{"name":"_build_status_cache","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/partition_status_cache.py","line":364,"col":null},{"name":"get_and_update_asset_status_cache_value","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/partition_status_cache.py","line":480,"col":null},{"name":"_gen_cache_key","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/elements.py","line":2138,"col":null},{"name":"_exec_single_context","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":1942,"col":null},{"name":"_exec_single_context","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":1971,"col":null},{"name":"deserialize_values","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":1177,"col":null},{"name":"_for_instance","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/event/base.py","line":183,"col":null},{"name":"__get__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/event/base.py","line":449,"col":null},{"name":"__init__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":167,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/result.py","line":187,"col":null},{"name":"_make_key_to_index","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/result.py","line":185,"col":null},{"name":"_make_new_metadata","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/cursor.py","line":198,"col":null},{"name":"_adapt_to_context","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/cursor.py","line":327,"col":null},{"name":"cursor","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/pool/base.py","line":1485,"col":null},{"name":"create_default_cursor","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/default.py","line":1758,"col":null},{"name":"create_cursor","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/default.py","line":1752,"col":null},{"name":"_init_compiled","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/default.py","line":1418,"col":null},{"name":"_execute_clauseelement","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":1598,"col":null},{"name":"_for_instance","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/event/base.py","line":185,"col":null},{"name":"_transaction_is_active","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":2639,"col":null},{"name":"__exit__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/util.py","line":143,"col":null},{"name":"_generate","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/base.py","line":746,"col":null},{"name":"_generative","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/base.py","line":278,"col":null},{"name":"limit","file":"","line":2,"col":null},{"name":"_get_event_records","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":995,"col":null},{"name":"do_commit","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/default.py","line":702,"col":null},{"name":"_commit_impl","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":1144,"col":null},{"name":"_connection_commit_impl","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":2707,"col":null},{"name":"_do_commit","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":2736,"col":null},{"name":"update_asset_cached_status_data","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1518,"col":null},{"name":"__new__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2237,"col":null},{"name":"from_all_partitions_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2260,"col":null},{"name":"_validated_input_partitions_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partition_mapping.py","line":133,"col":null},{"name":"get_upstream_mapped_partitions_result_for_partitions","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partition_mapping.py","line":165,"col":null},{"name":"compute_mapped_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/asset_graph_view/asset_graph_view.py","line":263,"col":null},{"name":"compute_mapped_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/asset_graph_view/entity_subset.py","line":109,"col":null},{"name":"get_structured_cursor","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_context.py","line":253,"col":null},{"name":"_get_previous_child_true_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/newly_true_operator.py","line":39,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/newly_true_operator.py","line":55,"col":null},{"name":"_run_once","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/asyncio/base_events.py","line":1921,"col":null},{"name":"__new__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2246,"col":null},{"name":"_attempt_coerce_to_time_window_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2706,"col":null},{"name":"__sub__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2438,"col":null},{"name":"compute_difference","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/asset_graph_view/entity_subset.py","line":82,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/boolean_operators.py","line":132,"col":null},{"name":"_asdict","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/collections/__init__.py","line":467,"col":null},{"name":"included_time_windows","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2274,"col":null},{"name":"__sub__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2444,"col":null},{"name":"__new__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2227,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/since_operator.py","line":57,"col":null},{"name":"__new__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2233,"col":null},{"name":"__new__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2240,"col":null},{"name":"__init__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":626,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/boolean_operators.py","line":134,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/dep_operators.py","line":41,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/boolean_operators.py","line":129,"col":null},{"name":"_cached_method_wrapper","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/cached_method.py","line":66,"col":null},{"name":"__new__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/partition.py","line":1237,"col":null},{"name":"get_full_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/asset_graph_view/asset_graph_view.py","line":163,"col":null},{"name":"compute_missing_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/asset_graph_view/asset_graph_view.py","line":352,"col":null},{"name":"compute_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operands/slice_conditions.py","line":80,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operands/slice_conditions.py","line":61,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/newly_true_operator.py","line":46,"col":null},{"name":"non_secure_md5_hash_str","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/security.py","line":12,"col":null},{"name":"order_by","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/selectable.py","line":4244,"col":null},{"name":"order_by","file":"","line":2,"col":null},{"name":"_fetch_raw_asset_rows","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1447,"col":null},{"name":"_process_parameters_for_postcompile","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/compiler.py","line":2155,"col":null},{"name":"_init_compiled","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/default.py","line":1436,"col":null},{"name":"_translate_colname","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/dialects/sqlite/base.py","line":1892,"col":null},{"name":"_colnames_from_description","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/cursor.py","line":670,"col":null},{"name":"_merge_cols_by_none","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/cursor.py","line":796,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/cursor.py","line":625,"col":null},{"name":"_literal_execute_expanding_parameter","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/compiler.py","line":3280,"col":null},{"name":"_process_parameters_for_postcompile","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/compiler.py","line":2097,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/cursor.py","line":470,"col":null},{"name":"__init__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/cursor.py","line":470,"col":null},{"name":"__connect","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/pool/base.py","line":905,"col":null},{"name":"_fetch_raw_asset_rows","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1437,"col":null},{"name":"__bool__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/event/attr.py","line":390,"col":null},{"name":"__new__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/asset_key.py","line":48,"col":null},{"name":"_gen_cache_key","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/cache_key.py","line":300,"col":null},{"name":"__close","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/pool/base.py","line":879,"col":null},{"name":"_execute_context","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":1841,"col":null},{"name":"_execute_context","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":1843,"col":null},{"name":"__get__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/util/langhelpers.py","line":1142,"col":null},{"name":"and_","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/elements.py","line":3147,"col":null},{"name":"and_","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/_elements_constructors.py","line":245,"col":null},{"name":"get_materialized_partitions","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1811,"col":null},{"name":"close","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":1247,"col":null},{"name":"_gen_cache_key","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/cache_key.py","line":285,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/result.py","line":185,"col":null},{"name":"_generated_cache_key_traversal","file":"","line":3,"col":null},{"name":"decorating_function","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/functools.py","line":519,"col":null},{"name":"__getattr__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/pool/base.py","line":1488,"col":null},{"name":"to_db_string","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/asset_key.py","line":70,"col":null},{"name":"to_string","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/asset_key.py","line":67,"col":null},{"name":"update_asset_cached_status_data","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1522,"col":null},{"name":"connect","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":3255,"col":null},{"name":"deserialize_values","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":1182,"col":null},{"name":"__init__","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/json/decoder.py","line":329,"col":null},{"name":"is_associative","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/operators.py","line":2473,"col":null},{"name":"_construct_for_op","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/elements.py","line":2850,"col":null},{"name":"get_materialized_partitions","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1812,"col":null},{"name":"_gen_cache_key","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/cache_key.py","line":284,"col":null},{"name":"for_child_condition","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_context.py","line":103,"col":null},{"name":"from_serialized","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":1957,"col":null},{"name":"deserialize_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/partition.py","line":225,"col":null},{"name":"deserialize_materialized_partition_subsets","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/partition_status_cache.py","line":161,"col":null},{"name":"get_materialized_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/partition_status_cache.py","line":185,"col":null},{"name":"compute_missing_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/asset_graph_view/asset_graph_view.py","line":364,"col":null},{"name":"for_child_condition","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_context.py","line":100,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/boolean_operators.py","line":94,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/boolean_operators.py","line":93,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/dep_operators.py","line":123,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operands/slice_conditions.py","line":65,"col":null},{"name":"__or__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2411,"col":null},{"name":"_validated_input_partitions_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partition_mapping.py","line":132,"col":null},{"name":"get_downstream_partitions_for_partitions","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partition_mapping.py","line":194,"col":null},{"name":"compute_mapped_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/asset_graph_view/asset_graph_view.py","line":248,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/dep_operators.py","line":43,"col":null},{"name":"_cached_method_wrapper","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/cached_method.py","line":89,"col":null},{"name":"__new__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partition_mapping.py","line":105,"col":null},{"name":"infer_partition_mapping","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/partition_mapping.py","line":1135,"col":null},{"name":"get_partition_mapping","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/base_asset_graph.py","line":367,"col":null},{"name":"compute_mapped_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/asset_graph_view/asset_graph_view.py","line":239,"col":null},{"name":"key","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_context.py","line":137,"col":null},{"name":"get_empty_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_context.py","line":247,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/dep_operators.py","line":121,"col":null},{"name":"__hash__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/asset_key.py","line":56,"col":null},{"name":"get","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/base_asset_graph.py","line":250,"col":null},{"name":"_handle_execution_set","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition_evaluator.py","line":180,"col":null},{"name":"evaluate_entity","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition_evaluator.py","line":174,"col":null},{"name":"__init__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":649,"col":null},{"name":"__hash__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/asset_key.py","line":57,"col":null},{"name":"_get_partitions_def","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/asset_graph_view/asset_graph_view.py","line":155,"col":null},{"name":"get_full_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/asset_graph_view/asset_graph_view.py","line":161,"col":null},{"name":"gather","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/asyncio/tasks.py","line":839,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/boolean_operators.py","line":100,"col":null},{"name":"get_unique_id","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":162,"col":null},{"name":"_has_code_flag","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/inspect.py","line":395,"col":null},{"name":"iscoroutinefunction","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/inspect.py","line":414,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operands/slice_conditions.py","line":60,"col":null},{"name":"_execute_clauseelement","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":1625,"col":null},{"name":"isEnabledFor","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/logging/__init__.py","line":1734,"col":null},{"name":"debug","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/logging/__init__.py","line":1476,"col":null},{"name":"__connect","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/pool/base.py","line":897,"col":null},{"name":"safe_construct","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/elements.py","line":5461,"col":null},{"name":"_bind_param","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/elements.py","line":4594,"col":null},{"name":"_literal_coercion","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/coercions.py","line":877,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/selectable.py","line":6131,"col":null},{"name":"select_from","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/selectable.py","line":6131,"col":null},{"name":"select_from","file":"","line":2,"col":null},{"name":"_get_latest_materialization_records","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1265,"col":null},{"name":"_clone","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/elements.py","line":2130,"col":null},{"name":"_post_coercion","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/coercions.py","line":892,"col":null},{"name":"__init__","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/contextlib.py","line":105,"col":null},{"name":"helper","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/contextlib.py","line":301,"col":null},{"name":"_execute_on_connection","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/elements.py","line":512,"col":null},{"name":"_do_commit","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":2749,"col":null},{"name":"_do_commit","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":2757,"col":null},{"name":"_gen_cache_key","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/cache_key.py","line":256,"col":null},{"name":"_exec_w_sync_on_first_run","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/event/attr.py","line":468,"col":null},{"name":"__connect","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/pool/base.py","line":914,"col":null},{"name":"_apply_filter_to_query","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":874,"col":null},{"name":"_get_event_records","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":989,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/boolean_operators.py","line":95,"col":null},{"name":"__init__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":647,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/boolean_operators.py","line":104,"col":null},{"name":"inst_param","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_check/functions.py","line":638,"col":null},{"name":"__init__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2032,"col":null},{"name":"with_partition_keys","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2047,"col":null},{"name":"subset_with_partition_keys","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/partition.py","line":211,"col":null},{"name":"__or__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2168,"col":null},{"name":"__get__","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/functools.py","line":988,"col":null},{"name":"is_empty","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2289,"col":null},{"name":"_do_cheap_partition_mapping_if_possible","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partition_mapping.py","line":404,"col":null},{"name":"_map_partitions","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partition_mapping.py","line":259,"col":null},{"name":"get_upstream_mapped_partitions_result_for_partitions","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partition_mapping.py","line":158,"col":null},{"name":"create_task","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/asyncio/base_events.py","line":437,"col":null},{"name":"_ensure_future","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/asyncio/tasks.py","line":680,"col":null},{"name":"gather","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/asyncio/tasks.py","line":827,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/dep_operators.py","line":125,"col":null},{"name":"get_node_unique_id","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":148,"col":null},{"name":"partitions_def","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2278,"col":null},{"name":"__sub__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2485,"col":null},{"name":"__instancecheck__","file":"","line":117,"col":null},{"name":"_attempt_coerce_to_time_window_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2705,"col":null},{"name":"__and__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2371,"col":null},{"name":"compute_intersection","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/asset_graph_view/entity_subset.py","line":88,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/dep_operators.py","line":132,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/partition_mapping.py","line":1020,"col":null},{"name":"_get_infer_single_to_multi_dimension_deps_result","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/partition_mapping.py","line":1017,"col":null},{"name":"infer_partition_mapping","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/partition_mapping.py","line":1127,"col":null},{"name":"__init__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":636,"col":null},{"name":"__init__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":641,"col":null},{"name":"__init__","file":"","line":3,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/dep_operators.py","line":44,"col":null},{"name":"_add_partitions_to_time_windows","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":1902,"col":null},{"name":"__and__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2189,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/boolean_operators.py","line":49,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":173,"col":null},{"name":"has_rule_condition","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":173,"col":null},{"name":"create","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_context.py","line":89,"col":null},{"name":"from_all_partitions_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2267,"col":null},{"name":"executemany","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/default.py","line":1621,"col":null},{"name":"_exec_single_context","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":1882,"col":null},{"name":"_make_key_to_index","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/result.py","line":187,"col":null},{"name":"__init__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/cursor.py","line":494,"col":null},{"name":"construct_params","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/compiler.py","line":1941,"col":null},{"name":"_strptime","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/_strptime.py","line":366,"col":null},{"name":"_strptime_datetime","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/_strptime.py","line":567,"col":null},{"name":"dst_safe_strptime","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":125,"col":null},{"name":"do_rollback","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/default.py","line":699,"col":null},{"name":"_reset","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/pool/base.py","line":1432,"col":null},{"name":"_finalize_fairy","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/pool/base.py","line":986,"col":null},{"name":"_apply_filter_to_query","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":869,"col":null},{"name":"_finalize_fairy","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/pool/base.py","line":949,"col":null},{"name":"_set_memoized_attribute","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/util/langhelpers.py","line":1225,"col":null},{"name":"__init__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/cursor.py","line":1479,"col":null},{"name":"__init__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/cursor.py","line":388,"col":null},{"name":"_setup_dml_or_text_result","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/default.py","line":1893,"col":null},{"name":"_exec_single_context","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":1981,"col":null},{"name":"_column_naming_convention","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/selectable.py","line":4619,"col":null},{"name":"_generate_columns_plus_names","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/selectable.py","line":2269,"col":null},{"name":"_generate_fromclause_column_proxies","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/selectable.py","line":6397,"col":null},{"name":"_populate_column_collection","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/selectable.py","line":1671,"col":null},{"name":"c","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/selectable.py","line":886,"col":null},{"name":"_get_latest_materialization_records","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1269,"col":null},{"name":"get_columns","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/reflection.py","line":867,"col":null},{"name":"_gen_cache_key","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/cache_key.py","line":246,"col":null},{"name":"_init_compiled","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/default.py","line":1473,"col":null},{"name":"_get_latest_materialization_records","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1244,"col":null},{"name":"_setup_dml_or_text_result","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/default.py","line":1948,"col":null},{"name":"update_wrapper","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/functools.py","line":52,"col":null},{"name":"_boolean_compare","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/default_comparator.py","line":101,"col":null},{"name":"is_","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/operators.py","line":1032,"col":null},{"name":"is_","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/operators.py","line":2002,"col":null},{"name":"_fetch_raw_asset_rows","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1453,"col":null},{"name":"serialize","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":1914,"col":null},{"name":"_build_status_cache","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/partition_status_cache.py","line":391,"col":null},{"name":"_clone","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/elements.py","line":424,"col":null},{"name":"_clone","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/elements.py","line":2121,"col":null},{"name":"_setup_result_proxy","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/default.py","line":1853,"col":null},{"name":"partitions_def","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/asset_graph.py","line":97,"col":null},{"name":"compute_mapped_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/asset_graph_view/asset_graph_view.py","line":236,"col":null},{"name":"compute_mapped_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/asset_graph_view/asset_graph_view.py","line":237,"col":null},{"name":"_map_partitions","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partition_mapping.py","line":267,"col":null},{"name":"param_invariant","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_check/functions.py","line":1619,"col":null},{"name":"__init__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":648,"col":null},{"name":"__init__","file":"","line":6,"col":null},{"name":"_oper","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/asset_graph_view/entity_subset.py","line":71,"col":null},{"name":"num_partitions","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2310,"col":null},{"name":"__len__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":1992,"col":null},{"name":"size","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/asset_graph_view/entity_subset.py","line":116,"col":null},{"name":"_evaluate_entity_async","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition_evaluator.py","line":140,"col":null},{"name":"is_partitioned","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/asset_graph_view/entity_subset.py","line":127,"col":null},{"name":"_evaluate_entity_async","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition_evaluator.py","line":141,"col":null},{"name":"evaluate_async","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_context.py","line":121,"col":null},{"name":"get","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/base_asset_graph.py","line":248,"col":null},{"name":"get_partition_mapping","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/base_asset_graph.py","line":366,"col":null},{"name":"_oper","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/asset_graph_view/entity_subset.py","line":72,"col":null},{"name":"__init__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/event/base.py","line":350,"col":null},{"name":"_join","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/event/base.py","line":196,"col":null},{"name":"unpack","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":586,"col":null},{"name":"oneshot","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/util/langhelpers.py","line":1274,"col":null},{"name":"close","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/pool/base.py","line":1508,"col":null},{"name":"_get_table_pragma","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/dialects/sqlite/base.py","line":2796,"col":null},{"name":"_strptime","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/_strptime.py","line":383,"col":null},{"name":"_construct","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/elements.py","line":3040,"col":null},{"name":"or_","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/elements.py","line":3165,"col":null},{"name":"or_","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/_elements_constructors.py","line":1488,"col":null},{"name":"_fetch_raw_asset_rows","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1452,"col":null},{"name":"_construct","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/elements.py","line":3059,"col":null},{"name":"cast","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/typing.py","line":2287,"col":null},{"name":"_setup_dml_or_text_result","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/default.py","line":1894,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/cursor.py","line":485,"col":null},{"name":"__init__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/cursor.py","line":485,"col":null},{"name":"_connection_insp","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/reflection.py","line":316,"col":null},{"name":"inspect","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/inspection.py","line":140,"col":null},{"name":"true_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":667,"col":null},{"name":"compute_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operands/slice_conditions.py","line":143,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operands/slice_conditions.py","line":63,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operands/slice_conditions.py","line":54,"col":null},{"name":"param_invariant","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_check/functions.py","line":1618,"col":null},{"name":"_mockable_get_current_timestamp","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_time/__init__.py","line":34,"col":null},{"name":"get_current_timestamp","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_time/__init__.py","line":42,"col":null},{"name":"__init__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":637,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/since_operator.py","line":61,"col":null},{"name":"_cached_method_wrapper","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/cached_method.py","line":69,"col":null},{"name":"convert_to_serializable_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/asset_graph_view/entity_subset.py","line":51,"col":null},{"name":"node_cursor","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":714,"col":null},{"name":"get_child_node_cursors","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":743,"col":null},{"name":"get_child_node_cursors","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":745,"col":null},{"name":"get_new_cursor","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":753,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition_tester.py","line":140,"col":null},{"name":"evaluate_automation_conditions","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition_tester.py","line":140,"col":null},{"name":"get_node_snapshot","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":126,"col":null},{"name":"serializable_evaluation","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":723,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":732,"col":null},{"name":"serializable_evaluation","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":731,"col":null},{"name":"get_new_cursor","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":750,"col":null},{"name":"_compute_subset_value_str","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":797,"col":null},{"name":"value_hash","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":697,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":702,"col":null},{"name":"value_hash","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":702,"col":null},{"name":"get_new_cursor","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":754,"col":null},{"name":"serializable_evaluation","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":726,"col":null},{"name":"__get__","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/functools.py","line":996,"col":null},{"name":"node_cursor","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":711,"col":null},{"name":"value_hash","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":699,"col":null},{"name":"__init__","file":"","line":4,"col":null},{"name":"get_serializable_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":759,"col":null},{"name":"serializable_evaluation","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":724,"col":null},{"name":"value_hash","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":698,"col":null},{"name":"serializable_evaluation","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":725,"col":null},{"name":"description","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/boolean_operators.py","line":23,"col":null},{"name":"value_hash","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":696,"col":null},{"name":"value_hash","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":704,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":796,"col":null},{"name":"_compute_subset_value_str","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":795,"col":null},{"name":"serializable_evaluation","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":722,"col":null},{"name":"node_cursor","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":709,"col":null},{"name":"get_label","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":607,"col":null},{"name":"get_node_snapshot","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":130,"col":null},{"name":"__get__","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/functools.py","line":995,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/resource_requirement.py","line":272,"col":null},{"name":"merge_resource_defs","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/resource_requirement.py","line":271,"col":null},{"name":"__init__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/assets.py","line":158,"col":null},{"name":"to_serializable_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2491,"col":null},{"name":"before_pack","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/asset_graph_view/serializable_entity_subset.py","line":27,"col":null},{"name":"pack_items","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":645,"col":null},{"name":"evaluate_automation_conditions","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition_tester.py","line":131,"col":null},{"name":"_transform_for_serialization","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":904,"col":null},{"name":"items","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":1068,"col":null},{"name":"object_as_mapping","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":701,"col":null},{"name":"pack_items","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":671,"col":null},{"name":"_transform_for_serialization","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":947,"col":null},{"name":"to_serializable_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2152,"col":null},{"name":"inst","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_check/functions.py","line":692,"col":null},{"name":"subset_value","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/asset_graph_view/serializable_entity_subset.py","line":53,"col":null},{"name":"pack_items","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":646,"col":null},{"name":"from_def","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/remote_representation/external_data.py","line":806,"col":null},{"name":"to_serializable_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2500,"col":null},{"name":"from_def","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/remote_representation/external_data.py","line":807,"col":null},{"name":"pack_items","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":668,"col":null},{"name":"_transform_for_serialization","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":896,"col":null},{"name":"get_partitions_definition","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/remote_representation/external_data.py","line":817,"col":null},{"name":"to_serializable_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2161,"col":null},{"name":"object_as_mapping","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":734,"col":null},{"name":"replace","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/dataclasses.py","line":1503,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_record/__init__.py","line":349,"col":null},{"name":"as_dict","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_record/__init__.py","line":349,"col":null},{"name":"as_dict_for_new","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_record/__init__.py","line":358,"col":null},{"name":"object_as_mapping","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":698,"col":null},{"name":"with_partitions_def","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2356,"col":null},{"name":"to_serializable_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2503,"col":null},{"name":"with_partitions_def","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2363,"col":null},{"name":"get_partitions_definition","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/remote_representation/external_data.py","line":814,"col":null},{"name":"items","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":1066,"col":null},{"name":"from_def","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/remote_representation/external_data.py","line":805,"col":null},{"name":"to_serializable_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2159,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2233,"col":null},{"name":"to_serializable_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2162,"col":null},{"name":"replace","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/dataclasses.py","line":1481,"col":null},{"name":"replace","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/dataclasses.py","line":1479,"col":null},{"name":"to_serializable_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2498,"col":null},{"name":"pack_items","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":662,"col":null},{"name":"get_storage_name","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":683,"col":null},{"name":"pack_items","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":644,"col":null},{"name":"__checked_new__","file":"","line":5,"col":null},{"name":"__new__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":340,"col":null},{"name":"get_partitions_definition","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/remote_representation/external_data.py","line":816,"col":null},{"name":"to_serializable_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2502,"col":null},{"name":"pack_items","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":650,"col":null},{"name":"_transform_for_serialization","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":914,"col":null},{"name":"with_partitions_def","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2357,"col":null},{"name":"items","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":1064,"col":null},{"name":"_unpack_object","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":1199,"col":null},{"name":"unpack","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":593,"col":null},{"name":"__new__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":346,"col":null},{"name":"unpack","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":610,"col":null},{"name":"is_valid_cron_string","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/schedules.py","line":58,"col":null},{"name":"is_valid_cron_schedule","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/schedules.py","line":65,"col":null},{"name":"__new__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":334,"col":null},{"name":"unpack","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":595,"col":null},{"name":"_unpack_object","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":1198,"col":null},{"name":"is_valid_cron_string","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/schedules.py","line":54,"col":null},{"name":"is_valid","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/croniter/croniter.py","line":982,"col":null},{"name":"_unpack_object","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":1196,"col":null},{"name":"validate_asset_event_tags","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/events.py","line":753,"col":null},{"name":"__new__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/events.py","line":410,"col":null},{"name":"opt_str_param","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_check/functions.py","line":1344,"col":null},{"name":"__new__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/events/log.py","line":85,"col":null},{"name":"contextual_namespace","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_check/builder.py","line":95,"col":null},{"name":"from_db_string","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/partition_status_cache.py","line":143,"col":null},{"name":"_construct_asset_record_from_row","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1208,"col":null},{"name":"get_unique_id","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":160,"col":null},{"name":"get_subset_from_serializable_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/asset_graph_view/asset_graph_view.py","line":185,"col":null},{"name":"previous_true_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_context.py","line":180,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operands/slice_conditions.py","line":34,"col":null},{"name":"__init__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":2682,"col":null},{"name":"_begin_impl","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":1092,"col":null},{"name":"_get_column_info","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/dialects/sqlite/base.py","line":2293,"col":null},{"name":"__init__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/cursor.py","line":484,"col":null},{"name":"_generated_cache_key_traversal","file":"","line":9,"col":null},{"name":"expect","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/coercions.py","line":376,"col":null},{"name":"_colnames_from_description","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/cursor.py","line":667,"col":null},{"name":"__repr__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":507,"col":null},{"name":"get_serializable_unique_identifier","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":986,"col":null},{"name":"get_and_update_asset_status_cache_value","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/partition_status_cache.py","line":497,"col":null},{"name":"__init__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/elements.py","line":4694,"col":null},{"name":"label","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/elements.py","line":1703,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/compiler.py","line":2122,"col":null},{"name":"_process_parameters_for_postcompile","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/compiler.py","line":2120,"col":null},{"name":"__init__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/sqltypes.py","line":3340,"col":null},{"name":"_literal_coercion","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/coercions.py","line":804,"col":null},{"name":"compute_latest_time_window_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/asset_graph_view/asset_graph_view.py","line":319,"col":null},{"name":"compute_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operands/slice_conditions.py","line":258,"col":null},{"name":"__or__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2431,"col":null},{"name":"_build_status_cache","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/partition_status_cache.py","line":315,"col":null},{"name":"__init__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/functions.py","line":1604,"col":null},{"name":"__call__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/functions.py","line":968,"col":null},{"name":"__init__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/functions.py","line":1613,"col":null},{"name":"execute","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":1374,"col":null},{"name":"go","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/selectable.py","line":4623,"col":null},{"name":"_generate_columns_plus_names","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/selectable.py","line":2409,"col":null},{"name":"dumps","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/json/__init__.py","line":229,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1620,"col":null},{"name":"_get_assets_details","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1619,"col":null},{"name":"get_connection","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/pool/base.py","line":854,"col":null},{"name":"checkout","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/pool/base.py","line":715,"col":null},{"name":"_colnames_from_description","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/cursor.py","line":663,"col":null},{"name":"__init__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/event/base.py","line":351,"col":null},{"name":"cache","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/reflection.py","line":107,"col":null},{"name":"_fetch_raw_asset_rows","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1450,"col":null},{"name":"get_columns","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/reflection.py","line":869,"col":null},{"name":"sequence_param","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_check/functions.py","line":1109,"col":null},{"name":"_get_assets_details","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1597,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operands/slice_conditions.py","line":59,"col":null},{"name":"__new__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2242,"col":null},{"name":"inst_param","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_check/functions.py","line":635,"col":null},{"name":"partitions_def","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2041,"col":null},{"name":"_attempt_coerce_to_time_window_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2707,"col":null},{"name":"create","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_context.py","line":74,"col":null},{"name":"__init__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":630,"col":null},{"name":"__init__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":631,"col":null},{"name":"iterencode","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/json/encoder.py","line":215,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1604,"col":null},{"name":"_get_assets_details","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1604,"col":null},{"name":"_gen_cache_key","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/schema.py","line":411,"col":null},{"name":"_gen_cache_key","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/schema.py","line":414,"col":null},{"name":"cache","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/reflection.py","line":87,"col":null},{"name":"__get__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/util/langhelpers.py","line":1254,"col":null},{"name":"_setup_result_proxy","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/default.py","line":1858,"col":null},{"name":"_get_event_records","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":985,"col":null},{"name":"_soft_close","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/cursor.py","line":1567,"col":null},{"name":"fetchall","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/cursor.py","line":1137,"col":null},{"name":"_fetchall_impl","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/result.py","line":1676,"col":null},{"name":"all","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/result.py","line":2074,"col":null},{"name":"_init_compiled","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/default.py","line":1483,"col":null},{"name":"executable_in_same_run","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/asset_graph.py","line":353,"col":null},{"name":"_executable_with_root_context_key","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operands/slice_conditions.py","line":133,"col":null},{"name":"compute_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operands/slice_conditions.py","line":144,"col":null},{"name":"gather","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/asyncio/tasks.py","line":847,"col":null},{"name":"_do_cheap_partition_mapping_if_possible","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partition_mapping.py","line":405,"col":null},{"name":"get_downstream_partitions_for_partitions","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partition_mapping.py","line":187,"col":null},{"name":"empty_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2132,"col":null},{"name":"empty_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":965,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/dep_operators.py","line":130,"col":null},{"name":"__init__","file":"","line":11,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/dep_operators.py","line":37,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/boolean_operators.py","line":130,"col":null},{"name":"__and__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2405,"col":null},{"name":"partitions_def","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/assets.py","line":1038,"col":null},{"name":"compute_latest_time_window_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/asset_graph_view/asset_graph_view.py","line":313,"col":null},{"name":"get_asset_record","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/caching_instance_queryer.py","line":232,"col":null},{"name":"asset_partition_has_materialization_or_observation","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/caching_instance_queryer.py","line":350,"col":null},{"name":"get_asset_partitions_updated_after_cursor","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/caching_instance_queryer.py","line":854,"col":null},{"name":"get_asset_subset_updated_after_cursor","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/caching_instance_queryer.py","line":898,"col":null},{"name":"compute_updated_since_cursor_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/asset_graph_view/asset_graph_view.py","line":424,"col":null},{"name":"compute_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operands/slice_conditions.py","line":182,"col":null},{"name":"_mockable_get_current_datetime","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_time/__init__.py","line":17,"col":null},{"name":"get_current_datetime","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_time/__init__.py","line":25,"col":null},{"name":"for_child_condition","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_context.py","line":107,"col":null},{"name":"_boolean_compare","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/default_comparator.py","line":122,"col":null},{"name":"_adapt_to_context","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/cursor.py","line":330,"col":null},{"name":"_reset","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/pool/base.py","line":1405,"col":null},{"name":"_gen_cache_key","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/cache_key.py","line":299,"col":null},{"name":"_generate_cache_key","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/cache_key.py","line":383,"col":null},{"name":"__init__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/elements.py","line":3876,"col":null},{"name":"_check_iterable_items","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_check/functions.py","line":1774,"col":null},{"name":"set_param","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_check/functions.py","line":1253,"col":null},{"name":"__init__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2035,"col":null},{"name":"empty_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2133,"col":null},{"name":"build_failed_and_in_progress_partition_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/partition_status_cache.py","line":410,"col":null},{"name":"_build_status_cache","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/partition_status_cache.py","line":375,"col":null},{"name":"expect","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/coercions.py","line":410,"col":null},{"name":"__init__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/elements.py","line":4673,"col":null},{"name":"get_columns","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/dialects/sqlite/base.py","line":2222,"col":null},{"name":"deserialize_values","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_serdes/serdes.py","line":1174,"col":null},{"name":"loads","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/json/__init__.py","line":358,"col":null},{"name":"","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/result.py","line":551,"col":null},{"name":"_allrows","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/result.py","line":551,"col":null},{"name":"__call__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/functions.py","line":967,"col":null},{"name":"infer_partition_mapping","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/partition_mapping.py","line":1126,"col":null},{"name":"add","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/_weakrefset.py","line":88,"col":null},{"name":"_done_callback","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/asyncio/tasks.py","line":768,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/boolean_operators.py","line":91,"col":null},{"name":"_evaluate_entity_async","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition_evaluator.py","line":149,"col":null},{"name":"evaluate","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/boolean_operators.py","line":50,"col":null},{"name":"get_subset_from_serializable_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/asset_graph_view/asset_graph_view.py","line":183,"col":null},{"name":"with_partition_keys","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2046,"col":null},{"name":"from_partition_keys","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/legacy/valid_asset_subset.py","line":151,"col":null},{"name":"from_asset_partitions_set","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/legacy/valid_asset_subset.py","line":133,"col":null},{"name":"get_asset_subset_updated_after_cursor","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_utils/caching_instance_queryer.py","line":921,"col":null},{"name":"children","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":107,"col":null},{"name":"_init_compiled","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/default.py","line":1420,"col":null},{"name":"set_regexp","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/dialects/sqlite/pysqlite.py","line":561,"col":null},{"name":"connect","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/dialects/sqlite/pysqlite.py","line":577,"col":null},{"name":"on_connect","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/create.py","line":721,"col":null},{"name":"__call__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/event/attr.py","line":497,"col":null},{"name":"_exec_w_sync_on_first_run","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/event/attr.py","line":489,"col":null},{"name":"set_regexp","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/dialects/sqlite/pysqlite.py","line":560,"col":null},{"name":"exec_driver_sql","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":1772,"col":null},{"name":"__init__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/elements.py","line":2011,"col":null},{"name":"_literal_coercion","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/coercions.py","line":1089,"col":null},{"name":"_offset_or_limit_clause","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/selectable.py","line":3964,"col":null},{"name":"limit","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/selectable.py","line":4063,"col":null},{"name":"_resolve_for_literal","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/sqltypes.py","line":229,"col":null},{"name":"_resolve_value_to_type","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/sqltypes.py","line":3807,"col":null},{"name":"coerce_compared_value","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/type_api.py","line":1039,"col":null},{"name":"__init__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/elements.py","line":2031,"col":null},{"name":"_generate_columns_plus_names","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/selectable.py","line":2311,"col":null},{"name":"_close_connection","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/pool/base.py","line":367,"col":null},{"name":"_get_column_info","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/dialects/sqlite/base.py","line":2298,"col":null},{"name":"_colnames_from_description","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/cursor.py","line":656,"col":null},{"name":"__init__","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/cursor.py","line":354,"col":null},{"name":"_begin_impl","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/engine/base.py","line":1107,"col":null},{"name":"_construct_asset_record_from_row","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":1196,"col":null},{"name":"get_partition_keys","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2067,"col":null},{"name":"__sub__","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":2178,"col":null},{"name":"expect","file":"/Users/owen/.virtualenvs/dagster/lib/python3.11/site-packages/sqlalchemy/sql/coercions.py","line":348,"col":null},{"name":"_generated_cache_key_traversal","file":"","line":1,"col":null},{"name":"has_asset_key_col","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/storage/event_log/sql_event_log.py","line":230,"col":null},{"name":"","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":795,"col":null},{"name":"serializable_evaluation","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":729,"col":null},{"name":"__get__","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/functools.py","line":984,"col":null},{"name":"_compute_subset_value_str","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":789,"col":null},{"name":"get_serializable_candidate_subset","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/serialized_objects.py","line":53,"col":null},{"name":"get_node_snapshot","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":128,"col":null},{"name":"__get__","file":"/Users/owen/.pyenv/versions/3.11.9/lib/python3.11/functools.py","line":1003,"col":null},{"name":"node_cursor","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py","line":713,"col":null},{"name":"end","file":"/Users/owen/src/dagster/python_modules/dagster/dagster/_core/definitions/time_window_partitions.py","line":192,"col":null}]},"activeProfileIndex":null,"exporter":"py-spy@0.3.14","name":"py-spy profile"} diff --git a/python_modules/dagster-graphql/dagster_graphql/schema/asset_checks.py b/python_modules/dagster-graphql/dagster_graphql/schema/asset_checks.py index 20ae2de0a6b30..fef57e244d621 100644 --- a/python_modules/dagster-graphql/dagster_graphql/schema/asset_checks.py +++ b/python_modules/dagster-graphql/dagster_graphql/schema/asset_checks.py @@ -158,7 +158,7 @@ async def resolve_executionForLatestMaterialization( record = await AssetCheckExecutionRecord.gen(graphene_info.context, self._asset_check.key) return ( GrapheneAssetCheckExecution(record) - if record and record.targets_latest_materialization(graphene_info.context) + if record and await record.targets_latest_materialization(graphene_info.context) else None ) diff --git a/python_modules/dagster-test/dagster_test/toys/auto_materializing/large_graph.py b/python_modules/dagster-test/dagster_test/toys/auto_materializing/large_graph.py index 6449ba0eed8b6..d5885bb1709bf 100644 --- a/python_modules/dagster-test/dagster_test/toys/auto_materializing/large_graph.py +++ b/python_modules/dagster-test/dagster_test/toys/auto_materializing/large_graph.py @@ -2,58 +2,83 @@ from typing import List, NamedTuple, Optional, Sequence from dagster import ( + AssetCheckResult, + AssetCheckSpec, + AssetKey, AssetsDefinition, AutoMaterializePolicy, + AutomationCondition, DailyPartitionsDefinition, HourlyPartitionsDefinition, + MaterializeResult, PartitionsDefinition, StaticPartitionsDefinition, asset, repository, ) +from dagster._core.execution.context.asset_execution_context import AssetExecutionContext +from dagster._utils.warnings import disable_dagster_warnings class AssetLayerConfig(NamedTuple): n_assets: int n_upstreams_per_asset: int = 0 partitions_def: Optional[PartitionsDefinition] = None + n_checks_per_asset: int = 0 def build_assets( id: str, layer_configs: Sequence[AssetLayerConfig], - auto_materialize_policy: AutoMaterializePolicy = AutoMaterializePolicy.eager(), + automation_condition: AutomationCondition = AutomationCondition.eager(), ) -> List[AssetsDefinition]: - layers = [] - - for layer_config in layer_configs: - parent_index = 0 - layer = [] - for i in range(layer_config.n_assets): - if layer_config.n_upstreams_per_asset > 0: - # each asset connects to n_upstreams_per_asset assets from the above layer, chosen - # in a round-robin manner - non_argument_deps = { - layers[-1][(parent_index + j) % len(layers[-1])].key - for j in range(layer_config.n_upstreams_per_asset) - } - parent_index += layer_config.n_upstreams_per_asset - else: - non_argument_deps = set() - - @asset( - partitions_def=layer_config.partitions_def, - name=f"{id}_{len(layers)}_{i}", - auto_materialize_policy=auto_materialize_policy, - non_argument_deps=non_argument_deps, - ) - def _asset(): - pass - - layer.append(_asset) - layers.append(layer) - - return list(itertools.chain(*layers)) + with disable_dagster_warnings(): + layers = [] + + for layer_config in layer_configs: + parent_index = 0 + layer = [] + for i in range(layer_config.n_assets): + if layer_config.n_upstreams_per_asset > 0: + # each asset connects to n_upstreams_per_asset assets from the above layer, chosen + # in a round-robin manner + non_argument_deps = { + layers[-1][(parent_index + j) % len(layers[-1])].key + for j in range(layer_config.n_upstreams_per_asset) + } + parent_index += layer_config.n_upstreams_per_asset + else: + non_argument_deps = set() + + name = f"{id}_{len(layers)}_{i}" + + @asset( + partitions_def=layer_config.partitions_def, + name=name, + automation_condition=automation_condition, + non_argument_deps=non_argument_deps, + check_specs=[ + AssetCheckSpec( + name=f"check{k}", + asset=AssetKey(name), + automation_condition=automation_condition, + ) + for k in range(layer_config.n_checks_per_asset) + ], + ) + def _asset(context: AssetExecutionContext) -> MaterializeResult: + return MaterializeResult( + asset_key=context.asset_key, + check_results=[ + AssetCheckResult(check_name=key.name, passed=True) + for key in context.selected_asset_check_keys + ], + ) + + layer.append(_asset) + layers.append(layer) + + return list(itertools.chain(*layers)) hourly = HourlyPartitionsDefinition(start_date="2022-01-01-00:00") @@ -74,6 +99,7 @@ def auto_materialize_large_time_graph(): AssetLayerConfig(n_assets=100, n_upstreams_per_asset=4, partitions_def=daily), AssetLayerConfig(n_assets=100, n_upstreams_per_asset=4, partitions_def=daily), ], + automation_condition=AutoMaterializePolicy.eager().to_automation_condition(), ) @@ -88,4 +114,5 @@ def auto_materialize_large_static_graph(): AssetLayerConfig(n_assets=100, n_upstreams_per_asset=4, partitions_def=static), AssetLayerConfig(n_assets=100, n_upstreams_per_asset=4, partitions_def=None), ], + automation_condition=AutoMaterializePolicy.eager().to_automation_condition(), ) diff --git a/python_modules/dagster/dagster/_core/asset_graph_view/asset_graph_view.py b/python_modules/dagster/dagster/_core/asset_graph_view/asset_graph_view.py index 17eaa0137c296..2034dd5b0d9d4 100644 --- a/python_modules/dagster/dagster/_core/asset_graph_view/asset_graph_view.py +++ b/python_modules/dagster/dagster/_core/asset_graph_view/asset_graph_view.py @@ -3,6 +3,7 @@ from typing import ( TYPE_CHECKING, AbstractSet, + Awaitable, Callable, Dict, Literal, @@ -31,7 +32,6 @@ from dagster._core.loader import LoadingContext from dagster._time import get_current_datetime from dagster._utils.aiodataloader import DataLoader -from dagster._utils.cached_method import cached_method if TYPE_CHECKING: from dagster._core.definitions.base_asset_graph import BaseAssetGraph, BaseAssetNode @@ -169,7 +169,6 @@ def _get_partitions_def(self, key: T_EntityKey) -> Optional["PartitionsDefinitio else: return None - @cached_method def get_full_subset(self, *, key: T_EntityKey) -> EntitySubset[T_EntityKey]: partitions_def = self._get_partitions_def(key) value = ( @@ -183,7 +182,6 @@ def get_full_subset(self, *, key: T_EntityKey) -> EntitySubset[T_EntityKey]: ) return EntitySubset(self, key=key, value=_ValidatedEntitySubsetValue(value)) - @cached_method def get_empty_subset(self, *, key: T_EntityKey) -> EntitySubset[T_EntityKey]: partitions_def = self._get_partitions_def(key) value = partitions_def.empty_subset() if partitions_def else False @@ -356,17 +354,17 @@ def compute_latest_time_window_subset( else: check.failed(f"Unsupported partitions_def: {partitions_def}") - def compute_subset_with_status( + async def compute_subset_with_status( self, key: AssetCheckKey, status: Optional["AssetCheckExecutionResolvedStatus"] ): """Returns the subset of an asset check that matches a given status.""" from dagster._core.storage.event_log.base import AssetCheckSummaryRecord - summary = AssetCheckSummaryRecord.blocking_get(self, key) + summary = await AssetCheckSummaryRecord.gen(self, key) latest_record = summary.last_check_execution_record if summary else None resolved_status = ( latest_record.resolve_status(self) - if latest_record and latest_record.targets_latest_materialization(self) + if latest_record and await latest_record.targets_latest_materialization(self) else None ) if resolved_status == status: @@ -374,34 +372,50 @@ def compute_subset_with_status( else: return self.get_empty_subset(key=key) - def _compute_run_in_progress_check_subset( + async def _compute_run_in_progress_check_subset( self, key: AssetCheckKey ) -> EntitySubset[AssetCheckKey]: from dagster._core.storage.asset_check_execution_record import ( AssetCheckExecutionResolvedStatus, ) - return self.compute_subset_with_status(key, AssetCheckExecutionResolvedStatus.IN_PROGRESS) + return await self.compute_subset_with_status( + key, AssetCheckExecutionResolvedStatus.IN_PROGRESS + ) - def _compute_execution_failed_check_subset( + async def _compute_execution_failed_check_subset( self, key: AssetCheckKey ) -> EntitySubset[AssetCheckKey]: from dagster._core.storage.asset_check_execution_record import ( AssetCheckExecutionResolvedStatus, ) - return self.compute_subset_with_status( + return await self.compute_subset_with_status( key, AssetCheckExecutionResolvedStatus.EXECUTION_FAILED ) - def _compute_missing_check_subset(self, key: AssetCheckKey) -> EntitySubset[AssetCheckKey]: - return self.compute_subset_with_status(key, None) + async def _compute_missing_check_subset( + self, key: AssetCheckKey + ) -> EntitySubset[AssetCheckKey]: + return await self.compute_subset_with_status(key, None) - def _compute_run_in_progress_asset_subset(self, key: AssetKey) -> EntitySubset[AssetKey]: + async def _compute_run_in_progress_asset_subset(self, key: AssetKey) -> EntitySubset[AssetKey]: + from dagster._core.storage.partition_status_cache import AssetStatusCacheValue + + partitions_def = self._get_partitions_def(key) + if partitions_def: + cache_value = await AssetStatusCacheValue.gen(self, (key, partitions_def)) + return ( + cache_value.get_in_progress_subset(self, key, partitions_def) + if cache_value + else self.get_empty_subset(key=key) + ) value = self._queryer.get_in_progress_asset_subset(asset_key=key).value return EntitySubset(self, key=key, value=_ValidatedEntitySubsetValue(value)) - def _compute_backfill_in_progress_asset_subset(self, key: AssetKey) -> EntitySubset[AssetKey]: + async def _compute_backfill_in_progress_asset_subset( + self, key: AssetKey + ) -> EntitySubset[AssetKey]: value = ( self._queryer.get_active_backfill_in_progress_asset_graph_subset() .get_asset_subset(asset_key=key, asset_graph=self.asset_graph) @@ -409,26 +423,47 @@ def _compute_backfill_in_progress_asset_subset(self, key: AssetKey) -> EntitySub ) return EntitySubset(self, key=key, value=_ValidatedEntitySubsetValue(value)) - def _compute_execution_failed_asset_subset(self, key: AssetKey) -> EntitySubset[AssetKey]: + async def _compute_execution_failed_asset_subset(self, key: AssetKey) -> EntitySubset[AssetKey]: + from dagster._core.storage.partition_status_cache import AssetStatusCacheValue + + partitions_def = self._get_partitions_def(key) + if partitions_def: + cache_value = await AssetStatusCacheValue.gen(self, (key, partitions_def)) + return ( + cache_value.get_failed_subset(self, key, partitions_def) + if cache_value + else self.get_empty_subset(key=key) + ) value = self._queryer.get_failed_asset_subset(asset_key=key).value return EntitySubset(self, key=key, value=_ValidatedEntitySubsetValue(value)) - def _compute_missing_asset_subset( + async def _compute_missing_asset_subset( self, key: AssetKey, from_subset: EntitySubset ) -> EntitySubset[AssetKey]: """Returns a subset which is the subset of the input subset that has never been materialized (if it is a materializable asset) or observered (if it is an observable asset). """ + from dagster._core.storage.partition_status_cache import AssetStatusCacheValue + # TODO: this logic should be simplified once we have a unified way of detecting both # materializations and observations through the parittion status cache. at that point, the # definition will slightly change to search for materializations and observations regardless # of the materializability of the asset if self.asset_graph.get(key).is_materializable: # cheap call which takes advantage of the partition status cache - materialized_subset = self._queryer.get_materialized_asset_subset(asset_key=key) - materialized_subset = EntitySubset( - self, key=key, value=_ValidatedEntitySubsetValue(materialized_subset.value) - ) + partitions_def = self._get_partitions_def(key) + if partitions_def: + cache_value = await AssetStatusCacheValue.gen(self, (key, partitions_def)) + materialized_subset = ( + cache_value.get_materialized_subset(self, key, partitions_def) + if cache_value + else self.get_empty_subset(key=key) + ) + else: + value = self._queryer.get_materialized_asset_subset(asset_key=key).value + materialized_subset = EntitySubset( + self, key=key, value=_ValidatedEntitySubsetValue(value) + ) return from_subset.compute_difference(materialized_subset) else: # more expensive call @@ -441,34 +476,35 @@ def _compute_missing_asset_subset( key=key, asset_partitions=missing_asset_partitions ) - @cached_method - def compute_run_in_progress_subset(self, *, key: EntityKey) -> EntitySubset: - return _dispatch( + async def compute_run_in_progress_subset(self, *, key: EntityKey) -> EntitySubset: + return await _dispatch( key=key, check_method=self._compute_run_in_progress_check_subset, asset_method=self._compute_run_in_progress_asset_subset, ) - @cached_method - def compute_backfill_in_progress_subset(self, *, key: EntityKey) -> EntitySubset: - return _dispatch( + async def compute_backfill_in_progress_subset(self, *, key: EntityKey) -> EntitySubset: + async def get_empty_subset(key: EntityKey) -> EntitySubset: + return self.get_empty_subset(key=key) + + return await _dispatch( key=key, # asset checks cannot currently be backfilled - check_method=lambda k: self.get_empty_subset(key=k), + check_method=get_empty_subset, asset_method=self._compute_backfill_in_progress_asset_subset, ) - @cached_method - def compute_execution_failed_subset(self, *, key: EntityKey) -> EntitySubset: - return _dispatch( + async def compute_execution_failed_subset(self, *, key: EntityKey) -> EntitySubset: + return await _dispatch( key=key, check_method=self._compute_execution_failed_check_subset, asset_method=self._compute_execution_failed_asset_subset, ) - @cached_method - def compute_missing_subset(self, *, key: EntityKey, from_subset: EntitySubset) -> EntitySubset: - return _dispatch( + async def compute_missing_subset( + self, *, key: EntityKey, from_subset: EntitySubset + ) -> EntitySubset: + return await _dispatch( key=key, check_method=self._compute_missing_check_subset, asset_method=functools.partial( @@ -476,7 +512,7 @@ def compute_missing_subset(self, *, key: EntityKey, from_subset: EntitySubset) - ), ) - def _compute_updated_since_cursor_subset( + async def _compute_updated_since_cursor_subset( self, key: AssetKey, cursor: Optional[int] ) -> EntitySubset[AssetKey]: value = self._queryer.get_asset_subset_updated_after_cursor( @@ -484,14 +520,14 @@ def _compute_updated_since_cursor_subset( ).value return EntitySubset(self, key=key, value=_ValidatedEntitySubsetValue(value)) - def _compute_updated_since_time_subset( + async def _compute_updated_since_time_subset( self, key: AssetCheckKey, time: datetime ) -> EntitySubset[AssetCheckKey]: from dagster._core.events import DagsterEventType from dagster._core.storage.event_log.base import AssetCheckSummaryRecord # intentionally left unimplemented for AssetKey, as this is a less performant query - summary = AssetCheckSummaryRecord.blocking_get(self, key) + summary = await AssetCheckSummaryRecord.gen(self, key) record = summary.last_check_execution_record if summary else None if ( record is None @@ -503,11 +539,10 @@ def _compute_updated_since_time_subset( else: return self.get_full_subset(key=key) - @cached_method - def compute_updated_since_temporal_context_subset( + async def compute_updated_since_temporal_context_subset( self, *, key: EntityKey, temporal_context: TemporalContext ) -> EntitySubset: - return _dispatch( + return await _dispatch( key=key, check_method=functools.partial( self._compute_updated_since_time_subset, time=temporal_context.effective_dt @@ -592,14 +627,14 @@ def _build_multi_partition_subset( O_Dispatch = TypeVar("O_Dispatch") -def _dispatch( +async def _dispatch( *, key: EntityKey, - check_method: Callable[[AssetCheckKey], O_Dispatch], - asset_method: Callable[[AssetKey], O_Dispatch], + check_method: Callable[[AssetCheckKey], Awaitable[O_Dispatch]], + asset_method: Callable[[AssetKey], Awaitable[O_Dispatch]], ) -> O_Dispatch: """Applies a method for either a check or an asset.""" if isinstance(key, AssetCheckKey): - return check_method(key) + return await check_method(key) else: - return asset_method(key) + return await asset_method(key) diff --git a/python_modules/dagster/dagster/_core/asset_graph_view/serializable_entity_subset.py b/python_modules/dagster/dagster/_core/asset_graph_view/serializable_entity_subset.py index a43c0f426aa4a..965d91e52ee6f 100644 --- a/python_modules/dagster/dagster/_core/asset_graph_view/serializable_entity_subset.py +++ b/python_modules/dagster/dagster/_core/asset_graph_view/serializable_entity_subset.py @@ -1,4 +1,3 @@ -from dataclasses import dataclass, replace from typing import Generic, Optional, Union import dagster._check as check @@ -10,12 +9,13 @@ PartitionsSubset, ) from dagster._core.definitions.time_window_partitions import BaseTimeWindowPartitionsSubset -from dagster._serdes.serdes import DataclassSerializer, whitelist_for_serdes +from dagster._record import record, replace +from dagster._serdes.serdes import NamedTupleSerializer, whitelist_for_serdes EntitySubsetValue = Union[bool, PartitionsSubset] -class EntitySubsetSerializer(DataclassSerializer): +class EntitySubsetSerializer(NamedTupleSerializer): """Ensures that the inner PartitionsSubset is converted to a serializable form if necessary.""" def get_storage_name(self) -> str: @@ -33,7 +33,7 @@ def before_pack(self, value: "SerializableEntitySubset") -> "SerializableEntityS storage_field_names={"key": "asset_key"}, old_storage_names={"AssetSubset"}, ) -@dataclass(frozen=True) +@record(checked=False) class SerializableEntitySubset(Generic[T_EntityKey]): """Represents a serializable subset of a given EntityKey.""" diff --git a/python_modules/dagster/dagster/_core/definitions/base_asset_graph.py b/python_modules/dagster/dagster/_core/definitions/base_asset_graph.py index dbd003c0ee0d5..4155283909406 100644 --- a/python_modules/dagster/dagster/_core/definitions/base_asset_graph.py +++ b/python_modules/dagster/dagster/_core/definitions/base_asset_graph.py @@ -301,16 +301,12 @@ def toposorted_asset_keys(self) -> Sequence[AssetKey]: ] @cached_property - def toposorted_entity_keys(self) -> Sequence[EntityKey]: - """Return topologically sorted entity keys in graph. Keys with the same topological level are + def toposorted_entity_keys_by_level(self) -> Sequence[Sequence[EntityKey]]: + """Return topologically sorted levels for entity keys in graph. Keys with the same topological level are sorted alphabetically to provide stability. """ sort_key = lambda e: (e, None) if isinstance(e, AssetKey) else (e.asset_key, e.name) - return [ - item - for items_in_level in toposort(self.entity_dep_graph["upstream"], sort_key=sort_key) - for item in sorted(items_in_level, key=sort_key) - ] + return toposort(self.entity_dep_graph["upstream"], sort_key=sort_key) @cached_property def toposorted_asset_keys_by_level(self) -> Sequence[AbstractSet[AssetKey]]: diff --git a/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py b/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py index a7168b7a0f603..241e0bed0790c 100644 --- a/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py +++ b/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition.py @@ -25,7 +25,7 @@ get_serializable_candidate_subset, ) from dagster._core.definitions.partition import AllPartitionsSubset -from dagster._core.definitions.time_window_partitions import BaseTimeWindowPartitionsSubset +from dagster._core.definitions.time_window_partitions import TimeWindowPartitionsSubset from dagster._record import copy, record from dagster._serdes.serdes import is_whitelisted_for_serdes_object from dagster._time import get_current_timestamp @@ -753,7 +753,7 @@ def node_cursor(self) -> Optional[AutomationConditionNodeCursor]: extra_state=self._extra_state, ) - @cached_property + @property def serializable_evaluation(self) -> AutomationConditionEvaluation: return AutomationConditionEvaluation( condition_snapshot=self.condition.get_node_snapshot(self.condition_unique_id), @@ -826,7 +826,7 @@ def _compute_subset_value_str(subset: SerializableEntitySubset) -> str: return str(subset.value) elif isinstance(subset.value, AllPartitionsSubset): return AllPartitionsSubset.__name__ - elif isinstance(subset.value, BaseTimeWindowPartitionsSubset): + elif isinstance(subset.value, TimeWindowPartitionsSubset): return str( [ (tw.start.timestamp(), tw.end.timestamp()) diff --git a/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition_evaluator.py b/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition_evaluator.py index 1f71c9dd4dd7a..4c5e096d467ca 100644 --- a/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition_evaluator.py +++ b/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_condition_evaluator.py @@ -1,3 +1,4 @@ +import asyncio import datetime import logging from collections import defaultdict @@ -102,19 +103,22 @@ def prefetch(self) -> None: self.logger.info("Done prefetching asset records.") def evaluate(self) -> Tuple[Sequence[AutomationResult], Sequence[EntitySubset[EntityKey]]]: + return asyncio.run(self.async_evaluate()) + + async def async_evaluate( + self, + ) -> Tuple[Sequence[AutomationResult], Sequence[EntitySubset[EntityKey]]]: self.prefetch() num_conditions = len(self.entity_keys) num_evaluated = 0 - for entity_key in self.asset_graph.toposorted_entity_keys: - if entity_key not in self.entity_keys: - continue + async def _evaluate_entity_async(entity_key: EntityKey) -> int: self.logger.debug( f"Evaluating {entity_key.to_user_string()} ({num_evaluated+1}/{num_conditions})" ) try: - self.evaluate_entity(entity_key) + await self.evaluate_entity(entity_key) except Exception as e: raise Exception( f"Error while evaluating conditions for {entity_key.to_user_string()}" @@ -132,15 +136,24 @@ def evaluate(self) -> Tuple[Sequence[AutomationResult], Sequence[EntitySubset[En f"requested ({requested_str}) " f"({format(result.end_timestamp - result.start_timestamp, '.3f')} seconds)" ) - num_evaluated += 1 + return 1 + + for topo_level in self.asset_graph.toposorted_entity_keys_by_level: + coroutines = [ + _evaluate_entity_async(entity_key) + for entity_key in topo_level + if entity_key in self.entity_keys + ] + gathered = await asyncio.gather(*coroutines) + num_evaluated += sum(gathered) + return list(self.current_results_by_key.values()), [ v for v in self.request_subsets_by_key.values() if not v.is_empty ] - def evaluate_entity(self, key: EntityKey) -> None: + async def evaluate_entity(self, key: EntityKey) -> None: # evaluate the condition of this asset - context = AutomationContext.create(key=key, evaluator=self) - result = context.condition.evaluate(context) + result = await AutomationContext.create(key=key, evaluator=self).evaluate_async() # update dictionaries to keep track of this result self.current_results_by_key[key] = result diff --git a/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_context.py b/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_context.py index 6998e7d4a8259..5feb99137240f 100644 --- a/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_context.py +++ b/python_modules/dagster/dagster/_core/definitions/declarative_automation/automation_context.py @@ -1,4 +1,5 @@ import datetime +import inspect import logging from dataclasses import dataclass from typing import TYPE_CHECKING, Generic, Mapping, Optional, Type, TypeVar @@ -9,6 +10,7 @@ from dagster._core.definitions.asset_key import AssetCheckKey, AssetKey, EntityKey, T_EntityKey from dagster._core.definitions.declarative_automation.automation_condition import ( AutomationCondition, + AutomationResult, ) from dagster._core.definitions.declarative_automation.legacy.legacy_context import ( LegacyRuleEvaluationContext, @@ -115,6 +117,11 @@ def for_child_condition( _root_log=self._root_log, ) + async def evaluate_async(self) -> AutomationResult[T_EntityKey]: + if inspect.iscoroutinefunction(self.condition.evaluate): + return await self.condition.evaluate(self) + return self.condition.evaluate(self) + @property def log(self) -> logging.Logger: """The logger for the current condition evaluation.""" diff --git a/python_modules/dagster/dagster/_core/definitions/declarative_automation/operands/operands.py b/python_modules/dagster/dagster/_core/definitions/declarative_automation/operands/operands.py index 3f5c3157936e1..0861c27fc37b9 100644 --- a/python_modules/dagster/dagster/_core/definitions/declarative_automation/operands/operands.py +++ b/python_modules/dagster/dagster/_core/definitions/declarative_automation/operands/operands.py @@ -60,8 +60,8 @@ class MissingAutomationCondition(SubsetAutomationCondition): def name(self) -> str: return "missing" - def compute_subset(self, context: AutomationContext) -> EntitySubset: - return context.asset_graph_view.compute_missing_subset( + async def compute_subset(self, context: AutomationContext) -> EntitySubset: + return await context.asset_graph_view.compute_missing_subset( key=context.key, from_subset=context.candidate_subset ) @@ -73,8 +73,8 @@ class RunInProgressAutomationCondition(SubsetAutomationCondition): def name(self) -> str: return "execution_in_progress" - def compute_subset(self, context: AutomationContext) -> EntitySubset: - return context.asset_graph_view.compute_run_in_progress_subset(key=context.key) + async def compute_subset(self, context: AutomationContext) -> EntitySubset: + return await context.asset_graph_view.compute_run_in_progress_subset(key=context.key) @whitelist_for_serdes @@ -84,8 +84,8 @@ class BackfillInProgressAutomationCondition(SubsetAutomationCondition): def name(self) -> str: return "backfill_in_progress" - def compute_subset(self, context: AutomationContext) -> EntitySubset: - return context.asset_graph_view.compute_backfill_in_progress_subset(key=context.key) + async def compute_subset(self, context: AutomationContext) -> EntitySubset: + return await context.asset_graph_view.compute_backfill_in_progress_subset(key=context.key) @whitelist_for_serdes(storage_name="FailedAutomationCondition") @@ -95,8 +95,8 @@ class ExecutionFailedAutomationCondition(SubsetAutomationCondition): def name(self) -> str: return "execution_failed" - def compute_subset(self, context: AutomationContext) -> EntitySubset: - return context.asset_graph_view.compute_execution_failed_subset(key=context.key) + async def compute_subset(self, context: AutomationContext) -> EntitySubset: + return await context.asset_graph_view.compute_execution_failed_subset(key=context.key) @whitelist_for_serdes @@ -147,11 +147,11 @@ class NewlyUpdatedCondition(SubsetAutomationCondition): def name(self) -> str: return "newly_updated" - def compute_subset(self, context: AutomationContext) -> EntitySubset: + async def compute_subset(self, context: AutomationContext) -> EntitySubset: # if it's the first time evaluating, just return the empty subset if context.previous_temporal_context is None: return context.get_empty_subset() - return context.asset_graph_view.compute_updated_since_temporal_context_subset( + return await context.asset_graph_view.compute_updated_since_temporal_context_subset( key=context.key, temporal_context=context.previous_temporal_context ) @@ -240,7 +240,7 @@ class CheckResultCondition(SubsetAutomationCondition[AssetCheckKey]): def name(self) -> str: return "check_passed" if self.passed else "check_failed" - def compute_subset( + async def compute_subset( self, context: AutomationContext[AssetCheckKey] ) -> EntitySubset[AssetCheckKey]: from dagster._core.storage.asset_check_execution_record import ( @@ -252,6 +252,6 @@ def compute_subset( if self.passed else AssetCheckExecutionResolvedStatus.FAILED ) - return context.asset_graph_view.compute_subset_with_status( + return await context.asset_graph_view.compute_subset_with_status( key=context.key, status=target_status ) diff --git a/python_modules/dagster/dagster/_core/definitions/declarative_automation/operands/subset_automation_condition.py b/python_modules/dagster/dagster/_core/definitions/declarative_automation/operands/subset_automation_condition.py index a94d4138d3893..a66ed1281ea20 100644 --- a/python_modules/dagster/dagster/_core/definitions/declarative_automation/operands/subset_automation_condition.py +++ b/python_modules/dagster/dagster/_core/definitions/declarative_automation/operands/subset_automation_condition.py @@ -1,3 +1,4 @@ +import inspect from abc import abstractmethod from dagster._core.asset_graph_view.entity_subset import EntitySubset @@ -23,10 +24,14 @@ def compute_subset( self, context: AutomationContext[T_EntityKey] ) -> EntitySubset[T_EntityKey]: ... - def evaluate(self, context: AutomationContext[T_EntityKey]) -> AutomationResult[T_EntityKey]: + async def evaluate( + self, context: AutomationContext[T_EntityKey] + ) -> AutomationResult[T_EntityKey]: # don't compute anything if there are no candidates if context.candidate_subset.is_empty: true_subset = context.get_empty_subset() + elif inspect.iscoroutinefunction(self.compute_subset): + true_subset = await self.compute_subset(context) else: true_subset = self.compute_subset(context) diff --git a/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/any_downstream_conditions_operator.py b/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/any_downstream_conditions_operator.py index 30cd79f1c1fbf..978a170ff21e0 100644 --- a/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/any_downstream_conditions_operator.py +++ b/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/any_downstream_conditions_operator.py @@ -33,14 +33,13 @@ def children(self) -> Sequence[AutomationCondition]: def requires_cursor(self) -> bool: return False - def evaluate(self, context: AutomationContext[AssetKey]) -> AutomationResult[AssetKey]: - child_result = self.operand.evaluate( - context.for_child_condition( - child_condition=self.operand, - child_index=0, - candidate_subset=context.candidate_subset, - ) - ) + async def evaluate(self, context: AutomationContext[AssetKey]) -> AutomationResult[AssetKey]: + child_result = await context.for_child_condition( + child_condition=self.operand, + child_index=0, + candidate_subset=context.candidate_subset, + ).evaluate_async() + return AutomationResult( context=context, true_subset=child_result.true_subset, child_results=[child_result] ) @@ -82,7 +81,7 @@ def _get_validated_downstream_conditions( if not condition.has_rule_condition } - def evaluate(self, context: AutomationContext[AssetKey]) -> AutomationResult[AssetKey]: + async def evaluate(self, context: AutomationContext[AssetKey]) -> AutomationResult[AssetKey]: ignored_conditions = self._get_ignored_conditions(context) downstream_conditions = self._get_validated_downstream_conditions( context.asset_graph.get_downstream_automation_conditions(asset_key=context.key) @@ -95,15 +94,13 @@ def evaluate(self, context: AutomationContext[AssetKey]) -> AutomationResult[Ass ): if downstream_condition in ignored_conditions: continue - child_condition = DownstreamConditionWrapperCondition( - downstream_keys=list(sorted(asset_keys)), operand=downstream_condition - ) - child_context = context.for_child_condition( - child_condition=child_condition, + child_result = await context.for_child_condition( + child_condition=DownstreamConditionWrapperCondition( + downstream_keys=list(sorted(asset_keys)), operand=downstream_condition + ), child_index=i, candidate_subset=context.candidate_subset, - ) - child_result = child_condition.evaluate(child_context) + ).evaluate_async() child_results.append(child_result) true_subset = true_subset.compute_union(child_result.true_subset) diff --git a/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/boolean_operators.py b/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/boolean_operators.py index 23cf97fe84e20..564767f611a2b 100644 --- a/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/boolean_operators.py +++ b/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/boolean_operators.py @@ -1,3 +1,4 @@ +import asyncio from typing import List, Sequence import dagster._check as check @@ -35,14 +36,15 @@ def children(self) -> Sequence[AutomationCondition[T_EntityKey]]: def requires_cursor(self) -> bool: return False - def evaluate(self, context: AutomationContext[T_EntityKey]) -> AutomationResult[T_EntityKey]: + async def evaluate( + self, context: AutomationContext[T_EntityKey] + ) -> AutomationResult[T_EntityKey]: child_results: List[AutomationResult] = [] true_subset = context.candidate_subset for i, child in enumerate(self.children): - child_context = context.for_child_condition( + child_result = await context.for_child_condition( child_condition=child, child_index=i, candidate_subset=true_subset - ) - child_result = child.evaluate(child_context) + ).evaluate_async() child_results.append(child_result) true_subset = true_subset.compute_intersection(child_result.true_subset) return AutomationResult(context, true_subset, child_results=child_results) @@ -83,15 +85,20 @@ def children(self) -> Sequence[AutomationCondition[T_EntityKey]]: def requires_cursor(self) -> bool: return False - def evaluate(self, context: AutomationContext[T_EntityKey]) -> AutomationResult[T_EntityKey]: - child_results: List[AutomationResult] = [] + async def evaluate( + self, context: AutomationContext[T_EntityKey] + ) -> AutomationResult[T_EntityKey]: true_subset = context.get_empty_subset() - for i, child in enumerate(self.children): - child_context = context.for_child_condition( + + coroutines = [ + context.for_child_condition( child_condition=child, child_index=i, candidate_subset=context.candidate_subset - ) - child_result = child.evaluate(child_context) - child_results.append(child_result) + ).evaluate_async() + for i, child in enumerate(self.children) + ] + + child_results = await asyncio.gather(*coroutines) + for child_result in child_results: true_subset = true_subset.compute_union(child_result.true_subset) return AutomationResult(context, true_subset, child_results=child_results) @@ -116,11 +123,12 @@ def name(self) -> str: def children(self) -> Sequence[AutomationCondition[T_EntityKey]]: return [self.operand] - def evaluate(self, context: AutomationContext[T_EntityKey]) -> AutomationResult[T_EntityKey]: - child_context = context.for_child_condition( + async def evaluate( + self, context: AutomationContext[T_EntityKey] + ) -> AutomationResult[T_EntityKey]: + child_result = await context.for_child_condition( child_condition=self.operand, child_index=0, candidate_subset=context.candidate_subset - ) - child_result = self.operand.evaluate(child_context) + ).evaluate_async() true_subset = context.candidate_subset.compute_difference(child_result.true_subset) return AutomationResult(context, true_subset, child_results=[child_result]) diff --git a/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/check_operators.py b/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/check_operators.py index 0f069c5f22bd0..fbf5cc5bc5784 100644 --- a/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/check_operators.py +++ b/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/check_operators.py @@ -1,3 +1,4 @@ +import asyncio from abc import abstractmethod from typing import AbstractSet @@ -54,22 +55,22 @@ class AnyChecksCondition(ChecksAutomationCondition): def base_name(self) -> str: return "ANY_CHECKS_MATCH" - def evaluate(self, context: AutomationContext[AssetKey]) -> AutomationResult[AssetKey]: - check_results = [] + async def evaluate(self, context: AutomationContext[AssetKey]) -> AutomationResult[AssetKey]: true_subset = context.get_empty_subset() - for i, check_key in enumerate( - sorted(self._get_check_keys(context.key, context.asset_graph)) - ): - check_condition = EntityMatchesCondition(key=check_key, operand=self.operand) - check_result = check_condition.evaluate( - context.for_child_condition( - child_condition=check_condition, - child_index=i, - candidate_subset=context.candidate_subset, - ) + coroutines = [ + context.for_child_condition( + child_condition=EntityMatchesCondition(key=check_key, operand=self.operand), + child_index=i, + candidate_subset=context.candidate_subset, + ).evaluate_async() + for i, check_key in enumerate( + sorted(self._get_check_keys(context.key, context.asset_graph)) ) - check_results.append(check_result) + ] + + check_results = await asyncio.gather(*coroutines) + for check_result in check_results: true_subset = true_subset.compute_union(check_result.true_subset) true_subset = context.candidate_subset.compute_intersection(true_subset) @@ -83,21 +84,18 @@ class AllChecksCondition(ChecksAutomationCondition): def base_name(self) -> str: return "ALL_CHECKS_MATCH" - def evaluate(self, context: AutomationContext[AssetKey]) -> AutomationResult[AssetKey]: + async def evaluate(self, context: AutomationContext[AssetKey]) -> AutomationResult[AssetKey]: check_results = [] true_subset = context.candidate_subset for i, check_key in enumerate( sorted(self._get_check_keys(context.key, context.asset_graph)) ): - check_condition = EntityMatchesCondition(key=check_key, operand=self.operand) - check_result = check_condition.evaluate( - context.for_child_condition( - child_condition=check_condition, - child_index=i, - candidate_subset=context.candidate_subset, - ) - ) + check_result = await context.for_child_condition( + child_condition=EntityMatchesCondition(key=check_key, operand=self.operand), + child_index=i, + candidate_subset=context.candidate_subset, + ).evaluate_async() check_results.append(check_result) true_subset = true_subset.compute_intersection(check_result.true_subset) diff --git a/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/dep_operators.py b/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/dep_operators.py index 6bdb684fdab5c..d217f6e765ef3 100644 --- a/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/dep_operators.py +++ b/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/dep_operators.py @@ -30,7 +30,9 @@ class EntityMatchesCondition( def name(self) -> str: return self.key.to_user_string() - def evaluate(self, context: AutomationContext[T_EntityKey]) -> AutomationResult[T_EntityKey]: + async def evaluate( + self, context: AutomationContext[T_EntityKey] + ) -> AutomationResult[T_EntityKey]: # if the key we're mapping to is a child of the key we're mapping from and is not # self-dependent, use the downstream mapping function, otherwise use upstream if ( @@ -48,7 +50,7 @@ def evaluate(self, context: AutomationContext[T_EntityKey]) -> AutomationResult[ child_condition=self.operand, child_index=0, candidate_subset=to_candidate_subset ) - to_result = self.operand.evaluate(to_context) + to_result = await to_context.evaluate_async() true_subset = to_result.true_subset.compute_mapped_subset( context.key, direction=directions[1] @@ -126,19 +128,18 @@ class AnyDepsCondition(DepsAutomationCondition[T_EntityKey]): def base_name(self) -> str: return "ANY_DEPS_MATCH" - def evaluate(self, context: AutomationContext[T_EntityKey]) -> AutomationResult[T_EntityKey]: + async def evaluate( + self, context: AutomationContext[T_EntityKey] + ) -> AutomationResult[T_EntityKey]: dep_results = [] true_subset = context.get_empty_subset() for i, dep_key in enumerate(sorted(self._get_dep_keys(context.key, context.asset_graph))): - dep_condition = EntityMatchesCondition(key=dep_key, operand=self.operand) - dep_result = dep_condition.evaluate( - context.for_child_condition( - child_condition=dep_condition, - child_index=i, - candidate_subset=context.candidate_subset, - ) - ) + dep_result = await context.for_child_condition( + child_condition=EntityMatchesCondition(key=dep_key, operand=self.operand), + child_index=i, + candidate_subset=context.candidate_subset, + ).evaluate_async() dep_results.append(dep_result) true_subset = true_subset.compute_union(dep_result.true_subset) @@ -152,19 +153,18 @@ class AllDepsCondition(DepsAutomationCondition[T_EntityKey]): def base_name(self) -> str: return "ALL_DEPS_MATCH" - def evaluate(self, context: AutomationContext[T_EntityKey]) -> AutomationResult[T_EntityKey]: + async def evaluate( + self, context: AutomationContext[T_EntityKey] + ) -> AutomationResult[T_EntityKey]: dep_results = [] true_subset = context.candidate_subset for i, dep_key in enumerate(sorted(self._get_dep_keys(context.key, context.asset_graph))): - dep_condition = EntityMatchesCondition(key=dep_key, operand=self.operand) - dep_result = dep_condition.evaluate( - context.for_child_condition( - child_condition=dep_condition, - child_index=i, - candidate_subset=context.candidate_subset, - ) - ) + dep_result = await context.for_child_condition( + child_condition=EntityMatchesCondition(key=dep_key, operand=self.operand), + child_index=i, + candidate_subset=context.candidate_subset, + ).evaluate_async() dep_results.append(dep_result) true_subset = true_subset.compute_intersection(dep_result.true_subset) diff --git a/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/newly_true_operator.py b/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/newly_true_operator.py index 32f7be9cccf38..1f359cf5f5a32 100644 --- a/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/newly_true_operator.py +++ b/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/newly_true_operator.py @@ -37,15 +37,14 @@ def _get_previous_child_true_subset( return None return context.asset_graph_view.get_subset_from_serializable_subset(true_subset) - def evaluate(self, context: AutomationContext) -> AutomationResult: + async def evaluate(self, context: AutomationContext) -> AutomationResult: # evaluate child condition - child_context = context.for_child_condition( + child_result = await context.for_child_condition( self.operand, child_index=0, # must evaluate child condition over the entire subset to avoid missing state transitions candidate_subset=context.asset_graph_view.get_full_subset(key=context.key), - ) - child_result = self.operand.evaluate(child_context) + ).evaluate_async() # get the set of asset partitions of the child which newly became true newly_true_child_subset = child_result.true_subset.compute_difference( diff --git a/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/since_operator.py b/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/since_operator.py index de869baaad5ca..9bde13745a2d2 100644 --- a/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/since_operator.py +++ b/python_modules/dagster/dagster/_core/definitions/declarative_automation/operators/since_operator.py @@ -1,3 +1,4 @@ +import asyncio from typing import Sequence from dagster._core.definitions.asset_key import T_EntityKey @@ -25,21 +26,23 @@ def name(self) -> str: def children(self) -> Sequence[AutomationCondition[T_EntityKey]]: return [self.trigger_condition, self.reset_condition] - def evaluate(self, context: AutomationContext[T_EntityKey]) -> AutomationResult[T_EntityKey]: + async def evaluate( + self, context: AutomationContext[T_EntityKey] + ) -> AutomationResult[T_EntityKey]: # must evaluate child condition over the entire subset to avoid missing state transitions child_candidate_subset = context.asset_graph_view.get_full_subset(key=context.key) - # compute result for trigger condition - trigger_context = context.for_child_condition( - self.trigger_condition, child_index=0, candidate_subset=child_candidate_subset + # compute result for trigger and reset conditions + trigger_result, reset_result = await asyncio.gather( + *[ + context.for_child_condition( + self.trigger_condition, child_index=0, candidate_subset=child_candidate_subset + ).evaluate_async(), + context.for_child_condition( + self.reset_condition, child_index=1, candidate_subset=child_candidate_subset + ).evaluate_async(), + ] ) - trigger_result = self.trigger_condition.evaluate(trigger_context) - - # compute result for reset condition - reset_context = context.for_child_condition( - self.reset_condition, child_index=1, candidate_subset=child_candidate_subset - ) - reset_result = self.reset_condition.evaluate(reset_context) # take the previous subset that this was true for true_subset = context.previous_true_subset or context.get_empty_subset() diff --git a/python_modules/dagster/dagster/_core/definitions/declarative_automation/serialized_objects.py b/python_modules/dagster/dagster/_core/definitions/declarative_automation/serialized_objects.py index 4e896ee2e95f7..3b01e7d82e8a9 100644 --- a/python_modules/dagster/dagster/_core/definitions/declarative_automation/serialized_objects.py +++ b/python_modules/dagster/dagster/_core/definitions/declarative_automation/serialized_objects.py @@ -88,7 +88,7 @@ def frozen_metadata(self) -> FrozenSet[Tuple[str, MetadataValue]]: @whitelist_for_serdes(storage_name="AssetConditionEvaluation") -@dataclass +@record class AutomationConditionEvaluation(Generic[T_EntityKey]): """Serializable representation of the results of evaluating a node in the evaluation tree.""" diff --git a/python_modules/dagster/dagster/_core/loader.py b/python_modules/dagster/dagster/_core/loader.py index e0de5e20159fe..9853d3bb4dedc 100644 --- a/python_modules/dagster/dagster/_core/loader.py +++ b/python_modules/dagster/dagster/_core/loader.py @@ -58,6 +58,10 @@ def instance(self) -> "DagsterInstance": def loaders(self) -> Dict[Type, Tuple[DataLoader, BlockingDataLoader]]: raise NotImplementedError() + @staticmethod + def ephemeral(instance: "DagsterInstance") -> "LoadingContext": + return EphemeralLoadingContext(instance) + def get_loaders_for( self, ttype: Type["InstanceLoadableBy"] ) -> Tuple[DataLoader, BlockingDataLoader]: @@ -65,8 +69,8 @@ def get_loaders_for( if not issubclass(ttype, InstanceLoadableBy): check.failed(f"{ttype} is not Loadable") - batch_load_fn = partial(ttype._batch_load, instance=self.instance) # noqa - blocking_batch_load_fn = partial(ttype._blocking_batch_load, instance=self.instance) # noqa + batch_load_fn = partial(ttype._batch_load, context=self) # noqa + blocking_batch_load_fn = partial(ttype._blocking_batch_load, context=self) # noqa self.loaders[ttype] = ( DataLoader(batch_load_fn=batch_load_fn), @@ -80,6 +84,22 @@ def clear_loaders(self) -> None: del self.loaders[ttype] +class EphemeralLoadingContext(LoadingContext): + """Loading context that can be constructed for short-lived method resolution.""" + + def __init__(self, instance: "DagsterInstance"): + self._instance = instance + self._loaders = {} + + @property + def instance(self) -> "DagsterInstance": + return self._instance + + @property + def loaders(self) -> Dict[Type, Tuple[DataLoader, BlockingDataLoader]]: + return self._loaders + + # Expected there may be other "Loadable" base classes based on what is needed to load. @@ -88,14 +108,14 @@ class InstanceLoadableBy(ABC, Generic[TKey]): @classmethod async def _batch_load( - cls, keys: Iterable[TKey], instance: "DagsterInstance" + cls, keys: Iterable[TKey], context: "LoadingContext" ) -> Iterable[Optional[Self]]: - return cls._blocking_batch_load(keys, instance) + return cls._blocking_batch_load(keys, context) @classmethod @abstractmethod def _blocking_batch_load( - cls, keys: Iterable[TKey], instance: "DagsterInstance" + cls, keys: Iterable[TKey], context: "LoadingContext" ) -> Iterable[Optional[Self]]: # There is no good way of turning an async function into a sync one that # will allow us to execute that sync function inside of a broader async context. diff --git a/python_modules/dagster/dagster/_core/storage/asset_check_execution_record.py b/python_modules/dagster/dagster/_core/storage/asset_check_execution_record.py index 0424d2ddb1b56..a76887308e9b3 100644 --- a/python_modules/dagster/dagster/_core/storage/asset_check_execution_record.py +++ b/python_modules/dagster/dagster/_core/storage/asset_check_execution_record.py @@ -5,7 +5,6 @@ from dagster._core.definitions.asset_check_evaluation import AssetCheckEvaluation from dagster._core.definitions.asset_key import AssetCheckKey from dagster._core.events.log import DagsterEventType, EventLogEntry -from dagster._core.instance import DagsterInstance from dagster._core.loader import InstanceLoadableBy, LoadingContext from dagster._core.storage.dagster_run import DagsterRunStatus, RunRecord from dagster._serdes.serdes import deserialize_value @@ -124,9 +123,9 @@ def from_db_row(cls, row, key: AssetCheckKey) -> "AssetCheckExecutionRecord": @classmethod def _blocking_batch_load( - cls, keys: Iterable[AssetCheckKey], instance: DagsterInstance + cls, keys: Iterable[AssetCheckKey], context: LoadingContext ) -> Iterable[Optional["AssetCheckExecutionRecord"]]: - records_by_key = instance.event_log_storage.get_latest_asset_check_execution_by_key( + records_by_key = context.instance.event_log_storage.get_latest_asset_check_execution_by_key( list(keys) ) return [records_by_key.get(key) for key in keys] @@ -156,7 +155,7 @@ def resolve_status(self, loading_context: LoadingContext) -> AssetCheckExecution else: check.failed(f"Unexpected status {self.status}") - def targets_latest_materialization(self, loading_context: LoadingContext) -> bool: + async def targets_latest_materialization(self, loading_context: LoadingContext) -> bool: from dagster._core.storage.event_log.base import AssetRecord resolved_status = self.resolve_status(loading_context) @@ -164,7 +163,7 @@ def targets_latest_materialization(self, loading_context: LoadingContext) -> boo # all in-progress checks execute against the latest version return True - asset_record = AssetRecord.blocking_get(loading_context, self.key.asset_key) + asset_record = await AssetRecord.gen(loading_context, self.key.asset_key) latest_materialization = ( asset_record.asset_entry.last_materialization_record if asset_record else None ) @@ -197,10 +196,10 @@ def targets_latest_materialization(self, loading_context: LoadingContext) -> boo ]: # the evaluation didn't complete, so we don't have target_materialization_data, so check if # the check's run executed after the materializations as a fallback - latest_materialization_run_record = RunRecord.blocking_get( + latest_materialization_run_record = await RunRecord.gen( loading_context, latest_materialization_run_id ) - check_run_record = RunRecord.blocking_get(loading_context, self.run_id) + check_run_record = await RunRecord.gen(loading_context, self.run_id) return bool( latest_materialization_run_record and check_run_record diff --git a/python_modules/dagster/dagster/_core/storage/dagster_run.py b/python_modules/dagster/dagster/_core/storage/dagster_run.py index e292e6c5fda2b..fdad1a6da185d 100644 --- a/python_modules/dagster/dagster/_core/storage/dagster_run.py +++ b/python_modules/dagster/dagster/_core/storage/dagster_run.py @@ -20,7 +20,7 @@ from dagster._annotations import PublicAttr, experimental_param, public from dagster._core.definitions.asset_check_spec import AssetCheckKey from dagster._core.definitions.events import AssetKey -from dagster._core.loader import InstanceLoadableBy +from dagster._core.loader import InstanceLoadableBy, LoadingContext from dagster._core.origin import JobPythonOrigin from dagster._core.storage.tags import ( ASSET_EVALUATION_ID_TAG, @@ -41,7 +41,6 @@ if TYPE_CHECKING: from dagster._core.definitions.schedule_definition import ScheduleDefinition from dagster._core.definitions.sensor_definition import SensorDefinition - from dagster._core.instance import DagsterInstance from dagster._core.remote_representation.external import RemoteSchedule, RemoteSensor from dagster._core.remote_representation.origin import RemoteJobOrigin from dagster._core.scheduler.instigation import InstigatorState @@ -643,12 +642,12 @@ def __new__( @classmethod def _blocking_batch_load( - cls, keys: Iterable[str], instance: "DagsterInstance" + cls, keys: Iterable[str], context: LoadingContext ) -> Iterable[Optional["RunRecord"]]: result_map: Dict[str, Optional[RunRecord]] = {run_id: None for run_id in keys} # this should be replaced with an async DB call - records = instance.get_run_records(RunsFilter(run_ids=list(result_map.keys()))) + records = context.instance.get_run_records(RunsFilter(run_ids=list(result_map.keys()))) for record in records: result_map[record.dagster_run.run_id] = record diff --git a/python_modules/dagster/dagster/_core/storage/event_log/base.py b/python_modules/dagster/dagster/_core/storage/event_log/base.py index e8ccfeca8878e..d5f3e2be3b7cc 100644 --- a/python_modules/dagster/dagster/_core/storage/event_log/base.py +++ b/python_modules/dagster/dagster/_core/storage/event_log/base.py @@ -32,8 +32,8 @@ build_run_stats_from_events, build_run_step_stats_from_events, ) -from dagster._core.instance import DagsterInstance, MayHaveInstanceWeakref, T_DagsterInstance -from dagster._core.loader import InstanceLoadableBy +from dagster._core.instance import MayHaveInstanceWeakref, T_DagsterInstance +from dagster._core.loader import InstanceLoadableBy, LoadingContext from dagster._core.storage.asset_check_execution_record import AssetCheckExecutionRecord from dagster._core.storage.dagster_run import DagsterRunStatsSnapshot from dagster._core.storage.partition_status_cache import get_and_update_asset_status_cache_value @@ -138,11 +138,11 @@ class AssetRecord( @classmethod def _blocking_batch_load( - cls, keys: Iterable[AssetKey], instance: DagsterInstance + cls, keys: Iterable[AssetKey], context: LoadingContext ) -> Iterable[Optional["AssetRecord"]]: records_by_key = { record.asset_entry.asset_key: record - for record in instance.get_asset_records(list(keys)) + for record in context.instance.get_asset_records(list(keys)) } return [records_by_key.get(key) for key in keys] @@ -160,9 +160,11 @@ class AssetCheckSummaryRecord( ): @classmethod def _blocking_batch_load( - cls, keys: Iterable[AssetCheckKey], instance: DagsterInstance + cls, keys: Iterable[AssetCheckKey], context: LoadingContext ) -> Iterable[Optional["AssetCheckSummaryRecord"]]: - records_by_key = instance.event_log_storage.get_asset_check_summary_records(list(keys)) + records_by_key = context.instance.event_log_storage.get_asset_check_summary_records( + list(keys) + ) return [records_by_key[key] for key in keys] @@ -653,11 +655,16 @@ def default_run_scoped_event_tailer_offset(self) -> int: def get_asset_status_cache_values( self, partitions_defs_by_key: Mapping[AssetKey, Optional[PartitionsDefinition]], + loading_context: LoadingContext, ) -> Sequence[Optional["AssetStatusCacheValue"]]: """Get the cached status information for each asset.""" values = [] for asset_key, partitions_def in partitions_defs_by_key.items(): values.append( - get_and_update_asset_status_cache_value(self._instance, asset_key, partitions_def) + get_and_update_asset_status_cache_value( + self._instance, + asset_key, + partitions_def, # loading_context=loading_context + ) ) return values diff --git a/python_modules/dagster/dagster/_core/storage/partition_status_cache.py b/python_modules/dagster/dagster/_core/storage/partition_status_cache.py index 6626c6ce0ce24..6e653132cbd22 100644 --- a/python_modules/dagster/dagster/_core/storage/partition_status_cache.py +++ b/python_modules/dagster/dagster/_core/storage/partition_status_cache.py @@ -1,5 +1,5 @@ from enum import Enum -from typing import TYPE_CHECKING, List, NamedTuple, Optional, Sequence, Set, Tuple +from typing import TYPE_CHECKING, Iterable, List, NamedTuple, Optional, Sequence, Set, Tuple from dagster import ( AssetKey, @@ -7,6 +7,8 @@ DagsterRunStatus, _check as check, ) +from dagster._core.asset_graph_view.asset_graph_view import AssetGraphView +from dagster._core.asset_graph_view.entity_subset import EntitySubset, _ValidatedEntitySubsetValue from dagster._core.definitions.multi_dimensional_partitions import ( MultiPartitionKey, MultiPartitionsDefinition, @@ -19,7 +21,7 @@ ) from dagster._core.definitions.time_window_partitions import TimeWindowPartitionsDefinition from dagster._core.instance import DynamicPartitionsStore -from dagster._core.loader import LoadingContext +from dagster._core.loader import InstanceLoadableBy, LoadingContext from dagster._core.storage.dagster_run import FINISHED_STATUSES, RunsFilter from dagster._core.storage.tags import ( MULTIDIMENSIONAL_PARTITION_PREFIX, @@ -79,7 +81,8 @@ class AssetStatusCacheValue( ("serialized_in_progress_partition_subset", Optional[str]), ("earliest_in_progress_materialization_event_id", Optional[int]), ], - ) + ), + InstanceLoadableBy[Tuple[AssetKey, PartitionsDefinition]], ): """Set of asset fields that reflect partition materialization status. This is used to display global partition status in the asset view. @@ -143,6 +146,12 @@ def from_db_string(db_string: str) -> Optional["AssetStatusCacheValue"]: return cached_data + @classmethod + def _blocking_batch_load( + cls, keys: Iterable[Tuple[AssetKey, PartitionsDefinition]], context: LoadingContext + ) -> Iterable[Optional["AssetStatusCacheValue"]]: + return context.instance.event_log_storage.get_asset_status_cache_values(dict(keys), context) + def deserialize_materialized_partition_subsets( self, partitions_def: PartitionsDefinition ) -> PartitionsSubset: @@ -167,6 +176,39 @@ def deserialize_in_progress_partition_subsets( return partitions_def.deserialize_subset(self.serialized_in_progress_partition_subset) + def get_materialized_subset( + self, + asset_graph_view: AssetGraphView, + asset_key: AssetKey, + partitions_def: PartitionsDefinition, + ) -> EntitySubset[AssetKey]: + value = self.deserialize_materialized_partition_subsets(partitions_def) + return EntitySubset( + asset_graph_view, key=asset_key, value=_ValidatedEntitySubsetValue(value) + ) + + def get_failed_subset( + self, + asset_graph_view: AssetGraphView, + asset_key: AssetKey, + partitions_def: PartitionsDefinition, + ) -> EntitySubset[AssetKey]: + value = self.deserialize_failed_partition_subsets(partitions_def) + return EntitySubset( + asset_graph_view, key=asset_key, value=_ValidatedEntitySubsetValue(value) + ) + + def get_in_progress_subset( + self, + asset_graph_view: AssetGraphView, + asset_key: AssetKey, + partitions_def: PartitionsDefinition, + ) -> EntitySubset[AssetKey]: + value = self.deserialize_in_progress_partition_subsets(partitions_def) + return EntitySubset( + asset_graph_view, key=asset_key, value=_ValidatedEntitySubsetValue(value) + ) + def get_materialized_multipartitions( instance: DagsterInstance, asset_key: AssetKey, partitions_def: MultiPartitionsDefinition diff --git a/python_modules/dagster/dagster_tests/asset_defs_tests/test_asset_graph.py b/python_modules/dagster/dagster_tests/asset_defs_tests/test_asset_graph.py index aabea0bdb5377..a5e663632a461 100644 --- a/python_modules/dagster/dagster_tests/asset_defs_tests/test_asset_graph.py +++ b/python_modules/dagster/dagster_tests/asset_defs_tests/test_asset_graph.py @@ -754,7 +754,11 @@ def Bc(): ... asset_graph = asset_graph_from_assets([A, B, Ac, Bc]) assert asset_graph.toposorted_asset_keys == [A.key, B.key] - assert asset_graph.toposorted_entity_keys == [A.key, Ac.check_key, B.key, Bc.check_key] + assert asset_graph.toposorted_entity_keys_by_level == [ + [A.key], + [Ac.check_key, B.key], + [Bc.check_key], + ] def test_required_assets_and_checks_by_key_asset_decorator( diff --git a/python_modules/dagster/dagster_tests/definitions_tests/declarative_automation_tests/perf_tests/test_perf.py b/python_modules/dagster/dagster_tests/definitions_tests/declarative_automation_tests/perf_tests/test_perf.py index 00214aef6fba8..c53acd69efcb0 100644 --- a/python_modules/dagster/dagster_tests/definitions_tests/declarative_automation_tests/perf_tests/test_perf.py +++ b/python_modules/dagster/dagster_tests/definitions_tests/declarative_automation_tests/perf_tests/test_perf.py @@ -1,40 +1,71 @@ +import datetime import time from dagster import ( AutomationCondition, + DagsterInstance, DailyPartitionsDefinition, + Definitions, HourlyPartitionsDefinition, evaluate_automation_conditions, ) -from dagster._core.instance import DagsterInstance +from dagster._core.definitions.automation_tick_evaluation_context import build_run_requests +from dagster._time import get_current_datetime from dagster_test.toys.auto_materializing.large_graph import AssetLayerConfig, build_assets -def test_eager_perf() -> None: +def run_declarative_automation_perf_simulation(instance: DagsterInstance) -> None: hourly_partitions_def = HourlyPartitionsDefinition("2020-01-01-00:00") daily_partitions_def = DailyPartitionsDefinition("2020-01-01") assets = build_assets( id="perf_test", layer_configs=[ AssetLayerConfig(100, 0, hourly_partitions_def), - AssetLayerConfig(200, 2, hourly_partitions_def), - AssetLayerConfig(200, 4, hourly_partitions_def), - AssetLayerConfig(200, 4, daily_partitions_def), + AssetLayerConfig(200, 2, hourly_partitions_def, n_checks_per_asset=1), + AssetLayerConfig(200, 4, hourly_partitions_def, n_checks_per_asset=2), + AssetLayerConfig(200, 4, daily_partitions_def, n_checks_per_asset=2), AssetLayerConfig(200, 2, daily_partitions_def), AssetLayerConfig(100, 2, daily_partitions_def), ], - auto_materialize_policy=AutomationCondition.eager().as_auto_materialize_policy(), + automation_condition=AutomationCondition.eager() + & AutomationCondition.all_deps_blocking_checks_passed(), ) + defs = Definitions(assets=assets) + asset_job = defs.get_implicit_global_asset_job_def() - instance = DagsterInstance.ephemeral() cursor = None start = time.time() - for _ in range(2): - cursor = evaluate_automation_conditions( - defs=assets, instance=instance, cursor=cursor - ).cursor + evaluation_time = get_current_datetime() - datetime.timedelta(days=1) + for _ in range(3): + result = evaluate_automation_conditions( + defs=assets, instance=instance, cursor=cursor, evaluation_time=evaluation_time + ) + cursor = result.cursor end = time.time() duration = end - start # all iterations should take less than 20 seconds on this graph assert duration < 20.0 + + # simulate the new events that would come from the requested runs + run_requests = build_run_requests( + entity_subsets=[r.true_subset for r in result.results], + asset_graph=defs.get_asset_graph(), + run_tags={}, + emit_backfills=False, + ) + for run_request in run_requests: + asset_job.get_subset( + asset_selection=set(run_request.asset_selection) + if run_request.asset_selection + else None, + asset_check_selection=set(run_request.asset_check_keys) + if run_request.asset_check_keys + else None, + ).execute_in_process(instance=instance, partition_key=run_request.partition_key) + + evaluation_time += datetime.timedelta(hours=1) start = time.time() + + +def test_eager_perf() -> None: + run_declarative_automation_perf_simulation(DagsterInstance.ephemeral()) diff --git a/python_modules/dagster/dagster_tests/storage_tests/utils/event_log_storage.py b/python_modules/dagster/dagster_tests/storage_tests/utils/event_log_storage.py index 63902b4ccf886..08e5b7634e134 100644 --- a/python_modules/dagster/dagster_tests/storage_tests/utils/event_log_storage.py +++ b/python_modules/dagster/dagster_tests/storage_tests/utils/event_log_storage.py @@ -83,6 +83,7 @@ from dagster._core.execution.plan.objects import StepFailureData, StepSuccessData from dagster._core.execution.stats import StepEventStatus from dagster._core.instance import RUNLESS_JOB_NAME, RUNLESS_RUN_ID +from dagster._core.loader import LoadingContext from dagster._core.remote_representation.external_data import PartitionsSnap from dagster._core.remote_representation.origin import ( InProcessCodeLocationOrigin, @@ -6023,7 +6024,9 @@ def test_get_updated_asset_status_cache_values( AssetKey("static"): StaticPartitionsDefinition(["a", "b", "c"]), } - assert storage.get_asset_status_cache_values(partition_defs_by_key) == [ + assert storage.get_asset_status_cache_values( + partition_defs_by_key, LoadingContext.ephemeral(instance) + ) == [ None, None, None, @@ -6038,6 +6041,10 @@ def test_get_updated_asset_status_cache_values( instance.report_runless_asset_event(AssetMaterialization(asset_key="static", partition="a")) partition_defs = list(partition_defs_by_key.values()) - for i, value in enumerate(storage.get_asset_status_cache_values(partition_defs_by_key)): + for i, value in enumerate( + storage.get_asset_status_cache_values( + partition_defs_by_key, LoadingContext.ephemeral(instance) + ) + ): assert value is not None assert len(value.deserialize_materialized_partition_subsets(partition_defs[i])) == 1 diff --git a/python_modules/dagster/dagster_tests/utils_tests/test_dataloader.py b/python_modules/dagster/dagster_tests/utils_tests/test_dataloader.py index 8fe56fdfbe836..b1e24716cb746 100644 --- a/python_modules/dagster/dagster_tests/utils_tests/test_dataloader.py +++ b/python_modules/dagster/dagster_tests/utils_tests/test_dataloader.py @@ -144,9 +144,9 @@ class LoadableThing( ): @classmethod def _blocking_batch_load( - cls, keys: Iterable[str], instance: mock.MagicMock + cls, keys: Iterable[str], context: mock.MagicMock ) -> List["LoadableThing"]: - instance.query(keys) + context.query(keys) return [LoadableThing(key, random.randint(0, 100000)) for key in keys]