/ pydeation.sublime-workspace
pydeation.sublime-workspace
   1  {
   2  	"auto_complete":
   3  	{
   4  		"selected_items":
   5  		[
   6  			[
   7  				"si",
   8  				"size"
   9  			],
  10  			[
  11  				"inter",
  12  				"interbrain_path"
  13  			],
  14  			[
  15  				"field",
  16  				"field_length"
  17  			],
  18  			[
  19  				"line",
  20  				"linear_field"
  21  			],
  22  			[
  23  				"lin",
  24  				"linear_field"
  25  			],
  26  			[
  27  				"set",
  28  				"set_unique_desc_ids"
  29  			],
  30  			[
  31  				"sp",
  32  				"specify_parameters"
  33  			],
  34  			[
  35  				"specify_ac",
  36  				"specify_action_parameters"
  37  			],
  38  			[
  39  				"dome",
  40  				"domesticated_mind"
  41  			],
  42  			[
  43  				"T",
  44  				"ThreeDScene"
  45  			],
  46  			[
  47  				"focus",
  48  				"focus_point"
  49  			],
  50  			[
  51  				"re",
  52  				"rel_stop"
  53  			],
  54  			[
  55  				"w",
  56  				"white_circle"
  57  			],
  58  			[
  59  				"ROT",
  60  				"ROT_P"
  61  			],
  62  			[
  63  				"left",
  64  				"left_semi_circle"
  65  			],
  66  			[
  67  				"U",
  68  				"UAngle"
  69  			],
  70  			[
  71  				"file",
  72  				"file_path"
  73  			],
  74  			[
  75  				"ac",
  76  				"actions"
  77  			],
  78  			[
  79  				"spe",
  80  				"specify_parameters"
  81  			],
  82  			[
  83  				"right_s",
  84  				"right_semi_circle"
  85  			],
  86  			[
  87  				"sn",
  88  				"snap_start"
  89  			],
  90  			[
  91  				"hei",
  92  				"height_bias"
  93  			],
  94  			[
  95  				"cur",
  96  				"curvature_spline"
  97  			],
  98  			[
  99  				"cy",
 100  				"cylinder"
 101  			],
 102  			[
 103  				"interf",
 104  				"interface"
 105  			],
 106  			[
 107  				"pro",
 108  				"projection_types"
 109  			],
 110  			[
 111  				"specif",
 112  				"specify_parameters"
 113  			],
 114  			[
 115  				"right",
 116  				"right_eye"
 117  			],
 118  			[
 119  				"spec",
 120  				"specify_creation"
 121  			],
 122  			[
 123  				"cus",
 124  				"CustomObject"
 125  			],
 126  			[
 127  				"C",
 128  				"CustomObject"
 129  			],
 130  			[
 131  				"rig",
 132  				"right_eye"
 133  			],
 134  			[
 135  				"fill",
 136  				"filled"
 137  			],
 138  			[
 139  				"lef",
 140  				"left_to_right"
 141  			],
 142  			[
 143  				"dia",
 144  				"diameter"
 145  			],
 146  			[
 147  				"cr",
 148  				"crop_talk"
 149  			],
 150  			[
 151  				"M",
 152  				"Membrane"
 153  			],
 154  			[
 155  				"met",
 156  				"meta_lens"
 157  			],
 158  			[
 159  				"d",
 160  				"desc_id"
 161  			],
 162  			[
 163  				"wa",
 164  				"warm_lens_border"
 165  			],
 166  			[
 167  				"war",
 168  				"warm_lens_border"
 169  			],
 170  			[
 171  				"un",
 172  				"un_fill"
 173  			],
 174  			[
 175  				"gr",
 176  				"grid_width"
 177  			],
 178  			[
 179  				"specify",
 180  				"specify_action_interval"
 181  			],
 182  			[
 183  				"gene",
 184  				"generation_mode"
 185  			],
 186  			[
 187  				"ini",
 188  				"initial_visibility_port"
 189  			],
 190  			[
 191  				"no",
 192  				"not_node_final"
 193  			],
 194  			[
 195  				"G",
 196  				"GetOutPort"
 197  			],
 198  			[
 199  				"o",
 200  				"object_ini"
 201  			],
 202  			[
 203  				"_",
 204  				"__class__"
 205  			],
 206  			[
 207  				"Lin",
 208  				"LineObject"
 209  			],
 210  			[
 211  				"mos",
 212  				"mospline"
 213  			],
 214  			[
 215  				"pr",
 216  				"priority"
 217  			],
 218  			[
 219  				"rel_s",
 220  				"rel_stop"
 221  			],
 222  			[
 223  				"rel",
 224  				"rel_start"
 225  			],
 226  			[
 227  				"in",
 228  				"input_spline"
 229  			],
 230  			[
 231  				"inpu",
 232  				"input_spline"
 233  			],
 234  			[
 235  				"spl",
 236  				"spline_masks"
 237  			],
 238  			[
 239  				"de",
 240  				"desc_id"
 241  			],
 242  			[
 243  				"explosion",
 244  				"explosion_radius_parameter"
 245  			],
 246  			[
 247  				"ID_BASEOBJECT_P",
 248  				"ID_BASEOBJECT_POSITION"
 249  			],
 250  			[
 251  				"create_dis",
 252  				"create_distance_nodes"
 253  			],
 254  			[
 255  				"crea",
 256  				"create_part_node"
 257  			],
 258  			[
 259  				"expl",
 260  				"explosion_radius"
 261  			],
 262  			[
 263  				"movem",
 264  				"movements"
 265  			],
 266  			[
 267  				"gen",
 268  				"generation_mode"
 269  			],
 270  			[
 271  				"mospl",
 272  				"mospline"
 273  			],
 274  			[
 275  				"PO",
 276  				"POS_Y"
 277  			],
 278  			[
 279  				"__",
 280  				"__init__"
 281  			],
 282  			[
 283  				"warm",
 284  				"warm_lens_border"
 285  			],
 286  			[
 287  				"len",
 288  				"lens"
 289  			],
 290  			[
 291  				"specify_",
 292  				"specify_relations"
 293  			],
 294  			[
 295  				"R",
 296  				"RED"
 297  			],
 298  			[
 299  				"gl",
 300  				"glow_parameter"
 301  			],
 302  			[
 303  				"Visi",
 304  				"VisibleMoSpline"
 305  			],
 306  			[
 307  				"sk",
 308  				"sketch_parameter_setup"
 309  			],
 310  			[
 311  				"sou",
 312  				"source_spline"
 313  			],
 314  			[
 315  				"mo",
 316  				"morpher"
 317  			],
 318  			[
 319  				"Insert",
 320  				"InsertUnder"
 321  			],
 322  			[
 323  				"dynamic_membrane_",
 324  				"dynamic_membrane_length_right_parameter"
 325  			],
 326  			[
 327  				"dyn",
 328  				"dynamic_membrane_length_left_parameter"
 329  			],
 330  			[
 331  				"desc",
 332  				"desc_id"
 333  			],
 334  			[
 335  				"peer",
 336  				"peer_count_parameter"
 337  			],
 338  			[
 339  				"peers",
 340  				"peers_right"
 341  			],
 342  			[
 343  				"destination",
 344  				"destination_splines"
 345  			],
 346  			[
 347  				"split_membrane_ac",
 348  				"split_membrane_action_parameter"
 349  			],
 350  			[
 351  				"split",
 352  				"split_distance_parameter"
 353  			],
 354  			[
 355  				"morph_comple",
 356  				"morph_completion_parameter"
 357  			],
 358  			[
 359  				"Spl",
 360  				"SplineMask"
 361  			],
 362  			[
 363  				"ed",
 364  				"edges"
 365  			],
 366  			[
 367  				"f",
 368  				"formula"
 369  			],
 370  			[
 371  				"pee",
 372  				"peer_color"
 373  			],
 374  			[
 375  				"split_membrane_",
 376  				"split_membrane_left"
 377  			],
 378  			[
 379  				"clo",
 380  				"clone_connector"
 381  			],
 382  			[
 383  				"impo",
 384  				"importlib"
 385  			],
 386  			[
 387  				"targ",
 388  				"target_object"
 389  			],
 390  			[
 391  				"max",
 392  				"max_distance_parameter"
 393  			],
 394  			[
 395  				"n",
 396  				"neighbour_count_parameter"
 397  			],
 398  			[
 399  				"ne",
 400  				"neighbour_count_parameter"
 401  			],
 402  			[
 403  				"GV_OBJECT_OBJE",
 404  				"GV_OBJECT_OPERATOR_OBJECT_OUT"
 405  			],
 406  			[
 407  				"a",
 408  				"ancient_connections"
 409  			],
 410  			[
 411  				"get_s",
 412  				"get_segment_count"
 413  			],
 414  			[
 415  				"anim",
 416  				"animations"
 417  			],
 418  			[
 419  				"zoo",
 420  				"zoom_animation"
 421  			],
 422  			[
 423  				"scree",
 424  				"screen_border"
 425  			],
 426  			[
 427  				"laptop",
 428  				"laptop_right"
 429  			],
 430  			[
 431  				"tar",
 432  				"target_radius"
 433  			],
 434  			[
 435  				"inti",
 436  				"__init__"
 437  			],
 438  			[
 439  				"fou",
 440  				"focus_point_z_parameter"
 441  			],
 442  			[
 443  				"focus_point_",
 444  				"focus_point_x_parameter"
 445  			],
 446  			[
 447  				"focu",
 448  				"focus_point_x"
 449  			],
 450  			[
 451  				"foc",
 452  				"focus_point_x"
 453  			],
 454  			[
 455  				"POS",
 456  				"POS_Z"
 457  			],
 458  			[
 459  				"ra",
 460  				"radius_parameter"
 461  			],
 462  			[
 463  				"tilt",
 464  				"tilt_parameter"
 465  			],
 466  			[
 467  				"the",
 468  				"theta_parameter"
 469  			],
 470  			[
 471  				"or",
 472  				"orbit"
 473  			],
 474  			[
 475  				"paramet",
 476  				"parameter_port"
 477  			],
 478  			[
 479  				"parameter",
 480  				"parameter_node"
 481  			],
 482  			[
 483  				"segment",
 484  				"segment_count_ini"
 485  			],
 486  			[
 487  				"fiel",
 488  				"field_length_parameter"
 489  			],
 490  			[
 491  				"Proto",
 492  				"ProtoAnimation"
 493  			],
 494  			[
 495  				"effects",
 496  				"effect_objects"
 497  			],
 498  			[
 499  				"specify_boundin",
 500  				"specify_bounding_box_relations"
 501  			],
 502  			[
 503  				"fr",
 504  				"frame_width"
 505  			],
 506  			[
 507  				"frame",
 508  				"frame_width"
 509  			],
 510  			[
 511  				"dis",
 512  				"distance_to_frame_width_ratio"
 513  			],
 514  			[
 515  				"cam",
 516  				"camera_objects"
 517  			]
 518  		]
 519  	},
 520  	"buffers":
 521  	[
 522  		{
 523  			"file": "objects/sketch_objects.py",
 524  			"settings":
 525  			{
 526  				"buffer_size": 6267,
 527  				"encoding": "UTF-8",
 528  				"line_ending": "Unix"
 529  			},
 530  			"undo_stack":
 531  			[
 532  				[
 533  					5,
 534  					1,
 535  					"insert",
 536  					{
 537  						"characters": "\ns"
 538  					},
 539  					"AwAAADEEAAAAAAAAMgQAAAAAAAAAAAAAMgQAAAAAAAA6BAAAAAAAAAAAAAA6BAAAAAAAADsEAAAAAAAAAAAAAA",
 540  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAMQQAAAAAAAAxBAAAAAAAAAAAAAAAAPC/"
 541  				],
 542  				[
 543  					6,
 544  					1,
 545  					"insert_completion",
 546  					{
 547  						"completion": "self",
 548  						"format": "text",
 549  						"keep_prefix": false,
 550  						"must_insert": false,
 551  						"trigger": "self"
 552  					},
 553  					"AgAAADoEAAAAAAAAOgQAAAAAAAABAAAAczoEAAAAAAAAPgQAAAAAAAAAAAAA",
 554  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAOwQAAAAAAAA7BAAAAAAAAAAAAAAAAPC/"
 555  				],
 556  				[
 557  					7,
 558  					1,
 559  					"insert",
 560  					{
 561  						"characters": ".move_"
 562  					},
 563  					"BgAAAD4EAAAAAAAAPwQAAAAAAAAAAAAAPwQAAAAAAABABAAAAAAAAAAAAABABAAAAAAAAEEEAAAAAAAAAAAAAEEEAAAAAAAAQgQAAAAAAAAAAAAAQgQAAAAAAABDBAAAAAAAAAAAAABDBAAAAAAAAEQEAAAAAAAAAAAAAA",
 564  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAPgQAAAAAAAA+BAAAAAAAAAAAAAAAAPC/"
 565  				],
 566  				[
 567  					8,
 568  					1,
 569  					"insert",
 570  					{
 571  						"characters": "membrane"
 572  					},
 573  					"CAAAAEQEAAAAAAAARQQAAAAAAAAAAAAARQQAAAAAAABGBAAAAAAAAAAAAABGBAAAAAAAAEcEAAAAAAAAAAAAAEcEAAAAAAAASAQAAAAAAAAAAAAASAQAAAAAAABJBAAAAAAAAAAAAABJBAAAAAAAAEoEAAAAAAAAAAAAAEoEAAAAAAAASwQAAAAAAAAAAAAASwQAAAAAAABMBAAAAAAAAAAAAAA",
 574  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAARAQAAAAAAABEBAAAAAAAAAAAAAAAAPC/"
 575  				],
 576  				[
 577  					9,
 578  					1,
 579  					"insert",
 580  					{
 581  						"characters": "_in"
 582  					},
 583  					"AwAAAEwEAAAAAAAATQQAAAAAAAAAAAAATQQAAAAAAABOBAAAAAAAAAAAAABOBAAAAAAAAE8EAAAAAAAAAAAAAA",
 584  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAATAQAAAAAAABMBAAAAAAAAAAAAAAAAPC/"
 585  				],
 586  				[
 587  					10,
 588  					1,
 589  					"insert",
 590  					{
 591  						"characters": "_"
 592  					},
 593  					"AQAAAE8EAAAAAAAAUAQAAAAAAAAAAAAA",
 594  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAATwQAAAAAAABPBAAAAAAAAAAAAAAAAPC/"
 595  				],
 596  				[
 597  					11,
 598  					3,
 599  					"left_delete",
 600  					null,
 601  					"AwAAAE8EAAAAAAAATwQAAAAAAAABAAAAX04EAAAAAAAATgQAAAAAAAABAAAAbk0EAAAAAAAATQQAAAAAAAABAAAAaQ",
 602  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAUAQAAAAAAABQBAAAAAAAAAAAAAAAAPC/"
 603  				],
 604  				[
 605  					12,
 606  					1,
 607  					"insert",
 608  					{
 609  						"characters": "up"
 610  					},
 611  					"AgAAAE0EAAAAAAAATgQAAAAAAAAAAAAATgQAAAAAAABPBAAAAAAAAAAAAAA",
 612  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAATQQAAAAAAABNBAAAAAAAAAAAAAAAAPC/"
 613  				],
 614  				[
 615  					13,
 616  					1,
 617  					"insert",
 618  					{
 619  						"characters": "_hierar"
 620  					},
 621  					"BwAAAE8EAAAAAAAAUAQAAAAAAAAAAAAAUAQAAAAAAABRBAAAAAAAAAAAAABRBAAAAAAAAFIEAAAAAAAAAAAAAFIEAAAAAAAAUwQAAAAAAAAAAAAAUwQAAAAAAABUBAAAAAAAAAAAAABUBAAAAAAAAFUEAAAAAAAAAAAAAFUEAAAAAAAAVgQAAAAAAAAAAAAA",
 622  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAATwQAAAAAAABPBAAAAAAAAAAAAAAAAPC/"
 623  				],
 624  				[
 625  					14,
 626  					1,
 627  					"insert",
 628  					{
 629  						"characters": "chy"
 630  					},
 631  					"AwAAAFYEAAAAAAAAVwQAAAAAAAAAAAAAVwQAAAAAAABYBAAAAAAAAAAAAABYBAAAAAAAAFkEAAAAAAAAAAAAAA",
 632  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAVgQAAAAAAABWBAAAAAAAAAAAAAAAAPC/"
 633  				],
 634  				[
 635  					15,
 636  					1,
 637  					"insert",
 638  					{
 639  						"characters": " "
 640  					},
 641  					"AQAAAFkEAAAAAAAAWgQAAAAAAAAAAAAA",
 642  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAWQQAAAAAAABZBAAAAAAAAAAAAAAAAPC/"
 643  				],
 644  				[
 645  					16,
 646  					1,
 647  					"left_delete",
 648  					null,
 649  					"AQAAAFkEAAAAAAAAWQQAAAAAAAABAAAAIA",
 650  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAWgQAAAAAAABaBAAAAAAAAAAAAAAAAPC/"
 651  				],
 652  				[
 653  					17,
 654  					1,
 655  					"insert",
 656  					{
 657  						"characters": "_t"
 658  					},
 659  					"AgAAAFkEAAAAAAAAWgQAAAAAAAAAAAAAWgQAAAAAAABbBAAAAAAAAAAAAAA",
 660  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAWQQAAAAAAABZBAAAAAAAAAAAAAAAAPC/"
 661  				],
 662  				[
 663  					18,
 664  					1,
 665  					"insert",
 666  					{
 667  						"characters": "o"
 668  					},
 669  					"AQAAAFsEAAAAAAAAXAQAAAAAAAAAAAAA",
 670  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAWwQAAAAAAABbBAAAAAAAAAAAAAAAAPC/"
 671  				],
 672  				[
 673  					19,
 674  					1,
 675  					"insert",
 676  					{
 677  						"characters": " fi"
 678  					},
 679  					"AwAAAFwEAAAAAAAAXQQAAAAAAAAAAAAAXQQAAAAAAABeBAAAAAAAAAAAAABeBAAAAAAAAF8EAAAAAAAAAAAAAA",
 680  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAXAQAAAAAAABcBAAAAAAAAAAAAAAAAPC/"
 681  				],
 682  				[
 683  					20,
 684  					3,
 685  					"left_delete",
 686  					null,
 687  					"AwAAAF4EAAAAAAAAXgQAAAAAAAABAAAAaV0EAAAAAAAAXQQAAAAAAAABAAAAZlwEAAAAAAAAXAQAAAAAAAABAAAAIA",
 688  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAXwQAAAAAAABfBAAAAAAAAAAAAAAAAPC/"
 689  				],
 690  				[
 691  					21,
 692  					1,
 693  					"insert",
 694  					{
 695  						"characters": "_fix_"
 696  					},
 697  					"BQAAAFwEAAAAAAAAXQQAAAAAAAAAAAAAXQQAAAAAAABeBAAAAAAAAAAAAABeBAAAAAAAAF8EAAAAAAAAAAAAAF8EAAAAAAAAYAQAAAAAAAAAAAAAYAQAAAAAAABhBAAAAAAAAAAAAAA",
 698  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAXAQAAAAAAABcBAAAAAAAAAAAAAAAAPC/"
 699  				],
 700  				[
 701  					22,
 702  					1,
 703  					"insert",
 704  					{
 705  						"characters": "offse"
 706  					},
 707  					"BQAAAGEEAAAAAAAAYgQAAAAAAAAAAAAAYgQAAAAAAABjBAAAAAAAAAAAAABjBAAAAAAAAGQEAAAAAAAAAAAAAGQEAAAAAAAAZQQAAAAAAAAAAAAAZQQAAAAAAABmBAAAAAAAAAAAAAA",
 708  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAYQQAAAAAAABhBAAAAAAAAAAAAAAAAPC/"
 709  				],
 710  				[
 711  					23,
 712  					1,
 713  					"insert",
 714  					{
 715  						"characters": "t_beh"
 716  					},
 717  					"BQAAAGYEAAAAAAAAZwQAAAAAAAAAAAAAZwQAAAAAAABoBAAAAAAAAAAAAABoBAAAAAAAAGkEAAAAAAAAAAAAAGkEAAAAAAAAagQAAAAAAAAAAAAAagQAAAAAAABrBAAAAAAAAAAAAAA",
 718  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAZgQAAAAAAABmBAAAAAAAAAAAAAAAAPC/"
 719  				],
 720  				[
 721  					24,
 722  					1,
 723  					"insert",
 724  					{
 725  						"characters": "aviour"
 726  					},
 727  					"BgAAAGsEAAAAAAAAbAQAAAAAAAAAAAAAbAQAAAAAAABtBAAAAAAAAAAAAABtBAAAAAAAAG4EAAAAAAAAAAAAAG4EAAAAAAAAbwQAAAAAAAAAAAAAbwQAAAAAAABwBAAAAAAAAAAAAABwBAAAAAAAAHEEAAAAAAAAAAAAAA",
 728  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAawQAAAAAAABrBAAAAAAAAAAAAAAAAPC/"
 729  				],
 730  				[
 731  					25,
 732  					1,
 733  					"insert_snippet",
 734  					{
 735  						"contents": "($0)"
 736  					},
 737  					"AQAAAHEEAAAAAAAAcwQAAAAAAAAAAAAA",
 738  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAcQQAAAAAAABxBAAAAAAAAAAAAAAAAPC/"
 739  				],
 740  				[
 741  					27,
 742  					1,
 743  					"insert",
 744  					{
 745  						"characters": "\n\n"
 746  					},
 747  					"BQAAAHMEAAAAAAAAdAQAAAAAAAAAAAAAdAQAAAAAAAB8BAAAAAAAAAAAAAB8BAAAAAAAAH0EAAAAAAAAAAAAAH0EAAAAAAAAhQQAAAAAAAAAAAAAdAQAAAAAAAB0BAAAAAAAAAgAAAAgICAgICAgIA",
 748  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAcwQAAAAAAABzBAAAAAAAAAAAAAAAAPC/"
 749  				],
 750  				[
 751  					28,
 752  					1,
 753  					"left_delete",
 754  					null,
 755  					"AQAAAHkEAAAAAAAAeQQAAAAAAAAEAAAAICAgIA",
 756  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAfQQAAAAAAAB9BAAAAAAAAAAAAAAAAPC/"
 757  				],
 758  				[
 759  					29,
 760  					1,
 761  					"insert",
 762  					{
 763  						"characters": "def"
 764  					},
 765  					"AwAAAHkEAAAAAAAAegQAAAAAAAAAAAAAegQAAAAAAAB7BAAAAAAAAAAAAAB7BAAAAAAAAHwEAAAAAAAAAAAAAA",
 766  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAeQQAAAAAAAB5BAAAAAAAAAAAAAAAAPC/"
 767  				],
 768  				[
 769  					30,
 770  					1,
 771  					"copilot_accept_completion",
 772  					null,
 773  					"AgAAAHUEAAAAAAAAdQQAAAAAAAAHAAAAICAgIGRlZnUEAAAAAAAAtgQAAAAAAAAAAAAA",
 774  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAfAQAAAAAAAB8BAAAAAAAAAAAAAAAAPC/"
 775  				],
 776  				[
 777  					31,
 778  					1,
 779  					"insert",
 780  					{
 781  						"characters": "\n"
 782  					},
 783  					"AwAAALYEAAAAAAAAtwQAAAAAAAAAAAAAtwQAAAAAAAC7BAAAAAAAAAAAAAC7BAAAAAAAAL8EAAAAAAAAAAAAAA",
 784  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAtgQAAAAAAAC2BAAAAAAAAAAAAAAAAPC/"
 785  				],
 786  				[
 787  					32,
 788  					1,
 789  					"insert",
 790  					{
 791  						"characters": "if"
 792  					},
 793  					"AgAAAL8EAAAAAAAAwAQAAAAAAAAAAAAAwAQAAAAAAADBBAAAAAAAAAAAAAA",
 794  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAvwQAAAAAAAC/BAAAAAAAAAAAAAAAAPC/"
 795  				],
 796  				[
 797  					33,
 798  					1,
 799  					"insert",
 800  					{
 801  						"characters": " self."
 802  					},
 803  					"BgAAAMEEAAAAAAAAwgQAAAAAAAAAAAAAwgQAAAAAAADDBAAAAAAAAAAAAADDBAAAAAAAAMQEAAAAAAAAAAAAAMQEAAAAAAAAxQQAAAAAAAAAAAAAxQQAAAAAAADGBAAAAAAAAAAAAADGBAAAAAAAAMcEAAAAAAAAAAAAAA",
 804  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAwQQAAAAAAADBBAAAAAAAAAAAAAAAAPC/"
 805  				],
 806  				[
 807  					34,
 808  					1,
 809  					"insert",
 810  					{
 811  						"characters": "membrane:"
 812  					},
 813  					"CQAAAMcEAAAAAAAAyAQAAAAAAAAAAAAAyAQAAAAAAADJBAAAAAAAAAAAAADJBAAAAAAAAMoEAAAAAAAAAAAAAMoEAAAAAAAAywQAAAAAAAAAAAAAywQAAAAAAADMBAAAAAAAAAAAAADMBAAAAAAAAM0EAAAAAAAAAAAAAM0EAAAAAAAAzgQAAAAAAAAAAAAAzgQAAAAAAADPBAAAAAAAAAAAAADPBAAAAAAAANAEAAAAAAAAAAAAAA",
 814  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAxwQAAAAAAADHBAAAAAAAAAAAAAAAAPC/"
 815  				],
 816  				[
 817  					35,
 818  					1,
 819  					"insert",
 820  					{
 821  						"characters": "\n"
 822  					},
 823  					"AwAAANAEAAAAAAAA0QQAAAAAAAAAAAAA0QQAAAAAAADZBAAAAAAAAAAAAADZBAAAAAAAAN0EAAAAAAAAAAAAAA",
 824  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA0AQAAAAAAADQBAAAAAAAAAAAAAAAAPC/"
 825  				],
 826  				[
 827  					36,
 828  					1,
 829  					"insert",
 830  					{
 831  						"characters": "s"
 832  					},
 833  					"AQAAAN0EAAAAAAAA3gQAAAAAAAAAAAAA",
 834  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA3QQAAAAAAADdBAAAAAAAAAAAAAAAAPC/"
 835  				],
 836  				[
 837  					37,
 838  					1,
 839  					"insert_completion",
 840  					{
 841  						"completion": "self",
 842  						"format": "text",
 843  						"keep_prefix": false,
 844  						"must_insert": false,
 845  						"trigger": "self"
 846  					},
 847  					"AgAAAN0EAAAAAAAA3QQAAAAAAAABAAAAc90EAAAAAAAA4QQAAAAAAAAAAAAA",
 848  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA3gQAAAAAAADeBAAAAAAAAAAAAAAAAPC/"
 849  				],
 850  				[
 851  					38,
 852  					1,
 853  					"insert",
 854  					{
 855  						"characters": ".membrane"
 856  					},
 857  					"CQAAAOEEAAAAAAAA4gQAAAAAAAAAAAAA4gQAAAAAAADjBAAAAAAAAAAAAADjBAAAAAAAAOQEAAAAAAAAAAAAAOQEAAAAAAAA5QQAAAAAAAAAAAAA5QQAAAAAAADmBAAAAAAAAAAAAADmBAAAAAAAAOcEAAAAAAAAAAAAAOcEAAAAAAAA6AQAAAAAAAAAAAAA6AQAAAAAAADpBAAAAAAAAAAAAADpBAAAAAAAAOoEAAAAAAAAAAAAAA",
 858  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA4QQAAAAAAADhBAAAAAAAAAAAAAAAAPC/"
 859  				],
 860  				[
 861  					39,
 862  					1,
 863  					"insert",
 864  					{
 865  						"characters": ".obj"
 866  					},
 867  					"BAAAAOoEAAAAAAAA6wQAAAAAAAAAAAAA6wQAAAAAAADsBAAAAAAAAAAAAADsBAAAAAAAAO0EAAAAAAAAAAAAAO0EAAAAAAAA7gQAAAAAAAAAAAAA",
 868  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA6gQAAAAAAADqBAAAAAAAAAAAAAAAAPC/"
 869  				],
 870  				[
 871  					40,
 872  					1,
 873  					"insert",
 874  					{
 875  						"characters": ".In"
 876  					},
 877  					"AwAAAO4EAAAAAAAA7wQAAAAAAAAAAAAA7wQAAAAAAADwBAAAAAAAAAAAAADwBAAAAAAAAPEEAAAAAAAAAAAAAA",
 878  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA7gQAAAAAAADuBAAAAAAAAAAAAAAAAPC/"
 879  				],
 880  				[
 881  					41,
 882  					1,
 883  					"insert_completion",
 884  					{
 885  						"completion": "InsertUnder",
 886  						"format": "text",
 887  						"keep_prefix": false,
 888  						"must_insert": false,
 889  						"trigger": "InsertUnder"
 890  					},
 891  					"AgAAAO8EAAAAAAAA7wQAAAAAAAACAAAASW7vBAAAAAAAAPoEAAAAAAAAAAAAAA",
 892  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA8QQAAAAAAADxBAAAAAAAAAAAAAAAAPC/"
 893  				],
 894  				[
 895  					42,
 896  					1,
 897  					"insert_snippet",
 898  					{
 899  						"contents": "($0)"
 900  					},
 901  					"AQAAAPoEAAAAAAAA/AQAAAAAAAAAAAAA",
 902  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA+gQAAAAAAAD6BAAAAAAAAAAAAAAAAPC/"
 903  				],
 904  				[
 905  					43,
 906  					1,
 907  					"copilot_accept_completion",
 908  					null,
 909  					"AgAAANEEAAAAAAAA0QQAAAAAAAArAAAAICAgICAgICAgICAgc2VsZi5tZW1icmFuZS5vYmouSW5zZXJ0VW5kZXIoKdEEAAAAAAAABAUAAAAAAAAAAAAA",
 910  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA+wQAAAAAAAD7BAAAAAAAAAAAAAAAAPC/"
 911  				],
 912  				[
 913  					63,
 914  					3,
 915  					"delete_word",
 916  					{
 917  						"forward": false
 918  					},
 919  					"AwAAAMcEAAAAAAAAxwQAAAAAAAAIAAAAbWVtYnJhbmXGBAAAAAAAAMYEAAAAAAAAAQAAAC7CBAAAAAAAAMIEAAAAAAAABAAAAHNlbGY",
 920  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAzwQAAAAAAADPBAAAAAAAAAAAAAAAAPC/"
 921  				],
 922  				[
 923  					64,
 924  					1,
 925  					"insert",
 926  					{
 927  						"characters": "True"
 928  					},
 929  					"BAAAAMIEAAAAAAAAwwQAAAAAAAAAAAAAwwQAAAAAAADEBAAAAAAAAAAAAADEBAAAAAAAAMUEAAAAAAAAAAAAAMUEAAAAAAAAxgQAAAAAAAAAAAAA",
 930  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAwgQAAAAAAADCBAAAAAAAAAAAAAAAAPC/"
 931  				],
 932  				[
 933  					69,
 934  					1,
 935  					"run_macro_file",
 936  					{
 937  						"file": "res://Packages/Default/Delete to Hard BOL.sublime-macro"
 938  					},
 939  					"AQAAALcEAAAAAAAAtwQAAAAAAAAQAAAAICAgICAgICBpZiBUcnVlOg",
 940  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAxwQAAAAAAADHBAAAAAAAAAAAAAAAUHZA"
 941  				],
 942  				[
 943  					70,
 944  					1,
 945  					"left_delete",
 946  					null,
 947  					"AQAAALYEAAAAAAAAtgQAAAAAAAABAAAACg",
 948  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAtwQAAAAAAAC3BAAAAAAAAAAAAAAAAPC/"
 949  				],
 950  				[
 951  					73,
 952  					1,
 953  					"left_delete",
 954  					null,
 955  					"AQAAAL8EAAAAAAAAvwQAAAAAAAAEAAAAICAgIA",
 956  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAwwQAAAAAAADDBAAAAAAAAAAAAAAAAFVA"
 957  				],
 958  				[
 959  					130,
 960  					1,
 961  					"cut",
 962  					null,
 963  					"AQAAAL8EAAAAAAAAvwQAAAAAAAAnAAAAc2VsZi5tZW1icmFuZS5vYmouSW5zZXJ0VW5kZXIoc2VsZi5vYmop",
 964  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAA5gQAAAAAAAC/BAAAAAAAAAAAAAAAAExA"
 965  				],
 966  				[
 967  					134,
 968  					1,
 969  					"insert",
 970  					{
 971  						"characters": "\n"
 972  					},
 973  					"AgAAAE8HAAAAAAAAUAcAAAAAAAAAAAAAUAcAAAAAAABcBwAAAAAAAAAAAAA",
 974  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAATwcAAAAAAABPBwAAAAAAAP///////+9/"
 975  				],
 976  				[
 977  					135,
 978  					1,
 979  					"paste",
 980  					null,
 981  					"AQAAAFwHAAAAAAAAgwcAAAAAAAAAAAAA",
 982  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAXAcAAAAAAABcBwAAAAAAAAAAAAAAAPC/"
 983  				],
 984  				[
 985  					137,
 986  					2,
 987  					"left_delete",
 988  					null,
 989  					"AgAAAL8EAAAAAAAAvwQAAAAAAAABAAAACrsEAAAAAAAAuwQAAAAAAAAEAAAAICAgIA",
 990  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAwAQAAAAAAADABAAAAAAAAAAAAAAAUHZA"
 991  				],
 992  				[
 993  					138,
 994  					3,
 995  					"run_macro_file",
 996  					{
 997  						"file": "res://Packages/Default/Delete to Hard BOL.sublime-macro"
 998  					},
 999  					"AwAAALcEAAAAAAAAtwQAAAAAAAAEAAAAICAgILYEAAAAAAAAtgQAAAAAAAABAAAACnUEAAAAAAAAdQQAAAAAAABBAAAAICAgIGRlZiBtb3ZlX21lbWJyYW5lX3VwX2hpZXJhcmNoeV90b19maXhfb2Zmc2V0X2JlaGF2aW91cihzZWxmKTo",
1000  					"DQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAuwQAAAAAAAC7BAAAAAAAAAAAAAAAAPC/"
1001  				],
1002  				[
1003  					139,
1004  					1,
1005  					"left_delete",
1006  					null,
1007  					"AgAAAHQEAAAAAAAAdAQAAAAAAAABAAAACnMEAAAAAAAAcwQAAAAAAAABAAAACg",
1008  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB1BAAAAAAAAHUEAAAAAAAAAAAAAAAA8L8"
1009  				],
1010  				[
1011  					140,
1012  					1,
1013  					"run_macro_file",
1014  					{
1015  						"file": "res://Packages/Default/Delete to Hard BOL.sublime-macro"
1016  					},
1017  					"AQAAADIEAAAAAAAAMgQAAAAAAABBAAAAICAgICAgICBzZWxmLm1vdmVfbWVtYnJhbmVfdXBfaGllcmFyY2h5X3RvX2ZpeF9vZmZzZXRfYmVoYXZpb3VyKCk",
1018  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABzBAAAAAAAAHMEAAAAAAAAAAAAAAAA8L8"
1019  				]
1020  			]
1021  		},
1022  		{
1023  			"file": "objects/abstract_objects.py",
1024  			"settings":
1025  			{
1026  				"buffer_size": 35430,
1027  				"encoding": "UTF-8",
1028  				"line_ending": "Unix"
1029  			},
1030  			"undo_stack":
1031  			[
1032  				[
1033  					19,
1034  					1,
1035  					"insert",
1036  					{
1037  						"characters": "\n"
1038  					},
1039  					"AQAAAEcCAAAAAAAASAIAAAAAAAAAAAAA",
1040  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABHAgAAAAAAAEcCAAAAAAAAAAAAAAAA8L8"
1041  				],
1042  				[
1043  					20,
1044  					1,
1045  					"insert",
1046  					{
1047  						"characters": "im"
1048  					},
1049  					"AgAAAEgCAAAAAAAASQIAAAAAAAAAAAAASQIAAAAAAABKAgAAAAAAAAAAAAA",
1050  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABIAgAAAAAAAEgCAAAAAAAAAAAAAAAA8L8"
1051  				],
1052  				[
1053  					21,
1054  					1,
1055  					"insert_completion",
1056  					{
1057  						"completion": "import",
1058  						"format": "snippet",
1059  						"keep_prefix": false,
1060  						"must_insert": false,
1061  						"trigger": "import"
1062  					},
1063  					"AgAAAEgCAAAAAAAASAIAAAAAAAACAAAAaW1IAgAAAAAAAE4CAAAAAAAAAAAAAA",
1064  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABKAgAAAAAAAEoCAAAAAAAAAAAAAAAA8L8"
1065  				],
1066  				[
1067  					22,
1068  					1,
1069  					"copilot_accept_completion",
1070  					null,
1071  					"AgAAAEgCAAAAAAAASAIAAAAAAAAGAAAAaW1wb3J0SAIAAAAAAAB9AgAAAAAAAAAAAAA",
1072  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABOAgAAAAAAAE4CAAAAAAAAAAAAAAAA8L8"
1073  				],
1074  				[
1075  					23,
1076  					3,
1077  					"delete_word",
1078  					{
1079  						"forward": false
1080  					},
1081  					"AwAAAHECAAAAAAAAcQIAAAAAAAAMAAAAbGluZV9vYmplY3RzbgIAAAAAAABuAgAAAAAAAAMAAABhcyBhAgAAAAAAAGECAAAAAAAADQAAAGxpbmVfb2JqZWN0cyA",
1082  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB9AgAAAAAAAH0CAAAAAAAAAAAAAAAA8L8"
1083  				],
1084  				[
1085  					24,
1086  					1,
1087  					"insert",
1088  					{
1089  						"characters": "helper"
1090  					},
1091  					"BgAAAGECAAAAAAAAYgIAAAAAAAAAAAAAYgIAAAAAAABjAgAAAAAAAAAAAABjAgAAAAAAAGQCAAAAAAAAAAAAAGQCAAAAAAAAZQIAAAAAAAAAAAAAZQIAAAAAAABmAgAAAAAAAAAAAABmAgAAAAAAAGcCAAAAAAAAAAAAAA",
1092  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABhAgAAAAAAAGECAAAAAAAAAAAAAAAA8L8"
1093  				],
1094  				[
1095  					25,
1096  					1,
1097  					"copilot_accept_completion",
1098  					null,
1099  					"AgAAAEgCAAAAAAAASAIAAAAAAAAfAAAAaW1wb3J0IHB5ZGVhdGlvbi5vYmplY3RzLmhlbHBlckgCAAAAAAAAgQIAAAAAAAAAAAAA",
1100  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABnAgAAAAAAAGcCAAAAAAAAAAAAAAAA8L8"
1101  				],
1102  				[
1103  					30,
1104  					1,
1105  					"insert",
1106  					{
1107  						"characters": "helope"
1108  					},
1109  					"BwAAAB1DAAAAAAAAHkMAAAAAAAAAAAAAHkMAAAAAAAAeQwAAAAAAAA4AAABlZmZlY3Rfb2JqZWN0cx5DAAAAAAAAH0MAAAAAAAAAAAAAH0MAAAAAAAAgQwAAAAAAAAAAAAAgQwAAAAAAACFDAAAAAAAAAAAAACFDAAAAAAAAIkMAAAAAAAAAAAAAIkMAAAAAAAAjQwAAAAAAAAAAAAA",
1110  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAdQwAAAAAAACtDAAAAAAAAAAAAAAAA8L8"
1111  				],
1112  				[
1113  					31,
1114  					1,
1115  					"insert_completion",
1116  					{
1117  						"completion": "helper_objects",
1118  						"format": "snippet",
1119  						"keep_prefix": false,
1120  						"must_insert": false,
1121  						"trigger": "helper_objects"
1122  					},
1123  					"AgAAAB1DAAAAAAAAHUMAAAAAAAAGAAAAaGVsb3BlHUMAAAAAAAArQwAAAAAAAAAAAAA",
1124  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAjQwAAAAAAACNDAAAAAAAAAAAAAAAA8L8"
1125  				],
1126  				[
1127  					43,
1128  					1,
1129  					"insert",
1130  					{
1131  						"characters": "helper"
1132  					},
1133  					"BgAAAEtZAAAAAAAATFkAAAAAAAAAAAAATFkAAAAAAABNWQAAAAAAAAAAAABNWQAAAAAAAE5ZAAAAAAAAAAAAAE5ZAAAAAAAAT1kAAAAAAAAAAAAAT1kAAAAAAABQWQAAAAAAAAAAAABQWQAAAAAAAFFZAAAAAAAAAAAAAA",
1134  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABLWQAAAAAAAEtZAAAAAAAAAAAAAAAA8L8"
1135  				],
1136  				[
1137  					44,
1138  					1,
1139  					"insert",
1140  					{
1141  						"characters": "_objects"
1142  					},
1143  					"CAAAAFFZAAAAAAAAUlkAAAAAAAAAAAAAUlkAAAAAAABTWQAAAAAAAAAAAABTWQAAAAAAAFRZAAAAAAAAAAAAAFRZAAAAAAAAVVkAAAAAAAAAAAAAVVkAAAAAAABWWQAAAAAAAAAAAABWWQAAAAAAAFdZAAAAAAAAAAAAAFdZAAAAAAAAWFkAAAAAAAAAAAAAWFkAAAAAAABZWQAAAAAAAAAAAAA",
1144  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABRWQAAAAAAAFFZAAAAAAAAAAAAAAAA8L8"
1145  				],
1146  				[
1147  					45,
1148  					1,
1149  					"insert",
1150  					{
1151  						"characters": "."
1152  					},
1153  					"AQAAAFlZAAAAAAAAWlkAAAAAAAAAAAAA",
1154  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABZWQAAAAAAAFlZAAAAAAAAAAAAAAAA8L8"
1155  				],
1156  				[
1157  					51,
1158  					1,
1159  					"insert",
1160  					{
1161  						"characters": "solid_objec"
1162  					},
1163  					"CwAAAIdZAAAAAAAAiFkAAAAAAAAAAAAAiFkAAAAAAACJWQAAAAAAAAAAAACJWQAAAAAAAIpZAAAAAAAAAAAAAIpZAAAAAAAAi1kAAAAAAAAAAAAAi1kAAAAAAACMWQAAAAAAAAAAAACMWQAAAAAAAI1ZAAAAAAAAAAAAAI1ZAAAAAAAAjlkAAAAAAAAAAAAAjlkAAAAAAACPWQAAAAAAAAAAAACPWQAAAAAAAJBZAAAAAAAAAAAAAJBZAAAAAAAAkVkAAAAAAAAAAAAAkVkAAAAAAACSWQAAAAAAAAAAAAA",
1164  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACHWQAAAAAAAIdZAAAAAAAAAAAAAAAA8L8"
1165  				],
1166  				[
1167  					52,
1168  					1,
1169  					"insert",
1170  					{
1171  						"characters": "ts."
1172  					},
1173  					"AwAAAJJZAAAAAAAAk1kAAAAAAAAAAAAAk1kAAAAAAACUWQAAAAAAAAAAAACUWQAAAAAAAJVZAAAAAAAAAAAAAA",
1174  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACSWQAAAAAAAJJZAAAAAAAAAAAAAAAA8L8"
1175  				],
1176  				[
1177  					55,
1178  					1,
1179  					"duplicate_line",
1180  					null,
1181  					"AQAAAIICAAAAAAAAvAIAAAAAAAAAAAAA",
1182  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACBAgAAAAAAAIECAAAAAAAAAAAAAAAA8L8"
1183  				],
1184  				[
1185  					59,
1186  					1,
1187  					"insert",
1188  					{
1189  						"characters": "solid_object"
1190  					},
1191  					"GgAAAK0CAAAAAAAArgIAAAAAAAAAAAAArgIAAAAAAACuAgAAAAAAAA4AAABoZWxwZXJfb2JqZWN0c5sCAAAAAAAAnAIAAAAAAAAAAAAAnAIAAAAAAACcAgAAAAAAAA4AAABoZWxwZXJfb2JqZWN0c6ECAAAAAAAAogIAAAAAAAAAAAAAnAIAAAAAAACdAgAAAAAAAAAAAACjAgAAAAAAAKQCAAAAAAAAAAAAAJ0CAAAAAAAAngIAAAAAAAAAAAAApQIAAAAAAACmAgAAAAAAAAAAAACeAgAAAAAAAJ8CAAAAAAAAAAAAAKcCAAAAAAAAqAIAAAAAAAAAAAAAnwIAAAAAAACgAgAAAAAAAAAAAACpAgAAAAAAAKoCAAAAAAAAAAAAAKACAAAAAAAAoQIAAAAAAAAAAAAAqwIAAAAAAACsAgAAAAAAAAAAAAChAgAAAAAAAKICAAAAAAAAAAAAAK0CAAAAAAAArgIAAAAAAAAAAAAAogIAAAAAAACjAgAAAAAAAAAAAACvAgAAAAAAALACAAAAAAAAAAAAAKMCAAAAAAAApAIAAAAAAAAAAAAAsQIAAAAAAACyAgAAAAAAAAAAAACkAgAAAAAAAKUCAAAAAAAAAAAAALMCAAAAAAAAtAIAAAAAAAAAAAAApQIAAAAAAACmAgAAAAAAAAAAAAC1AgAAAAAAALYCAAAAAAAAAAAAAKYCAAAAAAAApwIAAAAAAAAAAAAA",
1192  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAIAAACbAgAAAAAAAKkCAAAAAAAAAAAAAAAA8L+tAgAAAAAAALsCAAAAAAAAAAAAAAAA8L8"
1193  				],
1194  				[
1195  					60,
1196  					1,
1197  					"insert",
1198  					{
1199  						"characters": "s"
1200  					},
1201  					"AgAAALcCAAAAAAAAuAIAAAAAAAAAAAAApwIAAAAAAACoAgAAAAAAAAAAAAA",
1202  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAIAAACnAgAAAAAAAKcCAAAAAAAAAAAAAAAA8L+3AgAAAAAAALcCAAAAAAAAAAAAAAAA8L8"
1203  				],
1204  				[
1205  					104,
1206  					1,
1207  					"insert",
1208  					{
1209  						"characters": "#"
1210  					},
1211  					"AQAAAAddAAAAAAAACF0AAAAAAAAAAAAA",
1212  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAHXQAAAAAAAAddAAAAAAAAAAAAAAAATEA"
1213  				],
1214  				[
1215  					107,
1216  					1,
1217  					"insert",
1218  					{
1219  						"characters": "#"
1220  					},
1221  					"AQAAAEFdAAAAAAAAQl0AAAAAAAAAAAAA",
1222  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABBXQAAAAAAAEFdAAAAAAAAAAAAAAAA8L8"
1223  				],
1224  				[
1225  					169,
1226  					1,
1227  					"insert",
1228  					{
1229  						"characters": " fill"
1230  					},
1231  					"BQAAAOd2AAAAAAAA6HYAAAAAAAAAAAAA6HYAAAAAAADpdgAAAAAAAAAAAADpdgAAAAAAAOp2AAAAAAAAAAAAAOp2AAAAAAAA63YAAAAAAAAAAAAA63YAAAAAAADsdgAAAAAAAAAAAAA",
1232  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADndgAAAAAAAOd2AAAAAAAAAAAAAAAA8L8"
1233  				],
1234  				[
1235  					170,
1236  					1,
1237  					"insert",
1238  					{
1239  						"characters": "_opacity="
1240  					},
1241  					"CQAAAOx2AAAAAAAA7XYAAAAAAAAAAAAA7XYAAAAAAADudgAAAAAAAAAAAADudgAAAAAAAO92AAAAAAAAAAAAAO92AAAAAAAA8HYAAAAAAAAAAAAA8HYAAAAAAADxdgAAAAAAAAAAAADxdgAAAAAAAPJ2AAAAAAAAAAAAAPJ2AAAAAAAA83YAAAAAAAAAAAAA83YAAAAAAAD0dgAAAAAAAAAAAAD0dgAAAAAAAPV2AAAAAAAAAAAAAA",
1242  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADsdgAAAAAAAOx2AAAAAAAAAAAAAAAA8L8"
1243  				],
1244  				[
1245  					171,
1246  					1,
1247  					"insert",
1248  					{
1249  						"characters": "1,"
1250  					},
1251  					"AgAAAPV2AAAAAAAA9nYAAAAAAAAAAAAA9nYAAAAAAAD3dgAAAAAAAAAAAAA",
1252  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAD1dgAAAAAAAPV2AAAAAAAAAAAAAAAA8L8"
1253  				],
1254  				[
1255  					172,
1256  					1,
1257  					"insert",
1258  					{
1259  						"characters": " "
1260  					},
1261  					"AQAAAPd2AAAAAAAA+HYAAAAAAAAAAAAA",
1262  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAD3dgAAAAAAAPd2AAAAAAAAAAAAAAAA8L8"
1263  				],
1264  				[
1265  					173,
1266  					1,
1267  					"left_delete",
1268  					null,
1269  					"AQAAAPd2AAAAAAAA93YAAAAAAAABAAAAIA",
1270  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAD4dgAAAAAAAPh2AAAAAAAAAAAAAAAA8L8"
1271  				],
1272  				[
1273  					180,
1274  					1,
1275  					"insert",
1276  					{
1277  						"characters": "\n"
1278  					},
1279  					"AgAAAJh4AAAAAAAAmXgAAAAAAAAAAAAAmXgAAAAAAACheAAAAAAAAAAAAAA",
1280  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACYeAAAAAAAAJh4AAAAAAAA////////738"
1281  				],
1282  				[
1283  					181,
1284  					1,
1285  					"copilot_accept_completion",
1286  					null,
1287  					"AgAAAJl4AAAAAAAAmXgAAAAAAAAIAAAAICAgICAgICCZeAAAAAAAAMF4AAAAAAAAAAAAAA",
1288  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACheAAAAAAAAKF4AAAAAAAAAAAAAAAA8L8"
1289  				],
1290  				[
1291  					185,
1292  					2,
1293  					"anaconda_auto_format",
1294  					null,
1295  					"AQAAAAAAAAAAAAAAo5EAAAAAAACikQAAaW1wb3J0IGltcG9ydGxpYgppbXBvcnQgcHlkZWF0aW9uLm1hdGVyaWFscwppbXBvcnRsaWIucmVsb2FkKHB5ZGVhdGlvbi5tYXRlcmlhbHMpCmZyb20gcHlkZWF0aW9uLm1hdGVyaWFscyBpbXBvcnQgRmlsbE1hdGVyaWFsLCBTa2V0Y2hNYXRlcmlhbApmcm9tIHB5ZGVhdGlvbi50YWdzIGltcG9ydCBGaWxsVGFnLCBTa2V0Y2hUYWcsIFhQcmVzc29UYWcsIEFsaWduVG9TcGxpbmVUYWcKZnJvbSBweWRlYXRpb24uY29uc3RhbnRzIGltcG9ydCBXSElURSwgU0NBTEVfWCwgU0NBTEVfWSwgU0NBTEVfWgpmcm9tIHB5ZGVhdGlvbi5hbmltYXRpb24uYW5pbWF0aW9uIGltcG9ydCBWZWN0b3JBbmltYXRpb24sIFNjYWxhckFuaW1hdGlvbiwgQ29sb3JBbmltYXRpb24KZnJvbSBweWRlYXRpb24ueHByZXNzby51c2VyZGF0YSBpbXBvcnQgKgpmcm9tIHB5ZGVhdGlvbi54cHJlc3NvLnhwcmVzc2lvbnMgaW1wb3J0IFhSZWxhdGlvbiwgWElkZW50aXR5LCBYU3BsaW5lTGVuZ3RoLCBYQm91bmRpbmdCb3gsIFhBY3Rpb24sIE1vdmVtZW50CmltcG9ydCBweWRlYXRpb24ub2JqZWN0cy5lZmZlY3Rfb2JqZWN0cyBhcyBlZmZlY3Rfb2JqZWN0cwppbXBvcnQgcHlkZWF0aW9uLm9iamVjdHMuaGVscGVyX29iamVjdHMgYXMgaGVscGVyX29iamVjdHMKaW1wb3J0IHB5ZGVhdGlvbi5vYmplY3RzLnNvbGlkX29iamVjdHMgYXMgc29saWRfb2JqZWN0cwpmcm9tIGFiYyBpbXBvcnQgQUJDLCBhYnN0cmFjdG1ldGhvZAppbXBvcnQgYzRkLnV0aWxzCmltcG9ydCBjNGQKCgpjbGFzcyBQcm90b09iamVjdChBQkMpOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lPU5vbmUsIHg9MCwgeT0wLCB6PTAsIGg9MCwgcD0wLCBiPTAsIHNjYWxlPTEsIHBvc2l0aW9uPU5vbmUsIHJvdGF0aW9uPU5vbmUsIHBsYW5lPSJ4eSIpOgogICAgICAgIHNlbGYuZG9jdW1lbnQgPSBjNGQuZG9jdW1lbnRzLkdldEFjdGl2ZURvY3VtZW50KCkgICMgZ2V0IGRvY3VtZW50CiAgICAgICAgc2VsZi5zcGVjaWZ5X29iamVjdCgpCiAgICAgICAgc2VsZi5zZXRfeHByZXNzb190YWdzKCkKICAgICAgICBzZWxmLnNldF91bmlxdWVfZGVzY19pZHMoKQogICAgICAgIHNlbGYuaW5zZXJ0X3RvX2RvY3VtZW50KCkKICAgICAgICBzZWxmLnNldF9uYW1lKG5hbWU9bmFtZSkKICAgICAgICBzZWxmLnNldF9wb3NpdGlvbih4PXgsIHk9eSwgej16LCBwb3NpdGlvbj1wb3NpdGlvbikKICAgICAgICBzZWxmLnNldF9yb3RhdGlvbihoPWgsIHA9cCwgYj1iLCByb3RhdGlvbj1yb3RhdGlvbikKICAgICAgICBzZWxmLnNldF9zY2FsZShzY2FsZT1zY2FsZSkKICAgICAgICBzZWxmLnNldF9vYmplY3RfcHJvcGVydGllcygpCiAgICAgICAgc2VsZi5wbGFuZSA9IHBsYW5lCiAgICAgICAgc2VsZi5zZXRfcGxhbmUoKQogICAgICAgIHNlbGYucmVsYXRpb25zID0gW10KICAgICAgICBzZWxmLmFjdGlvbnMgPSBbXQogICAgICAgIHNlbGYueHByZXNzaW9ucyA9IHt9ICAjIGtlZXBzIHRyYWNrIG9mIGFuaW1hdG9ycywgY29tcG9zZXJzIGV0Yy4KICAgICAgICBzZWxmLmFjY2Vzc2VkX3BhcmFtZXRlcnMgPSB7fSAgIyBrZWVwcyB0cmFjayB3aGljaCBwYXJhbWV0ZXJzIGhhdmUgQWNjZXNzQ29udHJvbAogICAgICAgIHNlbGYuaGVscGVyX29iamVjdHMgPSB7fSAgIyBrZWVwcyB0cmFjayBvZiBoZWxwZXIgb2JqZWN0cyBjcmVhdGVkIGJ5IEFuaW1hdG9ycwogICAgICAgIHNlbGYucGFyZW50ID0gTm9uZQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAiIiJzZXRzIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gZm9yIHByaW50aW5nIiIiCiAgICAgICAgcmV0dXJuIHNlbGYubmFtZQoKICAgIEBhYnN0cmFjdG1ldGhvZAogICAgZGVmIHNwZWNpZnlfb2JqZWN0KHNlbGYpOgogICAgICAgIHBhc3MKCiAgICBkZWYgc2V0X3hwcmVzc29fdGFncyhzZWxmKToKICAgICAgICAiIiJpbml0aWFsaXplcyB0aGUgbmVjZXNzYXJ5IHhwcmVzc28gdGFncyBvbiB0aGUgb2JqZWN0IiIiCiAgICAgICAgIyB0aGUgY29tcG9zaXRpb24gdGFncyBob2xkIHRoZSBoaWVyYXJjaHkgb2YgY29tcG9zaXRpb25zIGFuZCBlbnN1cmUgZXhlY3V0aW9uIGZyb20gaGlnaGVzdCB0byBsb3dlc3QKICAgICAgICAjc2VsZi5jb21wb3NpdGlvbl90YWdzID0gW10KICAgICAgICAjIHRoZSBhbmltYXRvciB0YWcgaG9sZHMgdGhlIGFjdGluZyBvZiB0aGUgYW5pbWF0b3JzIG9uIHRoZSBhY3R1YWwgcGFyYW1ldGVycwogICAgICAgICMgc2V0IHByaW9yaXR5IHRvIGJlIGV4ZWN1dGVkIGxhc3QKICAgICAgICAjIHNlbGYuYW5pbWF0b3JfdGFnID0gWFByZXNzb1RhZygKICAgICAgICAjICAgIHRhcmdldD1zZWxmLCBuYW1lPSJBbmltYXRvclRhZyIsIHByaW9yaXR5PTEsIHByaW9yaXR5X21vZGU9ImV4cHJlc3Npb24iKQogICAgICAgICMgdGhlIGZyZWV6ZSB0YWcgaG9sZHMgdGhlIGZyZWV6aW5nIHhwcmVzc2lvbnMgdGhhdCBhcmUgZXhlY3V0ZWQgYmVmb3JlIHRoZSBhbmltYXRvcnMKICAgICAgICAjIHNldCBwcmlvcml0eSB0byBiZSBleGVjdXRlZCBhZnRlciBjb21wb3NpdGlvbnMgYW5kIGJlZm9yZSBhbmltYXRvcnMKICAgICAgICAjIHNlbGYuZnJlZXplX3RhZyA9IFhQcmVzc29UYWcoCiAgICAgICAgIyAgICB0YXJnZXQ9c2VsZiwgbmFtZT0iRnJlZXplVGFnIiwgcHJpb3JpdHk9MCwgcHJpb3JpdHlfbW9kZT0iYW5pbWF0aW9uIikKICAgICAgICAjIGluc2VydHMgYW4geHByZXNzbyB0YWcgdXNlZCBmb3IgY3VzdG9tIHhwcmVzc2lvbnMKICAgICAgICBzZWxmLmN1c3RvbV90YWcgPSBYUHJlc3NvVGFnKAogICAgICAgICAgICB0YXJnZXQ9c2VsZiwgbmFtZT0iQ3VzdG9tVGFnIiwgcHJpb3JpdHlfbW9kZT0iZXhwcmVzc2lvbiIpCgogICAgZGVmIGFkZF9jb21wb3NpdGlvbl90YWcoc2VsZik6CiAgICAgICAgIiIiYWRkcyBhbm90aGVyIGxheWVyIHRvIHRoZSBjb21wb3NpdGlvbiBoaWVyYXJjaHkiIiIKICAgICAgICAjIHNldCBwcmlvcml0eSBhY2NvcmRpbmcgdG8gcG9zaXRpb24gaW4gY29tcG9zaXRpb24gaGllcmFyY2h5CiAgICAgICAgdGFnX25hbWUgPSAiQ29tcG9zaXRpb25UYWciICsgc3RyKGxlbihzZWxmLmNvbXBvc2l0aW9uX3RhZ3MpKQogICAgICAgIHRhZ19wcmlvcml0eSA9IC1sZW4oc2VsZi5jb21wb3NpdGlvbl90YWdzKQogICAgICAgIGNvbXBvc2l0aW9uX3RhZyA9IFhQcmVzc29UYWcoCiAgICAgICAgICAgIHRhcmdldD1zZWxmLCBuYW1lPXRhZ19uYW1lLCBwcmlvcml0eT10YWdfcHJpb3JpdHksIHByaW9yaXR5X21vZGU9ImluaXRpYWwiKQogICAgICAgIHNlbGYuY29tcG9zaXRpb25fdGFncy5hcHBlbmQoY29tcG9zaXRpb25fdGFnKQogICAgICAgIHJldHVybiBjb21wb3NpdGlvbl90YWcub2JqCgogICAgZGVmIHNldF91bmlxdWVfZGVzY19pZHMoc2VsZik6CiAgICAgICAgIiIib3B0aW9uYWwgbWV0aG9kIHRvIG1ha2UgdW5pcXVlIGRlc2NJZHMgZWFzaWx5IGFjY2Vzc2libGUiIiIKICAgICAgICBwYXNzCgogICAgZGVmIHNldF9uYW1lKHNlbGYsIG5hbWU9Tm9uZSk6CiAgICAgICAgaWYgbmFtZSBpcyBOb25lOgogICAgICAgICAgICBzZWxmLm5hbWUgPSBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKICAgICAgICBzZWxmLm9iai5TZXROYW1lKHNlbGYubmFtZSkKCiAgICBkZWYgc2V0X3BsYW5lKHNlbGYpOgogICAgICAgICIiInNldHMgdGhlIHBsYW5lIG9mIHRoZSBjdXN0b20gb2JqZWN0IiIiCiAgICAgICAgaWYgc2VsZi5wbGFuZSA9PSAieHkiOgogICAgICAgICAgICBzZWxmLnJvdGF0ZShyb3RhdGlvbj0oMCwgMCwgMCkpCiAgICAgICAgZWxpZiBzZWxmLnBsYW5lID09ICJ5eiI6CiAgICAgICAgICAgIHNlbGYucm90YXRlKHJvdGF0aW9uPShQSSAvIDIsIDAsIDApKQogICAgICAgIGVsaWYgc2VsZi5wbGFuZSA9PSAieHoiOgogICAgICAgICAgICBzZWxmLnJvdGF0ZShyb3RhdGlvbj0oMCwgLVBJIC8gMiwgMCkpCgogICAgZGVmIHNwZWNpZnlfcGFyYW1ldGVycyhzZWxmKToKICAgICAgICAiIiJzcGVjaWZpZXMgb3B0aW9uYWwgcGFyYW1ldGVycyBmb3IgdGhlIGN1c3RvbSBvYmplY3QiIiIKICAgICAgICBwYXNzCgogICAgZGVmIGluc2VydF9wYXJhbWV0ZXJzKHNlbGYpOgogICAgICAgICIiImluc2VydHMgdGhlIHNwZWNpZmllZCBwYXJhbWV0ZXJzIGFzIHVzZXJkYXRhIiIiCiAgICAgICAgaWYgc2VsZi5wYXJhbWV0ZXJzOgogICAgICAgICAgICBzZWxmLnBhcmFtZXRlcnNfdV9ncm91cCA9IFVHcm91cCgKICAgICAgICAgICAgICAgICpzZWxmLnBhcmFtZXRlcnMsIHRhcmdldD1zZWxmLm9iaiwgbmFtZT1zZWxmLm5hbWUgKyAiUGFyYW1ldGVycyIpCgogICAgZGVmIHNwZWNpZnlfcmVsYXRpb25zKHNlbGYpOgogICAgICAgICIiInNwZWNpZmllcyB0aGUgcmVsYXRpb25zIGJldHdlZW4gdGhlIHBhcnQncyBwYXJhbWV0ZXJzIHVzaW5nIHhwcmVzc28iIiIKICAgICAgICBwYXNzCgogICAgZGVmIHNldF9wb3NpdGlvbihzZWxmLCB4PTAsIHk9MCwgej0wLCBwb3NpdGlvbj1Ob25lLCByZWxhdGl2ZT1GYWxzZSk6CiAgICAgICAgaWYgcG9zaXRpb24gaXMgTm9uZToKICAgICAgICAgICAgcG9zaXRpb24gPSBjNGQuVmVjdG9yKHgsIHksIHopCiAgICAgICAgZWxpZiB0eXBlKHBvc2l0aW9uKSBpcyBub3QgYzRkLlZlY3RvcjoKICAgICAgICAgICAgcG9zaXRpb24gPSBjNGQuVmVjdG9yKCpwb3NpdGlvbikKICAgICAgICBpZiByZWxhdGl2ZToKICAgICAgICAgICAgc2VsZi5vYmpbYzRkLklEX0JBU0VPQkpFQ1RfUE9TSVRJT05dICs9IHBvc2l0aW9uCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5vYmpbYzRkLklEX0JBU0VPQkpFQ1RfUE9TSVRJT05dID0gcG9zaXRpb24KCiAgICBkZWYgc2V0X3JvdGF0aW9uKHNlbGYsIGg9MCwgcD0wLCBiPTAsIHJvdGF0aW9uPU5vbmUsIHJlbGF0aXZlPUZhbHNlKToKICAgICAgICBpZiByb3RhdGlvbiBpcyBOb25lOgogICAgICAgICAgICByb3RhdGlvbiA9IGM0ZC5WZWN0b3IoaCwgcCwgYikKICAgICAgICBlbGlmIHR5cGUocm90YXRpb24pIGlzIG5vdCBjNGQuVmVjdG9yOgogICAgICAgICAgICByb3RhdGlvbiA9IGM0ZC5WZWN0b3IoKnJvdGF0aW9uKQogICAgICAgIGlmIHJlbGF0aXZlOgogICAgICAgICAgICBzZWxmLm9ialtjNGQuSURfQkFTRU9CSkVDVF9ST1RBVElPTl0gKz0gcm90YXRpb24KICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLm9ialtjNGQuSURfQkFTRU9CSkVDVF9ST1RBVElPTl0gPSByb3RhdGlvbgoKICAgIGRlZiBzZXRfZnJvemVuX3JvdGF0aW9uKHNlbGYsIGg9MCwgcD0wLCBiPTAsIHJvdGF0aW9uPU5vbmUsIHJlbGF0aXZlPUZhbHNlKToKICAgICAgICBpZiByb3RhdGlvbiBpcyBOb25lOgogICAgICAgICAgICByb3RhdGlvbiA9IGM0ZC5WZWN0b3IoaCwgcCwgYikKICAgICAgICBpZiByZWxhdGl2ZToKICAgICAgICAgICAgc2VsZi5vYmpbYzRkLklEX0JBU0VPQkpFQ1RfRlJPWkVOX1JPVEFUSU9OXSArPSByb3RhdGlvbgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYub2JqW2M0ZC5JRF9CQVNFT0JKRUNUX0ZST1pFTl9ST1RBVElPTl0gPSByb3RhdGlvbgoKICAgIGRlZiBzZXRfc2NhbGUoc2VsZiwgc2NhbGU9MSwgcmVsYXRpdmU9RmFsc2UpOgogICAgICAgIGlmIHJlbGF0aXZlOgogICAgICAgICAgICBzZWxmLm9ialtjNGQuSURfQkFTRU9CSkVDVF9TQ0FMRV0gKj0gc2NhbGUKICAgICAgICBlbHNlOgogICAgICAgICAgICBzY2FsZSA9IGM0ZC5WZWN0b3Ioc2NhbGUsIHNjYWxlLCBzY2FsZSkKICAgICAgICAgICAgc2VsZi5vYmpbYzRkLklEX0JBU0VPQkpFQ1RfU0NBTEVdID0gc2NhbGUKCiAgICBkZWYgbW92ZShzZWxmLCB4PTAsIHk9MCwgej0wLCBwb3NpdGlvbj1Ob25lLCByZWxhdGl2ZT1UcnVlKToKICAgICAgICBpZiBwb3NpdGlvbiBpcyBOb25lOgogICAgICAgICAgICBwb3NpdGlvbiA9IGM0ZC5WZWN0b3IoeCwgeSwgeikKICAgICAgICBlbGlmIHR5cGUocG9zaXRpb24pIGlzIG5vdCBjNGQuVmVjdG9yOgogICAgICAgICAgICBwb3NpdGlvbiA9IGM0ZC5WZWN0b3IoKnBvc2l0aW9uKQogICAgICAgIGRlc2NyaXB0b3IgPSBjNGQuSURfQkFTRU9CSkVDVF9QT1NJVElPTgogICAgICAgIGFuaW1hdGlvbiA9IFZlY3RvckFuaW1hdGlvbigKICAgICAgICAgICAgdGFyZ2V0PXNlbGYsIGRlc2NyaXB0b3I9ZGVzY3JpcHRvciwgdmVjdG9yPXBvc2l0aW9uLCByZWxhdGl2ZT1yZWxhdGl2ZSkKICAgICAgICBpZiByZWxhdGl2ZToKICAgICAgICAgICAgc2VsZi5vYmpbZGVzY3JpcHRvcl0gKz0gcG9zaXRpb24KICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLm9ialtkZXNjcmlwdG9yXSA9IHBvc2l0aW9uCiAgICAgICAgcmV0dXJuIGFuaW1hdGlvbgoKICAgIGRlZiByb3RhdGUoc2VsZiwgaD0wLCBwPTAsIGI9MCwgcm90YXRpb249Tm9uZSk6CiAgICAgICAgaWYgcm90YXRpb24gaXMgTm9uZToKICAgICAgICAgICAgcm90YXRpb24gPSBjNGQuVmVjdG9yKGgsIHAsIGIpCiAgICAgICAgZWxpZiB0eXBlKHJvdGF0aW9uKSBpcyBub3QgYzRkLlZlY3RvcjoKICAgICAgICAgICAgcm90YXRpb24gPSBjNGQuVmVjdG9yKCpyb3RhdGlvbikKICAgICAgICBkZXNjcmlwdG9yID0gYzRkLklEX0JBU0VPQkpFQ1RfUk9UQVRJT04KICAgICAgICBhbmltYXRpb24gPSBWZWN0b3JBbmltYXRpb24oCiAgICAgICAgICAgIHRhcmdldD1zZWxmLCBkZXNjcmlwdG9yPWRlc2NyaXB0b3IsIHZlY3Rvcj1yb3RhdGlvbiwgcmVsYXRpdmU9VHJ1ZSkKICAgICAgICBzZWxmLm9ialtkZXNjcmlwdG9yXSArPSByb3RhdGlvbgogICAgICAgIHJldHVybiBhbmltYXRpb24KCiAgICBkZWYgc2NhbGUoc2VsZiwgeD0wLCB5PTAsIHo9MCwgc2NhbGU9Tm9uZSk6CiAgICAgICAgaWYgc2NhbGUgaXMgTm9uZToKICAgICAgICAgICAgc2NhbGUgPSBjNGQuVmVjdG9yKHgsIHksIHopCiAgICAgICAgZWxpZiB0eXBlKHNjYWxlKSBpbiAodHVwbGUsIGxpc3QpOgogICAgICAgICAgICBzY2FsZSA9IGM0ZC5WZWN0b3IoKnNjYWxlKQogICAgICAgIGVsaWYgdHlwZShzY2FsZSkgaW4gKGludCwgZmxvYXQpOgogICAgICAgICAgICBzY2FsZSA9IGM0ZC5WZWN0b3Ioc2NhbGUsIHNjYWxlLCBzY2FsZSkKICAgICAgICBkZXNjcmlwdG9yID0gYzRkLklEX0JBU0VPQkpFQ1RfU0NBTEUKICAgICAgICBhbmltYXRpb24gPSBWZWN0b3JBbmltYXRpb24oCiAgICAgICAgICAgIHRhcmdldD1zZWxmLCBkZXNjcmlwdG9yPWRlc2NyaXB0b3IsIHZlY3Rvcj1zY2FsZSwgcmVsYXRpdmU9VHJ1ZSwgbXVsdGlwbGljYXRpdmU9VHJ1ZSkKICAgICAgICBzZWxmLm9ialtkZXNjcmlwdG9yXSArPSBzY2FsZQogICAgICAgIHJldHVybiBhbmltYXRpb24KCiAgICBkZWYgaW5zZXJ0X3RvX2RvY3VtZW50KHNlbGYpOgogICAgICAgIHNlbGYuZG9jdW1lbnQuSW5zZXJ0T2JqZWN0KHNlbGYub2JqKQoKICAgIGRlZiBnZXRfc2VnbWVudF9jb3VudChzZWxmKToKICAgICAgICAjIHJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgc3BsaW5lIG9yIGEgc3BlY2lmaWMgc2VnbWVudAogICAgICAgIHNwbGluZV9oZWxwID0gYzRkLnV0aWxzLlNwbGluZUhlbHAoKQogICAgICAgIHNwbGluZV9oZWxwLkluaXRTcGxpbmVXaXRoKHNlbGYub2JqKQogICAgICAgIHNlZ21lbnRfY291bnQgPSBzcGxpbmVfaGVscC5HZXRTZWdtZW50Q291bnQoKQogICAgICAgIHJldHVybiBzZWdtZW50X2NvdW50CgogICAgZGVmIGdldF9sZW5ndGgoc2VsZiwgc2VnbWVudD1Ob25lKToKICAgICAgICAjIHJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgc3BsaW5lIG9yIGEgc3BlY2lmaWMgc2VnbWVudAogICAgICAgIHNwbGluZV9oZWxwID0gYzRkLnV0aWxzLlNwbGluZUhlbHAoKQogICAgICAgIHNwbGluZV9oZWxwLkluaXRTcGxpbmVXaXRoKHNlbGYub2JqKQoKICAgICAgICBpZiBzZWdtZW50OgogICAgICAgICAgICBzZWdtZW50X2xlbmd0aCA9IHNwbGluZV9oZWxwLkdldFNlZ21lbnRMZW5ndGgoc2VnbWVudCkKICAgICAgICAgICAgcmV0dXJuIHNlZ21lbnRfbGVuZ3RoCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc3BsaW5lX2xlbmd0aCA9IHNwbGluZV9oZWxwLkdldFNwbGluZUxlbmd0aCgpCiAgICAgICAgICAgIHJldHVybiBzcGxpbmVfbGVuZ3RoCgogICAgZGVmIGdldF9zcGxpbmVfc2VnbWVudF9sZW5ndGhzKHNlbGYpOgogICAgICAgICMgZ2V0IHRoZSBsZW5ndGggb2YgZWFjaCBzZWdtZW50CiAgICAgICAgc2VnbWVudF9sZW5ndGhzID0gW10KICAgICAgICBmb3IgaSBpbiByYW5nZShzZWxmLmdldF9zZWdtZW50X2NvdW50KCkpOgogICAgICAgICAgICBzZWdtZW50X2xlbmd0aHMuYXBwZW5kKHNlbGYuZ2V0X2xlbmd0aChzZWdtZW50PWkpKQogICAgICAgIHJldHVybiBzZWdtZW50X2xlbmd0aHMKCiAgICBkZWYgc2V0X29iamVjdF9wcm9wZXJ0aWVzKHNlbGYpOgogICAgICAgICIiInVzZWQgdG8gc2V0IHRoZSB1bmlxdWUgcHJvcGVydGllcyBvZiBhIHNwZWNpZmljIG9iamVjdCIiIgogICAgICAgIHBhc3MKCiAgICBkZWYgc29ydF9yZWxhdGlvbnNfYnlfcHJpb3JpdHkoc2VsZik6CiAgICAgICAgIiIic29ydHMgdGhlIHJlbGF0aW9ucyBieSBwcmlvcml0eSIiIgoKICAgICAgICAjIHJpZ2h0IG5vdyBpdCBvbHkgZW5zdXJlcyB0aGF0IHRoZSBhY3Rpb25zIGFyZSBpbnNlcnRlZCBhYm92ZSB0aGUgcmVsYXRpb25zCiAgICAgICAgIyBpbiB0aGUgZnV0dXJlIHdlIHdpbGwgaW1wbGVtZW50IHByaW9yaXR5IGFuZCBzb3J0aW5nIGJ5IHN1Yi14cHJlc3Npb24gZGVwZW5kZW5jaWVzCgogICAgICAgICMgZ2V0IG5vZGUgbWFzdGVyCiAgICAgICAgbWFzdGVyID0gc2VsZi5jdXN0b21fdGFnLm9iai5HZXROb2RlTWFzdGVyKCkKICAgICAgICBwYXJlbnQgPSBtYXN0ZXIuR2V0Um9vdCgpCgogICAgICAgICIiIgogICAgICAgICMgcmVzb3J0IGJ5IHBhcmVudCByZWZlcmVuY2UKICAgICAgICBmb3IgcmVsYXRpb24gaW4gc2VsZi5yZWxhdGlvbnM6CiAgICAgICAgICAgIGlmIHJlbGF0aW9uLnBhcmVudDoKICAgICAgICAgICAgICAgIHNlbGYucmVsYXRpb25zLnJlbW92ZShyZWxhdGlvbikKICAgICAgICAgICAgICAgIHBhcmVudF9pZHggPSBzZWxmLnJlbGF0aW9ucy5pbmRleChyZWxhdGlvbi5wYXJlbnQpCiAgICAgICAgICAgICAgICBzZWxmLnJlbGF0aW9ucy5pbnNlcnQocGFyZW50X2lkeCwgcmVsYXRpb24pCiAgICAgICAgZm9yIGFjdGlvbiBpbiBzZWxmLmFjdGlvbnM6CiAgICAgICAgICAgIGlmIGFjdGlvbi5wYXJlbnQ6CiAgICAgICAgICAgICAgICBzZWxmLmFjdGlvbnMucmVtb3ZlKGFjdGlvbikKICAgICAgICAgICAgICAgIHBhcmVudF9pZHggPSBzZWxmLmFjdGlvbnMuaW5kZXgoYWN0aW9uLnBhcmVudCkKICAgICAgICAgICAgICAgIHNlbGYuYWN0aW9ucy5pbnNlcnQocGFyZW50X2lkeCwgYWN0aW9uKQogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYucmVsYXRpb25zOgogICAgICAgICAgICBmb3IgcmVsYXRpb24gaW4gc2VsZi5yZWxhdGlvbnM6CiAgICAgICAgICAgICAgICBtYXN0ZXIuSW5zZXJ0Rmlyc3QocGFyZW50LCByZWxhdGlvbi5vYmopCiAgICAgICAgaWYgc2VsZi5hY3Rpb25zOgogICAgICAgICAgICBmb3IgYWN0aW9uIGluIHNlbGYuYWN0aW9uczoKICAgICAgICAgICAgICAgIG1hc3Rlci5JbnNlcnRGaXJzdChwYXJlbnQsIGFjdGlvbi5vYmopCgoKY2xhc3MgVmlzaWJsZU9iamVjdChQcm90b09iamVjdCk6CiAgICAjIHZpc2libGUgb2JqZWN0cwoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2aXNpYmxlPVRydWUsIGNyZWF0aW9uPTAsICoqa3dhcmdzKToKICAgICAgICBzdXBlcigpLl9faW5pdF9fKCoqa3dhcmdzKQogICAgICAgIHNlbGYuY3JlYXRpb24gPSBjcmVhdGlvbgogICAgICAgIHNlbGYudmlzaWJsZSA9IHZpc2libGUKICAgICAgICBzZWxmLnNwZWNpZnlfdmlzaWJpbGl0eV9wYXJhbWV0ZXIoKQogICAgICAgIHNlbGYuaW5zZXJ0X3Zpc2liaWxpdHlfcGFyYW1ldGVyKCkKICAgICAgICBzZWxmLnNwZWNpZnlfdmlzaWJpbGl0eV9yZWxhdGlvbigpCiAgICAgICAgc2VsZi5zcGVjaWZ5X2xpdmVfYm91bmRpbmdfYm94X3BhcmFtZXRlcnMoKQogICAgICAgIHNlbGYuaW5zZXJ0X2xpdmVfYm91bmRpbmdfYm94X3BhcmFtZXRlcnMoKQogICAgICAgIHNlbGYuc3BlY2lmeV9saXZlX2JvdW5kaW5nX2JveF9yZWxhdGlvbigpCiAgICAgICAgc2VsZi5hZGRfYm91bmRpbmdfYm94X2luZm9ybWF0aW9uKCkKCiAgICBkZWYgc3BlY2lmeV9hY3Rpb25fcGFyYW1ldGVycyhzZWxmKToKICAgICAgICBwYXNzCgogICAgZGVmIHNwZWNpZnlfY3JlYXRpb25fcGFyYW1ldGVyKHNlbGYpOgogICAgICAgIHNlbGYuY3JlYXRpb25fcGFyYW1ldGVyID0gVUNvbXBsZXRpb24oCiAgICAgICAgICAgIG5hbWU9IkNyZWF0aW9uIiwgZGVmYXVsdF92YWx1ZT1zZWxmLmNyZWF0aW9uKQogICAgICAgIHNlbGYuYWN0aW9uX3BhcmFtZXRlcnMgKz0gW3NlbGYuY3JlYXRpb25fcGFyYW1ldGVyXQoKICAgIGRlZiBpbnNlcnRfYWN0aW9uX3BhcmFtZXRlcnMoc2VsZik6CiAgICAgICAgIiIiaW5zZXJ0cyB0aGUgc3BlY2lmaWVkIGFjdGlvbl9wYXJhbWV0ZXJzIGFzIHVzZXJkYXRhIiIiCiAgICAgICAgaWYgc2VsZi5hY3Rpb25fcGFyYW1ldGVyczoKICAgICAgICAgICAgc2VsZi5hY3Rpb25zX3VfZ3JvdXAgPSBVR3JvdXAoCiAgICAgICAgICAgICAgICAqc2VsZi5hY3Rpb25fcGFyYW1ldGVycywgdGFyZ2V0PXNlbGYub2JqLCBuYW1lPXNlbGYubmFtZSArICJBY3Rpb25zIikKCiAgICBkZWYgc3BlY2lmeV9hY3Rpb25zKHNlbGYpOgogICAgICAgICIiInNwZWNpZmllcyBhY3Rpb25zIHRoYXQgY29vcmRpbmF0ZSBwYXJhbWV0ZXJzIiIiCiAgICAgICAgcGFzcwoKICAgIGRlZiBzcGVjaWZ5X2NyZWF0aW9uKHNlbGYpOgogICAgICAgICIiInNwZWNpZmllcyB0aGUgY3JlYXRpb24gYWN0aW9uIiIiCiAgICAgICAgcGFzcwoKICAgIGRlZiBnZXRfY2xvbmUoc2VsZik6CiAgICAgICAgIiIiY2xvbmVzIGFuIG9iamVjdCBhbmQgaW5zZXJ0cyBpdCBpbnRvIHRoZSBzY2VuZSIiIgogICAgICAgIGNsb25lID0gc2VsZi5vYmouR2V0Q2xvbmUoKQogICAgICAgIHNlbGYuZG9jdW1lbnQuSW5zZXJ0T2JqZWN0KGNsb25lKQogICAgICAgIHJldHVybiBjbG9uZQoKICAgIGRlZiBnZXRfZWRpdGFibGUoc2VsZik6CiAgICAgICAgIiIicmV0dXJucyBhbiBlZGl0YWJsZSBjbG9uZSBvZiB0aGUgb2JqZWN0IiIiCiAgICAgICAgY2xvbmUgPSBzZWxmLmdldF9jbG9uZSgpCiAgICAgICAgZWRpdGFibGVfY2xvbmUgPSBjNGQudXRpbHMuU2VuZE1vZGVsaW5nQ29tbWFuZChjb21tYW5kPWM0ZC5NQ09NTUFORF9NQUtFRURJVEFCTEUsIGxpc3Q9WwogICAgICAgICAgICBjbG9uZV0sIG1vZGU9YzRkLk1PREVMSU5HQ09NTUFORE1PREVfQUxMLCBkb2M9c2VsZi5kb2N1bWVudClbMF0KICAgICAgICByZXR1cm4gZWRpdGFibGVfY2xvbmUKCiAgICBkZWYgYXR0YWNoX3RvKHNlbGYsIHRhcmdldCwgZGlyZWN0aW9uPSJmcm9udCIsIG9mZnNldD0wKToKICAgICAgICAiIiJwbGFjZXMgdGhlIG9iamVjdCBzdWNoIHRoYXQgdGhlIGJvdW5kaW5nIGJveGVzIHRvdWNoIGFsb25nIGEgZ2l2ZW4gZGlyZWN0aW9uIGFuZCBtYWtlcyBvYmplY3QgY2hpbGQgb2YgdGFyZ2V0IiIiCiAgICAgICAgYm91bmRpbmdfYm94ID0gc2VsZi5vYmouR2V0UmFkKCkKICAgICAgICBib3VuZGluZ19ib3hfcG9zaXRpb24gPSBzZWxmLm9iai5HZXRNcCgpCiAgICAgICAgYm91bmRpbmdfYm94X3RhcmdldCA9IHRhcmdldC5vYmouR2V0UmFkKCkKICAgICAgICBib3VuZGluZ19ib3hfcG9zaXRpb25fdGFyZ2V0ID0gdGFyZ2V0Lm9iai5HZXRNcCgpCiAgICAgICAgbmV3X3Bvc2l0aW9uID0gYm91bmRpbmdfYm94X3Bvc2l0aW9uX3RhcmdldCAtIGJvdW5kaW5nX2JveF9wb3NpdGlvbgogICAgICAgIGlmIGRpcmVjdGlvbiA9PSAidG9wIjoKICAgICAgICAgICAgbmV3X3Bvc2l0aW9uLnkgKz0gYm91bmRpbmdfYm94X3RhcmdldC55ICsgYm91bmRpbmdfYm94LnkgKyBvZmZzZXQKICAgICAgICBpZiBkaXJlY3Rpb24gPT0gImJvdHRvbSI6CiAgICAgICAgICAgIG5ld19wb3NpdGlvbi55IC09IGJvdW5kaW5nX2JveF90YXJnZXQueSArIGJvdW5kaW5nX2JveC55ICsgb2Zmc2V0CiAgICAgICAgaWYgZGlyZWN0aW9uID09ICJsZWZ0IjoKICAgICAgICAgICAgbmV3X3Bvc2l0aW9uLnggLT0gYm91bmRpbmdfYm94X3RhcmdldC54ICsgYm91bmRpbmdfYm94LnggKyBvZmZzZXQKICAgICAgICBpZiBkaXJlY3Rpb24gPT0gInJpZ2h0IjoKICAgICAgICAgICAgbmV3X3Bvc2l0aW9uLnggKz0gYm91bmRpbmdfYm94X3RhcmdldC54ICsgYm91bmRpbmdfYm94LnggKyBvZmZzZXQKICAgICAgICBpZiBkaXJlY3Rpb24gPT0gImZyb250IjoKICAgICAgICAgICAgbmV3X3Bvc2l0aW9uLnogLT0gYm91bmRpbmdfYm94X3RhcmdldC56ICsgYm91bmRpbmdfYm94LnogKyBvZmZzZXQKICAgICAgICBpZiBkaXJlY3Rpb24gPT0gImJhY2siOgogICAgICAgICAgICBuZXdfcG9zaXRpb24ueiArPSBib3VuZGluZ19ib3hfdGFyZ2V0LnogKyBib3VuZGluZ19ib3gueiArIG9mZnNldAogICAgICAgIGlmIGRpcmVjdGlvbiA9PSAiY2VudGVyIjoKICAgICAgICAgICAgbmV3X3Bvc2l0aW9uID0gYm91bmRpbmdfYm94X3Bvc2l0aW9uX3RhcmdldCAtIGJvdW5kaW5nX2JveF9wb3NpdGlvbgogICAgICAgIHNlbGYub2JqLkluc2VydFVuZGVyKHRhcmdldC5vYmopCiAgICAgICAgc2VsZi5zZXRfcG9zaXRpb24ocG9zaXRpb249bmV3X3Bvc2l0aW9uKQoKICAgIGRlZiBzcGVjaWZ5X3Zpc2liaWxpdHlfcGFyYW1ldGVyKHNlbGYpOgogICAgICAgICIiInNwZWNpZmllcyB2aXNpYmlsaXR5IHBhcmFtZXRlciIiIgogICAgICAgIHNlbGYudmlzaWJpbGl0eV9wYXJhbWV0ZXIgPSBVQ2hlY2tCb3goCiAgICAgICAgICAgIG5hbWU9IlZpc2liaWxpdHkiLCBkZWZhdWx0X3ZhbHVlPXNlbGYudmlzaWJsZSkKCiAgICBkZWYgaW5zZXJ0X3Zpc2liaWxpdHlfcGFyYW1ldGVyKHNlbGYpOgogICAgICAgICIiImluc2VydHMgdGhlIHZpc2liaWxpdHkgcGFyYW1ldGVyIGFzIHVzZXJkYXRhIiIiCiAgICAgICAgc2VsZi52aXNpYmlsaXR5X3VfZ3JvdXAgPSBVR3JvdXAoCiAgICAgICAgICAgIHNlbGYudmlzaWJpbGl0eV9wYXJhbWV0ZXIsIHRhcmdldD1zZWxmLm9iaiwgbmFtZT0iVmlzaWJpbGl0eSIpCgogICAgZGVmIHNwZWNpZnlfdmlzaWJpbGl0eV9yZWxhdGlvbihzZWxmKToKICAgICAgICAiIiJsaW5rIHBhcmFtZXRlciB0byB2aXNpYmlsaXR5IiIiCiAgICAgICAgdmlzaWJpbGl0eV9yZWxhdGlvbiA9IFhSZWxhdGlvbihwYXJ0PXNlbGYsIHdob2xlPXNlbGYsIGRlc2NfaWRzPVtjNGQuSURfQkFTRU9CSkVDVF9WSVNJQklMSVRZX0VESVRPUiwgYzRkLklEX0JBU0VPQkpFQ1RfVklTSUJJTElUWV9SRU5ERVJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycz1bc2VsZi52aXNpYmlsaXR5X3BhcmFtZXRlcl0sIGZvcm11bGE9ZiIxLXtzZWxmLnZpc2liaWxpdHlfcGFyYW1ldGVyLm5hbWV9IikKCiAgICBkZWYgc3BlY2lmeV9saXZlX2JvdW5kaW5nX2JveF9wYXJhbWV0ZXJzKHNlbGYpOgogICAgICAgICIiInNwZWNpZmllcyBib3VuZGluZyBib3ggcGFyYW1ldGVycyIiIgogICAgICAgIHNlbGYud2lkdGhfcGFyYW1ldGVyID0gVUxlbmd0aChuYW1lPSJXaWR0aCIpCiAgICAgICAgc2VsZi5oZWlnaHRfcGFyYW1ldGVyID0gVUxlbmd0aChuYW1lPSJIZWlnaHQiKQogICAgICAgIHNlbGYuZGVwdGhfcGFyYW1ldGVyID0gVUxlbmd0aChuYW1lPSJEZXB0aCIpCiAgICAgICAgc2VsZi5jZW50ZXJfcGFyYW1ldGVyID0gVVZlY3RvcihuYW1lPSJDZW50ZXIiKQogICAgICAgIHNlbGYuY2VudGVyX3hfcGFyYW1ldGVyID0gVUxlbmd0aChuYW1lPSJDZW50ZXJYIikKICAgICAgICBzZWxmLmNlbnRlcl95X3BhcmFtZXRlciA9IFVMZW5ndGgobmFtZT0iQ2VudGVyWSIpCiAgICAgICAgc2VsZi5jZW50ZXJfel9wYXJhbWV0ZXIgPSBVTGVuZ3RoKG5hbWU9IkNlbnRlcloiKQogICAgICAgIHNlbGYubGl2ZV9ib3VuZGluZ19ib3hfcGFyYW1ldGVycyA9IFtzZWxmLndpZHRoX3BhcmFtZXRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5oZWlnaHRfcGFyYW1ldGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRlcHRoX3BhcmFtZXRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jZW50ZXJfcGFyYW1ldGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNlbnRlcl94X3BhcmFtZXRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jZW50ZXJfeV9wYXJhbWV0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2VudGVyX3pfcGFyYW1ldGVyXQoKICAgIGRlZiBpbnNlcnRfbGl2ZV9ib3VuZGluZ19ib3hfcGFyYW1ldGVycyhzZWxmKToKICAgICAgICAiIiJpbnNlcnRzIHRoZSBib3VuZGluZyBib3ggcGFyYW1ldGVycyBhcyB1c2VyZGF0YSIiIgogICAgICAgIHNlbGYubGl2ZV9ib3VuZGluZ19ib3hfdV9ncm91cCA9IFVHcm91cCgKICAgICAgICAgICAgKnNlbGYubGl2ZV9ib3VuZGluZ19ib3hfcGFyYW1ldGVycywgdGFyZ2V0PXNlbGYub2JqLCBuYW1lPSJMaXZlQm91bmRpbmdCb3giKQoKICAgIGRlZiBzcGVjaWZ5X2xpdmVfYm91bmRpbmdfYm94X3JlbGF0aW9uKHNlbGYpOgogICAgICAgICIiImZlZWQgYm91bmRpbmcgYm94IGluZm9ybWF0aW9uIGludG8gcGFyYW1ldGVycyIiIgogICAgICAgIGxpdmVfYm91bmRpbmdfYm94X3JlbGF0aW9uID0gWEJvdW5kaW5nQm94KHNlbGYsIHRhcmdldD1zZWxmLCB3aWR0aF9wYXJhbWV0ZXI9c2VsZi53aWR0aF9wYXJhbWV0ZXIsIGhlaWdodF9wYXJhbWV0ZXI9c2VsZi5oZWlnaHRfcGFyYW1ldGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoX3BhcmFtZXRlcj1zZWxmLmRlcHRoX3BhcmFtZXRlciwgY2VudGVyX3BhcmFtZXRlcj1zZWxmLmNlbnRlcl9wYXJhbWV0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VudGVyX3hfcGFyYW1ldGVyPXNlbGYuY2VudGVyX3hfcGFyYW1ldGVyLCBjZW50ZXJfeV9wYXJhbWV0ZXI9c2VsZi5jZW50ZXJfeV9wYXJhbWV0ZXIsIGNlbnRlcl96X3BhcmFtZXRlcj1zZWxmLmNlbnRlcl96X3BhcmFtZXRlcikKCiAgICBkZWYgYWRkX2JvdW5kaW5nX2JveF9pbmZvcm1hdGlvbihzZWxmKToKICAgICAgICBib3VuZGluZ19ib3hfY2VudGVyLCBib3VuZGluZ19yYWRpdXMgPSBjNGQudXRpbHMuR2V0QkJveCgKICAgICAgICAgICAgc2VsZi5vYmosIHNlbGYub2JqLkdldE1nKCkpCiAgICAgICAgc2VsZi53aWR0aCA9IGJvdW5kaW5nX3JhZGl1cy54ICogMgogICAgICAgIHNlbGYuaGVpZ2h0ID0gYm91bmRpbmdfcmFkaXVzLnkgKiAyCiAgICAgICAgc2VsZi5kZXB0aCA9IGJvdW5kaW5nX3JhZGl1cy56ICogMgogICAgICAgIHNlbGYuY2VudGVyID0gYm91bmRpbmdfYm94X2NlbnRlcgoKICAgIGRlZiBnZXRfY2VudGVyKHNlbGYpOgogICAgICAgICMgcmV0dXJucyB0aGUgY2VudGVyIHBvc2l0aW9uIGZyb20gdGhlIGxpdmUgYm91bmRpbmcgYm94IGluZm9ybWF0aW9uCiAgICAgICAgY2VudGVyX3Bvc2l0aW9uID0gc2VsZi5vYmouR2V0TXAoKSAqIHNlbGYub2JqLkdldE1nKCkKICAgICAgICByZXR1cm4gY2VudGVyX3Bvc2l0aW9uCgogICAgZGVmIGdldF9yYWRpdXMoc2VsZik6CiAgICAgICAgIyByZXR1cm5zIHRoZSByYWRpdXMgZnJvbSB0aGUgbGl2ZSBib3VuZGluZyBib3ggaW5mb3JtYXRpb24KICAgICAgICBfXywgcmFkaXVzID0gYzRkLnV0aWxzLkdldEJCb3goc2VsZi5vYmosIHNlbGYub2JqLkdldE1nKCkpCiAgICAgICAgcmV0dXJuIHJhZGl1cwoKICAgIGRlZiBnZXRfZGlhbWV0ZXIoc2VsZik6CiAgICAgICAgIyByZXR1cm5zIHRoZSBkaWFtZXRlciBmcm9tIHRoZSBsb25nZXN0IHJhZGl1cyBkaW1lbnNpb24KICAgICAgICByYWRpdXMgPSBzZWxmLmdldF9yYWRpdXMoKQogICAgICAgIGRpYW1ldGVyID0gbWF4KHJhZGl1cy54LCByYWRpdXMueSwgcmFkaXVzLnopICogMgogICAgICAgIHJldHVybiBkaWFtZXRlcgoKICAgIGRlZiByZWdpc3Rlcl9jb25uZWN0aW9ucyhzZWxmLCBjb25uZWN0aW9ucyk6CiAgICAgICAgIyBzYXZlcyB0aGUgY29ubmVjdGlvbnMgZm9yIGxhdGVyIGZ1bmN0aW9uYWxpdHkgb2YgVW5Db25uZWN0CiAgICAgICAgc2VsZi5jb25uZWN0aW9ucyA9IGNvbm5lY3Rpb25zCgogICAgZGVmIGNyZWF0ZShzZWxmLCBjb21wbGV0aW9uPTEpOgogICAgICAgICIiInNwZWNpZmllcyB0aGUgY3JlYXRpb24gYW5pbWF0aW9uIiIiCiAgICAgICAgZGVzY19pZCA9IHNlbGYuY3JlYXRpb25fcGFyYW1ldGVyLmRlc2NfaWQKICAgICAgICBhbmltYXRpb24gPSBTY2FsYXJBbmltYXRpb24oCiAgICAgICAgICAgIHRhcmdldD1zZWxmLCBkZXNjcmlwdG9yPWRlc2NfaWQsIHZhbHVlX2Zpbj1jb21wbGV0aW9uKQogICAgICAgIHNlbGYub2JqW2Rlc2NfaWRdID0gY29tcGxldGlvbgogICAgICAgIHJldHVybiBhbmltYXRpb24KCiAgICBkZWYgdW5fY3JlYXRlKHNlbGYsIGNvbXBsZXRpb249MCk6CiAgICAgICAgIiIic3BlY2lmaWVzIHRoZSB1bmNyZWF0aW9uIGFuaW1hdGlvbiIiIgogICAgICAgIGRlc2NfaWQgPSBzZWxmLmNyZWF0aW9uX3BhcmFtZXRlci5kZXNjX2lkCiAgICAgICAgYW5pbWF0aW9uID0gU2NhbGFyQW5pbWF0aW9uKAogICAgICAgICAgICB0YXJnZXQ9c2VsZiwgZGVzY3JpcHRvcj1kZXNjX2lkLCB2YWx1ZV9maW49Y29tcGxldGlvbikKICAgICAgICBzZWxmLm9ialtkZXNjX2lkXSA9IGNvbXBsZXRpb24KICAgICAgICByZXR1cm4gYW5pbWF0aW9uCgogICAgZGVmIGFsaWduX3RvX3NwbGluZShzZWxmLCBzcGxpbmU9Tm9uZSk6CiAgICAgICAgc2VsZi5hbGlnbl90b19zcGxpbmVfdGFnID0gQWxpZ25Ub1NwbGluZVRhZyh0YXJnZXQ9c2VsZiwgc3BsaW5lPXNwbGluZSkKCiAgICBkZWYgd3JhcF9hcm91bmQoc2VsZiwgdGFyZ2V0PU5vbmUpOgogICAgICAgIHNlbGYuc2hyaW5rX3dyYXAgPSBoZWxwZXJfb2JqZWN0cy5TaHJpbmtXcmFwKHRhcmdldD10YXJnZXQpCiAgICAgICAgc2VsZi5zaHJpbmtfd3JhcC5vYmouSW5zZXJ0VW5kZXIoc2VsZi5vYmopCgogICAgZGVmIG1vdmVfYXhpcyhzZWxmLCBwb3NpdGlvbj0oMCwgMCwgMCkpOgogICAgICAgICIiIm1vdmVzIHRoZSBheGlzIHdpdGhvdXQgbW92aW5nIHRoZSBnZW9tZXRyeSIiIgogICAgICAgIHZlYyA9IGM0ZC5WZWN0b3IoKnBvc2l0aW9uKQogICAgICAgIHByaW50KHZlYykKICAgICAgICBwcmludChwb3NpdGlvbikKICAgICAgICBwb2ludHMgPSBzZWxmLm9iai5HZXRBbGxQb2ludHMoKQogICAgICAgIGZvciBpLCBwb2ludCBpbiBlbnVtZXJhdGUocG9pbnRzKToKICAgICAgICAgICAgcG9pbnRzW2ldID0gcG9pbnQgLSB2ZWMKICAgICAgICAgICAgaWYgaSA8IDM6CiAgICAgICAgICAgICAgICBwcmludChwb2ludHNbaV0gLSBwb2ludCkKICAgICAgICBzZWxmLm9iai5TZXRBYnNQb3Moc2VsZi5vYmouR2V0QWJzUG9zKCkgKyB2ZWMpCiAgICAgICAgc2VsZi5vYmouU2V0QWxsUG9pbnRzKHBvaW50cykKICAgICAgICBzZWxmLm9iai5NZXNzYWdlKGM0ZC5NU0dfVVBEQVRFKQogICAgICAgIGM0ZC5FdmVudEFkZCgpCgoKY2xhc3MgQ3VzdG9tT2JqZWN0KFZpc2libGVPYmplY3QpOgogICAgIiIidGhpcyBjbGFzcyBpcyB1c2VkIHRvIGNyZWF0ZSBjdXN0b20gb2JqZWN0cyB0aGF0IGFyZSBiYXNpY2FsbHkKICAgIGdyb3VwcyB3aXRoIGNvdXBsaW5nIG9mIHRoZSBjaGlsZHJlbnMgcGFyYW1ldGVycyB0aHJvdWdoIHhwcmVzc28iIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgZGlhbWV0ZXI9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgIHN1cGVyKCkuX19pbml0X18oKiprd2FyZ3MpCiAgICAgICAgc2VsZi5wYXJ0cyA9IFtdCiAgICAgICAgc2VsZi5zcGVjaWZ5X3BhcnRzKCkKICAgICAgICBzZWxmLmluc2VydF9wYXJ0cygpCiAgICAgICAgc2VsZi5wYXJhbWV0ZXJzID0gW10KICAgICAgICBzZWxmLnNwZWNpZnlfcGFyYW1ldGVycygpCiAgICAgICAgc2VsZi5pbnNlcnRfcGFyYW1ldGVycygpCiAgICAgICAgc2VsZi5zcGVjaWZ5X3JlbGF0aW9ucygpCiAgICAgICAgc2VsZi5hY3Rpb25fcGFyYW1ldGVycyA9IFtdCiAgICAgICAgc2VsZi5zcGVjaWZ5X2FjdGlvbl9wYXJhbWV0ZXJzKCkKICAgICAgICBzZWxmLnNwZWNpZnlfY3JlYXRpb25fcGFyYW1ldGVyKCkKICAgICAgICBzZWxmLmluc2VydF9hY3Rpb25fcGFyYW1ldGVycygpCiAgICAgICAgc2VsZi5zcGVjaWZ5X2FjdGlvbnMoKQogICAgICAgIHNlbGYuc3BlY2lmeV9jcmVhdGlvbigpCiAgICAgICAgc2VsZi5kaWFtZXRlciA9IGRpYW1ldGVyCiAgICAgICAgc2VsZi5hZGRfYm91bmRpbmdfYm94X2luZm9ybWF0aW9uKCkKICAgICAgICBzZWxmLnNwZWNpZnlfYm91bmRpbmdfYm94X3BhcmFtZXRlcnMoKQogICAgICAgIHNlbGYuaW5zZXJ0X2JvdW5kaW5nX2JveF9wYXJhbWV0ZXJzKCkKICAgICAgICBzZWxmLnNwZWNpZnlfYm91bmRpbmdfYm94X3JlbGF0aW9ucygpCiAgICAgICAgc2VsZi5zcGVjaWZ5X3Zpc2liaWxpdHlfaW5oZXJpdGFuY2VfcmVsYXRpb25zKCkKICAgICAgICBzZWxmLnNwZWNpZnlfcG9zaXRpb25faW5oZXJpdGFuY2UoKQogICAgICAgIHNlbGYuc29ydF9yZWxhdGlvbnNfYnlfcHJpb3JpdHkoKQoKICAgIGRlZiBzcGVjaWZ5X2NyZWF0aW9uKHNlbGYpOgogICAgICAgICIiInVzZWQgdG8gc3BlY2lmeSB0aGUgdW5pcXVlIGNyZWF0aW9uIGFuaW1hdGlvbiBmb3IgZWFjaCBpbmRpdmlkdWFsIGN1c3RvbSBvYmplY3QiIiIKICAgICAgICBwYXNzCgogICAgZGVmIGluaGVyaXRfY3JlYXRpb24oc2VsZik6CiAgICAgICAgIiIiaW5oZXJpdGluZyBjcmVhdGlvbiBmcm9tIHBhcnRzIiIiCiAgICAgICAgbW92ZW1lbnRzID0gW01vdmVtZW50KHBhcnQuY3JlYXRpb25fcGFyYW1ldGVyLCAoMCwgMSksIHBhcnQ9cGFydCkKICAgICAgICAgICAgICAgICAgICAgZm9yIHBhcnQgaW4gc2VsZi5wYXJ0c10KICAgICAgICBzZWxmLmNyZWF0aW9uX2FjdGlvbiA9IFhBY3Rpb24oKm1vdmVtZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PXNlbGYsIGNvbXBsZXRpb25fcGFyYW1ldGVyPXNlbGYuY3JlYXRpb25fcGFyYW1ldGVyLCBuYW1lPSJDcmVhdGlvbiIpCgogICAgZGVmIHNwZWNpZnlfcG9zaXRpb25faW5oZXJpdGFuY2Uoc2VsZik6CiAgICAgICAgIiIidXNlZCB0byBzcGVjaWZ5IGhvdyB0aGUgcG9zaXRpb24gc2hvdWxkIGJlIGRldGVybWluZWQiIiIKICAgICAgICBwYXNzCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgc3BlY2lmeV9wYXJ0cyhzZWxmKToKICAgICAgICAiIiJzYXZlIHBhcnRzIGFzIGF0dHJpYnV0ZXMgYW5kIHdyaXRlIHRoZW0gdG8gc2VsZi5wYXJ0cyIiIgogICAgICAgIHBhc3MKCiAgICBkZWYgaW5zZXJ0X3BhcnRzKHNlbGYpOgogICAgICAgICIiImluc2VydHMgdGhlIHBhcnRzIGFzIGNoaWxkcmVuIiIiCiAgICAgICAgZm9yIHBhcnQgaW4gc2VsZi5wYXJ0czoKICAgICAgICAgICAgIyBjaGVjayBpZiBwYXJ0IGlzIG5vdCBhbHJlYWR5IGNoaWxkIHNvIGV4aXN0aW5nIGhpZXJhcmNoaWVzIHdvbid0IGJlIGRpc3R1cmJlZAogICAgICAgICAgICBpZiBub3QgcGFydC5vYmouR2V0VXAoKToKICAgICAgICAgICAgICAgIHBhcnQub2JqLkluc2VydFVuZGVyKHNlbGYub2JqKQogICAgICAgICAgICAgICAgcGFydC5wYXJlbnQgPSBzZWxmCiAgICAgICAgICAgICMgY2hlY2sgZm9yIG1lbWJyYW5lcwogICAgICAgICAgICBpZiBoYXNhdHRyKHBhcnQsICJtZW1icmFuZSIpOgogICAgICAgICAgICAgICAgcGFydC5tZW1icmFuZS5vYmouSW5zZXJ0VW5kZXIoc2VsZi5vYmopCiAgICAgICAgICAgICAgICBwYXJ0Lm1lbWJyYW5lLnBhcmVudCA9IHNlbGYKCiAgICBkZWYgc3BlY2lmeV9vYmplY3Qoc2VsZik6CiAgICAgICAgc2VsZi5vYmogPSBjNGQuQmFzZU9iamVjdChjNGQuT251bGwpCgogICAgZGVmIHNwZWNpZnlfdmlzaWJpbGl0eV9pbmhlcml0YW5jZV9yZWxhdGlvbnMoc2VsZik6CiAgICAgICAgIiIiaW5oZXJpdHMgdmlzaWJpbGl0eSB0byBwYXJ0cyIiIgogICAgICAgIHZpc2liaWxpdHlfcmVsYXRpb25zID0gW10KICAgICAgICBmb3IgcGFydCBpbiBzZWxmLnBhcnRzOgogICAgICAgICAgICBpZiBoYXNhdHRyKHBhcnQsICJ2aXNpYmlsaXR5X3BhcmFtZXRlciIpIGFuZCBub3QgaXNpbnN0YW5jZShwYXJ0LCBlZmZlY3Rfb2JqZWN0cy5Nb3JwaGVyKToKICAgICAgICAgICAgICAgIHZpc2liaWxpdHlfcmVsYXRpb24gPSBYSWRlbnRpdHkoCiAgICAgICAgICAgICAgICAgICAgcGFydD1wYXJ0LCB3aG9sZT1zZWxmLCBkZXNjX2lkcz1bcGFydC52aXNpYmlsaXR5X3BhcmFtZXRlci5kZXNjX2lkXSwgcGFyYW1ldGVyPXNlbGYudmlzaWJpbGl0eV9wYXJhbWV0ZXIsIG5hbWU9IlZpc2liaWxpdHlJbmhlcml0YW5jZSIpCiAgICAgICAgICAgICAgICB2aXNpYmlsaXR5X3JlbGF0aW9ucy5hcHBlbmQodmlzaWJpbGl0eV9yZWxhdGlvbikKCiAgICBkZWYgc3BlY2lmeV9ib3VuZGluZ19ib3hfcGFyYW1ldGVycyhzZWxmKToKICAgICAgICAiIiJzcGVjaWZpZXMgYm91bmRpbmcgYm94IHBhcmFtZXRlcnMiIiIKICAgICAgICBkZWZhdWx0X2RpYW1ldGVyID0gc2VsZi5kaWFtZXRlciBpZiBzZWxmLmRpYW1ldGVyIGVsc2UgbWF4KAogICAgICAgICAgICBzZWxmLndpZHRoLCBzZWxmLmhlaWdodCwgc2VsZi5kZXB0aCkKICAgICAgICBzZWxmLmRpYW1ldGVyX3BhcmFtZXRlciA9IFVMZW5ndGgoCiAgICAgICAgICAgIG5hbWU9IkRpYW1ldGVyIiwgZGVmYXVsdF92YWx1ZT1kZWZhdWx0X2RpYW1ldGVyKQogICAgICAgIHNlbGYuZGVmYXVsdF93aWR0aF9wYXJhbWV0ZXIgPSBVTGVuZ3RoKAogICAgICAgICAgICBuYW1lPSJEZWZhdWx0V2lkdGgiLCBkZWZhdWx0X3ZhbHVlPXNlbGYud2lkdGgpCiAgICAgICAgc2VsZi5kZWZhdWx0X2hlaWdodF9wYXJhbWV0ZXIgPSBVTGVuZ3RoKAogICAgICAgICAgICBuYW1lPSJEZWZhdWx0SGVpZ2h0IiwgZGVmYXVsdF92YWx1ZT1zZWxmLmhlaWdodCkKICAgICAgICBzZWxmLmRlZmF1bHRfZGVwdGhfcGFyYW1ldGVyID0gVUxlbmd0aCgKICAgICAgICAgICAgbmFtZT0iRGVmYXVsdERlcHRoIiwgZGVmYXVsdF92YWx1ZT1zZWxmLmRlcHRoKQogICAgICAgIHNlbGYuYm91bmRpbmdfYm94X3BhcmFtZXRlcnMgPSBbc2VsZi5kaWFtZXRlcl9wYXJhbWV0ZXIsIHNlbGYuZGVmYXVsdF93aWR0aF9wYXJhbWV0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRlZmF1bHRfaGVpZ2h0X3BhcmFtZXRlciwgc2VsZi5kZWZhdWx0X2RlcHRoX3BhcmFtZXRlcl0KCiAgICBkZWYgaW5zZXJ0X2JvdW5kaW5nX2JveF9wYXJhbWV0ZXJzKHNlbGYpOgogICAgICAgICIiImluc2VydHMgdGhlIGJvdW5kaW5nIGJveCBwYXJhbWV0ZXJzIiIiCiAgICAgICAgc2VsZi5ib3VuZGluZ19ib3hfdV9ncm91cCA9IFVHcm91cCgKICAgICAgICAgICAgKnNlbGYuYm91bmRpbmdfYm94X3BhcmFtZXRlcnMsIHRhcmdldD1zZWxmLm9iaiwgbmFtZT0iQm91bmRpbmdCb3giKQoKICAgIGRlZiBzcGVjaWZ5X2JvdW5kaW5nX2JveF9yZWxhdGlvbnMoc2VsZik6CiAgICAgICAgIiIiZ2l2ZXMgdGhlIGN1c3RvbSBvYmplY3QgYmFzaWMgY29udHJvbCBvdmVyIHRoZSBib3VuZGluZyBib3ggZGlhbWV0ZXIiIiIKICAgICAgICBkaWFtZXRlcl9yZWxhdGlvbiA9IFhSZWxhdGlvbihwYXJ0PXNlbGYsIHdob2xlPXNlbGYsIGRlc2NfaWRzPVtTQ0FMRV9YLCBTQ0FMRV9ZLCBTQ0FMRV9aXSwgcGFyYW1ldGVycz1bc2VsZi5kaWFtZXRlcl9wYXJhbWV0ZXIsIHNlbGYuZGVmYXVsdF93aWR0aF9wYXJhbWV0ZXIsIHNlbGYuZGVmYXVsdF9oZWlnaHRfcGFyYW1ldGVyLCBzZWxmLmRlZmF1bHRfZGVwdGhfcGFyYW1ldGVyXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtdWxhPWYie3NlbGYuZGlhbWV0ZXJfcGFyYW1ldGVyLm5hbWV9L21heCh7c2VsZi5kZWZhdWx0X3dpZHRoX3BhcmFtZXRlci5uYW1lfTttYXgoe3NlbGYuZGVmYXVsdF9oZWlnaHRfcGFyYW1ldGVyLm5hbWV9O3tzZWxmLmRlZmF1bHRfZGVwdGhfcGFyYW1ldGVyLm5hbWV9KSkiKQoKCmNsYXNzIE1lbWJyYW5lKEN1c3RvbU9iamVjdCk6CiAgICAiIiJjcmVhdGVzIGEgbWVtYnJhbmUgZm9yIGFueSBnaXZlbiBzcGxpbmUgdXNpbmcgdGhlIGV4dHJ1ZGUgYW5kIGluc3RhbmNlIG9iamVjdCIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzcGxpbmUsIHRoaWNrbmVzcz0wLCBmaWxsZWQ9MCwgY29sb3I9V0hJVEUsICoqa3dhcmdzKToKICAgICAgICBzZWxmLnNwbGluZSA9IHNwbGluZQogICAgICAgIHNlbGYudGhpY2tuZXNzID0gdGhpY2tuZXNzCiAgICAgICAgc2VsZi5maWxsZWQgPSBmaWxsZWQKICAgICAgICBzZWxmLmNvbG9yID0gY29sb3IKICAgICAgICBzdXBlcigpLl9faW5pdF9fKCoqa3dhcmdzKQogICAgICAgICMgc2VsZi5pbnNlcnRfdW5kZXJfc3BsaW5lKCkKCiAgICBkZWYgaW5zZXJ0X3VuZGVyX3NwbGluZShzZWxmKToKICAgICAgICBzZWxmLm9iai5JbnNlcnRVbmRlcihzZWxmLnNwbGluZS5vYmopCgogICAgZGVmIHNwZWNpZnlfcGFydHMoc2VsZik6CiAgICAgICAgc2VsZi5pbnN0YW5jZSA9IGhlbHBlcl9vYmplY3RzLkluc3RhbmNlKHNlbGYuc3BsaW5lKQogICAgICAgIHNlbGYuZXh0cnVkZSA9IHNvbGlkX29iamVjdHMuRXh0cnVkZShzZWxmLmluc3RhbmNlLCBjb2xvcj1zZWxmLmNvbG9yKQogICAgICAgIHNlbGYucGFydHMgKz0gW3NlbGYuZXh0cnVkZSwgc2VsZi5pbnN0YW5jZV0KCiAgICBkZWYgc3BlY2lmeV9wYXJhbWV0ZXJzKHNlbGYpOgogICAgICAgIHNlbGYudGhpY2tuZXNzX3BhcmFtZXRlciA9IFVMZW5ndGgoCiAgICAgICAgICAgIG5hbWU9IlRoaWNrbmVzc1BhcmFtZXRlciIsIGRlZmF1bHRfdmFsdWU9c2VsZi50aGlja25lc3MpCiAgICAgICAgc2VsZi5maWxsX3BhcmFtZXRlciA9IFVDb21wbGV0aW9uKAogICAgICAgICAgICBuYW1lPSJGaWxsIiwgZGVmYXVsdF92YWx1ZT1zZWxmLmZpbGxlZCkKICAgICAgICBzZWxmLnBhcmFtZXRlcnMgKz0gW3NlbGYudGhpY2tuZXNzX3BhcmFtZXRlciwgc2VsZi5maWxsX3BhcmFtZXRlcl0KCiAgICBkZWYgc3BlY2lmeV9yZWxhdGlvbnMoc2VsZik6CiAgICAgICAgdGhpY2tuZXNzX3JlbGF0aW9uID0gWElkZW50aXR5KHBhcnQ9c2VsZi5leHRydWRlLCB3aG9sZT1zZWxmLCBkZXNjX2lkcz1bc2VsZi5leHRydWRlLmRlc2NfaWRzWyJvZmZzZXQiXV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcj1zZWxmLnRoaWNrbmVzc19wYXJhbWV0ZXIpCiAgICAgICAgZmlsbF9pbmhlcml0YW5jZSA9IFhJZGVudGl0eShwYXJ0PXNlbGYuZXh0cnVkZSwgd2hvbGU9c2VsZiwgZGVzY19pZHM9W3NlbGYuZXh0cnVkZS5maWxsX3BhcmFtZXRlci5kZXNjX2lkXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcj1zZWxmLmZpbGxfcGFyYW1ldGVyKQogICAgICAgICNtb3NwbGluZV9jb3JyZWN0aW9uID0gWENvcnJlY3RNb1NwbGluZVRyYW5zZm9ybSgKICAgICAgICAjICAgIHNlbGYuaW5zdGFuY2UsIHRhcmdldD1zZWxmKQoKICAgIGRlZiBzcGVjaWZ5X2NyZWF0aW9uKHNlbGYpOgogICAgICAgIGNyZWF0aW9uX2FjdGlvbiA9IFhBY3Rpb24oCiAgICAgICAgICAgIE1vdmVtZW50KHNlbGYuZmlsbF9wYXJhbWV0ZXIsICgwLCAxKSksCiAgICAgICAgICAgIHRhcmdldD1zZWxmLCBjb21wbGV0aW9uX3BhcmFtZXRlcj1zZWxmLmNyZWF0aW9uX3BhcmFtZXRlciwgbmFtZT0iQ3JlYXRpb24iKQoKICAgIGRlZiBmaWxsKHNlbGYsIG9wYWNpdHkpOgogICAgICAgIHJldHVybiBzZWxmLmNyZWF0ZShvcGFjaXR5KQoKICAgIGRlZiB1bl9maWxsKHNlbGYsIG9wYWNpdHk9MCk6CiAgICAgICAgcmV0dXJuIHNlbGYuY3JlYXRlKG9wYWNpdHkpCgoKY2xhc3MgTGluZU9iamVjdChWaXNpYmxlT2JqZWN0KToKICAgICIiImxpbmUgb2JqZWN0cyBjb25zaXN0IG9mIHNwbGluZXMgYW5kIG9ubHkgcmVxdWlyZSBhIHNrZXRjaCBtYXRlcmlhbCIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb2xvcj1XSElURSwgcGxhbmU9Inh5IiwgYXJyb3dfc3RhcnQ9RmFsc2UsIGFycm93X2VuZD1GYWxzZSwgZHJhd19jb21wbGV0aW9uPTAsIG9wYWNpdHk9MSwgaGVscGVyX21vZGU9RmFsc2UsIGRyYXdfb3JkZXI9ImxvbmdfdG9fc2hvcnQiLCBmaWxsZWQ9RmFsc2UsIGZpbGxfY29sb3I9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgIHN1cGVyKCkuX19pbml0X18oKiprd2FyZ3MpCiAgICAgICAgc2VsZi5jb2xvciA9IGNvbG9yCiAgICAgICAgc2VsZi5wbGFuZSA9IHBsYW5lCiAgICAgICAgc2VsZi5hcnJvd19zdGFydCA9IGFycm93X3N0YXJ0CiAgICAgICAgc2VsZi5hcnJvd19lbmQgPSBhcnJvd19lbmQKICAgICAgICBzZWxmLmRyYXdfY29tcGxldGlvbiA9IGRyYXdfY29tcGxldGlvbgogICAgICAgIHNlbGYub3BhY2l0eSA9IG9wYWNpdHkKICAgICAgICBzZWxmLmRyYXdfb3JkZXIgPSBkcmF3X29yZGVyCiAgICAgICAgaWYgbm90IGhlbHBlcl9tb2RlOgogICAgICAgICAgICBzZWxmLnNldF9za2V0Y2hfbWF0ZXJpYWwoKQogICAgICAgICAgICBzZWxmLnNldF9za2V0Y2hfdGFnKCkKICAgICAgICAgICAgc2VsZi5za2V0Y2hfcGFyYW1ldGVyX3NldHVwKCkKICAgICAgICAgICAgc2VsZi5zZXRfcGxhbmUoKQogICAgICAgICAgICBzZWxmLnNwbGluZV9sZW5ndGhfcGFyYW1ldGVyX3NldHVwKCkKICAgICAgICAgICAgc2VsZi5wYXJhbWV0ZXJzID0gW10KICAgICAgICAgICAgc2VsZi5zcGVjaWZ5X3BhcmFtZXRlcnMoKQogICAgICAgICAgICBzZWxmLmluc2VydF9wYXJhbWV0ZXJzKCkKICAgICAgICAgICAgc2VsZi5zcGVjaWZ5X3JlbGF0aW9ucygpCiAgICAgICAgICAgIHNlbGYuYWN0aW9uX3BhcmFtZXRlcnMgPSBbXQogICAgICAgICAgICBzZWxmLnNwZWNpZnlfYWN0aW9uX3BhcmFtZXRlcnMoKQogICAgICAgICAgICBzZWxmLnNwZWNpZnlfY3JlYXRpb25fcGFyYW1ldGVyKCkKICAgICAgICAgICAgc2VsZi5pbnNlcnRfYWN0aW9uX3BhcmFtZXRlcnMoKQogICAgICAgICAgICBzZWxmLnNwZWNpZnlfYWN0aW9ucygpCiAgICAgICAgICAgIHNlbGYuc3BlY2lmeV9jcmVhdGlvbigpCiAgICAgICAgICAgIHNlbGYuc29ydF9yZWxhdGlvbnNfYnlfcHJpb3JpdHkoKQogICAgICAgIHNlbGYuZmlsbGVkID0gZmlsbGVkCiAgICAgICAgc2VsZi5maWxsX2NvbG9yID0gZmlsbF9jb2xvcgogICAgICAgIGlmIHNlbGYuZmlsbGVkOgogICAgICAgICAgICBzZWxmLmNyZWF0ZV9tZW1icmFuZSgpCgogICAgZGVmIGNyZWF0ZV9tZW1icmFuZShzZWxmKToKICAgICAgICBpZiBzZWxmLmZpbGxfY29sb3I6CiAgICAgICAgICAgIGNvbG9yID0gc2VsZi5maWxsX2NvbG9yCiAgICAgICAgZWxzZToKICAgICAgICAgICAgY29sb3IgPSBzZWxmLmNvbG9yCgogICAgICAgIHNlbGYubWVtYnJhbmUgPSBNZW1icmFuZSgKICAgICAgICAgICAgc2VsZiwgbmFtZT1zZWxmLm5hbWUgKyAiTWVtYnJhbmUiLCBjcmVhdGlvbj1UcnVlLCBjb2xvcj1jb2xvcikKCiAgICBkZWYgc3BsaW5lX2xlbmd0aF9wYXJhbWV0ZXJfc2V0dXAoc2VsZik6CiAgICAgICAgc2VsZi5zcGVjaWZ5X3NwbGluZV9sZW5ndGhfcGFyYW1ldGVyKCkKICAgICAgICBzZWxmLmluc2VydF9zcGxpbmVfbGVuZ3RoX3BhcmFtZXRlcigpCiAgICAgICAgc2VsZi5zcGVjaWZ5X3NwbGluZV9sZW5ndGhfcmVsYXRpb24oKQoKICAgIGRlZiBza2V0Y2hfcGFyYW1ldGVyX3NldHVwKHNlbGYpOgogICAgICAgIHNlbGYuc3BlY2lmeV9za2V0Y2hfcGFyYW1ldGVycygpCiAgICAgICAgc2VsZi5pbnNlcnRfc2tldGNoX3BhcmFtZXRlcnMoKQogICAgICAgIHNlbGYuc3BlY2lmeV9za2V0Y2hfcmVsYXRpb25zKCkKCiAgICBkZWYgc3BlY2lmeV9jcmVhdGlvbihzZWxmKToKICAgICAgICAiIiJzcGVjaWZpZXMgdGhlIGNyZWF0aW9uIGFjdGlvbiIiIgogICAgICAgIGNyZWF0aW9uX2FjdGlvbiA9IFhBY3Rpb24oCiAgICAgICAgICAgIE1vdmVtZW50KHNlbGYuZHJhd19wYXJhbWV0ZXIsICgwLCAxKSksCiAgICAgICAgICAgIHRhcmdldD1zZWxmLCBjb21wbGV0aW9uX3BhcmFtZXRlcj1zZWxmLmNyZWF0aW9uX3BhcmFtZXRlciwgbmFtZT0iQ3JlYXRpb24iKQogICAgICAgIHNlbGYuYWN0aW9ucy5hcHBlbmQoY3JlYXRpb25fYWN0aW9uKQoKICAgIGRlZiBzZXRfc2tldGNoX21hdGVyaWFsKHNlbGYpOgogICAgICAgIHNlbGYuc2tldGNoX21hdGVyaWFsID0gU2tldGNoTWF0ZXJpYWwoCiAgICAgICAgICAgIG5hbWU9c2VsZi5fX2NsYXNzX18uX19uYW1lX18sIGRyYXdfb3JkZXI9c2VsZi5kcmF3X29yZGVyLCBjb2xvcj1zZWxmLmNvbG9yLCBhcnJvd19zdGFydD1zZWxmLmFycm93X3N0YXJ0LCBhcnJvd19lbmQ9c2VsZi5hcnJvd19lbmQpCgogICAgZGVmIHNldF9za2V0Y2hfdGFnKHNlbGYpOgogICAgICAgIHNlbGYuc2tldGNoX3RhZyA9IFNrZXRjaFRhZyh0YXJnZXQ9c2VsZiwgbWF0ZXJpYWw9c2VsZi5za2V0Y2hfbWF0ZXJpYWwpCgogICAgZGVmIHNwZWNpZnlfc2tldGNoX3BhcmFtZXRlcnMoc2VsZik6CiAgICAgICAgc2VsZi5kcmF3X3BhcmFtZXRlciA9IFVDb21wbGV0aW9uKAogICAgICAgICAgICBuYW1lPSJEcmF3IiwgZGVmYXVsdF92YWx1ZT1zZWxmLmRyYXdfY29tcGxldGlvbikKICAgICAgICBzZWxmLm9wYWNpdHlfcGFyYW1ldGVyID0gVUNvbXBsZXRpb24oCiAgICAgICAgICAgIG5hbWU9Ik9wYWNpdHkiLCBkZWZhdWx0X3ZhbHVlPXNlbGYub3BhY2l0eSkKICAgICAgICBzZWxmLmNvbG9yX3BhcmFtZXRlciA9IFVDb2xvcigKICAgICAgICAgICAgbmFtZT0iQ29sb3IiLCBkZWZhdWx0X3ZhbHVlPXNlbGYuY29sb3IpCiAgICAgICAgc2VsZi5za2V0Y2hfcGFyYW1ldGVycyA9IFtzZWxmLmRyYXdfcGFyYW1ldGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5vcGFjaXR5X3BhcmFtZXRlciwgc2VsZi5jb2xvcl9wYXJhbWV0ZXJdCgogICAgZGVmIGluc2VydF9za2V0Y2hfcGFyYW1ldGVycyhzZWxmKToKICAgICAgICBzZWxmLmRyYXdfdV9ncm91cCA9IFVHcm91cCgKICAgICAgICAgICAgKnNlbGYuc2tldGNoX3BhcmFtZXRlcnMsIHRhcmdldD1zZWxmLm9iaiwgbmFtZT0iU2tldGNoIikKCiAgICBkZWYgc3BlY2lmeV9za2V0Y2hfcmVsYXRpb25zKHNlbGYpOgogICAgICAgIGRyYXdfcmVsYXRpb24gPSBYSWRlbnRpdHkocGFydD1zZWxmLnNrZXRjaF9tYXRlcmlhbCwgd2hvbGU9c2VsZiwgZGVzY19pZHM9W3NlbGYuc2tldGNoX21hdGVyaWFsLmRlc2NfaWRzWyJkcmF3X2NvbXBsZXRpb24iXV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXI9c2VsZi5kcmF3X3BhcmFtZXRlcikKICAgICAgICBvcGFjaXR5X3JlbGF0aW9uID0gWElkZW50aXR5KHBhcnQ9c2VsZi5za2V0Y2hfbWF0ZXJpYWwsIHdob2xlPXNlbGYsIGRlc2NfaWRzPVtzZWxmLnNrZXRjaF9tYXRlcmlhbC5kZXNjX2lkc1sib3BhY2l0eSJdXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcj1zZWxmLm9wYWNpdHlfcGFyYW1ldGVyKQogICAgICAgIGNvbG9yX3JlbGF0aW9uID0gWElkZW50aXR5KHBhcnQ9c2VsZi5za2V0Y2hfbWF0ZXJpYWwsIHdob2xlPXNlbGYsIGRlc2NfaWRzPVtzZWxmLnNrZXRjaF9tYXRlcmlhbC5kZXNjX2lkc1siY29sb3IiXV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyPXNlbGYuY29sb3JfcGFyYW1ldGVyKQoKICAgIGRlZiBzZXRfcGxhbmUoc2VsZik6CiAgICAgICAgcGxhbmVzID0geyJ4eSI6IDAsICJ6eSI6IDEsICJ4eiI6IDJ9CiAgICAgICAgc2VsZi5vYmpbYzRkLlBSSU1fUExBTkVdID0gcGxhbmVzW3NlbGYucGxhbmVdCgogICAgZGVmIHNwZWNpZnlfc3BsaW5lX2xlbmd0aF9wYXJhbWV0ZXIoc2VsZik6CiAgICAgICAgc2VsZi5zcGxpbmVfbGVuZ3RoX3BhcmFtZXRlciA9IFVMZW5ndGgobmFtZT0iU3BsaW5lTGVuZ3RoIikKCiAgICBkZWYgaW5zZXJ0X3NwbGluZV9sZW5ndGhfcGFyYW1ldGVyKHNlbGYpOgogICAgICAgIHNlbGYuc3BsaW5lX2xlbmd0aF91X2dyb3VwID0gVUdyb3VwKAogICAgICAgICAgICBzZWxmLnNwbGluZV9sZW5ndGhfcGFyYW1ldGVyLCB0YXJnZXQ9c2VsZi5vYmosIG5hbWU9IlNwbGluZSIpCgogICAgZGVmIHNwZWNpZnlfc3BsaW5lX2xlbmd0aF9yZWxhdGlvbihzZWxmKToKICAgICAgICBzZWxmLnNwbGluZV9sZW5ndGhfcmVsYXRpb24gPSBYU3BsaW5lTGVuZ3RoKAogICAgICAgICAgICBzcGxpbmU9c2VsZiwgd2hvbGU9c2VsZiwgcGFyYW1ldGVyPXNlbGYuc3BsaW5lX2xlbmd0aF9wYXJhbWV0ZXIpCgogICAgZGVmIGRyYXcoc2VsZiwgY29tcGxldGlvbj0xKToKICAgICAgICAiIiJzcGVjaWZpZXMgdGhlIGRyYXcgYW5pbWF0aW9uIiIiCiAgICAgICAgZGVzY19pZCA9IHNlbGYuZHJhd19wYXJhbWV0ZXIuZGVzY19pZAogICAgICAgIGFuaW1hdGlvbiA9IFNjYWxhckFuaW1hdGlvbigKICAgICAgICAgICAgdGFyZ2V0PXNlbGYsIGRlc2NyaXB0b3I9ZGVzY19pZCwgdmFsdWVfZmluPWNvbXBsZXRpb24pCiAgICAgICAgc2VsZi5vYmpbZGVzY19pZF0gPSBjb21wbGV0aW9uCiAgICAgICAgcmV0dXJuIGFuaW1hdGlvbgoKICAgIGRlZiB1bl9kcmF3KHNlbGYsIGNvbXBsZXRpb249MCk6CiAgICAgICAgIiIic3BlY2lmaWVzIHRoZSB1bmRyYXcgYW5pbWF0aW9uIiIiCiAgICAgICAgZGVzY19pZCA9IHNlbGYuZHJhd19wYXJhbWV0ZXIuZGVzY19pZAogICAgICAgIGFuaW1hdGlvbiA9IFNjYWxhckFuaW1hdGlvbigKICAgICAgICAgICAgdGFyZ2V0PXNlbGYsIGRlc2NyaXB0b3I9ZGVzY19pZCwgdmFsdWVfZmluPWNvbXBsZXRpb24pCiAgICAgICAgc2VsZi5vYmpbZGVzY19pZF0gPSBjb21wbGV0aW9uCiAgICAgICAgcmV0dXJuIGFuaW1hdGlvbgoKICAgIGRlZiBmYWRlX2luKHNlbGYsIGNvbXBsZXRpb249MSk6CiAgICAgICAgIiIic3BlY2lmaWVzIHRoZSBmYWRlIGluIGFuaW1hdGlvbiIiIgogICAgICAgIGRlc2NfaWQgPSBzZWxmLm9wYWNpdHlfcGFyYW1ldGVyLmRlc2NfaWQKICAgICAgICBhbmltYXRpb24gPSBTY2FsYXJBbmltYXRpb24oCiAgICAgICAgICAgIHRhcmdldD1zZWxmLCBkZXNjcmlwdG9yPWRlc2NfaWQsIHZhbHVlX2Zpbj1jb21wbGV0aW9uKQogICAgICAgIHNlbGYub2JqW2Rlc2NfaWRdID0gY29tcGxldGlvbgogICAgICAgIHJldHVybiBhbmltYXRpb24KCiAgICBkZWYgZmFkZV9vdXQoc2VsZiwgY29tcGxldGlvbj0wKToKICAgICAgICAiIiJzcGVjaWZpZXMgdGhlIGZhZGUgb3V0IGFuaW1hdGlvbiIiIgogICAgICAgIGRlc2NfaWQgPSBzZWxmLm9wYWNpdHlfcGFyYW1ldGVyLmRlc2NfaWQKICAgICAgICBhbmltYXRpb24gPSBTY2FsYXJBbmltYXRpb24oCiAgICAgICAgICAgIHRhcmdldD1zZWxmLCBkZXNjcmlwdG9yPWRlc2NfaWQsIHZhbHVlX2Zpbj1jb21wbGV0aW9uKQogICAgICAgIHNlbGYub2JqW2Rlc2NfaWRdID0gY29tcGxldGlvbgogICAgICAgIHJldHVybiBhbmltYXRpb24KCiAgICBkZWYgY2hhbmdlX2NvbG9yKHNlbGYsIGNvbG9yKToKICAgICAgICAiIiJzcGVjaWZpZXMgdGhlIGNvbG9yIGNoYW5nZSBhbmltYXRpb24iIiIKICAgICAgICBkZXNjX2lkID0gc2VsZi5jb2xvcl9wYXJhbWV0ZXIuZGVzY19pZAogICAgICAgIGFuaW1hdGlvbiA9IENvbG9yQW5pbWF0aW9uKAogICAgICAgICAgICB0YXJnZXQ9c2VsZiwgZGVzY3JpcHRvcj1kZXNjX2lkLCB2ZWN0b3I9Y29sb3IpCiAgICAgICAgc2VsZi5vYmpbZGVzY19pZF0gPSBjb2xvcgogICAgICAgIHJldHVybiBhbmltYXRpb24KCgpjbGFzcyBTb2xpZE9iamVjdChWaXNpYmxlT2JqZWN0KToKICAgICIiInNvbGlkIG9iamVjdHMgb25seSByZXF1aXJlIGEgZmlsbCBtYXRlcmlhbCIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxsZWQ9MCwgZ2xvd2luZz0wLCBjb2xvcj1XSElURSwgZmlsbF9jb2xvcj1Ob25lLCBza2V0Y2hfY29sb3I9Tm9uZSwgZHJhd19vcmRlcj0ibG9uZ190b19zaG9ydCIsIGRyYXdfY29tcGxldGlvbj0wLCBhcnJvd19zdGFydD1GYWxzZSwgYXJyb3dfZW5kPUZhbHNlLCBmaWxsX29wYWNpdHk9MSwgc2tldGNoX29wYWNpdHk9MSwgb3V0bGluZV9vbmx5PUZhbHNlLCAqKmt3YXJncyk6CiAgICAgICAgc2VsZi5maWxsZWQgPSBmaWxsZWQKICAgICAgICBzZWxmLmdsb3dpbmcgPSBnbG93aW5nCiAgICAgICAgc2VsZi5jb2xvciA9IGNvbG9yCiAgICAgICAgc2VsZi5maWxsX2NvbG9yID0gZmlsbF9jb2xvcgogICAgICAgIHNlbGYuc2tldGNoX2NvbG9yID0gc2tldGNoX2NvbG9yCiAgICAgICAgc2VsZi5kcmF3X29yZGVyID0gZHJhd19vcmRlcgogICAgICAgIHNlbGYuZHJhd19jb21wbGV0aW9uID0gZHJhd19jb21wbGV0aW9uCiAgICAgICAgc2VsZi5hcnJvd19zdGFydCA9IGFycm93X3N0YXJ0CiAgICAgICAgc2VsZi5hcnJvd19lbmQgPSBhcnJvd19lbmQKICAgICAgICBzZWxmLnNrZXRjaF9vcGFjaXR5ID0gc2tldGNoX29wYWNpdHkKICAgICAgICBzZWxmLmZpbGxfb3BhY2l0eSA9IGZpbGxfb3BhY2l0eQogICAgICAgIHNlbGYub3V0bGluZV9vbmx5ID0gb3V0bGluZV9vbmx5CiAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqKmt3YXJncykKICAgICAgICBzZWxmLmRlcml2ZV9jb2xvcnMoKQogICAgICAgICMgZmlsbCBzZXR1cAogICAgICAgIHNlbGYuc2V0X2ZpbGxfbWF0ZXJpYWwoKQogICAgICAgIHNlbGYuc2V0X2ZpbGxfdGFnKCkKICAgICAgICBzZWxmLmZpbGxfcGFyYW1ldGVyX3NldHVwKCkKICAgICAgICAjIHNrZXRjaCBzZXR1cAogICAgICAgIHNlbGYuc2V0X3NrZXRjaF9tYXRlcmlhbCgpCiAgICAgICAgc2VsZi5zZXRfc2tldGNoX3RhZygpCiAgICAgICAgc2VsZi5za2V0Y2hfcGFyYW1ldGVyX3NldHVwKCkKICAgICAgICBzZWxmLnBhcmFtZXRlcnMgPSBbXQogICAgICAgIHNlbGYuc3BlY2lmeV9wYXJhbWV0ZXJzKCkKICAgICAgICBzZWxmLmluc2VydF9wYXJhbWV0ZXJzKCkKICAgICAgICBzZWxmLnNwZWNpZnlfcmVsYXRpb25zKCkKICAgICAgICBzZWxmLmFjdGlvbl9wYXJhbWV0ZXJzID0gW10KICAgICAgICBzZWxmLnNwZWNpZnlfYWN0aW9uX3BhcmFtZXRlcnMoKQogICAgICAgIHNlbGYuc3BlY2lmeV9jcmVhdGlvbl9wYXJhbWV0ZXIoKQogICAgICAgIHNlbGYuaW5zZXJ0X2FjdGlvbl9wYXJhbWV0ZXJzKCkKICAgICAgICBzZWxmLnNwZWNpZnlfYWN0aW9ucygpCiAgICAgICAgc2VsZi5zcGVjaWZ5X2NyZWF0aW9uKCkKICAgICAgICBzZWxmLnNvcnRfcmVsYXRpb25zX2J5X3ByaW9yaXR5KCkKCiAgICBkZWYgZGVyaXZlX2NvbG9ycyhzZWxmKToKICAgICAgICBpZiBub3Qgc2VsZi5maWxsX2NvbG9yOgogICAgICAgICAgICBzZWxmLmZpbGxfY29sb3IgPSBzZWxmLmNvbG9yCiAgICAgICAgaWYgbm90IHNlbGYuc2tldGNoX2NvbG9yOgogICAgICAgICAgICBzZWxmLnNrZXRjaF9jb2xvciA9IHNlbGYuY29sb3IKCiAgICBkZWYgc3BlY2lmeV9jcmVhdGlvbihzZWxmKToKICAgICAgICAiIiJzcGVjaWZpZXMgdGhlIGNyZWF0aW9uIGFjdGlvbiIiIgogICAgICAgIGNyZWF0aW9uX2FjdGlvbiA9IFhBY3Rpb24oCiAgICAgICAgICAgIE1vdmVtZW50KHNlbGYuZmlsbF9wYXJhbWV0ZXIsICgxIC8gMywgMSkpLAogICAgICAgICAgICBNb3ZlbWVudChzZWxmLmRyYXdfcGFyYW1ldGVyLCAoMCwgMiAvIDMpKSwKICAgICAgICAgICAgdGFyZ2V0PXNlbGYsIGNvbXBsZXRpb25fcGFyYW1ldGVyPXNlbGYuY3JlYXRpb25fcGFyYW1ldGVyLCBuYW1lPSJDcmVhdGlvbiIpCgogICAgZGVmIGZpbGxfcGFyYW1ldGVyX3NldHVwKHNlbGYpOgogICAgICAgIHNlbGYuc3BlY2lmeV9maWxsX3BhcmFtZXRlcigpCiAgICAgICAgc2VsZi5pbnNlcnRfZmlsbF9wYXJhbWV0ZXIoKQogICAgICAgIHNlbGYuc3BlY2lmeV9maWxsX3JlbGF0aW9uKCkKCiAgICBkZWYgc2V0X2ZpbGxfbWF0ZXJpYWwoc2VsZik6CiAgICAgICAgc2VsZi5maWxsX21hdGVyaWFsID0gRmlsbE1hdGVyaWFsKAogICAgICAgICAgICBuYW1lPXNlbGYubmFtZSwgZmlsbD1zZWxmLmZpbGxlZCwgY29sb3I9c2VsZi5maWxsX2NvbG9yKQoKICAgIGRlZiBzZXRfZmlsbF90YWcoc2VsZik6CiAgICAgICAgc2VsZi5maWxsX3RhZyA9IEZpbGxUYWcodGFyZ2V0PXNlbGYsIG1hdGVyaWFsPXNlbGYuZmlsbF9tYXRlcmlhbCkKCiAgICBkZWYgc3BlY2lmeV9maWxsX3BhcmFtZXRlcihzZWxmKToKICAgICAgICBzZWxmLmZpbGxfcGFyYW1ldGVyID0gVUNvbXBsZXRpb24oCiAgICAgICAgICAgIG5hbWU9IkZpbGwiLCBkZWZhdWx0X3ZhbHVlPXNlbGYuZmlsbGVkKQogICAgICAgIHNlbGYuZ2xvd19wYXJhbWV0ZXIgPSBVQ29tcGxldGlvbigKICAgICAgICAgICAgbmFtZT0iR2xvdyIsIGRlZmF1bHRfdmFsdWU9c2VsZi5nbG93aW5nKQogICAgICAgIHNlbGYuZmlsbF9wYXJhbWV0ZXJzID0gW3NlbGYuZmlsbF9wYXJhbWV0ZXIsIHNlbGYuZ2xvd19wYXJhbWV0ZXJdCgogICAgZGVmIGluc2VydF9maWxsX3BhcmFtZXRlcihzZWxmKToKICAgICAgICBzZWxmLmZpbGxfdV9ncm91cCA9IFVHcm91cCgKICAgICAgICAgICAgKnNlbGYuZmlsbF9wYXJhbWV0ZXJzLCB0YXJnZXQ9c2VsZi5vYmosIG5hbWU9IlNvbGlkIikKCiAgICBkZWYgc3BlY2lmeV9maWxsX3JlbGF0aW9uKHNlbGYpOgogICAgICAgIHNlbGYuZmlsbF9yZWxhdGlvbiA9IFhSZWxhdGlvbihwYXJ0PXNlbGYuZmlsbF9tYXRlcmlhbCwgd2hvbGU9c2VsZiwgZGVzY19pZHM9W3NlbGYuZmlsbF9tYXRlcmlhbC5kZXNjX2lkc1sidHJhbnNwYXJlbmN5Il1dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzPVtzZWxmLmZpbGxfcGFyYW1ldGVyXSwgZm9ybXVsYT1mIjEte3NlbGYuZmlsbF9wYXJhbWV0ZXIubmFtZX0iKQogICAgICAgIHNlbGYuZ2xvd19yZWxhdGlvbiA9IFhSZWxhdGlvbihwYXJ0PXNlbGYuZmlsbF9tYXRlcmlhbCwgd2hvbGU9c2VsZiwgZGVzY19pZHM9W3NlbGYuZmlsbF9tYXRlcmlhbC5kZXNjX2lkc1siZ2xvd19icmlnaHRuZXNzIl1dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzPVtzZWxmLmdsb3dfcGFyYW1ldGVyXSwgZm9ybXVsYT1mIntzZWxmLmdsb3dfcGFyYW1ldGVyLm5hbWV9IikKCiAgICBkZWYgZmlsbChzZWxmLCBjb21wbGV0aW9uPTEpOgogICAgICAgICIiInNwZWNpZmllcyB0aGUgZmlsbCBhbmltYXRpb24iIiIKICAgICAgICBkZXNjX2lkID0gc2VsZi5maWxsX3BhcmFtZXRlci5kZXNjX2lkCiAgICAgICAgYW5pbWF0aW9uID0gU2NhbGFyQW5pbWF0aW9uKAogICAgICAgICAgICB0YXJnZXQ9c2VsZiwgZGVzY3JpcHRvcj1kZXNjX2lkLCB2YWx1ZV9maW49Y29tcGxldGlvbikKICAgICAgICBzZWxmLm9ialtkZXNjX2lkXSA9IGNvbXBsZXRpb24KICAgICAgICByZXR1cm4gYW5pbWF0aW9uCgogICAgZGVmIHVuX2ZpbGwoc2VsZiwgY29tcGxldGlvbj0wKToKICAgICAgICAiIiJzcGVjaWZpZXMgdGhlIHVuZmlsbCBhbmltYXRpb24iIiIKICAgICAgICBkZXNjX2lkID0gc2VsZi5maWxsX3BhcmFtZXRlci5kZXNjX2lkCiAgICAgICAgYW5pbWF0aW9uID0gU2NhbGFyQW5pbWF0aW9uKAogICAgICAgICAgICB0YXJnZXQ9c2VsZiwgZGVzY3JpcHRvcj1kZXNjX2lkLCB2YWx1ZV9maW49Y29tcGxldGlvbikKICAgICAgICBzZWxmLm9ialtkZXNjX2lkXSA9IGNvbXBsZXRpb24KICAgICAgICByZXR1cm4gYW5pbWF0aW9uCgogICAgZGVmIHNrZXRjaF9wYXJhbWV0ZXJfc2V0dXAoc2VsZik6CiAgICAgICAgc2VsZi5zcGVjaWZ5X3NrZXRjaF9wYXJhbWV0ZXJzKCkKICAgICAgICBzZWxmLmluc2VydF9za2V0Y2hfcGFyYW1ldGVycygpCiAgICAgICAgc2VsZi5zcGVjaWZ5X3NrZXRjaF9yZWxhdGlvbnMoKQoKICAgIGRlZiBzZXRfc2tldGNoX21hdGVyaWFsKHNlbGYpOgogICAgICAgIHNlbGYuc2tldGNoX21hdGVyaWFsID0gU2tldGNoTWF0ZXJpYWwoCiAgICAgICAgICAgIG5hbWU9c2VsZi5fX2NsYXNzX18uX19uYW1lX18sIGRyYXdfb3JkZXI9c2VsZi5kcmF3X29yZGVyLCBjb2xvcj1zZWxmLnNrZXRjaF9jb2xvciwgYXJyb3dfc3RhcnQ9c2VsZi5hcnJvd19zdGFydCwgYXJyb3dfZW5kPXNlbGYuYXJyb3dfZW5kKQoKICAgIGRlZiBzZXRfc2tldGNoX3RhZyhzZWxmKToKICAgICAgICBvdXRsaW5lID0gVHJ1ZQogICAgICAgIGNyZWFzZXMgPSBUcnVlCiAgICAgICAgc3BsaW5lcyA9IFRydWUKICAgICAgICBpZiBzZWxmLm91dGxpbmVfb25seToKICAgICAgICAgICAgY3JlYXNlcyA9IEZhbHNlCiAgICAgICAgICAgIHNwbGluZXMgPSBGYWxzZQogICAgICAgIHNlbGYuc2tldGNoX3RhZyA9IFNrZXRjaFRhZygKICAgICAgICAgICAgdGFyZ2V0PXNlbGYsIG1hdGVyaWFsPXNlbGYuc2tldGNoX21hdGVyaWFsLCBzcGxpbmVzPXNwbGluZXMsIG91dGxpbmU9b3V0bGluZSwgY3JlYXNlcz1jcmVhc2VzKQoKICAgIGRlZiBzcGVjaWZ5X3NrZXRjaF9wYXJhbWV0ZXJzKHNlbGYpOgogICAgICAgIHNlbGYuZHJhd19wYXJhbWV0ZXIgPSBVQ29tcGxldGlvbigKICAgICAgICAgICAgbmFtZT0iRHJhdyIsIGRlZmF1bHRfdmFsdWU9c2VsZi5kcmF3X2NvbXBsZXRpb24pCiAgICAgICAgc2VsZi5vcGFjaXR5X3BhcmFtZXRlciA9IFVDb21wbGV0aW9uKAogICAgICAgICAgICBuYW1lPSJTa2V0Y2hPcGFjaXR5IiwgZGVmYXVsdF92YWx1ZT1zZWxmLnNrZXRjaF9vcGFjaXR5KQogICAgICAgIHNlbGYuY29sb3JfcGFyYW1ldGVyID0gVUNvbG9yKAogICAgICAgICAgICBuYW1lPSJDb2xvciIsIGRlZmF1bHRfdmFsdWU9c2VsZi5za2V0Y2hfY29sb3IpCiAgICAgICAgc2VsZi5za2V0Y2hfcGFyYW1ldGVycyA9IFtzZWxmLmRyYXdfcGFyYW1ldGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5vcGFjaXR5X3BhcmFtZXRlciwgc2VsZi5jb2xvcl9wYXJhbWV0ZXJdCgogICAgZGVmIGluc2VydF9za2V0Y2hfcGFyYW1ldGVycyhzZWxmKToKICAgICAgICBzZWxmLmRyYXdfdV9ncm91cCA9IFVHcm91cCgKICAgICAgICAgICAgKnNlbGYuc2tldGNoX3BhcmFtZXRlcnMsIHRhcmdldD1zZWxmLm9iaiwgbmFtZT0iU2tldGNoIikKCiAgICBkZWYgc3BlY2lmeV9za2V0Y2hfcmVsYXRpb25zKHNlbGYpOgogICAgICAgIGRyYXdfcmVsYXRpb24gPSBYSWRlbnRpdHkocGFydD1zZWxmLnNrZXRjaF9tYXRlcmlhbCwgd2hvbGU9c2VsZiwgZGVzY19pZHM9W3NlbGYuc2tldGNoX21hdGVyaWFsLmRlc2NfaWRzWyJkcmF3X2NvbXBsZXRpb24iXV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXI9c2VsZi5kcmF3X3BhcmFtZXRlcikKICAgICAgICBvcGFjaXR5X3JlbGF0aW9uID0gWElkZW50aXR5KHBhcnQ9c2VsZi5za2V0Y2hfbWF0ZXJpYWwsIHdob2xlPXNlbGYsIGRlc2NfaWRzPVtzZWxmLnNrZXRjaF9tYXRlcmlhbC5kZXNjX2lkc1sib3BhY2l0eSJdXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcj1zZWxmLm9wYWNpdHlfcGFyYW1ldGVyKQogICAgICAgIGNvbG9yX3JlbGF0aW9uID0gWElkZW50aXR5KHBhcnQ9c2VsZi5za2V0Y2hfbWF0ZXJpYWwsIHdob2xlPXNlbGYsIGRlc2NfaWRzPVtzZWxmLnNrZXRjaF9tYXRlcmlhbC5kZXNjX2lkc1siY29sb3IiXV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyPXNlbGYuY29sb3JfcGFyYW1ldGVyKQoKICAgIGRlZiBkcmF3KHNlbGYsIGNvbXBsZXRpb249MSk6CiAgICAgICAgIiIic3BlY2lmaWVzIHRoZSBkcmF3IGFuaW1hdGlvbiIiIgogICAgICAgIGRlc2NfaWQgPSBzZWxmLmRyYXdfcGFyYW1ldGVyLmRlc2NfaWQKICAgICAgICBhbmltYXRpb24gPSBTY2FsYXJBbmltYXRpb24oCiAgICAgICAgICAgIHRhcmdldD1zZWxmLCBkZXNjcmlwdG9yPWRlc2NfaWQsIHZhbHVlX2Zpbj1jb21wbGV0aW9uKQogICAgICAgIHNlbGYub2JqW2Rlc2NfaWRdID0gY29tcGxldGlvbgogICAgICAgIHJldHVybiBhbmltYXRpb24KCiAgICBkZWYgdW5fZHJhdyhzZWxmLCBjb21wbGV0aW9uPTApOgogICAgICAgICIiInNwZWNpZmllcyB0aGUgdW5kcmF3IGFuaW1hdGlvbiIiIgogICAgICAgIGRlc2NfaWQgPSBzZWxmLmRyYXdfcGFyYW1ldGVyLmRlc2NfaWQKICAgICAgICBhbmltYXRpb24gPSBTY2FsYXJBbmltYXRpb24oCiAgICAgICAgICAgIHRhcmdldD1zZWxmLCBkZXNjcmlwdG9yPWRlc2NfaWQsIHZhbHVlX2Zpbj1jb21wbGV0aW9uKQogICAgICAgIHNlbGYub2JqW2Rlc2NfaWRdID0gY29tcGxldGlvbgogICAgICAgIHJldHVybiBhbmltYXRpb24KCiAgICBkZWYgZ2xvdyhzZWxmLCBjb21wbGV0aW9uPTEpOgogICAgICAgICIiInNwZWNpZmllcyB0aGUgZ2xvdyBhbmltYXRpb24iIiIKICAgICAgICBkZXNjX2lkID0gc2VsZi5nbG93X3BhcmFtZXRlci5kZXNjX2lkCiAgICAgICAgYW5pbWF0aW9uID0gU2NhbGFyQW5pbWF0aW9uKAogICAgICAgICAgICB0YXJnZXQ9c2VsZiwgZGVzY3JpcHRvcj1kZXNjX2lkLCB2YWx1ZV9maW49Y29tcGxldGlvbikKICAgICAgICBzZWxmLm9ialtkZXNjX2lkXSA9IGNvbXBsZXRpb24KICAgICAgICByZXR1cm4gYW5pbWF0aW9uCgogICAgZGVmIHVuX2dsb3coc2VsZiwgY29tcGxldGlvbj0wKToKICAgICAgICAiIiJzcGVjaWZpZXMgdGhlIHVuZ2xvdyBhbmltYXRpb24iIiIKICAgICAgICBkZXNjX2lkID0gc2VsZi5nbG93X3BhcmFtZXRlci5kZXNjX2lkCiAgICAgICAgYW5pbWF0aW9uID0gU2NhbGFyQW5pbWF0aW9uKAogICAgICAgICAgICB0YXJnZXQ9c2VsZiwgZGVzY3JpcHRvcj1kZXNjX2lkLCB2YWx1ZV9maW49Y29tcGxldGlvbikKICAgICAgICBzZWxmLm9ialtkZXNjX2lkXSA9IGNvbXBsZXRpb24KICAgICAgICByZXR1cm4gYW5pbWF0aW9uCg",
1296  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAFeQAAAAAAAAV5AAAAAAAAAAAAAAAA8L8"
1297  				],
1298  				[
1299  					215,
1300  					1,
1301  					"insert",
1302  					{
1303  						"characters": ","
1304  					},
1305  					"AQAAAAF9AAAAAAAAAn0AAAAAAAAAAAAA",
1306  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAABfQAAAAAAAAF9AAAAAAAAAAAAAAAA8L8"
1307  				],
1308  				[
1309  					216,
1310  					1,
1311  					"insert",
1312  					{
1313  						"characters": " output"
1314  					},
1315  					"BwAAAAJ9AAAAAAAAA30AAAAAAAAAAAAAA30AAAAAAAAEfQAAAAAAAAAAAAAEfQAAAAAAAAV9AAAAAAAAAAAAAAV9AAAAAAAABn0AAAAAAAAAAAAABn0AAAAAAAAHfQAAAAAAAAAAAAAHfQAAAAAAAAh9AAAAAAAAAAAAAAh9AAAAAAAACX0AAAAAAAAAAAAA",
1316  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAACfQAAAAAAAAJ9AAAAAAAAAAAAAAAA8L8"
1317  				],
1318  				[
1319  					217,
1320  					1,
1321  					"insert_snippet",
1322  					{
1323  						"contents": "($0)"
1324  					},
1325  					"AQAAAAl9AAAAAAAAC30AAAAAAAAAAAAA",
1326  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAJfQAAAAAAAAl9AAAAAAAAAAAAAAAA8L8"
1327  				],
1328  				[
1329  					219,
1330  					1,
1331  					"insert",
1332  					{
1333  						"characters": "0,"
1334  					},
1335  					"AgAAAAp9AAAAAAAAC30AAAAAAAAAAAAAC30AAAAAAAAMfQAAAAAAAAAAAAA",
1336  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAKfQAAAAAAAAp9AAAAAAAAAAAAAAAA8L8"
1337  				],
1338  				[
1339  					220,
1340  					1,
1341  					"insert",
1342  					{
1343  						"characters": " "
1344  					},
1345  					"AQAAAAx9AAAAAAAADX0AAAAAAAAAAAAA",
1346  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAMfQAAAAAAAAx9AAAAAAAAAAAAAAAA8L8"
1347  				],
1348  				[
1349  					221,
1350  					1,
1351  					"insert_completion",
1352  					{
1353  						"completion": "self",
1354  						"format": "snippet",
1355  						"keep_prefix": false,
1356  						"must_insert": true,
1357  						"trigger": "self"
1358  					},
1359  					"AQAAAA19AAAAAAAAEX0AAAAAAAAAAAAA",
1360  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAANfQAAAAAAAA19AAAAAAAAAAAAAAAA8L8"
1361  				],
1362  				[
1363  					222,
1364  					1,
1365  					"insert",
1366  					{
1367  						"characters": ".f"
1368  					},
1369  					"AgAAABF9AAAAAAAAEn0AAAAAAAAAAAAAEn0AAAAAAAATfQAAAAAAAAAAAAA",
1370  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAARfQAAAAAAABF9AAAAAAAAAAAAAAAA8L8"
1371  				],
1372  				[
1373  					223,
1374  					1,
1375  					"insert",
1376  					{
1377  						"characters": "ill_opacit"
1378  					},
1379  					"CgAAABN9AAAAAAAAFH0AAAAAAAAAAAAAFH0AAAAAAAAVfQAAAAAAAAAAAAAVfQAAAAAAABZ9AAAAAAAAAAAAABZ9AAAAAAAAF30AAAAAAAAAAAAAF30AAAAAAAAYfQAAAAAAAAAAAAAYfQAAAAAAABl9AAAAAAAAAAAAABl9AAAAAAAAGn0AAAAAAAAAAAAAGn0AAAAAAAAbfQAAAAAAAAAAAAAbfQAAAAAAABx9AAAAAAAAAAAAABx9AAAAAAAAHX0AAAAAAAAAAAAA",
1380  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAATfQAAAAAAABN9AAAAAAAAAAAAAAAA8L8"
1381  				],
1382  				[
1383  					224,
1384  					1,
1385  					"insert",
1386  					{
1387  						"characters": "s"
1388  					},
1389  					"AQAAAB19AAAAAAAAHn0AAAAAAAAAAAAA",
1390  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAdfQAAAAAAAB19AAAAAAAAAAAAAAAA8L8"
1391  				],
1392  				[
1393  					225,
1394  					1,
1395  					"left_delete",
1396  					null,
1397  					"AQAAAB19AAAAAAAAHX0AAAAAAAABAAAAcw",
1398  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAefQAAAAAAAB59AAAAAAAAAAAAAAAA8L8"
1399  				],
1400  				[
1401  					226,
1402  					1,
1403  					"insert",
1404  					{
1405  						"characters": "y"
1406  					},
1407  					"AQAAAB19AAAAAAAAHn0AAAAAAAAAAAAA",
1408  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAdfQAAAAAAAB19AAAAAAAAAAAAAAAA8L8"
1409  				],
1410  				[
1411  					228,
1412  					2,
1413  					"anaconda_auto_format",
1414  					null,
1415  					"AQAAAAAAAAAAAAAA1pEAAAAAAADBkQAAaW1wb3J0IGltcG9ydGxpYgppbXBvcnQgcHlkZWF0aW9uLm1hdGVyaWFscwppbXBvcnRsaWIucmVsb2FkKHB5ZGVhdGlvbi5tYXRlcmlhbHMpCmZyb20gcHlkZWF0aW9uLm1hdGVyaWFscyBpbXBvcnQgRmlsbE1hdGVyaWFsLCBTa2V0Y2hNYXRlcmlhbApmcm9tIHB5ZGVhdGlvbi50YWdzIGltcG9ydCBGaWxsVGFnLCBTa2V0Y2hUYWcsIFhQcmVzc29UYWcsIEFsaWduVG9TcGxpbmVUYWcKZnJvbSBweWRlYXRpb24uY29uc3RhbnRzIGltcG9ydCBXSElURSwgU0NBTEVfWCwgU0NBTEVfWSwgU0NBTEVfWgpmcm9tIHB5ZGVhdGlvbi5hbmltYXRpb24uYW5pbWF0aW9uIGltcG9ydCBWZWN0b3JBbmltYXRpb24sIFNjYWxhckFuaW1hdGlvbiwgQ29sb3JBbmltYXRpb24KZnJvbSBweWRlYXRpb24ueHByZXNzby51c2VyZGF0YSBpbXBvcnQgKgpmcm9tIHB5ZGVhdGlvbi54cHJlc3NvLnhwcmVzc2lvbnMgaW1wb3J0IFhSZWxhdGlvbiwgWElkZW50aXR5LCBYU3BsaW5lTGVuZ3RoLCBYQm91bmRpbmdCb3gsIFhBY3Rpb24sIE1vdmVtZW50CmltcG9ydCBweWRlYXRpb24ub2JqZWN0cy5lZmZlY3Rfb2JqZWN0cyBhcyBlZmZlY3Rfb2JqZWN0cwppbXBvcnQgcHlkZWF0aW9uLm9iamVjdHMuaGVscGVyX29iamVjdHMgYXMgaGVscGVyX29iamVjdHMKaW1wb3J0IHB5ZGVhdGlvbi5vYmplY3RzLnNvbGlkX29iamVjdHMgYXMgc29saWRfb2JqZWN0cwpmcm9tIGFiYyBpbXBvcnQgQUJDLCBhYnN0cmFjdG1ldGhvZAppbXBvcnQgYzRkLnV0aWxzCmltcG9ydCBjNGQKCgpjbGFzcyBQcm90b09iamVjdChBQkMpOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lPU5vbmUsIHg9MCwgeT0wLCB6PTAsIGg9MCwgcD0wLCBiPTAsIHNjYWxlPTEsIHBvc2l0aW9uPU5vbmUsIHJvdGF0aW9uPU5vbmUsIHBsYW5lPSJ4eSIpOgogICAgICAgIHNlbGYuZG9jdW1lbnQgPSBjNGQuZG9jdW1lbnRzLkdldEFjdGl2ZURvY3VtZW50KCkgICMgZ2V0IGRvY3VtZW50CiAgICAgICAgc2VsZi5zcGVjaWZ5X29iamVjdCgpCiAgICAgICAgc2VsZi5zZXRfeHByZXNzb190YWdzKCkKICAgICAgICBzZWxmLnNldF91bmlxdWVfZGVzY19pZHMoKQogICAgICAgIHNlbGYuaW5zZXJ0X3RvX2RvY3VtZW50KCkKICAgICAgICBzZWxmLnNldF9uYW1lKG5hbWU9bmFtZSkKICAgICAgICBzZWxmLnNldF9wb3NpdGlvbih4PXgsIHk9eSwgej16LCBwb3NpdGlvbj1wb3NpdGlvbikKICAgICAgICBzZWxmLnNldF9yb3RhdGlvbihoPWgsIHA9cCwgYj1iLCByb3RhdGlvbj1yb3RhdGlvbikKICAgICAgICBzZWxmLnNldF9zY2FsZShzY2FsZT1zY2FsZSkKICAgICAgICBzZWxmLnNldF9vYmplY3RfcHJvcGVydGllcygpCiAgICAgICAgc2VsZi5wbGFuZSA9IHBsYW5lCiAgICAgICAgc2VsZi5zZXRfcGxhbmUoKQogICAgICAgIHNlbGYucmVsYXRpb25zID0gW10KICAgICAgICBzZWxmLmFjdGlvbnMgPSBbXQogICAgICAgIHNlbGYueHByZXNzaW9ucyA9IHt9ICAjIGtlZXBzIHRyYWNrIG9mIGFuaW1hdG9ycywgY29tcG9zZXJzIGV0Yy4KICAgICAgICBzZWxmLmFjY2Vzc2VkX3BhcmFtZXRlcnMgPSB7fSAgIyBrZWVwcyB0cmFjayB3aGljaCBwYXJhbWV0ZXJzIGhhdmUgQWNjZXNzQ29udHJvbAogICAgICAgIHNlbGYuaGVscGVyX29iamVjdHMgPSB7fSAgIyBrZWVwcyB0cmFjayBvZiBoZWxwZXIgb2JqZWN0cyBjcmVhdGVkIGJ5IEFuaW1hdG9ycwogICAgICAgIHNlbGYucGFyZW50ID0gTm9uZQoKICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAiIiJzZXRzIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gZm9yIHByaW50aW5nIiIiCiAgICAgICAgcmV0dXJuIHNlbGYubmFtZQoKICAgIEBhYnN0cmFjdG1ldGhvZAogICAgZGVmIHNwZWNpZnlfb2JqZWN0KHNlbGYpOgogICAgICAgIHBhc3MKCiAgICBkZWYgc2V0X3hwcmVzc29fdGFncyhzZWxmKToKICAgICAgICAiIiJpbml0aWFsaXplcyB0aGUgbmVjZXNzYXJ5IHhwcmVzc28gdGFncyBvbiB0aGUgb2JqZWN0IiIiCiAgICAgICAgIyB0aGUgY29tcG9zaXRpb24gdGFncyBob2xkIHRoZSBoaWVyYXJjaHkgb2YgY29tcG9zaXRpb25zIGFuZCBlbnN1cmUgZXhlY3V0aW9uIGZyb20gaGlnaGVzdCB0byBsb3dlc3QKICAgICAgICAjc2VsZi5jb21wb3NpdGlvbl90YWdzID0gW10KICAgICAgICAjIHRoZSBhbmltYXRvciB0YWcgaG9sZHMgdGhlIGFjdGluZyBvZiB0aGUgYW5pbWF0b3JzIG9uIHRoZSBhY3R1YWwgcGFyYW1ldGVycwogICAgICAgICMgc2V0IHByaW9yaXR5IHRvIGJlIGV4ZWN1dGVkIGxhc3QKICAgICAgICAjIHNlbGYuYW5pbWF0b3JfdGFnID0gWFByZXNzb1RhZygKICAgICAgICAjICAgIHRhcmdldD1zZWxmLCBuYW1lPSJBbmltYXRvclRhZyIsIHByaW9yaXR5PTEsIHByaW9yaXR5X21vZGU9ImV4cHJlc3Npb24iKQogICAgICAgICMgdGhlIGZyZWV6ZSB0YWcgaG9sZHMgdGhlIGZyZWV6aW5nIHhwcmVzc2lvbnMgdGhhdCBhcmUgZXhlY3V0ZWQgYmVmb3JlIHRoZSBhbmltYXRvcnMKICAgICAgICAjIHNldCBwcmlvcml0eSB0byBiZSBleGVjdXRlZCBhZnRlciBjb21wb3NpdGlvbnMgYW5kIGJlZm9yZSBhbmltYXRvcnMKICAgICAgICAjIHNlbGYuZnJlZXplX3RhZyA9IFhQcmVzc29UYWcoCiAgICAgICAgIyAgICB0YXJnZXQ9c2VsZiwgbmFtZT0iRnJlZXplVGFnIiwgcHJpb3JpdHk9MCwgcHJpb3JpdHlfbW9kZT0iYW5pbWF0aW9uIikKICAgICAgICAjIGluc2VydHMgYW4geHByZXNzbyB0YWcgdXNlZCBmb3IgY3VzdG9tIHhwcmVzc2lvbnMKICAgICAgICBzZWxmLmN1c3RvbV90YWcgPSBYUHJlc3NvVGFnKAogICAgICAgICAgICB0YXJnZXQ9c2VsZiwgbmFtZT0iQ3VzdG9tVGFnIiwgcHJpb3JpdHlfbW9kZT0iZXhwcmVzc2lvbiIpCgogICAgZGVmIGFkZF9jb21wb3NpdGlvbl90YWcoc2VsZik6CiAgICAgICAgIiIiYWRkcyBhbm90aGVyIGxheWVyIHRvIHRoZSBjb21wb3NpdGlvbiBoaWVyYXJjaHkiIiIKICAgICAgICAjIHNldCBwcmlvcml0eSBhY2NvcmRpbmcgdG8gcG9zaXRpb24gaW4gY29tcG9zaXRpb24gaGllcmFyY2h5CiAgICAgICAgdGFnX25hbWUgPSAiQ29tcG9zaXRpb25UYWciICsgc3RyKGxlbihzZWxmLmNvbXBvc2l0aW9uX3RhZ3MpKQogICAgICAgIHRhZ19wcmlvcml0eSA9IC1sZW4oc2VsZi5jb21wb3NpdGlvbl90YWdzKQogICAgICAgIGNvbXBvc2l0aW9uX3RhZyA9IFhQcmVzc29UYWcoCiAgICAgICAgICAgIHRhcmdldD1zZWxmLCBuYW1lPXRhZ19uYW1lLCBwcmlvcml0eT10YWdfcHJpb3JpdHksIHByaW9yaXR5X21vZGU9ImluaXRpYWwiKQogICAgICAgIHNlbGYuY29tcG9zaXRpb25fdGFncy5hcHBlbmQoY29tcG9zaXRpb25fdGFnKQogICAgICAgIHJldHVybiBjb21wb3NpdGlvbl90YWcub2JqCgogICAgZGVmIHNldF91bmlxdWVfZGVzY19pZHMoc2VsZik6CiAgICAgICAgIiIib3B0aW9uYWwgbWV0aG9kIHRvIG1ha2UgdW5pcXVlIGRlc2NJZHMgZWFzaWx5IGFjY2Vzc2libGUiIiIKICAgICAgICBwYXNzCgogICAgZGVmIHNldF9uYW1lKHNlbGYsIG5hbWU9Tm9uZSk6CiAgICAgICAgaWYgbmFtZSBpcyBOb25lOgogICAgICAgICAgICBzZWxmLm5hbWUgPSBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKICAgICAgICBzZWxmLm9iai5TZXROYW1lKHNlbGYubmFtZSkKCiAgICBkZWYgc2V0X3BsYW5lKHNlbGYpOgogICAgICAgICIiInNldHMgdGhlIHBsYW5lIG9mIHRoZSBjdXN0b20gb2JqZWN0IiIiCiAgICAgICAgaWYgc2VsZi5wbGFuZSA9PSAieHkiOgogICAgICAgICAgICBzZWxmLnJvdGF0ZShyb3RhdGlvbj0oMCwgMCwgMCkpCiAgICAgICAgZWxpZiBzZWxmLnBsYW5lID09ICJ5eiI6CiAgICAgICAgICAgIHNlbGYucm90YXRlKHJvdGF0aW9uPShQSSAvIDIsIDAsIDApKQogICAgICAgIGVsaWYgc2VsZi5wbGFuZSA9PSAieHoiOgogICAgICAgICAgICBzZWxmLnJvdGF0ZShyb3RhdGlvbj0oMCwgLVBJIC8gMiwgMCkpCgogICAgZGVmIHNwZWNpZnlfcGFyYW1ldGVycyhzZWxmKToKICAgICAgICAiIiJzcGVjaWZpZXMgb3B0aW9uYWwgcGFyYW1ldGVycyBmb3IgdGhlIGN1c3RvbSBvYmplY3QiIiIKICAgICAgICBwYXNzCgogICAgZGVmIGluc2VydF9wYXJhbWV0ZXJzKHNlbGYpOgogICAgICAgICIiImluc2VydHMgdGhlIHNwZWNpZmllZCBwYXJhbWV0ZXJzIGFzIHVzZXJkYXRhIiIiCiAgICAgICAgaWYgc2VsZi5wYXJhbWV0ZXJzOgogICAgICAgICAgICBzZWxmLnBhcmFtZXRlcnNfdV9ncm91cCA9IFVHcm91cCgKICAgICAgICAgICAgICAgICpzZWxmLnBhcmFtZXRlcnMsIHRhcmdldD1zZWxmLm9iaiwgbmFtZT1zZWxmLm5hbWUgKyAiUGFyYW1ldGVycyIpCgogICAgZGVmIHNwZWNpZnlfcmVsYXRpb25zKHNlbGYpOgogICAgICAgICIiInNwZWNpZmllcyB0aGUgcmVsYXRpb25zIGJldHdlZW4gdGhlIHBhcnQncyBwYXJhbWV0ZXJzIHVzaW5nIHhwcmVzc28iIiIKICAgICAgICBwYXNzCgogICAgZGVmIHNldF9wb3NpdGlvbihzZWxmLCB4PTAsIHk9MCwgej0wLCBwb3NpdGlvbj1Ob25lLCByZWxhdGl2ZT1GYWxzZSk6CiAgICAgICAgaWYgcG9zaXRpb24gaXMgTm9uZToKICAgICAgICAgICAgcG9zaXRpb24gPSBjNGQuVmVjdG9yKHgsIHksIHopCiAgICAgICAgZWxpZiB0eXBlKHBvc2l0aW9uKSBpcyBub3QgYzRkLlZlY3RvcjoKICAgICAgICAgICAgcG9zaXRpb24gPSBjNGQuVmVjdG9yKCpwb3NpdGlvbikKICAgICAgICBpZiByZWxhdGl2ZToKICAgICAgICAgICAgc2VsZi5vYmpbYzRkLklEX0JBU0VPQkpFQ1RfUE9TSVRJT05dICs9IHBvc2l0aW9uCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi5vYmpbYzRkLklEX0JBU0VPQkpFQ1RfUE9TSVRJT05dID0gcG9zaXRpb24KCiAgICBkZWYgc2V0X3JvdGF0aW9uKHNlbGYsIGg9MCwgcD0wLCBiPTAsIHJvdGF0aW9uPU5vbmUsIHJlbGF0aXZlPUZhbHNlKToKICAgICAgICBpZiByb3RhdGlvbiBpcyBOb25lOgogICAgICAgICAgICByb3RhdGlvbiA9IGM0ZC5WZWN0b3IoaCwgcCwgYikKICAgICAgICBlbGlmIHR5cGUocm90YXRpb24pIGlzIG5vdCBjNGQuVmVjdG9yOgogICAgICAgICAgICByb3RhdGlvbiA9IGM0ZC5WZWN0b3IoKnJvdGF0aW9uKQogICAgICAgIGlmIHJlbGF0aXZlOgogICAgICAgICAgICBzZWxmLm9ialtjNGQuSURfQkFTRU9CSkVDVF9ST1RBVElPTl0gKz0gcm90YXRpb24KICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLm9ialtjNGQuSURfQkFTRU9CSkVDVF9ST1RBVElPTl0gPSByb3RhdGlvbgoKICAgIGRlZiBzZXRfZnJvemVuX3JvdGF0aW9uKHNlbGYsIGg9MCwgcD0wLCBiPTAsIHJvdGF0aW9uPU5vbmUsIHJlbGF0aXZlPUZhbHNlKToKICAgICAgICBpZiByb3RhdGlvbiBpcyBOb25lOgogICAgICAgICAgICByb3RhdGlvbiA9IGM0ZC5WZWN0b3IoaCwgcCwgYikKICAgICAgICBpZiByZWxhdGl2ZToKICAgICAgICAgICAgc2VsZi5vYmpbYzRkLklEX0JBU0VPQkpFQ1RfRlJPWkVOX1JPVEFUSU9OXSArPSByb3RhdGlvbgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYub2JqW2M0ZC5JRF9CQVNFT0JKRUNUX0ZST1pFTl9ST1RBVElPTl0gPSByb3RhdGlvbgoKICAgIGRlZiBzZXRfc2NhbGUoc2VsZiwgc2NhbGU9MSwgcmVsYXRpdmU9RmFsc2UpOgogICAgICAgIGlmIHJlbGF0aXZlOgogICAgICAgICAgICBzZWxmLm9ialtjNGQuSURfQkFTRU9CSkVDVF9TQ0FMRV0gKj0gc2NhbGUKICAgICAgICBlbHNlOgogICAgICAgICAgICBzY2FsZSA9IGM0ZC5WZWN0b3Ioc2NhbGUsIHNjYWxlLCBzY2FsZSkKICAgICAgICAgICAgc2VsZi5vYmpbYzRkLklEX0JBU0VPQkpFQ1RfU0NBTEVdID0gc2NhbGUKCiAgICBkZWYgbW92ZShzZWxmLCB4PTAsIHk9MCwgej0wLCBwb3NpdGlvbj1Ob25lLCByZWxhdGl2ZT1UcnVlKToKICAgICAgICBpZiBwb3NpdGlvbiBpcyBOb25lOgogICAgICAgICAgICBwb3NpdGlvbiA9IGM0ZC5WZWN0b3IoeCwgeSwgeikKICAgICAgICBlbGlmIHR5cGUocG9zaXRpb24pIGlzIG5vdCBjNGQuVmVjdG9yOgogICAgICAgICAgICBwb3NpdGlvbiA9IGM0ZC5WZWN0b3IoKnBvc2l0aW9uKQogICAgICAgIGRlc2NyaXB0b3IgPSBjNGQuSURfQkFTRU9CSkVDVF9QT1NJVElPTgogICAgICAgIGFuaW1hdGlvbiA9IFZlY3RvckFuaW1hdGlvbigKICAgICAgICAgICAgdGFyZ2V0PXNlbGYsIGRlc2NyaXB0b3I9ZGVzY3JpcHRvciwgdmVjdG9yPXBvc2l0aW9uLCByZWxhdGl2ZT1yZWxhdGl2ZSkKICAgICAgICBpZiByZWxhdGl2ZToKICAgICAgICAgICAgc2VsZi5vYmpbZGVzY3JpcHRvcl0gKz0gcG9zaXRpb24KICAgICAgICBlbHNlOgogICAgICAgICAgICBzZWxmLm9ialtkZXNjcmlwdG9yXSA9IHBvc2l0aW9uCiAgICAgICAgcmV0dXJuIGFuaW1hdGlvbgoKICAgIGRlZiByb3RhdGUoc2VsZiwgaD0wLCBwPTAsIGI9MCwgcm90YXRpb249Tm9uZSk6CiAgICAgICAgaWYgcm90YXRpb24gaXMgTm9uZToKICAgICAgICAgICAgcm90YXRpb24gPSBjNGQuVmVjdG9yKGgsIHAsIGIpCiAgICAgICAgZWxpZiB0eXBlKHJvdGF0aW9uKSBpcyBub3QgYzRkLlZlY3RvcjoKICAgICAgICAgICAgcm90YXRpb24gPSBjNGQuVmVjdG9yKCpyb3RhdGlvbikKICAgICAgICBkZXNjcmlwdG9yID0gYzRkLklEX0JBU0VPQkpFQ1RfUk9UQVRJT04KICAgICAgICBhbmltYXRpb24gPSBWZWN0b3JBbmltYXRpb24oCiAgICAgICAgICAgIHRhcmdldD1zZWxmLCBkZXNjcmlwdG9yPWRlc2NyaXB0b3IsIHZlY3Rvcj1yb3RhdGlvbiwgcmVsYXRpdmU9VHJ1ZSkKICAgICAgICBzZWxmLm9ialtkZXNjcmlwdG9yXSArPSByb3RhdGlvbgogICAgICAgIHJldHVybiBhbmltYXRpb24KCiAgICBkZWYgc2NhbGUoc2VsZiwgeD0wLCB5PTAsIHo9MCwgc2NhbGU9Tm9uZSk6CiAgICAgICAgaWYgc2NhbGUgaXMgTm9uZToKICAgICAgICAgICAgc2NhbGUgPSBjNGQuVmVjdG9yKHgsIHksIHopCiAgICAgICAgZWxpZiB0eXBlKHNjYWxlKSBpbiAodHVwbGUsIGxpc3QpOgogICAgICAgICAgICBzY2FsZSA9IGM0ZC5WZWN0b3IoKnNjYWxlKQogICAgICAgIGVsaWYgdHlwZShzY2FsZSkgaW4gKGludCwgZmxvYXQpOgogICAgICAgICAgICBzY2FsZSA9IGM0ZC5WZWN0b3Ioc2NhbGUsIHNjYWxlLCBzY2FsZSkKICAgICAgICBkZXNjcmlwdG9yID0gYzRkLklEX0JBU0VPQkpFQ1RfU0NBTEUKICAgICAgICBhbmltYXRpb24gPSBWZWN0b3JBbmltYXRpb24oCiAgICAgICAgICAgIHRhcmdldD1zZWxmLCBkZXNjcmlwdG9yPWRlc2NyaXB0b3IsIHZlY3Rvcj1zY2FsZSwgcmVsYXRpdmU9VHJ1ZSwgbXVsdGlwbGljYXRpdmU9VHJ1ZSkKICAgICAgICBzZWxmLm9ialtkZXNjcmlwdG9yXSArPSBzY2FsZQogICAgICAgIHJldHVybiBhbmltYXRpb24KCiAgICBkZWYgaW5zZXJ0X3RvX2RvY3VtZW50KHNlbGYpOgogICAgICAgIHNlbGYuZG9jdW1lbnQuSW5zZXJ0T2JqZWN0KHNlbGYub2JqKQoKICAgIGRlZiBnZXRfc2VnbWVudF9jb3VudChzZWxmKToKICAgICAgICAjIHJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgc3BsaW5lIG9yIGEgc3BlY2lmaWMgc2VnbWVudAogICAgICAgIHNwbGluZV9oZWxwID0gYzRkLnV0aWxzLlNwbGluZUhlbHAoKQogICAgICAgIHNwbGluZV9oZWxwLkluaXRTcGxpbmVXaXRoKHNlbGYub2JqKQogICAgICAgIHNlZ21lbnRfY291bnQgPSBzcGxpbmVfaGVscC5HZXRTZWdtZW50Q291bnQoKQogICAgICAgIHJldHVybiBzZWdtZW50X2NvdW50CgogICAgZGVmIGdldF9sZW5ndGgoc2VsZiwgc2VnbWVudD1Ob25lKToKICAgICAgICAjIHJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgc3BsaW5lIG9yIGEgc3BlY2lmaWMgc2VnbWVudAogICAgICAgIHNwbGluZV9oZWxwID0gYzRkLnV0aWxzLlNwbGluZUhlbHAoKQogICAgICAgIHNwbGluZV9oZWxwLkluaXRTcGxpbmVXaXRoKHNlbGYub2JqKQoKICAgICAgICBpZiBzZWdtZW50OgogICAgICAgICAgICBzZWdtZW50X2xlbmd0aCA9IHNwbGluZV9oZWxwLkdldFNlZ21lbnRMZW5ndGgoc2VnbWVudCkKICAgICAgICAgICAgcmV0dXJuIHNlZ21lbnRfbGVuZ3RoCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc3BsaW5lX2xlbmd0aCA9IHNwbGluZV9oZWxwLkdldFNwbGluZUxlbmd0aCgpCiAgICAgICAgICAgIHJldHVybiBzcGxpbmVfbGVuZ3RoCgogICAgZGVmIGdldF9zcGxpbmVfc2VnbWVudF9sZW5ndGhzKHNlbGYpOgogICAgICAgICMgZ2V0IHRoZSBsZW5ndGggb2YgZWFjaCBzZWdtZW50CiAgICAgICAgc2VnbWVudF9sZW5ndGhzID0gW10KICAgICAgICBmb3IgaSBpbiByYW5nZShzZWxmLmdldF9zZWdtZW50X2NvdW50KCkpOgogICAgICAgICAgICBzZWdtZW50X2xlbmd0aHMuYXBwZW5kKHNlbGYuZ2V0X2xlbmd0aChzZWdtZW50PWkpKQogICAgICAgIHJldHVybiBzZWdtZW50X2xlbmd0aHMKCiAgICBkZWYgc2V0X29iamVjdF9wcm9wZXJ0aWVzKHNlbGYpOgogICAgICAgICIiInVzZWQgdG8gc2V0IHRoZSB1bmlxdWUgcHJvcGVydGllcyBvZiBhIHNwZWNpZmljIG9iamVjdCIiIgogICAgICAgIHBhc3MKCiAgICBkZWYgc29ydF9yZWxhdGlvbnNfYnlfcHJpb3JpdHkoc2VsZik6CiAgICAgICAgIiIic29ydHMgdGhlIHJlbGF0aW9ucyBieSBwcmlvcml0eSIiIgoKICAgICAgICAjIHJpZ2h0IG5vdyBpdCBvbHkgZW5zdXJlcyB0aGF0IHRoZSBhY3Rpb25zIGFyZSBpbnNlcnRlZCBhYm92ZSB0aGUgcmVsYXRpb25zCiAgICAgICAgIyBpbiB0aGUgZnV0dXJlIHdlIHdpbGwgaW1wbGVtZW50IHByaW9yaXR5IGFuZCBzb3J0aW5nIGJ5IHN1Yi14cHJlc3Npb24gZGVwZW5kZW5jaWVzCgogICAgICAgICMgZ2V0IG5vZGUgbWFzdGVyCiAgICAgICAgbWFzdGVyID0gc2VsZi5jdXN0b21fdGFnLm9iai5HZXROb2RlTWFzdGVyKCkKICAgICAgICBwYXJlbnQgPSBtYXN0ZXIuR2V0Um9vdCgpCgogICAgICAgICIiIgogICAgICAgICMgcmVzb3J0IGJ5IHBhcmVudCByZWZlcmVuY2UKICAgICAgICBmb3IgcmVsYXRpb24gaW4gc2VsZi5yZWxhdGlvbnM6CiAgICAgICAgICAgIGlmIHJlbGF0aW9uLnBhcmVudDoKICAgICAgICAgICAgICAgIHNlbGYucmVsYXRpb25zLnJlbW92ZShyZWxhdGlvbikKICAgICAgICAgICAgICAgIHBhcmVudF9pZHggPSBzZWxmLnJlbGF0aW9ucy5pbmRleChyZWxhdGlvbi5wYXJlbnQpCiAgICAgICAgICAgICAgICBzZWxmLnJlbGF0aW9ucy5pbnNlcnQocGFyZW50X2lkeCwgcmVsYXRpb24pCiAgICAgICAgZm9yIGFjdGlvbiBpbiBzZWxmLmFjdGlvbnM6CiAgICAgICAgICAgIGlmIGFjdGlvbi5wYXJlbnQ6CiAgICAgICAgICAgICAgICBzZWxmLmFjdGlvbnMucmVtb3ZlKGFjdGlvbikKICAgICAgICAgICAgICAgIHBhcmVudF9pZHggPSBzZWxmLmFjdGlvbnMuaW5kZXgoYWN0aW9uLnBhcmVudCkKICAgICAgICAgICAgICAgIHNlbGYuYWN0aW9ucy5pbnNlcnQocGFyZW50X2lkeCwgYWN0aW9uKQogICAgICAgICIiIgogICAgICAgIGlmIHNlbGYucmVsYXRpb25zOgogICAgICAgICAgICBmb3IgcmVsYXRpb24gaW4gc2VsZi5yZWxhdGlvbnM6CiAgICAgICAgICAgICAgICBtYXN0ZXIuSW5zZXJ0Rmlyc3QocGFyZW50LCByZWxhdGlvbi5vYmopCiAgICAgICAgaWYgc2VsZi5hY3Rpb25zOgogICAgICAgICAgICBmb3IgYWN0aW9uIGluIHNlbGYuYWN0aW9uczoKICAgICAgICAgICAgICAgIG1hc3Rlci5JbnNlcnRGaXJzdChwYXJlbnQsIGFjdGlvbi5vYmopCgoKY2xhc3MgVmlzaWJsZU9iamVjdChQcm90b09iamVjdCk6CiAgICAjIHZpc2libGUgb2JqZWN0cwoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2aXNpYmxlPVRydWUsIGNyZWF0aW9uPTAsICoqa3dhcmdzKToKICAgICAgICBzdXBlcigpLl9faW5pdF9fKCoqa3dhcmdzKQogICAgICAgIHNlbGYuY3JlYXRpb24gPSBjcmVhdGlvbgogICAgICAgIHNlbGYudmlzaWJsZSA9IHZpc2libGUKICAgICAgICBzZWxmLnNwZWNpZnlfdmlzaWJpbGl0eV9wYXJhbWV0ZXIoKQogICAgICAgIHNlbGYuaW5zZXJ0X3Zpc2liaWxpdHlfcGFyYW1ldGVyKCkKICAgICAgICBzZWxmLnNwZWNpZnlfdmlzaWJpbGl0eV9yZWxhdGlvbigpCiAgICAgICAgc2VsZi5zcGVjaWZ5X2xpdmVfYm91bmRpbmdfYm94X3BhcmFtZXRlcnMoKQogICAgICAgIHNlbGYuaW5zZXJ0X2xpdmVfYm91bmRpbmdfYm94X3BhcmFtZXRlcnMoKQogICAgICAgIHNlbGYuc3BlY2lmeV9saXZlX2JvdW5kaW5nX2JveF9yZWxhdGlvbigpCiAgICAgICAgc2VsZi5hZGRfYm91bmRpbmdfYm94X2luZm9ybWF0aW9uKCkKCiAgICBkZWYgc3BlY2lmeV9hY3Rpb25fcGFyYW1ldGVycyhzZWxmKToKICAgICAgICBwYXNzCgogICAgZGVmIHNwZWNpZnlfY3JlYXRpb25fcGFyYW1ldGVyKHNlbGYpOgogICAgICAgIHNlbGYuY3JlYXRpb25fcGFyYW1ldGVyID0gVUNvbXBsZXRpb24oCiAgICAgICAgICAgIG5hbWU9IkNyZWF0aW9uIiwgZGVmYXVsdF92YWx1ZT1zZWxmLmNyZWF0aW9uKQogICAgICAgIHNlbGYuYWN0aW9uX3BhcmFtZXRlcnMgKz0gW3NlbGYuY3JlYXRpb25fcGFyYW1ldGVyXQoKICAgIGRlZiBpbnNlcnRfYWN0aW9uX3BhcmFtZXRlcnMoc2VsZik6CiAgICAgICAgIiIiaW5zZXJ0cyB0aGUgc3BlY2lmaWVkIGFjdGlvbl9wYXJhbWV0ZXJzIGFzIHVzZXJkYXRhIiIiCiAgICAgICAgaWYgc2VsZi5hY3Rpb25fcGFyYW1ldGVyczoKICAgICAgICAgICAgc2VsZi5hY3Rpb25zX3VfZ3JvdXAgPSBVR3JvdXAoCiAgICAgICAgICAgICAgICAqc2VsZi5hY3Rpb25fcGFyYW1ldGVycywgdGFyZ2V0PXNlbGYub2JqLCBuYW1lPXNlbGYubmFtZSArICJBY3Rpb25zIikKCiAgICBkZWYgc3BlY2lmeV9hY3Rpb25zKHNlbGYpOgogICAgICAgICIiInNwZWNpZmllcyBhY3Rpb25zIHRoYXQgY29vcmRpbmF0ZSBwYXJhbWV0ZXJzIiIiCiAgICAgICAgcGFzcwoKICAgIGRlZiBzcGVjaWZ5X2NyZWF0aW9uKHNlbGYpOgogICAgICAgICIiInNwZWNpZmllcyB0aGUgY3JlYXRpb24gYWN0aW9uIiIiCiAgICAgICAgcGFzcwoKICAgIGRlZiBnZXRfY2xvbmUoc2VsZik6CiAgICAgICAgIiIiY2xvbmVzIGFuIG9iamVjdCBhbmQgaW5zZXJ0cyBpdCBpbnRvIHRoZSBzY2VuZSIiIgogICAgICAgIGNsb25lID0gc2VsZi5vYmouR2V0Q2xvbmUoKQogICAgICAgIHNlbGYuZG9jdW1lbnQuSW5zZXJ0T2JqZWN0KGNsb25lKQogICAgICAgIHJldHVybiBjbG9uZQoKICAgIGRlZiBnZXRfZWRpdGFibGUoc2VsZik6CiAgICAgICAgIiIicmV0dXJucyBhbiBlZGl0YWJsZSBjbG9uZSBvZiB0aGUgb2JqZWN0IiIiCiAgICAgICAgY2xvbmUgPSBzZWxmLmdldF9jbG9uZSgpCiAgICAgICAgZWRpdGFibGVfY2xvbmUgPSBjNGQudXRpbHMuU2VuZE1vZGVsaW5nQ29tbWFuZChjb21tYW5kPWM0ZC5NQ09NTUFORF9NQUtFRURJVEFCTEUsIGxpc3Q9WwogICAgICAgICAgICBjbG9uZV0sIG1vZGU9YzRkLk1PREVMSU5HQ09NTUFORE1PREVfQUxMLCBkb2M9c2VsZi5kb2N1bWVudClbMF0KICAgICAgICByZXR1cm4gZWRpdGFibGVfY2xvbmUKCiAgICBkZWYgYXR0YWNoX3RvKHNlbGYsIHRhcmdldCwgZGlyZWN0aW9uPSJmcm9udCIsIG9mZnNldD0wKToKICAgICAgICAiIiJwbGFjZXMgdGhlIG9iamVjdCBzdWNoIHRoYXQgdGhlIGJvdW5kaW5nIGJveGVzIHRvdWNoIGFsb25nIGEgZ2l2ZW4gZGlyZWN0aW9uIGFuZCBtYWtlcyBvYmplY3QgY2hpbGQgb2YgdGFyZ2V0IiIiCiAgICAgICAgYm91bmRpbmdfYm94ID0gc2VsZi5vYmouR2V0UmFkKCkKICAgICAgICBib3VuZGluZ19ib3hfcG9zaXRpb24gPSBzZWxmLm9iai5HZXRNcCgpCiAgICAgICAgYm91bmRpbmdfYm94X3RhcmdldCA9IHRhcmdldC5vYmouR2V0UmFkKCkKICAgICAgICBib3VuZGluZ19ib3hfcG9zaXRpb25fdGFyZ2V0ID0gdGFyZ2V0Lm9iai5HZXRNcCgpCiAgICAgICAgbmV3X3Bvc2l0aW9uID0gYm91bmRpbmdfYm94X3Bvc2l0aW9uX3RhcmdldCAtIGJvdW5kaW5nX2JveF9wb3NpdGlvbgogICAgICAgIGlmIGRpcmVjdGlvbiA9PSAidG9wIjoKICAgICAgICAgICAgbmV3X3Bvc2l0aW9uLnkgKz0gYm91bmRpbmdfYm94X3RhcmdldC55ICsgYm91bmRpbmdfYm94LnkgKyBvZmZzZXQKICAgICAgICBpZiBkaXJlY3Rpb24gPT0gImJvdHRvbSI6CiAgICAgICAgICAgIG5ld19wb3NpdGlvbi55IC09IGJvdW5kaW5nX2JveF90YXJnZXQueSArIGJvdW5kaW5nX2JveC55ICsgb2Zmc2V0CiAgICAgICAgaWYgZGlyZWN0aW9uID09ICJsZWZ0IjoKICAgICAgICAgICAgbmV3X3Bvc2l0aW9uLnggLT0gYm91bmRpbmdfYm94X3RhcmdldC54ICsgYm91bmRpbmdfYm94LnggKyBvZmZzZXQKICAgICAgICBpZiBkaXJlY3Rpb24gPT0gInJpZ2h0IjoKICAgICAgICAgICAgbmV3X3Bvc2l0aW9uLnggKz0gYm91bmRpbmdfYm94X3RhcmdldC54ICsgYm91bmRpbmdfYm94LnggKyBvZmZzZXQKICAgICAgICBpZiBkaXJlY3Rpb24gPT0gImZyb250IjoKICAgICAgICAgICAgbmV3X3Bvc2l0aW9uLnogLT0gYm91bmRpbmdfYm94X3RhcmdldC56ICsgYm91bmRpbmdfYm94LnogKyBvZmZzZXQKICAgICAgICBpZiBkaXJlY3Rpb24gPT0gImJhY2siOgogICAgICAgICAgICBuZXdfcG9zaXRpb24ueiArPSBib3VuZGluZ19ib3hfdGFyZ2V0LnogKyBib3VuZGluZ19ib3gueiArIG9mZnNldAogICAgICAgIGlmIGRpcmVjdGlvbiA9PSAiY2VudGVyIjoKICAgICAgICAgICAgbmV3X3Bvc2l0aW9uID0gYm91bmRpbmdfYm94X3Bvc2l0aW9uX3RhcmdldCAtIGJvdW5kaW5nX2JveF9wb3NpdGlvbgogICAgICAgIHNlbGYub2JqLkluc2VydFVuZGVyKHRhcmdldC5vYmopCiAgICAgICAgc2VsZi5zZXRfcG9zaXRpb24ocG9zaXRpb249bmV3X3Bvc2l0aW9uKQoKICAgIGRlZiBzcGVjaWZ5X3Zpc2liaWxpdHlfcGFyYW1ldGVyKHNlbGYpOgogICAgICAgICIiInNwZWNpZmllcyB2aXNpYmlsaXR5IHBhcmFtZXRlciIiIgogICAgICAgIHNlbGYudmlzaWJpbGl0eV9wYXJhbWV0ZXIgPSBVQ2hlY2tCb3goCiAgICAgICAgICAgIG5hbWU9IlZpc2liaWxpdHkiLCBkZWZhdWx0X3ZhbHVlPXNlbGYudmlzaWJsZSkKCiAgICBkZWYgaW5zZXJ0X3Zpc2liaWxpdHlfcGFyYW1ldGVyKHNlbGYpOgogICAgICAgICIiImluc2VydHMgdGhlIHZpc2liaWxpdHkgcGFyYW1ldGVyIGFzIHVzZXJkYXRhIiIiCiAgICAgICAgc2VsZi52aXNpYmlsaXR5X3VfZ3JvdXAgPSBVR3JvdXAoCiAgICAgICAgICAgIHNlbGYudmlzaWJpbGl0eV9wYXJhbWV0ZXIsIHRhcmdldD1zZWxmLm9iaiwgbmFtZT0iVmlzaWJpbGl0eSIpCgogICAgZGVmIHNwZWNpZnlfdmlzaWJpbGl0eV9yZWxhdGlvbihzZWxmKToKICAgICAgICAiIiJsaW5rIHBhcmFtZXRlciB0byB2aXNpYmlsaXR5IiIiCiAgICAgICAgdmlzaWJpbGl0eV9yZWxhdGlvbiA9IFhSZWxhdGlvbihwYXJ0PXNlbGYsIHdob2xlPXNlbGYsIGRlc2NfaWRzPVtjNGQuSURfQkFTRU9CSkVDVF9WSVNJQklMSVRZX0VESVRPUiwgYzRkLklEX0JBU0VPQkpFQ1RfVklTSUJJTElUWV9SRU5ERVJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycz1bc2VsZi52aXNpYmlsaXR5X3BhcmFtZXRlcl0sIGZvcm11bGE9ZiIxLXtzZWxmLnZpc2liaWxpdHlfcGFyYW1ldGVyLm5hbWV9IikKCiAgICBkZWYgc3BlY2lmeV9saXZlX2JvdW5kaW5nX2JveF9wYXJhbWV0ZXJzKHNlbGYpOgogICAgICAgICIiInNwZWNpZmllcyBib3VuZGluZyBib3ggcGFyYW1ldGVycyIiIgogICAgICAgIHNlbGYud2lkdGhfcGFyYW1ldGVyID0gVUxlbmd0aChuYW1lPSJXaWR0aCIpCiAgICAgICAgc2VsZi5oZWlnaHRfcGFyYW1ldGVyID0gVUxlbmd0aChuYW1lPSJIZWlnaHQiKQogICAgICAgIHNlbGYuZGVwdGhfcGFyYW1ldGVyID0gVUxlbmd0aChuYW1lPSJEZXB0aCIpCiAgICAgICAgc2VsZi5jZW50ZXJfcGFyYW1ldGVyID0gVVZlY3RvcihuYW1lPSJDZW50ZXIiKQogICAgICAgIHNlbGYuY2VudGVyX3hfcGFyYW1ldGVyID0gVUxlbmd0aChuYW1lPSJDZW50ZXJYIikKICAgICAgICBzZWxmLmNlbnRlcl95X3BhcmFtZXRlciA9IFVMZW5ndGgobmFtZT0iQ2VudGVyWSIpCiAgICAgICAgc2VsZi5jZW50ZXJfel9wYXJhbWV0ZXIgPSBVTGVuZ3RoKG5hbWU9IkNlbnRlcloiKQogICAgICAgIHNlbGYubGl2ZV9ib3VuZGluZ19ib3hfcGFyYW1ldGVycyA9IFtzZWxmLndpZHRoX3BhcmFtZXRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5oZWlnaHRfcGFyYW1ldGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRlcHRoX3BhcmFtZXRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jZW50ZXJfcGFyYW1ldGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNlbnRlcl94X3BhcmFtZXRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jZW50ZXJfeV9wYXJhbWV0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2VudGVyX3pfcGFyYW1ldGVyXQoKICAgIGRlZiBpbnNlcnRfbGl2ZV9ib3VuZGluZ19ib3hfcGFyYW1ldGVycyhzZWxmKToKICAgICAgICAiIiJpbnNlcnRzIHRoZSBib3VuZGluZyBib3ggcGFyYW1ldGVycyBhcyB1c2VyZGF0YSIiIgogICAgICAgIHNlbGYubGl2ZV9ib3VuZGluZ19ib3hfdV9ncm91cCA9IFVHcm91cCgKICAgICAgICAgICAgKnNlbGYubGl2ZV9ib3VuZGluZ19ib3hfcGFyYW1ldGVycywgdGFyZ2V0PXNlbGYub2JqLCBuYW1lPSJMaXZlQm91bmRpbmdCb3giKQoKICAgIGRlZiBzcGVjaWZ5X2xpdmVfYm91bmRpbmdfYm94X3JlbGF0aW9uKHNlbGYpOgogICAgICAgICIiImZlZWQgYm91bmRpbmcgYm94IGluZm9ybWF0aW9uIGludG8gcGFyYW1ldGVycyIiIgogICAgICAgIGxpdmVfYm91bmRpbmdfYm94X3JlbGF0aW9uID0gWEJvdW5kaW5nQm94KHNlbGYsIHRhcmdldD1zZWxmLCB3aWR0aF9wYXJhbWV0ZXI9c2VsZi53aWR0aF9wYXJhbWV0ZXIsIGhlaWdodF9wYXJhbWV0ZXI9c2VsZi5oZWlnaHRfcGFyYW1ldGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoX3BhcmFtZXRlcj1zZWxmLmRlcHRoX3BhcmFtZXRlciwgY2VudGVyX3BhcmFtZXRlcj1zZWxmLmNlbnRlcl9wYXJhbWV0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VudGVyX3hfcGFyYW1ldGVyPXNlbGYuY2VudGVyX3hfcGFyYW1ldGVyLCBjZW50ZXJfeV9wYXJhbWV0ZXI9c2VsZi5jZW50ZXJfeV9wYXJhbWV0ZXIsIGNlbnRlcl96X3BhcmFtZXRlcj1zZWxmLmNlbnRlcl96X3BhcmFtZXRlcikKCiAgICBkZWYgYWRkX2JvdW5kaW5nX2JveF9pbmZvcm1hdGlvbihzZWxmKToKICAgICAgICBib3VuZGluZ19ib3hfY2VudGVyLCBib3VuZGluZ19yYWRpdXMgPSBjNGQudXRpbHMuR2V0QkJveCgKICAgICAgICAgICAgc2VsZi5vYmosIHNlbGYub2JqLkdldE1nKCkpCiAgICAgICAgc2VsZi53aWR0aCA9IGJvdW5kaW5nX3JhZGl1cy54ICogMgogICAgICAgIHNlbGYuaGVpZ2h0ID0gYm91bmRpbmdfcmFkaXVzLnkgKiAyCiAgICAgICAgc2VsZi5kZXB0aCA9IGJvdW5kaW5nX3JhZGl1cy56ICogMgogICAgICAgIHNlbGYuY2VudGVyID0gYm91bmRpbmdfYm94X2NlbnRlcgoKICAgIGRlZiBnZXRfY2VudGVyKHNlbGYpOgogICAgICAgICMgcmV0dXJucyB0aGUgY2VudGVyIHBvc2l0aW9uIGZyb20gdGhlIGxpdmUgYm91bmRpbmcgYm94IGluZm9ybWF0aW9uCiAgICAgICAgY2VudGVyX3Bvc2l0aW9uID0gc2VsZi5vYmouR2V0TXAoKSAqIHNlbGYub2JqLkdldE1nKCkKICAgICAgICByZXR1cm4gY2VudGVyX3Bvc2l0aW9uCgogICAgZGVmIGdldF9yYWRpdXMoc2VsZik6CiAgICAgICAgIyByZXR1cm5zIHRoZSByYWRpdXMgZnJvbSB0aGUgbGl2ZSBib3VuZGluZyBib3ggaW5mb3JtYXRpb24KICAgICAgICBfXywgcmFkaXVzID0gYzRkLnV0aWxzLkdldEJCb3goc2VsZi5vYmosIHNlbGYub2JqLkdldE1nKCkpCiAgICAgICAgcmV0dXJuIHJhZGl1cwoKICAgIGRlZiBnZXRfZGlhbWV0ZXIoc2VsZik6CiAgICAgICAgIyByZXR1cm5zIHRoZSBkaWFtZXRlciBmcm9tIHRoZSBsb25nZXN0IHJhZGl1cyBkaW1lbnNpb24KICAgICAgICByYWRpdXMgPSBzZWxmLmdldF9yYWRpdXMoKQogICAgICAgIGRpYW1ldGVyID0gbWF4KHJhZGl1cy54LCByYWRpdXMueSwgcmFkaXVzLnopICogMgogICAgICAgIHJldHVybiBkaWFtZXRlcgoKICAgIGRlZiByZWdpc3Rlcl9jb25uZWN0aW9ucyhzZWxmLCBjb25uZWN0aW9ucyk6CiAgICAgICAgIyBzYXZlcyB0aGUgY29ubmVjdGlvbnMgZm9yIGxhdGVyIGZ1bmN0aW9uYWxpdHkgb2YgVW5Db25uZWN0CiAgICAgICAgc2VsZi5jb25uZWN0aW9ucyA9IGNvbm5lY3Rpb25zCgogICAgZGVmIGNyZWF0ZShzZWxmLCBjb21wbGV0aW9uPTEpOgogICAgICAgICIiInNwZWNpZmllcyB0aGUgY3JlYXRpb24gYW5pbWF0aW9uIiIiCiAgICAgICAgZGVzY19pZCA9IHNlbGYuY3JlYXRpb25fcGFyYW1ldGVyLmRlc2NfaWQKICAgICAgICBhbmltYXRpb24gPSBTY2FsYXJBbmltYXRpb24oCiAgICAgICAgICAgIHRhcmdldD1zZWxmLCBkZXNjcmlwdG9yPWRlc2NfaWQsIHZhbHVlX2Zpbj1jb21wbGV0aW9uKQogICAgICAgIHNlbGYub2JqW2Rlc2NfaWRdID0gY29tcGxldGlvbgogICAgICAgIHJldHVybiBhbmltYXRpb24KCiAgICBkZWYgdW5fY3JlYXRlKHNlbGYsIGNvbXBsZXRpb249MCk6CiAgICAgICAgIiIic3BlY2lmaWVzIHRoZSB1bmNyZWF0aW9uIGFuaW1hdGlvbiIiIgogICAgICAgIGRlc2NfaWQgPSBzZWxmLmNyZWF0aW9uX3BhcmFtZXRlci5kZXNjX2lkCiAgICAgICAgYW5pbWF0aW9uID0gU2NhbGFyQW5pbWF0aW9uKAogICAgICAgICAgICB0YXJnZXQ9c2VsZiwgZGVzY3JpcHRvcj1kZXNjX2lkLCB2YWx1ZV9maW49Y29tcGxldGlvbikKICAgICAgICBzZWxmLm9ialtkZXNjX2lkXSA9IGNvbXBsZXRpb24KICAgICAgICByZXR1cm4gYW5pbWF0aW9uCgogICAgZGVmIGFsaWduX3RvX3NwbGluZShzZWxmLCBzcGxpbmU9Tm9uZSk6CiAgICAgICAgc2VsZi5hbGlnbl90b19zcGxpbmVfdGFnID0gQWxpZ25Ub1NwbGluZVRhZyh0YXJnZXQ9c2VsZiwgc3BsaW5lPXNwbGluZSkKCiAgICBkZWYgd3JhcF9hcm91bmQoc2VsZiwgdGFyZ2V0PU5vbmUpOgogICAgICAgIHNlbGYuc2hyaW5rX3dyYXAgPSBoZWxwZXJfb2JqZWN0cy5TaHJpbmtXcmFwKHRhcmdldD10YXJnZXQpCiAgICAgICAgc2VsZi5zaHJpbmtfd3JhcC5vYmouSW5zZXJ0VW5kZXIoc2VsZi5vYmopCgogICAgZGVmIG1vdmVfYXhpcyhzZWxmLCBwb3NpdGlvbj0oMCwgMCwgMCkpOgogICAgICAgICIiIm1vdmVzIHRoZSBheGlzIHdpdGhvdXQgbW92aW5nIHRoZSBnZW9tZXRyeSIiIgogICAgICAgIHZlYyA9IGM0ZC5WZWN0b3IoKnBvc2l0aW9uKQogICAgICAgIHByaW50KHZlYykKICAgICAgICBwcmludChwb3NpdGlvbikKICAgICAgICBwb2ludHMgPSBzZWxmLm9iai5HZXRBbGxQb2ludHMoKQogICAgICAgIGZvciBpLCBwb2ludCBpbiBlbnVtZXJhdGUocG9pbnRzKToKICAgICAgICAgICAgcG9pbnRzW2ldID0gcG9pbnQgLSB2ZWMKICAgICAgICAgICAgaWYgaSA8IDM6CiAgICAgICAgICAgICAgICBwcmludChwb2ludHNbaV0gLSBwb2ludCkKICAgICAgICBzZWxmLm9iai5TZXRBYnNQb3Moc2VsZi5vYmouR2V0QWJzUG9zKCkgKyB2ZWMpCiAgICAgICAgc2VsZi5vYmouU2V0QWxsUG9pbnRzKHBvaW50cykKICAgICAgICBzZWxmLm9iai5NZXNzYWdlKGM0ZC5NU0dfVVBEQVRFKQogICAgICAgIGM0ZC5FdmVudEFkZCgpCgoKY2xhc3MgQ3VzdG9tT2JqZWN0KFZpc2libGVPYmplY3QpOgogICAgIiIidGhpcyBjbGFzcyBpcyB1c2VkIHRvIGNyZWF0ZSBjdXN0b20gb2JqZWN0cyB0aGF0IGFyZSBiYXNpY2FsbHkKICAgIGdyb3VwcyB3aXRoIGNvdXBsaW5nIG9mIHRoZSBjaGlsZHJlbnMgcGFyYW1ldGVycyB0aHJvdWdoIHhwcmVzc28iIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgZGlhbWV0ZXI9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgIHN1cGVyKCkuX19pbml0X18oKiprd2FyZ3MpCiAgICAgICAgc2VsZi5wYXJ0cyA9IFtdCiAgICAgICAgc2VsZi5zcGVjaWZ5X3BhcnRzKCkKICAgICAgICBzZWxmLmluc2VydF9wYXJ0cygpCiAgICAgICAgc2VsZi5wYXJhbWV0ZXJzID0gW10KICAgICAgICBzZWxmLnNwZWNpZnlfcGFyYW1ldGVycygpCiAgICAgICAgc2VsZi5pbnNlcnRfcGFyYW1ldGVycygpCiAgICAgICAgc2VsZi5zcGVjaWZ5X3JlbGF0aW9ucygpCiAgICAgICAgc2VsZi5hY3Rpb25fcGFyYW1ldGVycyA9IFtdCiAgICAgICAgc2VsZi5zcGVjaWZ5X2FjdGlvbl9wYXJhbWV0ZXJzKCkKICAgICAgICBzZWxmLnNwZWNpZnlfY3JlYXRpb25fcGFyYW1ldGVyKCkKICAgICAgICBzZWxmLmluc2VydF9hY3Rpb25fcGFyYW1ldGVycygpCiAgICAgICAgc2VsZi5zcGVjaWZ5X2FjdGlvbnMoKQogICAgICAgIHNlbGYuc3BlY2lmeV9jcmVhdGlvbigpCiAgICAgICAgc2VsZi5kaWFtZXRlciA9IGRpYW1ldGVyCiAgICAgICAgc2VsZi5hZGRfYm91bmRpbmdfYm94X2luZm9ybWF0aW9uKCkKICAgICAgICBzZWxmLnNwZWNpZnlfYm91bmRpbmdfYm94X3BhcmFtZXRlcnMoKQogICAgICAgIHNlbGYuaW5zZXJ0X2JvdW5kaW5nX2JveF9wYXJhbWV0ZXJzKCkKICAgICAgICBzZWxmLnNwZWNpZnlfYm91bmRpbmdfYm94X3JlbGF0aW9ucygpCiAgICAgICAgc2VsZi5zcGVjaWZ5X3Zpc2liaWxpdHlfaW5oZXJpdGFuY2VfcmVsYXRpb25zKCkKICAgICAgICBzZWxmLnNwZWNpZnlfcG9zaXRpb25faW5oZXJpdGFuY2UoKQogICAgICAgIHNlbGYuc29ydF9yZWxhdGlvbnNfYnlfcHJpb3JpdHkoKQoKICAgIGRlZiBzcGVjaWZ5X2NyZWF0aW9uKHNlbGYpOgogICAgICAgICIiInVzZWQgdG8gc3BlY2lmeSB0aGUgdW5pcXVlIGNyZWF0aW9uIGFuaW1hdGlvbiBmb3IgZWFjaCBpbmRpdmlkdWFsIGN1c3RvbSBvYmplY3QiIiIKICAgICAgICBwYXNzCgogICAgZGVmIGluaGVyaXRfY3JlYXRpb24oc2VsZik6CiAgICAgICAgIiIiaW5oZXJpdGluZyBjcmVhdGlvbiBmcm9tIHBhcnRzIiIiCiAgICAgICAgbW92ZW1lbnRzID0gW01vdmVtZW50KHBhcnQuY3JlYXRpb25fcGFyYW1ldGVyLCAoMCwgMSksIHBhcnQ9cGFydCkKICAgICAgICAgICAgICAgICAgICAgZm9yIHBhcnQgaW4gc2VsZi5wYXJ0c10KICAgICAgICBzZWxmLmNyZWF0aW9uX2FjdGlvbiA9IFhBY3Rpb24oKm1vdmVtZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PXNlbGYsIGNvbXBsZXRpb25fcGFyYW1ldGVyPXNlbGYuY3JlYXRpb25fcGFyYW1ldGVyLCBuYW1lPSJDcmVhdGlvbiIpCgogICAgZGVmIHNwZWNpZnlfcG9zaXRpb25faW5oZXJpdGFuY2Uoc2VsZik6CiAgICAgICAgIiIidXNlZCB0byBzcGVjaWZ5IGhvdyB0aGUgcG9zaXRpb24gc2hvdWxkIGJlIGRldGVybWluZWQiIiIKICAgICAgICBwYXNzCgogICAgQGFic3RyYWN0bWV0aG9kCiAgICBkZWYgc3BlY2lmeV9wYXJ0cyhzZWxmKToKICAgICAgICAiIiJzYXZlIHBhcnRzIGFzIGF0dHJpYnV0ZXMgYW5kIHdyaXRlIHRoZW0gdG8gc2VsZi5wYXJ0cyIiIgogICAgICAgIHBhc3MKCiAgICBkZWYgaW5zZXJ0X3BhcnRzKHNlbGYpOgogICAgICAgICIiImluc2VydHMgdGhlIHBhcnRzIGFzIGNoaWxkcmVuIiIiCiAgICAgICAgZm9yIHBhcnQgaW4gc2VsZi5wYXJ0czoKICAgICAgICAgICAgIyBjaGVjayBpZiBwYXJ0IGlzIG5vdCBhbHJlYWR5IGNoaWxkIHNvIGV4aXN0aW5nIGhpZXJhcmNoaWVzIHdvbid0IGJlIGRpc3R1cmJlZAogICAgICAgICAgICBpZiBub3QgcGFydC5vYmouR2V0VXAoKToKICAgICAgICAgICAgICAgIHBhcnQub2JqLkluc2VydFVuZGVyKHNlbGYub2JqKQogICAgICAgICAgICAgICAgcGFydC5wYXJlbnQgPSBzZWxmCiAgICAgICAgICAgICMgY2hlY2sgZm9yIG1lbWJyYW5lcwogICAgICAgICAgICBpZiBoYXNhdHRyKHBhcnQsICJtZW1icmFuZSIpOgogICAgICAgICAgICAgICAgcGFydC5tZW1icmFuZS5vYmouSW5zZXJ0VW5kZXIoc2VsZi5vYmopCiAgICAgICAgICAgICAgICBwYXJ0Lm1lbWJyYW5lLnBhcmVudCA9IHNlbGYKCiAgICBkZWYgc3BlY2lmeV9vYmplY3Qoc2VsZik6CiAgICAgICAgc2VsZi5vYmogPSBjNGQuQmFzZU9iamVjdChjNGQuT251bGwpCgogICAgZGVmIHNwZWNpZnlfdmlzaWJpbGl0eV9pbmhlcml0YW5jZV9yZWxhdGlvbnMoc2VsZik6CiAgICAgICAgIiIiaW5oZXJpdHMgdmlzaWJpbGl0eSB0byBwYXJ0cyIiIgogICAgICAgIHZpc2liaWxpdHlfcmVsYXRpb25zID0gW10KICAgICAgICBmb3IgcGFydCBpbiBzZWxmLnBhcnRzOgogICAgICAgICAgICBpZiBoYXNhdHRyKHBhcnQsICJ2aXNpYmlsaXR5X3BhcmFtZXRlciIpIGFuZCBub3QgaXNpbnN0YW5jZShwYXJ0LCBlZmZlY3Rfb2JqZWN0cy5Nb3JwaGVyKToKICAgICAgICAgICAgICAgIHZpc2liaWxpdHlfcmVsYXRpb24gPSBYSWRlbnRpdHkoCiAgICAgICAgICAgICAgICAgICAgcGFydD1wYXJ0LCB3aG9sZT1zZWxmLCBkZXNjX2lkcz1bcGFydC52aXNpYmlsaXR5X3BhcmFtZXRlci5kZXNjX2lkXSwgcGFyYW1ldGVyPXNlbGYudmlzaWJpbGl0eV9wYXJhbWV0ZXIsIG5hbWU9IlZpc2liaWxpdHlJbmhlcml0YW5jZSIpCiAgICAgICAgICAgICAgICB2aXNpYmlsaXR5X3JlbGF0aW9ucy5hcHBlbmQodmlzaWJpbGl0eV9yZWxhdGlvbikKCiAgICBkZWYgc3BlY2lmeV9ib3VuZGluZ19ib3hfcGFyYW1ldGVycyhzZWxmKToKICAgICAgICAiIiJzcGVjaWZpZXMgYm91bmRpbmcgYm94IHBhcmFtZXRlcnMiIiIKICAgICAgICBkZWZhdWx0X2RpYW1ldGVyID0gc2VsZi5kaWFtZXRlciBpZiBzZWxmLmRpYW1ldGVyIGVsc2UgbWF4KAogICAgICAgICAgICBzZWxmLndpZHRoLCBzZWxmLmhlaWdodCwgc2VsZi5kZXB0aCkKICAgICAgICBzZWxmLmRpYW1ldGVyX3BhcmFtZXRlciA9IFVMZW5ndGgoCiAgICAgICAgICAgIG5hbWU9IkRpYW1ldGVyIiwgZGVmYXVsdF92YWx1ZT1kZWZhdWx0X2RpYW1ldGVyKQogICAgICAgIHNlbGYuZGVmYXVsdF93aWR0aF9wYXJhbWV0ZXIgPSBVTGVuZ3RoKAogICAgICAgICAgICBuYW1lPSJEZWZhdWx0V2lkdGgiLCBkZWZhdWx0X3ZhbHVlPXNlbGYud2lkdGgpCiAgICAgICAgc2VsZi5kZWZhdWx0X2hlaWdodF9wYXJhbWV0ZXIgPSBVTGVuZ3RoKAogICAgICAgICAgICBuYW1lPSJEZWZhdWx0SGVpZ2h0IiwgZGVmYXVsdF92YWx1ZT1zZWxmLmhlaWdodCkKICAgICAgICBzZWxmLmRlZmF1bHRfZGVwdGhfcGFyYW1ldGVyID0gVUxlbmd0aCgKICAgICAgICAgICAgbmFtZT0iRGVmYXVsdERlcHRoIiwgZGVmYXVsdF92YWx1ZT1zZWxmLmRlcHRoKQogICAgICAgIHNlbGYuYm91bmRpbmdfYm94X3BhcmFtZXRlcnMgPSBbc2VsZi5kaWFtZXRlcl9wYXJhbWV0ZXIsIHNlbGYuZGVmYXVsdF93aWR0aF9wYXJhbWV0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRlZmF1bHRfaGVpZ2h0X3BhcmFtZXRlciwgc2VsZi5kZWZhdWx0X2RlcHRoX3BhcmFtZXRlcl0KCiAgICBkZWYgaW5zZXJ0X2JvdW5kaW5nX2JveF9wYXJhbWV0ZXJzKHNlbGYpOgogICAgICAgICIiImluc2VydHMgdGhlIGJvdW5kaW5nIGJveCBwYXJhbWV0ZXJzIiIiCiAgICAgICAgc2VsZi5ib3VuZGluZ19ib3hfdV9ncm91cCA9IFVHcm91cCgKICAgICAgICAgICAgKnNlbGYuYm91bmRpbmdfYm94X3BhcmFtZXRlcnMsIHRhcmdldD1zZWxmLm9iaiwgbmFtZT0iQm91bmRpbmdCb3giKQoKICAgIGRlZiBzcGVjaWZ5X2JvdW5kaW5nX2JveF9yZWxhdGlvbnMoc2VsZik6CiAgICAgICAgIiIiZ2l2ZXMgdGhlIGN1c3RvbSBvYmplY3QgYmFzaWMgY29udHJvbCBvdmVyIHRoZSBib3VuZGluZyBib3ggZGlhbWV0ZXIiIiIKICAgICAgICBkaWFtZXRlcl9yZWxhdGlvbiA9IFhSZWxhdGlvbihwYXJ0PXNlbGYsIHdob2xlPXNlbGYsIGRlc2NfaWRzPVtTQ0FMRV9YLCBTQ0FMRV9ZLCBTQ0FMRV9aXSwgcGFyYW1ldGVycz1bc2VsZi5kaWFtZXRlcl9wYXJhbWV0ZXIsIHNlbGYuZGVmYXVsdF93aWR0aF9wYXJhbWV0ZXIsIHNlbGYuZGVmYXVsdF9oZWlnaHRfcGFyYW1ldGVyLCBzZWxmLmRlZmF1bHRfZGVwdGhfcGFyYW1ldGVyXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtdWxhPWYie3NlbGYuZGlhbWV0ZXJfcGFyYW1ldGVyLm5hbWV9L21heCh7c2VsZi5kZWZhdWx0X3dpZHRoX3BhcmFtZXRlci5uYW1lfTttYXgoe3NlbGYuZGVmYXVsdF9oZWlnaHRfcGFyYW1ldGVyLm5hbWV9O3tzZWxmLmRlZmF1bHRfZGVwdGhfcGFyYW1ldGVyLm5hbWV9KSkiKQoKCmNsYXNzIE1lbWJyYW5lKEN1c3RvbU9iamVjdCk6CiAgICAiIiJjcmVhdGVzIGEgbWVtYnJhbmUgZm9yIGFueSBnaXZlbiBzcGxpbmUgdXNpbmcgdGhlIGV4dHJ1ZGUgYW5kIGluc3RhbmNlIG9iamVjdCIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzcGxpbmUsIHRoaWNrbmVzcz0wLCBmaWxsZWQ9MCwgY29sb3I9V0hJVEUsICoqa3dhcmdzKToKICAgICAgICBzZWxmLnNwbGluZSA9IHNwbGluZQogICAgICAgIHNlbGYudGhpY2tuZXNzID0gdGhpY2tuZXNzCiAgICAgICAgc2VsZi5maWxsZWQgPSBmaWxsZWQKICAgICAgICBzZWxmLmNvbG9yID0gY29sb3IKICAgICAgICBzdXBlcigpLl9faW5pdF9fKCoqa3dhcmdzKQogICAgICAgICMgc2VsZi5pbnNlcnRfdW5kZXJfc3BsaW5lKCkKCiAgICBkZWYgaW5zZXJ0X3VuZGVyX3NwbGluZShzZWxmKToKICAgICAgICBzZWxmLm9iai5JbnNlcnRVbmRlcihzZWxmLnNwbGluZS5vYmopCgogICAgZGVmIHNwZWNpZnlfcGFydHMoc2VsZik6CiAgICAgICAgc2VsZi5pbnN0YW5jZSA9IGhlbHBlcl9vYmplY3RzLkluc3RhbmNlKHNlbGYuc3BsaW5lKQogICAgICAgIHNlbGYuZXh0cnVkZSA9IHNvbGlkX29iamVjdHMuRXh0cnVkZShzZWxmLmluc3RhbmNlLCBjb2xvcj1zZWxmLmNvbG9yKQogICAgICAgIHNlbGYucGFydHMgKz0gW3NlbGYuZXh0cnVkZSwgc2VsZi5pbnN0YW5jZV0KCiAgICBkZWYgc3BlY2lmeV9wYXJhbWV0ZXJzKHNlbGYpOgogICAgICAgIHNlbGYudGhpY2tuZXNzX3BhcmFtZXRlciA9IFVMZW5ndGgoCiAgICAgICAgICAgIG5hbWU9IlRoaWNrbmVzc1BhcmFtZXRlciIsIGRlZmF1bHRfdmFsdWU9c2VsZi50aGlja25lc3MpCiAgICAgICAgc2VsZi5maWxsX3BhcmFtZXRlciA9IFVDb21wbGV0aW9uKAogICAgICAgICAgICBuYW1lPSJGaWxsIiwgZGVmYXVsdF92YWx1ZT1zZWxmLmZpbGxlZCkKICAgICAgICBzZWxmLnBhcmFtZXRlcnMgKz0gW3NlbGYudGhpY2tuZXNzX3BhcmFtZXRlciwgc2VsZi5maWxsX3BhcmFtZXRlcl0KCiAgICBkZWYgc3BlY2lmeV9yZWxhdGlvbnMoc2VsZik6CiAgICAgICAgdGhpY2tuZXNzX3JlbGF0aW9uID0gWElkZW50aXR5KHBhcnQ9c2VsZi5leHRydWRlLCB3aG9sZT1zZWxmLCBkZXNjX2lkcz1bc2VsZi5leHRydWRlLmRlc2NfaWRzWyJvZmZzZXQiXV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcj1zZWxmLnRoaWNrbmVzc19wYXJhbWV0ZXIpCiAgICAgICAgZmlsbF9pbmhlcml0YW5jZSA9IFhJZGVudGl0eShwYXJ0PXNlbGYuZXh0cnVkZSwgd2hvbGU9c2VsZiwgZGVzY19pZHM9W3NlbGYuZXh0cnVkZS5maWxsX3BhcmFtZXRlci5kZXNjX2lkXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcj1zZWxmLmZpbGxfcGFyYW1ldGVyKQogICAgICAgICMgbW9zcGxpbmVfY29ycmVjdGlvbiA9IFhDb3JyZWN0TW9TcGxpbmVUcmFuc2Zvcm0oCiAgICAgICAgIyAgICBzZWxmLmluc3RhbmNlLCB0YXJnZXQ9c2VsZikKCiAgICBkZWYgc3BlY2lmeV9jcmVhdGlvbihzZWxmKToKICAgICAgICBjcmVhdGlvbl9hY3Rpb24gPSBYQWN0aW9uKAogICAgICAgICAgICBNb3ZlbWVudChzZWxmLmZpbGxfcGFyYW1ldGVyLCAoMCwgMSkpLAogICAgICAgICAgICB0YXJnZXQ9c2VsZiwgY29tcGxldGlvbl9wYXJhbWV0ZXI9c2VsZi5jcmVhdGlvbl9wYXJhbWV0ZXIsIG5hbWU9IkNyZWF0aW9uIikKCiAgICBkZWYgZmlsbChzZWxmLCBvcGFjaXR5KToKICAgICAgICByZXR1cm4gc2VsZi5jcmVhdGUob3BhY2l0eSkKCiAgICBkZWYgdW5fZmlsbChzZWxmLCBvcGFjaXR5PTApOgogICAgICAgIHJldHVybiBzZWxmLmNyZWF0ZShvcGFjaXR5KQoKCmNsYXNzIExpbmVPYmplY3QoVmlzaWJsZU9iamVjdCk6CiAgICAiIiJsaW5lIG9iamVjdHMgY29uc2lzdCBvZiBzcGxpbmVzIGFuZCBvbmx5IHJlcXVpcmUgYSBza2V0Y2ggbWF0ZXJpYWwiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgY29sb3I9V0hJVEUsIHBsYW5lPSJ4eSIsIGFycm93X3N0YXJ0PUZhbHNlLCBhcnJvd19lbmQ9RmFsc2UsIGRyYXdfY29tcGxldGlvbj0wLCBvcGFjaXR5PTEsIGhlbHBlcl9tb2RlPUZhbHNlLCBkcmF3X29yZGVyPSJsb25nX3RvX3Nob3J0IiwgZmlsbGVkPUZhbHNlLCBmaWxsX2NvbG9yPU5vbmUsICoqa3dhcmdzKToKICAgICAgICBzdXBlcigpLl9faW5pdF9fKCoqa3dhcmdzKQogICAgICAgIHNlbGYuY29sb3IgPSBjb2xvcgogICAgICAgIHNlbGYucGxhbmUgPSBwbGFuZQogICAgICAgIHNlbGYuYXJyb3dfc3RhcnQgPSBhcnJvd19zdGFydAogICAgICAgIHNlbGYuYXJyb3dfZW5kID0gYXJyb3dfZW5kCiAgICAgICAgc2VsZi5kcmF3X2NvbXBsZXRpb24gPSBkcmF3X2NvbXBsZXRpb24KICAgICAgICBzZWxmLm9wYWNpdHkgPSBvcGFjaXR5CiAgICAgICAgc2VsZi5kcmF3X29yZGVyID0gZHJhd19vcmRlcgogICAgICAgIGlmIG5vdCBoZWxwZXJfbW9kZToKICAgICAgICAgICAgc2VsZi5zZXRfc2tldGNoX21hdGVyaWFsKCkKICAgICAgICAgICAgc2VsZi5zZXRfc2tldGNoX3RhZygpCiAgICAgICAgICAgIHNlbGYuc2tldGNoX3BhcmFtZXRlcl9zZXR1cCgpCiAgICAgICAgICAgIHNlbGYuc2V0X3BsYW5lKCkKICAgICAgICAgICAgc2VsZi5zcGxpbmVfbGVuZ3RoX3BhcmFtZXRlcl9zZXR1cCgpCiAgICAgICAgICAgIHNlbGYucGFyYW1ldGVycyA9IFtdCiAgICAgICAgICAgIHNlbGYuc3BlY2lmeV9wYXJhbWV0ZXJzKCkKICAgICAgICAgICAgc2VsZi5pbnNlcnRfcGFyYW1ldGVycygpCiAgICAgICAgICAgIHNlbGYuc3BlY2lmeV9yZWxhdGlvbnMoKQogICAgICAgICAgICBzZWxmLmFjdGlvbl9wYXJhbWV0ZXJzID0gW10KICAgICAgICAgICAgc2VsZi5zcGVjaWZ5X2FjdGlvbl9wYXJhbWV0ZXJzKCkKICAgICAgICAgICAgc2VsZi5zcGVjaWZ5X2NyZWF0aW9uX3BhcmFtZXRlcigpCiAgICAgICAgICAgIHNlbGYuaW5zZXJ0X2FjdGlvbl9wYXJhbWV0ZXJzKCkKICAgICAgICAgICAgc2VsZi5zcGVjaWZ5X2FjdGlvbnMoKQogICAgICAgICAgICBzZWxmLnNwZWNpZnlfY3JlYXRpb24oKQogICAgICAgICAgICBzZWxmLnNvcnRfcmVsYXRpb25zX2J5X3ByaW9yaXR5KCkKICAgICAgICBzZWxmLmZpbGxlZCA9IGZpbGxlZAogICAgICAgIHNlbGYuZmlsbF9jb2xvciA9IGZpbGxfY29sb3IKICAgICAgICBpZiBzZWxmLmZpbGxlZDoKICAgICAgICAgICAgc2VsZi5jcmVhdGVfbWVtYnJhbmUoKQoKICAgIGRlZiBjcmVhdGVfbWVtYnJhbmUoc2VsZik6CiAgICAgICAgaWYgc2VsZi5maWxsX2NvbG9yOgogICAgICAgICAgICBjb2xvciA9IHNlbGYuZmlsbF9jb2xvcgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGNvbG9yID0gc2VsZi5jb2xvcgoKICAgICAgICBzZWxmLm1lbWJyYW5lID0gTWVtYnJhbmUoCiAgICAgICAgICAgIHNlbGYsIG5hbWU9c2VsZi5uYW1lICsgIk1lbWJyYW5lIiwgY3JlYXRpb249VHJ1ZSwgY29sb3I9Y29sb3IpCgogICAgZGVmIHNwbGluZV9sZW5ndGhfcGFyYW1ldGVyX3NldHVwKHNlbGYpOgogICAgICAgIHNlbGYuc3BlY2lmeV9zcGxpbmVfbGVuZ3RoX3BhcmFtZXRlcigpCiAgICAgICAgc2VsZi5pbnNlcnRfc3BsaW5lX2xlbmd0aF9wYXJhbWV0ZXIoKQogICAgICAgIHNlbGYuc3BlY2lmeV9zcGxpbmVfbGVuZ3RoX3JlbGF0aW9uKCkKCiAgICBkZWYgc2tldGNoX3BhcmFtZXRlcl9zZXR1cChzZWxmKToKICAgICAgICBzZWxmLnNwZWNpZnlfc2tldGNoX3BhcmFtZXRlcnMoKQogICAgICAgIHNlbGYuaW5zZXJ0X3NrZXRjaF9wYXJhbWV0ZXJzKCkKICAgICAgICBzZWxmLnNwZWNpZnlfc2tldGNoX3JlbGF0aW9ucygpCgogICAgZGVmIHNwZWNpZnlfY3JlYXRpb24oc2VsZik6CiAgICAgICAgIiIic3BlY2lmaWVzIHRoZSBjcmVhdGlvbiBhY3Rpb24iIiIKICAgICAgICBjcmVhdGlvbl9hY3Rpb24gPSBYQWN0aW9uKAogICAgICAgICAgICBNb3ZlbWVudChzZWxmLmRyYXdfcGFyYW1ldGVyLCAoMCwgMSkpLAogICAgICAgICAgICB0YXJnZXQ9c2VsZiwgY29tcGxldGlvbl9wYXJhbWV0ZXI9c2VsZi5jcmVhdGlvbl9wYXJhbWV0ZXIsIG5hbWU9IkNyZWF0aW9uIikKICAgICAgICBzZWxmLmFjdGlvbnMuYXBwZW5kKGNyZWF0aW9uX2FjdGlvbikKCiAgICBkZWYgc2V0X3NrZXRjaF9tYXRlcmlhbChzZWxmKToKICAgICAgICBzZWxmLnNrZXRjaF9tYXRlcmlhbCA9IFNrZXRjaE1hdGVyaWFsKAogICAgICAgICAgICBuYW1lPXNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBkcmF3X29yZGVyPXNlbGYuZHJhd19vcmRlciwgY29sb3I9c2VsZi5jb2xvciwgYXJyb3dfc3RhcnQ9c2VsZi5hcnJvd19zdGFydCwgYXJyb3dfZW5kPXNlbGYuYXJyb3dfZW5kKQoKICAgIGRlZiBzZXRfc2tldGNoX3RhZyhzZWxmKToKICAgICAgICBzZWxmLnNrZXRjaF90YWcgPSBTa2V0Y2hUYWcodGFyZ2V0PXNlbGYsIG1hdGVyaWFsPXNlbGYuc2tldGNoX21hdGVyaWFsKQoKICAgIGRlZiBzcGVjaWZ5X3NrZXRjaF9wYXJhbWV0ZXJzKHNlbGYpOgogICAgICAgIHNlbGYuZHJhd19wYXJhbWV0ZXIgPSBVQ29tcGxldGlvbigKICAgICAgICAgICAgbmFtZT0iRHJhdyIsIGRlZmF1bHRfdmFsdWU9c2VsZi5kcmF3X2NvbXBsZXRpb24pCiAgICAgICAgc2VsZi5vcGFjaXR5X3BhcmFtZXRlciA9IFVDb21wbGV0aW9uKAogICAgICAgICAgICBuYW1lPSJPcGFjaXR5IiwgZGVmYXVsdF92YWx1ZT1zZWxmLm9wYWNpdHkpCiAgICAgICAgc2VsZi5jb2xvcl9wYXJhbWV0ZXIgPSBVQ29sb3IoCiAgICAgICAgICAgIG5hbWU9IkNvbG9yIiwgZGVmYXVsdF92YWx1ZT1zZWxmLmNvbG9yKQogICAgICAgIHNlbGYuc2tldGNoX3BhcmFtZXRlcnMgPSBbc2VsZi5kcmF3X3BhcmFtZXRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYub3BhY2l0eV9wYXJhbWV0ZXIsIHNlbGYuY29sb3JfcGFyYW1ldGVyXQoKICAgIGRlZiBpbnNlcnRfc2tldGNoX3BhcmFtZXRlcnMoc2VsZik6CiAgICAgICAgc2VsZi5kcmF3X3VfZ3JvdXAgPSBVR3JvdXAoCiAgICAgICAgICAgICpzZWxmLnNrZXRjaF9wYXJhbWV0ZXJzLCB0YXJnZXQ9c2VsZi5vYmosIG5hbWU9IlNrZXRjaCIpCgogICAgZGVmIHNwZWNpZnlfc2tldGNoX3JlbGF0aW9ucyhzZWxmKToKICAgICAgICBkcmF3X3JlbGF0aW9uID0gWElkZW50aXR5KHBhcnQ9c2VsZi5za2V0Y2hfbWF0ZXJpYWwsIHdob2xlPXNlbGYsIGRlc2NfaWRzPVtzZWxmLnNrZXRjaF9tYXRlcmlhbC5kZXNjX2lkc1siZHJhd19jb21wbGV0aW9uIl1dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyPXNlbGYuZHJhd19wYXJhbWV0ZXIpCiAgICAgICAgb3BhY2l0eV9yZWxhdGlvbiA9IFhJZGVudGl0eShwYXJ0PXNlbGYuc2tldGNoX21hdGVyaWFsLCB3aG9sZT1zZWxmLCBkZXNjX2lkcz1bc2VsZi5za2V0Y2hfbWF0ZXJpYWwuZGVzY19pZHNbIm9wYWNpdHkiXV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXI9c2VsZi5vcGFjaXR5X3BhcmFtZXRlcikKICAgICAgICBjb2xvcl9yZWxhdGlvbiA9IFhJZGVudGl0eShwYXJ0PXNlbGYuc2tldGNoX21hdGVyaWFsLCB3aG9sZT1zZWxmLCBkZXNjX2lkcz1bc2VsZi5za2V0Y2hfbWF0ZXJpYWwuZGVzY19pZHNbImNvbG9yIl1dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcj1zZWxmLmNvbG9yX3BhcmFtZXRlcikKCiAgICBkZWYgc2V0X3BsYW5lKHNlbGYpOgogICAgICAgIHBsYW5lcyA9IHsieHkiOiAwLCAienkiOiAxLCAieHoiOiAyfQogICAgICAgIHNlbGYub2JqW2M0ZC5QUklNX1BMQU5FXSA9IHBsYW5lc1tzZWxmLnBsYW5lXQoKICAgIGRlZiBzcGVjaWZ5X3NwbGluZV9sZW5ndGhfcGFyYW1ldGVyKHNlbGYpOgogICAgICAgIHNlbGYuc3BsaW5lX2xlbmd0aF9wYXJhbWV0ZXIgPSBVTGVuZ3RoKG5hbWU9IlNwbGluZUxlbmd0aCIpCgogICAgZGVmIGluc2VydF9zcGxpbmVfbGVuZ3RoX3BhcmFtZXRlcihzZWxmKToKICAgICAgICBzZWxmLnNwbGluZV9sZW5ndGhfdV9ncm91cCA9IFVHcm91cCgKICAgICAgICAgICAgc2VsZi5zcGxpbmVfbGVuZ3RoX3BhcmFtZXRlciwgdGFyZ2V0PXNlbGYub2JqLCBuYW1lPSJTcGxpbmUiKQoKICAgIGRlZiBzcGVjaWZ5X3NwbGluZV9sZW5ndGhfcmVsYXRpb24oc2VsZik6CiAgICAgICAgc2VsZi5zcGxpbmVfbGVuZ3RoX3JlbGF0aW9uID0gWFNwbGluZUxlbmd0aCgKICAgICAgICAgICAgc3BsaW5lPXNlbGYsIHdob2xlPXNlbGYsIHBhcmFtZXRlcj1zZWxmLnNwbGluZV9sZW5ndGhfcGFyYW1ldGVyKQoKICAgIGRlZiBkcmF3KHNlbGYsIGNvbXBsZXRpb249MSk6CiAgICAgICAgIiIic3BlY2lmaWVzIHRoZSBkcmF3IGFuaW1hdGlvbiIiIgogICAgICAgIGRlc2NfaWQgPSBzZWxmLmRyYXdfcGFyYW1ldGVyLmRlc2NfaWQKICAgICAgICBhbmltYXRpb24gPSBTY2FsYXJBbmltYXRpb24oCiAgICAgICAgICAgIHRhcmdldD1zZWxmLCBkZXNjcmlwdG9yPWRlc2NfaWQsIHZhbHVlX2Zpbj1jb21wbGV0aW9uKQogICAgICAgIHNlbGYub2JqW2Rlc2NfaWRdID0gY29tcGxldGlvbgogICAgICAgIHJldHVybiBhbmltYXRpb24KCiAgICBkZWYgdW5fZHJhdyhzZWxmLCBjb21wbGV0aW9uPTApOgogICAgICAgICIiInNwZWNpZmllcyB0aGUgdW5kcmF3IGFuaW1hdGlvbiIiIgogICAgICAgIGRlc2NfaWQgPSBzZWxmLmRyYXdfcGFyYW1ldGVyLmRlc2NfaWQKICAgICAgICBhbmltYXRpb24gPSBTY2FsYXJBbmltYXRpb24oCiAgICAgICAgICAgIHRhcmdldD1zZWxmLCBkZXNjcmlwdG9yPWRlc2NfaWQsIHZhbHVlX2Zpbj1jb21wbGV0aW9uKQogICAgICAgIHNlbGYub2JqW2Rlc2NfaWRdID0gY29tcGxldGlvbgogICAgICAgIHJldHVybiBhbmltYXRpb24KCiAgICBkZWYgZmFkZV9pbihzZWxmLCBjb21wbGV0aW9uPTEpOgogICAgICAgICIiInNwZWNpZmllcyB0aGUgZmFkZSBpbiBhbmltYXRpb24iIiIKICAgICAgICBkZXNjX2lkID0gc2VsZi5vcGFjaXR5X3BhcmFtZXRlci5kZXNjX2lkCiAgICAgICAgYW5pbWF0aW9uID0gU2NhbGFyQW5pbWF0aW9uKAogICAgICAgICAgICB0YXJnZXQ9c2VsZiwgZGVzY3JpcHRvcj1kZXNjX2lkLCB2YWx1ZV9maW49Y29tcGxldGlvbikKICAgICAgICBzZWxmLm9ialtkZXNjX2lkXSA9IGNvbXBsZXRpb24KICAgICAgICByZXR1cm4gYW5pbWF0aW9uCgogICAgZGVmIGZhZGVfb3V0KHNlbGYsIGNvbXBsZXRpb249MCk6CiAgICAgICAgIiIic3BlY2lmaWVzIHRoZSBmYWRlIG91dCBhbmltYXRpb24iIiIKICAgICAgICBkZXNjX2lkID0gc2VsZi5vcGFjaXR5X3BhcmFtZXRlci5kZXNjX2lkCiAgICAgICAgYW5pbWF0aW9uID0gU2NhbGFyQW5pbWF0aW9uKAogICAgICAgICAgICB0YXJnZXQ9c2VsZiwgZGVzY3JpcHRvcj1kZXNjX2lkLCB2YWx1ZV9maW49Y29tcGxldGlvbikKICAgICAgICBzZWxmLm9ialtkZXNjX2lkXSA9IGNvbXBsZXRpb24KICAgICAgICByZXR1cm4gYW5pbWF0aW9uCgogICAgZGVmIGNoYW5nZV9jb2xvcihzZWxmLCBjb2xvcik6CiAgICAgICAgIiIic3BlY2lmaWVzIHRoZSBjb2xvciBjaGFuZ2UgYW5pbWF0aW9uIiIiCiAgICAgICAgZGVzY19pZCA9IHNlbGYuY29sb3JfcGFyYW1ldGVyLmRlc2NfaWQKICAgICAgICBhbmltYXRpb24gPSBDb2xvckFuaW1hdGlvbigKICAgICAgICAgICAgdGFyZ2V0PXNlbGYsIGRlc2NyaXB0b3I9ZGVzY19pZCwgdmVjdG9yPWNvbG9yKQogICAgICAgIHNlbGYub2JqW2Rlc2NfaWRdID0gY29sb3IKICAgICAgICByZXR1cm4gYW5pbWF0aW9uCgoKY2xhc3MgU29saWRPYmplY3QoVmlzaWJsZU9iamVjdCk6CiAgICAiIiJzb2xpZCBvYmplY3RzIG9ubHkgcmVxdWlyZSBhIGZpbGwgbWF0ZXJpYWwiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsbGVkPTAsIGdsb3dpbmc9MCwgY29sb3I9V0hJVEUsIGZpbGxfY29sb3I9Tm9uZSwgc2tldGNoX2NvbG9yPU5vbmUsIGRyYXdfb3JkZXI9ImxvbmdfdG9fc2hvcnQiLCBkcmF3X2NvbXBsZXRpb249MCwgYXJyb3dfc3RhcnQ9RmFsc2UsIGFycm93X2VuZD1GYWxzZSwgZmlsbF9vcGFjaXR5PTEsIHNrZXRjaF9vcGFjaXR5PTEsIG91dGxpbmVfb25seT1GYWxzZSwgKiprd2FyZ3MpOgogICAgICAgIHNlbGYuZmlsbGVkID0gZmlsbGVkCiAgICAgICAgc2VsZi5nbG93aW5nID0gZ2xvd2luZwogICAgICAgIHNlbGYuY29sb3IgPSBjb2xvcgogICAgICAgIHNlbGYuZmlsbF9jb2xvciA9IGZpbGxfY29sb3IKICAgICAgICBzZWxmLnNrZXRjaF9jb2xvciA9IHNrZXRjaF9jb2xvcgogICAgICAgIHNlbGYuZHJhd19vcmRlciA9IGRyYXdfb3JkZXIKICAgICAgICBzZWxmLmRyYXdfY29tcGxldGlvbiA9IGRyYXdfY29tcGxldGlvbgogICAgICAgIHNlbGYuYXJyb3dfc3RhcnQgPSBhcnJvd19zdGFydAogICAgICAgIHNlbGYuYXJyb3dfZW5kID0gYXJyb3dfZW5kCiAgICAgICAgc2VsZi5za2V0Y2hfb3BhY2l0eSA9IHNrZXRjaF9vcGFjaXR5CiAgICAgICAgc2VsZi5maWxsX29wYWNpdHkgPSBmaWxsX29wYWNpdHkKICAgICAgICBzZWxmLm91dGxpbmVfb25seSA9IG91dGxpbmVfb25seQogICAgICAgIHN1cGVyKCkuX19pbml0X18oKiprd2FyZ3MpCiAgICAgICAgc2VsZi5kZXJpdmVfY29sb3JzKCkKICAgICAgICAjIGZpbGwgc2V0dXAKICAgICAgICBzZWxmLnNldF9maWxsX21hdGVyaWFsKCkKICAgICAgICBzZWxmLnNldF9maWxsX3RhZygpCiAgICAgICAgc2VsZi5maWxsX3BhcmFtZXRlcl9zZXR1cCgpCiAgICAgICAgIyBza2V0Y2ggc2V0dXAKICAgICAgICBzZWxmLnNldF9za2V0Y2hfbWF0ZXJpYWwoKQogICAgICAgIHNlbGYuc2V0X3NrZXRjaF90YWcoKQogICAgICAgIHNlbGYuc2tldGNoX3BhcmFtZXRlcl9zZXR1cCgpCiAgICAgICAgc2VsZi5wYXJhbWV0ZXJzID0gW10KICAgICAgICBzZWxmLnNwZWNpZnlfcGFyYW1ldGVycygpCiAgICAgICAgc2VsZi5pbnNlcnRfcGFyYW1ldGVycygpCiAgICAgICAgc2VsZi5zcGVjaWZ5X3JlbGF0aW9ucygpCiAgICAgICAgc2VsZi5hY3Rpb25fcGFyYW1ldGVycyA9IFtdCiAgICAgICAgc2VsZi5zcGVjaWZ5X2FjdGlvbl9wYXJhbWV0ZXJzKCkKICAgICAgICBzZWxmLnNwZWNpZnlfY3JlYXRpb25fcGFyYW1ldGVyKCkKICAgICAgICBzZWxmLmluc2VydF9hY3Rpb25fcGFyYW1ldGVycygpCiAgICAgICAgc2VsZi5zcGVjaWZ5X2FjdGlvbnMoKQogICAgICAgIHNlbGYuc3BlY2lmeV9jcmVhdGlvbigpCiAgICAgICAgc2VsZi5zb3J0X3JlbGF0aW9uc19ieV9wcmlvcml0eSgpCgogICAgZGVmIGRlcml2ZV9jb2xvcnMoc2VsZik6CiAgICAgICAgaWYgbm90IHNlbGYuZmlsbF9jb2xvcjoKICAgICAgICAgICAgc2VsZi5maWxsX2NvbG9yID0gc2VsZi5jb2xvcgogICAgICAgIGlmIG5vdCBzZWxmLnNrZXRjaF9jb2xvcjoKICAgICAgICAgICAgc2VsZi5za2V0Y2hfY29sb3IgPSBzZWxmLmNvbG9yCgogICAgZGVmIHNwZWNpZnlfY3JlYXRpb24oc2VsZik6CiAgICAgICAgIiIic3BlY2lmaWVzIHRoZSBjcmVhdGlvbiBhY3Rpb24iIiIKICAgICAgICBjcmVhdGlvbl9hY3Rpb24gPSBYQWN0aW9uKAogICAgICAgICAgICBNb3ZlbWVudChzZWxmLmZpbGxfcGFyYW1ldGVyLCAoMSAvIDMsIDEpLCBvdXRwdXQoMCwgc2VsZi5maWxsX29wYWNpdHkpKSwKICAgICAgICAgICAgTW92ZW1lbnQoc2VsZi5kcmF3X3BhcmFtZXRlciwgKDAsIDIgLyAzKSksCiAgICAgICAgICAgIHRhcmdldD1zZWxmLCBjb21wbGV0aW9uX3BhcmFtZXRlcj1zZWxmLmNyZWF0aW9uX3BhcmFtZXRlciwgbmFtZT0iQ3JlYXRpb24iKQoKICAgIGRlZiBmaWxsX3BhcmFtZXRlcl9zZXR1cChzZWxmKToKICAgICAgICBzZWxmLnNwZWNpZnlfZmlsbF9wYXJhbWV0ZXIoKQogICAgICAgIHNlbGYuaW5zZXJ0X2ZpbGxfcGFyYW1ldGVyKCkKICAgICAgICBzZWxmLnNwZWNpZnlfZmlsbF9yZWxhdGlvbigpCgogICAgZGVmIHNldF9maWxsX21hdGVyaWFsKHNlbGYpOgogICAgICAgIHNlbGYuZmlsbF9tYXRlcmlhbCA9IEZpbGxNYXRlcmlhbCgKICAgICAgICAgICAgbmFtZT1zZWxmLm5hbWUsIGZpbGw9c2VsZi5maWxsZWQsIGNvbG9yPXNlbGYuZmlsbF9jb2xvcikKCiAgICBkZWYgc2V0X2ZpbGxfdGFnKHNlbGYpOgogICAgICAgIHNlbGYuZmlsbF90YWcgPSBGaWxsVGFnKHRhcmdldD1zZWxmLCBtYXRlcmlhbD1zZWxmLmZpbGxfbWF0ZXJpYWwpCgogICAgZGVmIHNwZWNpZnlfZmlsbF9wYXJhbWV0ZXIoc2VsZik6CiAgICAgICAgc2VsZi5maWxsX3BhcmFtZXRlciA9IFVDb21wbGV0aW9uKAogICAgICAgICAgICBuYW1lPSJGaWxsIiwgZGVmYXVsdF92YWx1ZT1zZWxmLmZpbGxlZCkKICAgICAgICBzZWxmLmdsb3dfcGFyYW1ldGVyID0gVUNvbXBsZXRpb24oCiAgICAgICAgICAgIG5hbWU9Ikdsb3ciLCBkZWZhdWx0X3ZhbHVlPXNlbGYuZ2xvd2luZykKICAgICAgICBzZWxmLmZpbGxfcGFyYW1ldGVycyA9IFtzZWxmLmZpbGxfcGFyYW1ldGVyLCBzZWxmLmdsb3dfcGFyYW1ldGVyXQoKICAgIGRlZiBpbnNlcnRfZmlsbF9wYXJhbWV0ZXIoc2VsZik6CiAgICAgICAgc2VsZi5maWxsX3VfZ3JvdXAgPSBVR3JvdXAoCiAgICAgICAgICAgICpzZWxmLmZpbGxfcGFyYW1ldGVycywgdGFyZ2V0PXNlbGYub2JqLCBuYW1lPSJTb2xpZCIpCgogICAgZGVmIHNwZWNpZnlfZmlsbF9yZWxhdGlvbihzZWxmKToKICAgICAgICBzZWxmLmZpbGxfcmVsYXRpb24gPSBYUmVsYXRpb24ocGFydD1zZWxmLmZpbGxfbWF0ZXJpYWwsIHdob2xlPXNlbGYsIGRlc2NfaWRzPVtzZWxmLmZpbGxfbWF0ZXJpYWwuZGVzY19pZHNbInRyYW5zcGFyZW5jeSJdXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycz1bc2VsZi5maWxsX3BhcmFtZXRlcl0sIGZvcm11bGE9ZiIxLXtzZWxmLmZpbGxfcGFyYW1ldGVyLm5hbWV9IikKICAgICAgICBzZWxmLmdsb3dfcmVsYXRpb24gPSBYUmVsYXRpb24ocGFydD1zZWxmLmZpbGxfbWF0ZXJpYWwsIHdob2xlPXNlbGYsIGRlc2NfaWRzPVtzZWxmLmZpbGxfbWF0ZXJpYWwuZGVzY19pZHNbImdsb3dfYnJpZ2h0bmVzcyJdXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycz1bc2VsZi5nbG93X3BhcmFtZXRlcl0sIGZvcm11bGE9ZiJ7c2VsZi5nbG93X3BhcmFtZXRlci5uYW1lfSIpCgogICAgZGVmIGZpbGwoc2VsZiwgY29tcGxldGlvbj0xKToKICAgICAgICAiIiJzcGVjaWZpZXMgdGhlIGZpbGwgYW5pbWF0aW9uIiIiCiAgICAgICAgZGVzY19pZCA9IHNlbGYuZmlsbF9wYXJhbWV0ZXIuZGVzY19pZAogICAgICAgIGFuaW1hdGlvbiA9IFNjYWxhckFuaW1hdGlvbigKICAgICAgICAgICAgdGFyZ2V0PXNlbGYsIGRlc2NyaXB0b3I9ZGVzY19pZCwgdmFsdWVfZmluPWNvbXBsZXRpb24pCiAgICAgICAgc2VsZi5vYmpbZGVzY19pZF0gPSBjb21wbGV0aW9uCiAgICAgICAgcmV0dXJuIGFuaW1hdGlvbgoKICAgIGRlZiB1bl9maWxsKHNlbGYsIGNvbXBsZXRpb249MCk6CiAgICAgICAgIiIic3BlY2lmaWVzIHRoZSB1bmZpbGwgYW5pbWF0aW9uIiIiCiAgICAgICAgZGVzY19pZCA9IHNlbGYuZmlsbF9wYXJhbWV0ZXIuZGVzY19pZAogICAgICAgIGFuaW1hdGlvbiA9IFNjYWxhckFuaW1hdGlvbigKICAgICAgICAgICAgdGFyZ2V0PXNlbGYsIGRlc2NyaXB0b3I9ZGVzY19pZCwgdmFsdWVfZmluPWNvbXBsZXRpb24pCiAgICAgICAgc2VsZi5vYmpbZGVzY19pZF0gPSBjb21wbGV0aW9uCiAgICAgICAgcmV0dXJuIGFuaW1hdGlvbgoKICAgIGRlZiBza2V0Y2hfcGFyYW1ldGVyX3NldHVwKHNlbGYpOgogICAgICAgIHNlbGYuc3BlY2lmeV9za2V0Y2hfcGFyYW1ldGVycygpCiAgICAgICAgc2VsZi5pbnNlcnRfc2tldGNoX3BhcmFtZXRlcnMoKQogICAgICAgIHNlbGYuc3BlY2lmeV9za2V0Y2hfcmVsYXRpb25zKCkKCiAgICBkZWYgc2V0X3NrZXRjaF9tYXRlcmlhbChzZWxmKToKICAgICAgICBzZWxmLnNrZXRjaF9tYXRlcmlhbCA9IFNrZXRjaE1hdGVyaWFsKAogICAgICAgICAgICBuYW1lPXNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBkcmF3X29yZGVyPXNlbGYuZHJhd19vcmRlciwgY29sb3I9c2VsZi5za2V0Y2hfY29sb3IsIGFycm93X3N0YXJ0PXNlbGYuYXJyb3dfc3RhcnQsIGFycm93X2VuZD1zZWxmLmFycm93X2VuZCkKCiAgICBkZWYgc2V0X3NrZXRjaF90YWcoc2VsZik6CiAgICAgICAgb3V0bGluZSA9IFRydWUKICAgICAgICBjcmVhc2VzID0gVHJ1ZQogICAgICAgIHNwbGluZXMgPSBUcnVlCiAgICAgICAgaWYgc2VsZi5vdXRsaW5lX29ubHk6CiAgICAgICAgICAgIGNyZWFzZXMgPSBGYWxzZQogICAgICAgICAgICBzcGxpbmVzID0gRmFsc2UKICAgICAgICBzZWxmLnNrZXRjaF90YWcgPSBTa2V0Y2hUYWcoCiAgICAgICAgICAgIHRhcmdldD1zZWxmLCBtYXRlcmlhbD1zZWxmLnNrZXRjaF9tYXRlcmlhbCwgc3BsaW5lcz1zcGxpbmVzLCBvdXRsaW5lPW91dGxpbmUsIGNyZWFzZXM9Y3JlYXNlcykKCiAgICBkZWYgc3BlY2lmeV9za2V0Y2hfcGFyYW1ldGVycyhzZWxmKToKICAgICAgICBzZWxmLmRyYXdfcGFyYW1ldGVyID0gVUNvbXBsZXRpb24oCiAgICAgICAgICAgIG5hbWU9IkRyYXciLCBkZWZhdWx0X3ZhbHVlPXNlbGYuZHJhd19jb21wbGV0aW9uKQogICAgICAgIHNlbGYub3BhY2l0eV9wYXJhbWV0ZXIgPSBVQ29tcGxldGlvbigKICAgICAgICAgICAgbmFtZT0iU2tldGNoT3BhY2l0eSIsIGRlZmF1bHRfdmFsdWU9c2VsZi5za2V0Y2hfb3BhY2l0eSkKICAgICAgICBzZWxmLmNvbG9yX3BhcmFtZXRlciA9IFVDb2xvcigKICAgICAgICAgICAgbmFtZT0iQ29sb3IiLCBkZWZhdWx0X3ZhbHVlPXNlbGYuc2tldGNoX2NvbG9yKQogICAgICAgIHNlbGYuc2tldGNoX3BhcmFtZXRlcnMgPSBbc2VsZi5kcmF3X3BhcmFtZXRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYub3BhY2l0eV9wYXJhbWV0ZXIsIHNlbGYuY29sb3JfcGFyYW1ldGVyXQoKICAgIGRlZiBpbnNlcnRfc2tldGNoX3BhcmFtZXRlcnMoc2VsZik6CiAgICAgICAgc2VsZi5kcmF3X3VfZ3JvdXAgPSBVR3JvdXAoCiAgICAgICAgICAgICpzZWxmLnNrZXRjaF9wYXJhbWV0ZXJzLCB0YXJnZXQ9c2VsZi5vYmosIG5hbWU9IlNrZXRjaCIpCgogICAgZGVmIHNwZWNpZnlfc2tldGNoX3JlbGF0aW9ucyhzZWxmKToKICAgICAgICBkcmF3X3JlbGF0aW9uID0gWElkZW50aXR5KHBhcnQ9c2VsZi5za2V0Y2hfbWF0ZXJpYWwsIHdob2xlPXNlbGYsIGRlc2NfaWRzPVtzZWxmLnNrZXRjaF9tYXRlcmlhbC5kZXNjX2lkc1siZHJhd19jb21wbGV0aW9uIl1dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyPXNlbGYuZHJhd19wYXJhbWV0ZXIpCiAgICAgICAgb3BhY2l0eV9yZWxhdGlvbiA9IFhJZGVudGl0eShwYXJ0PXNlbGYuc2tldGNoX21hdGVyaWFsLCB3aG9sZT1zZWxmLCBkZXNjX2lkcz1bc2VsZi5za2V0Y2hfbWF0ZXJpYWwuZGVzY19pZHNbIm9wYWNpdHkiXV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXI9c2VsZi5vcGFjaXR5X3BhcmFtZXRlcikKICAgICAgICBjb2xvcl9yZWxhdGlvbiA9IFhJZGVudGl0eShwYXJ0PXNlbGYuc2tldGNoX21hdGVyaWFsLCB3aG9sZT1zZWxmLCBkZXNjX2lkcz1bc2VsZi5za2V0Y2hfbWF0ZXJpYWwuZGVzY19pZHNbImNvbG9yIl1dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcj1zZWxmLmNvbG9yX3BhcmFtZXRlcikKCiAgICBkZWYgZHJhdyhzZWxmLCBjb21wbGV0aW9uPTEpOgogICAgICAgICIiInNwZWNpZmllcyB0aGUgZHJhdyBhbmltYXRpb24iIiIKICAgICAgICBkZXNjX2lkID0gc2VsZi5kcmF3X3BhcmFtZXRlci5kZXNjX2lkCiAgICAgICAgYW5pbWF0aW9uID0gU2NhbGFyQW5pbWF0aW9uKAogICAgICAgICAgICB0YXJnZXQ9c2VsZiwgZGVzY3JpcHRvcj1kZXNjX2lkLCB2YWx1ZV9maW49Y29tcGxldGlvbikKICAgICAgICBzZWxmLm9ialtkZXNjX2lkXSA9IGNvbXBsZXRpb24KICAgICAgICByZXR1cm4gYW5pbWF0aW9uCgogICAgZGVmIHVuX2RyYXcoc2VsZiwgY29tcGxldGlvbj0wKToKICAgICAgICAiIiJzcGVjaWZpZXMgdGhlIHVuZHJhdyBhbmltYXRpb24iIiIKICAgICAgICBkZXNjX2lkID0gc2VsZi5kcmF3X3BhcmFtZXRlci5kZXNjX2lkCiAgICAgICAgYW5pbWF0aW9uID0gU2NhbGFyQW5pbWF0aW9uKAogICAgICAgICAgICB0YXJnZXQ9c2VsZiwgZGVzY3JpcHRvcj1kZXNjX2lkLCB2YWx1ZV9maW49Y29tcGxldGlvbikKICAgICAgICBzZWxmLm9ialtkZXNjX2lkXSA9IGNvbXBsZXRpb24KICAgICAgICByZXR1cm4gYW5pbWF0aW9uCgogICAgZGVmIGdsb3coc2VsZiwgY29tcGxldGlvbj0xKToKICAgICAgICAiIiJzcGVjaWZpZXMgdGhlIGdsb3cgYW5pbWF0aW9uIiIiCiAgICAgICAgZGVzY19pZCA9IHNlbGYuZ2xvd19wYXJhbWV0ZXIuZGVzY19pZAogICAgICAgIGFuaW1hdGlvbiA9IFNjYWxhckFuaW1hdGlvbigKICAgICAgICAgICAgdGFyZ2V0PXNlbGYsIGRlc2NyaXB0b3I9ZGVzY19pZCwgdmFsdWVfZmluPWNvbXBsZXRpb24pCiAgICAgICAgc2VsZi5vYmpbZGVzY19pZF0gPSBjb21wbGV0aW9uCiAgICAgICAgcmV0dXJuIGFuaW1hdGlvbgoKICAgIGRlZiB1bl9nbG93KHNlbGYsIGNvbXBsZXRpb249MCk6CiAgICAgICAgIiIic3BlY2lmaWVzIHRoZSB1bmdsb3cgYW5pbWF0aW9uIiIiCiAgICAgICAgZGVzY19pZCA9IHNlbGYuZ2xvd19wYXJhbWV0ZXIuZGVzY19pZAogICAgICAgIGFuaW1hdGlvbiA9IFNjYWxhckFuaW1hdGlvbigKICAgICAgICAgICAgdGFyZ2V0PXNlbGYsIGRlc2NyaXB0b3I9ZGVzY19pZCwgdmFsdWVfZmluPWNvbXBsZXRpb24pCiAgICAgICAgc2VsZi5vYmpbZGVzY19pZF0gPSBjb21wbGV0aW9uCiAgICAgICAgcmV0dXJuIGFuaW1hdGlvbgo",
1416  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAefQAAAAAAAB59AAAAAAAAAAAAAAAA8L8"
1417  				],
1418  				[
1419  					248,
1420  					1,
1421  					"insert",
1422  					{
1423  						"characters": "="
1424  					},
1425  					"AQAAAB19AAAAAAAAHn0AAAAAAAAAAAAA",
1426  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAdfQAAAAAAAB19AAAAAAAAAAAAAAAA8L8"
1427  				],
1428  				[
1429  					249,
1430  					1,
1431  					"left_delete",
1432  					null,
1433  					"AQAAAB19AAAAAAAAHX0AAAAAAAABAAAAPQ",
1434  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAefQAAAAAAAB59AAAAAAAAAAAAAAAA8L8"
1435  				],
1436  				[
1437  					251,
1438  					1,
1439  					"insert",
1440  					{
1441  						"characters": "="
1442  					},
1443  					"AQAAAB59AAAAAAAAH30AAAAAAAAAAAAA",
1444  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAefQAAAAAAAB59AAAAAAAAAAAAAAAA8L8"
1445  				],
1446  				[
1447  					267,
1448  					1,
1449  					"insert",
1450  					{
1451  						"characters": ","
1452  					},
1453  					"AQAAAPtKAAAAAAAA/EoAAAAAAAAAAAAA",
1454  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAD7SgAAAAAAAPtKAAAAAAAAAAAAAAAA8L8"
1455  				],
1456  				[
1457  					268,
1458  					1,
1459  					"insert",
1460  					{
1461  						"characters": " easing="
1462  					},
1463  					"CAAAAPxKAAAAAAAA/UoAAAAAAAAAAAAA/UoAAAAAAAD+SgAAAAAAAAAAAAD+SgAAAAAAAP9KAAAAAAAAAAAAAP9KAAAAAAAAAEsAAAAAAAAAAAAAAEsAAAAAAAABSwAAAAAAAAAAAAABSwAAAAAAAAJLAAAAAAAAAAAAAAJLAAAAAAAAA0sAAAAAAAAAAAAAA0sAAAAAAAAESwAAAAAAAAAAAAA",
1464  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAD8SgAAAAAAAPxKAAAAAAAAAAAAAAAA8L8"
1465  				],
1466  				[
1467  					269,
1468  					1,
1469  					"insert",
1470  					{
1471  						"characters": "False"
1472  					},
1473  					"BQAAAARLAAAAAAAABUsAAAAAAAAAAAAABUsAAAAAAAAGSwAAAAAAAAAAAAAGSwAAAAAAAAdLAAAAAAAAAAAAAAdLAAAAAAAACEsAAAAAAAAAAAAACEsAAAAAAAAJSwAAAAAAAAAAAAA",
1474  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAESwAAAAAAAARLAAAAAAAAAAAAAAAA8L8"
1475  				],
1476  				[
1477  					279,
1478  					1,
1479  					"cut",
1480  					null,
1481  					"AQAAAIRXAAAAAAAAhFcAAAAAAABEBwAAY2xhc3MgTWVtYnJhbmUoQ3VzdG9tT2JqZWN0KToKICAgICIiImNyZWF0ZXMgYSBtZW1icmFuZSBmb3IgYW55IGdpdmVuIHNwbGluZSB1c2luZyB0aGUgZXh0cnVkZSBhbmQgaW5zdGFuY2Ugb2JqZWN0IiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHNwbGluZSwgdGhpY2tuZXNzPTAsIGZpbGxlZD0wLCBjb2xvcj1XSElURSwgKiprd2FyZ3MpOgogICAgICAgIHNlbGYuc3BsaW5lID0gc3BsaW5lCiAgICAgICAgc2VsZi50aGlja25lc3MgPSB0aGlja25lc3MKICAgICAgICBzZWxmLmZpbGxlZCA9IGZpbGxlZAogICAgICAgIHNlbGYuY29sb3IgPSBjb2xvcgogICAgICAgIHN1cGVyKCkuX19pbml0X18oKiprd2FyZ3MpCiAgICAgICAgIyBzZWxmLmluc2VydF91bmRlcl9zcGxpbmUoKQoKICAgIGRlZiBpbnNlcnRfdW5kZXJfc3BsaW5lKHNlbGYpOgogICAgICAgIHNlbGYub2JqLkluc2VydFVuZGVyKHNlbGYuc3BsaW5lLm9iaikKCiAgICBkZWYgc3BlY2lmeV9wYXJ0cyhzZWxmKToKICAgICAgICBzZWxmLmluc3RhbmNlID0gaGVscGVyX29iamVjdHMuSW5zdGFuY2Uoc2VsZi5zcGxpbmUpCiAgICAgICAgc2VsZi5leHRydWRlID0gc29saWRfb2JqZWN0cy5FeHRydWRlKHNlbGYuaW5zdGFuY2UsIGNvbG9yPXNlbGYuY29sb3IpCiAgICAgICAgc2VsZi5wYXJ0cyArPSBbc2VsZi5leHRydWRlLCBzZWxmLmluc3RhbmNlXQoKICAgIGRlZiBzcGVjaWZ5X3BhcmFtZXRlcnMoc2VsZik6CiAgICAgICAgc2VsZi50aGlja25lc3NfcGFyYW1ldGVyID0gVUxlbmd0aCgKICAgICAgICAgICAgbmFtZT0iVGhpY2tuZXNzUGFyYW1ldGVyIiwgZGVmYXVsdF92YWx1ZT1zZWxmLnRoaWNrbmVzcykKICAgICAgICBzZWxmLmZpbGxfcGFyYW1ldGVyID0gVUNvbXBsZXRpb24oCiAgICAgICAgICAgIG5hbWU9IkZpbGwiLCBkZWZhdWx0X3ZhbHVlPXNlbGYuZmlsbGVkKQogICAgICAgIHNlbGYucGFyYW1ldGVycyArPSBbc2VsZi50aGlja25lc3NfcGFyYW1ldGVyLCBzZWxmLmZpbGxfcGFyYW1ldGVyXQoKICAgIGRlZiBzcGVjaWZ5X3JlbGF0aW9ucyhzZWxmKToKICAgICAgICB0aGlja25lc3NfcmVsYXRpb24gPSBYSWRlbnRpdHkocGFydD1zZWxmLmV4dHJ1ZGUsIHdob2xlPXNlbGYsIGRlc2NfaWRzPVtzZWxmLmV4dHJ1ZGUuZGVzY19pZHNbIm9mZnNldCJdXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyPXNlbGYudGhpY2tuZXNzX3BhcmFtZXRlcikKICAgICAgICBmaWxsX2luaGVyaXRhbmNlID0gWElkZW50aXR5KHBhcnQ9c2VsZi5leHRydWRlLCB3aG9sZT1zZWxmLCBkZXNjX2lkcz1bc2VsZi5leHRydWRlLmZpbGxfcGFyYW1ldGVyLmRlc2NfaWRdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyPXNlbGYuZmlsbF9wYXJhbWV0ZXIpCiAgICAgICAgIyBtb3NwbGluZV9jb3JyZWN0aW9uID0gWENvcnJlY3RNb1NwbGluZVRyYW5zZm9ybSgKICAgICAgICAjICAgIHNlbGYuaW5zdGFuY2UsIHRhcmdldD1zZWxmKQoKICAgIGRlZiBzcGVjaWZ5X2NyZWF0aW9uKHNlbGYpOgogICAgICAgIGNyZWF0aW9uX2FjdGlvbiA9IFhBY3Rpb24oCiAgICAgICAgICAgIE1vdmVtZW50KHNlbGYuZmlsbF9wYXJhbWV0ZXIsICgwLCAxKSksCiAgICAgICAgICAgIHRhcmdldD1zZWxmLCBjb21wbGV0aW9uX3BhcmFtZXRlcj1zZWxmLmNyZWF0aW9uX3BhcmFtZXRlciwgbmFtZT0iQ3JlYXRpb24iKQoKICAgIGRlZiBmaWxsKHNlbGYsIG9wYWNpdHkpOgogICAgICAgIHJldHVybiBzZWxmLmNyZWF0ZShvcGFjaXR5KQoKICAgIGRlZiB1bl9maWxsKHNlbGYsIG9wYWNpdHk9MCk6CiAgICAgICAgcmV0dXJuIHNlbGYuY3JlYXRlKG9wYWNpdHkp",
1482  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADIXgAAAAAAAIRXAAAAAAAAAAAAAAAA8L8"
1483  				],
1484  				[
1485  					280,
1486  					3,
1487  					"left_delete",
1488  					null,
1489  					"AwAAAINXAAAAAAAAg1cAAAAAAAABAAAACoJXAAAAAAAAglcAAAAAAAABAAAACoFXAAAAAAAAgVcAAAAAAAABAAAACg",
1490  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACEVwAAAAAAAIRXAAAAAAAAAAAAAAAA8L8"
1491  				],
1492  				[
1493  					283,
1494  					1,
1495  					"run_macro_file",
1496  					{
1497  						"file": "res://Packages/Default/Delete to Hard BOL.sublime-macro"
1498  					},
1499  					"AQAAAIICAAAAAAAAggIAAAAAAAA3AAAAaW1wb3J0IHB5ZGVhdGlvbi5vYmplY3RzLnNvbGlkX29iamVjdHMgYXMgc29saWRfb2JqZWN0cw",
1500  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAC5AgAAAAAAALkCAAAAAAAAAAAAAAAA8L8"
1501  				],
1502  				[
1503  					284,
1504  					1,
1505  					"left_delete",
1506  					null,
1507  					"AQAAAIECAAAAAAAAgQIAAAAAAAABAAAACg",
1508  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACCAgAAAAAAAIICAAAAAAAAAAAAAAAA8L8"
1509  				],
1510  				[
1511  					285,
1512  					1,
1513  					"run_macro_file",
1514  					{
1515  						"file": "res://Packages/Default/Delete to Hard BOL.sublime-macro"
1516  					},
1517  					"AQAAAEgCAAAAAAAASAIAAAAAAAA5AAAAaW1wb3J0IHB5ZGVhdGlvbi5vYmplY3RzLmhlbHBlcl9vYmplY3RzIGFzIGhlbHBlcl9vYmplY3Rz",
1518  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACBAgAAAAAAAIECAAAAAAAAAAAAAAAA8L8"
1519  				],
1520  				[
1521  					286,
1522  					1,
1523  					"left_delete",
1524  					null,
1525  					"AQAAAEcCAAAAAAAARwIAAAAAAAABAAAACg",
1526  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABIAgAAAAAAAEgCAAAAAAAAAAAAAAAA8L8"
1527  				],
1528  				[
1529  					287,
1530  					1,
1531  					"insert",
1532  					{
1533  						"characters": "\n"
1534  					},
1535  					"AQAAAEcCAAAAAAAASAIAAAAAAAAAAAAA",
1536  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABHAgAAAAAAAEcCAAAAAAAAAAAAAAAA8L8"
1537  				],
1538  				[
1539  					288,
1540  					1,
1541  					"copilot_accept_completion",
1542  					null,
1543  					"AQAAAEgCAAAAAAAAgQIAAAAAAAAAAAAA",
1544  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABIAgAAAAAAAEgCAAAAAAAAAAAAAAAA8L8"
1545  				],
1546  				[
1547  					293,
1548  					1,
1549  					"insert",
1550  					{
1551  						"characters": "cus"
1552  					},
1553  					"CAAAAHMCAAAAAAAAdAIAAAAAAAAAAAAAdAIAAAAAAAB0AgAAAAAAAA4AAABoZWxwZXJfb2JqZWN0c2ECAAAAAAAAYgIAAAAAAAAAAAAAYgIAAAAAAABiAgAAAAAAAA4AAABoZWxwZXJfb2JqZWN0c2cCAAAAAAAAaAIAAAAAAAAAAAAAYgIAAAAAAABjAgAAAAAAAAAAAABpAgAAAAAAAGoCAAAAAAAAAAAAAGMCAAAAAAAAZAIAAAAAAAAAAAAA",
1554  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAIAAABhAgAAAAAAAG8CAAAAAAAAAAAAAAAA8L9zAgAAAAAAAIECAAAAAAAAAAAAAAAA8L8"
1555  				],
1556  				[
1557  					294,
1558  					1,
1559  					"insert",
1560  					{
1561  						"characters": "tom_objects"
1562  					},
1563  					"FgAAAGsCAAAAAAAAbAIAAAAAAAAAAAAAZAIAAAAAAABlAgAAAAAAAAAAAABtAgAAAAAAAG4CAAAAAAAAAAAAAGUCAAAAAAAAZgIAAAAAAAAAAAAAbwIAAAAAAABwAgAAAAAAAAAAAABmAgAAAAAAAGcCAAAAAAAAAAAAAHECAAAAAAAAcgIAAAAAAAAAAAAAZwIAAAAAAABoAgAAAAAAAAAAAABzAgAAAAAAAHQCAAAAAAAAAAAAAGgCAAAAAAAAaQIAAAAAAAAAAAAAdQIAAAAAAAB2AgAAAAAAAAAAAABpAgAAAAAAAGoCAAAAAAAAAAAAAHcCAAAAAAAAeAIAAAAAAAAAAAAAagIAAAAAAABrAgAAAAAAAAAAAAB5AgAAAAAAAHoCAAAAAAAAAAAAAGsCAAAAAAAAbAIAAAAAAAAAAAAAewIAAAAAAAB8AgAAAAAAAAAAAABsAgAAAAAAAG0CAAAAAAAAAAAAAH0CAAAAAAAAfgIAAAAAAAAAAAAAbQIAAAAAAABuAgAAAAAAAAAAAAB/AgAAAAAAAIACAAAAAAAAAAAAAG4CAAAAAAAAbwIAAAAAAAAAAAAA",
1564  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAIAAABkAgAAAAAAAGQCAAAAAAAAAAAAAAAA8L9rAgAAAAAAAGsCAAAAAAAAAAAAAAAA8L8"
1565  				],
1566  				[
1567  					303,
1568  					1,
1569  					"insert",
1570  					{
1571  						"characters": "#"
1572  					},
1573  					"AQAAAEgCAAAAAAAASQIAAAAAAAAAAAAA",
1574  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABIAgAAAAAAAEgCAAAAAAAAAAAAAAAAAAA"
1575  				],
1576  				[
1577  					305,
1578  					1,
1579  					"left_delete",
1580  					null,
1581  					"AQAAAEgCAAAAAAAASAIAAAAAAAABAAAAIw",
1582  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABJAgAAAAAAAEkCAAAAAAAAAAAAAAAA8L8"
1583  				],
1584  				[
1585  					2,
1586  					1,
1587  					"insert",
1588  					{
1589  						"characters": "#"
1590  					},
1591  					"AQAAAEgCAAAAAAAASQIAAAAAAAAAAAAA",
1592  					"BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAASAIAAAAAAABIAgAAAAAAAAAAAAAAAPC/"
1593  				],
1594  				[
1595  					4,
1596  					1,
1597  					"left_delete",
1598  					null,
1599  					"AQAAAEgCAAAAAAAASAIAAAAAAAABAAAAIw",
1600  					"BAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAASQIAAAAAAABJAgAAAAAAAAAAAAAAAPC/"
1601  				],
1602  				[
1603  					1,
1604  					1,
1605  					"insert",
1606  					{
1607  						"characters": "#"
1608  					},
1609  					"AQAAAEgCAAAAAAAASQIAAAAAAAAAAAAA",
1610  					"AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEgCAAAAAAAASAIAAAAAAAAAAAAAAADwvw"
1611  				],
1612  				[
1613  					3,
1614  					1,
1615  					"left_delete",
1616  					null,
1617  					"AQAAAEgCAAAAAAAASAIAAAAAAAABAAAAIw",
1618  					"AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEkCAAAAAAAASQIAAAAAAAAAAAAAAADwvw"
1619  				],
1620  				[
1621  					6,
1622  					1,
1623  					"insert",
1624  					{
1625  						"characters": "#"
1626  					},
1627  					"AQAAAEgCAAAAAAAASQIAAAAAAAAAAAAA",
1628  					"AQAAAAAAAAABAAAASAIAAAAAAABIAgAAAAAAAAAAAAAAAAAA"
1629  				],
1630  				[
1631  					7,
1632  					1,
1633  					"left_delete",
1634  					null,
1635  					"AQAAAEgCAAAAAAAASAIAAAAAAAABAAAAIw",
1636  					"AQAAAAAAAAABAAAASQIAAAAAAABJAgAAAAAAAAAAAAAAAPC/"
1637  				]
1638  			]
1639  		},
1640  		{
1641  			"file": "xpresso/xpressions.py",
1642  			"settings":
1643  			{
1644  				"buffer_size": 66772,
1645  				"line_ending": "Unix"
1646  			}
1647  		},
1648  		{
1649  			"file": "materials.py",
1650  			"settings":
1651  			{
1652  				"buffer_size": 4352,
1653  				"encoding": "UTF-8",
1654  				"line_ending": "Unix"
1655  			},
1656  			"undo_stack":
1657  			[
1658  				[
1659  					3,
1660  					1,
1661  					"insert",
1662  					{
1663  						"characters": "\n"
1664  					},
1665  					"AgAAAN8HAAAAAAAA4AcAAAAAAAAAAAAA4AcAAAAAAADoBwAAAAAAAAAAAAA",
1666  					"AQAAAAAAAAABAAAA3wcAAAAAAADfBwAAAAAAAAAAAAAAAPC/"
1667  				],
1668  				[
1669  					4,
1670  					3,
1671  					"left_delete",
1672  					null,
1673  					"AwAAAOQHAAAAAAAA5AcAAAAAAAAEAAAAICAgIOAHAAAAAAAA4AcAAAAAAAAEAAAAICAgIN8HAAAAAAAA3wcAAAAAAAABAAAACg",
1674  					"AQAAAAAAAAABAAAA6AcAAAAAAADoBwAAAAAAAAAAAAAAAPC/"
1675  				],
1676  				[
1677  					5,
1678  					1,
1679  					"duplicate_line",
1680  					null,
1681  					"AQAAAOAHAAAAAAAAHggAAAAAAAAAAAAA",
1682  					"AQAAAAAAAAABAAAA3wcAAAAAAADfBwAAAAAAAAAAAAAAAPC/"
1683  				],
1684  				[
1685  					6,
1686  					5,
1687  					"delete_word",
1688  					{
1689  						"forward": false
1690  					},
1691  					"BQAAAA0IAAAAAAAADQgAAAAAAAAQAAAAU1BMSU5FX1RISUNLTkVTUwsIAAAAAAAACwgAAAAAAAACAAAAPSAJCAAAAAAAAAkIAAAAAAAAAgAAAF0g9QcAAAAAAAD1BwAAAAAAABQAAABPVVRMSU5FTUFUX1RISUNLTkVTU/QHAAAAAAAA9AcAAAAAAAABAAAALg",
1692  					"AQAAAAAAAAABAAAAHQgAAAAAAAAdCAAAAAAAAAAAAAAAAPC/"
1693  				],
1694  				[
1695  					7,
1696  					4,
1697  					"left_delete",
1698  					null,
1699  					"BAAAAPMHAAAAAAAA8wcAAAAAAAABAAAAZPIHAAAAAAAA8gcAAAAAAAABAAAANPEHAAAAAAAA8QcAAAAAAAABAAAAY/AHAAAAAAAA8AcAAAAAAAABAAAAWw",
1700  					"AQAAAAAAAAABAAAA9AcAAAAAAAD0BwAAAAAAAAAAAAAAAPC/"
1701  				],
1702  				[
1703  					8,
1704  					1,
1705  					"paste",
1706  					null,
1707  					"AQAAAPAHAAAAAAAADwgAAAAAAAAAAAAA",
1708  					"AQAAAAAAAAABAAAA8AcAAAAAAADwBwAAAAAAAAAAAAAAAPC/"
1709  				],
1710  				[
1711  					9,
1712  					1,
1713  					"copilot_accept_completion",
1714  					null,
1715  					"AgAAAOAHAAAAAAAA4AcAAAAAAAAvAAAAICAgICAgICBzZWxmLm9ialtjNGQuT1VUTElORU1BVF9GSUxURVJfU1RST0tFU13gBwAAAAAAACgIAAAAAAAAAAAAAA",
1716  					"AQAAAAAAAAABAAAADwgAAAAAAAAPCAAAAAAAAAAAAAAAAPC/"
1717  				],
1718  				[
1719  					10,
1720  					4,
1721  					"delete_word",
1722  					{
1723  						"forward": false
1724  					},
1725  					"BAAAACEIAAAAAAAAIQgAAAAAAAAHAAAAc3Ryb2tlcxoIAAAAAAAAGggAAAAAAAAHAAAAZmlsdGVyIBgIAAAAAAAAGAgAAAAAAAACAAAAIyAWCAAAAAAAABYIAAAAAAAAAgAAACAg",
1726  					"AQAAAAAAAAABAAAAKAgAAAAAAAAoCAAAAAAAAAAAAAAAAPC/"
1727  				],
1728  				[
1729  					11,
1730  					1,
1731  					"left_delete",
1732  					null,
1733  					"AQAAABUIAAAAAAAAFQgAAAAAAAABAAAAZQ",
1734  					"AQAAAAAAAAABAAAAFggAAAAAAAAWCAAAAAAAAAAAAAAAAPC/"
1735  				],
1736  				[
1737  					12,
1738  					1,
1739  					"delete_word",
1740  					{
1741  						"forward": false
1742  					},
1743  					"AQAAABIIAAAAAAAAEggAAAAAAAADAAAAVHJ1",
1744  					"AQAAAAAAAAABAAAAFQgAAAAAAAAVCAAAAAAAAAAAAAAAAPC/"
1745  				],
1746  				[
1747  					13,
1748  					1,
1749  					"insert",
1750  					{
1751  						"characters": "False"
1752  					},
1753  					"BQAAABIIAAAAAAAAEwgAAAAAAAAAAAAAEwgAAAAAAAAUCAAAAAAAAAAAAAAUCAAAAAAAABUIAAAAAAAAAAAAABUIAAAAAAAAFggAAAAAAAAAAAAAFggAAAAAAAAXCAAAAAAAAAAAAAA",
1754  					"AQAAAAAAAAABAAAAEggAAAAAAAASCAAAAAAAAAAAAAAAAPC/"
1755  				],
1756  				[
1757  					14,
1758  					1,
1759  					"insert",
1760  					{
1761  						"characters": " "
1762  					},
1763  					"AQAAABcIAAAAAAAAGAgAAAAAAAAAAAAA",
1764  					"AQAAAAAAAAABAAAAFwgAAAAAAAAXCAAAAAAAAAAAAAAAAPC/"
1765  				]
1766  			]
1767  		},
1768  		{
1769  			"file": "objects/solid_objects.py",
1770  			"settings":
1771  			{
1772  				"buffer_size": 7107,
1773  				"encoding": "UTF-8",
1774  				"line_ending": "Unix"
1775  			},
1776  			"undo_stack":
1777  			[
1778  				[
1779  					7,
1780  					1,
1781  					"insert",
1782  					{
1783  						"characters": "=None"
1784  					},
1785  					"BQAAAE0XAAAAAAAAThcAAAAAAAAAAAAAThcAAAAAAABPFwAAAAAAAAAAAABPFwAAAAAAAFAXAAAAAAAAAAAAAFAXAAAAAAAAURcAAAAAAAAAAAAAURcAAAAAAABSFwAAAAAAAAAAAAA",
1786  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAE0XAAAAAAAATRcAAAAAAAAAAAAAAADwvw"
1787  				],
1788  				[
1789  					16,
1790  					4,
1791  					"left_delete",
1792  					null,
1793  					"BAAAAJQZAAAAAAAAlBkAAAAAAAABAAAAc5MZAAAAAAAAkxkAAAAAAAABAAAAcpIZAAAAAAAAkhkAAAAAAAABAAAAaZEZAAAAAAAAkRkAAAAAAAABAAAARg",
1794  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJUZAAAAAAAAlRkAAAAAAAAAAAAAAADwvw"
1795  				],
1796  				[
1797  					18,
1798  					1,
1799  					"left_delete",
1800  					null,
1801  					"AQAAAJEZAAAAAAAAkRkAAAAAAAABAAAAdA",
1802  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJIZAAAAAAAAkhkAAAAAAAAAAAAAAADwvw"
1803  				],
1804  				[
1805  					19,
1806  					1,
1807  					"insert",
1808  					{
1809  						"characters": "Last"
1810  					},
1811  					"BAAAAJEZAAAAAAAAkhkAAAAAAAAAAAAAkhkAAAAAAACTGQAAAAAAAAAAAACTGQAAAAAAAJQZAAAAAAAAAAAAAJQZAAAAAAAAlRkAAAAAAAAAAAAA",
1812  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJEZAAAAAAAAkRkAAAAAAAAAAAAAAADwvw"
1813  				],
1814  				[
1815  					27,
1816  					7,
1817  					"swap_line_down",
1818  					null,
1819  					"EAAAAGwZAAAAAAAA7RkAAAAAAAAAAAAAyRgAAAAAAADJGAAAAAAAAIEAAAAgICAgICAgICMgcmVtb3ZlIHN1cGVyZmx1b3VzIG1hdGVyaWFsIG51bGwKICAgICAgICBtYXRlcmlhbF9udWxsID0gc2VsZi5kb2N1bWVudC5HZXRGaXJzdE9iamVjdCgpCiAgICAgICAgbWF0ZXJpYWxfbnVsbC5SZW1vdmUoKQqeGQAAAAAAAB8aAAAAAAAAAAAAAOsYAAAAAAAA6xgAAAAAAACBAAAAICAgICAgICAjIHJlbW92ZSBzdXBlcmZsdW91cyBtYXRlcmlhbCBudWxsCiAgICAgICAgbWF0ZXJpYWxfbnVsbCA9IHNlbGYuZG9jdW1lbnQuR2V0Rmlyc3RPYmplY3QoKQogICAgICAgIG1hdGVyaWFsX251bGwuUmVtb3ZlKCkKxhkAAAAAAABHGgAAAAAAAAAAAAAdGQAAAAAAAB0ZAAAAAAAAgQAAACAgICAgICAgIyByZW1vdmUgc3VwZXJmbHVvdXMgbWF0ZXJpYWwgbnVsbAogICAgICAgIG1hdGVyaWFsX251bGwgPSBzZWxmLmRvY3VtZW50LkdldEZpcnN0T2JqZWN0KCkKICAgICAgICBtYXRlcmlhbF9udWxsLlJlbW92ZSgpCu4ZAAAAAAAAbxoAAAAAAAAAAAAARRkAAAAAAABFGQAAAAAAAIEAAAAgICAgICAgICMgcmVtb3ZlIHN1cGVyZmx1b3VzIG1hdGVyaWFsIG51bGwKICAgICAgICBtYXRlcmlhbF9udWxsID0gc2VsZi5kb2N1bWVudC5HZXRGaXJzdE9iamVjdCgpCiAgICAgICAgbWF0ZXJpYWxfbnVsbC5SZW1vdmUoKQoXGgAAAAAAAJgaAAAAAAAAAAAAAG0ZAAAAAAAAbRkAAAAAAACBAAAAICAgICAgICAjIHJlbW92ZSBzdXBlcmZsdW91cyBtYXRlcmlhbCBudWxsCiAgICAgICAgbWF0ZXJpYWxfbnVsbCA9IHNlbGYuZG9jdW1lbnQuR2V0Rmlyc3RPYmplY3QoKQogICAgICAgIG1hdGVyaWFsX251bGwuUmVtb3ZlKCkKMhoAAAAAAACzGgAAAAAAAAAAAACWGQAAAAAAAJYZAAAAAAAAgQAAACAgICAgICAgIyByZW1vdmUgc3VwZXJmbHVvdXMgbWF0ZXJpYWwgbnVsbAogICAgICAgIG1hdGVyaWFsX251bGwgPSBzZWxmLmRvY3VtZW50LkdldEZpcnN0T2JqZWN0KCkKICAgICAgICBtYXRlcmlhbF9udWxsLlJlbW92ZSgpCkwaAAAAAAAAzRoAAAAAAAAAAAAAzBoAAAAAAADMGgAAAAAAAAEAAAAKTBoAAAAAAABNGgAAAAAAAAAAAACxGQAAAAAAALEZAAAAAAAAgQAAACAgICAgICAgIyByZW1vdmUgc3VwZXJmbHVvdXMgbWF0ZXJpYWwgbnVsbAogICAgICAgIG1hdGVyaWFsX251bGwgPSBzZWxmLmRvY3VtZW50LkdldEZpcnN0T2JqZWN0KCkKICAgICAgICBtYXRlcmlhbF9udWxsLlJlbW92ZSgpCg",
1820  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEkZAAAAAAAA0RgAAAAAAAAAAAAAAABMQA"
1821  				],
1822  				[
1823  					34,
1824  					4,
1825  					"left_delete",
1826  					null,
1827  					"BAAAACMaAAAAAAAAIxoAAAAAAAABAAAAcyIaAAAAAAAAIhoAAAAAAAABAAAAciEaAAAAAAAAIRoAAAAAAAABAAAAaSAaAAAAAAAAIBoAAAAAAAABAAAARg",
1828  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAACQaAAAAAAAAJBoAAAAAAAAAAAAAAADwvw"
1829  				],
1830  				[
1831  					35,
1832  					1,
1833  					"insert",
1834  					{
1835  						"characters": "Las"
1836  					},
1837  					"AwAAACAaAAAAAAAAIRoAAAAAAAAAAAAAIRoAAAAAAAAiGgAAAAAAAAAAAAAiGgAAAAAAACMaAAAAAAAAAAAAAA",
1838  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAACAaAAAAAAAAIBoAAAAAAAAAAAAAAADwvw"
1839  				],
1840  				[
1841  					41,
1842  					1,
1843  					"insert",
1844  					{
1845  						"characters": "Search"
1846  					},
1847  					"BwAAAA0ZAAAAAAAADhkAAAAAAAAAAAAADhkAAAAAAAAOGQAAAAAAAA0AAABHZXRMYXN0T2JqZWN0DhkAAAAAAAAPGQAAAAAAAAAAAAAPGQAAAAAAABAZAAAAAAAAAAAAABAZAAAAAAAAERkAAAAAAAAAAAAAERkAAAAAAAASGQAAAAAAAAAAAAASGQAAAAAAABMZAAAAAAAAAAAAAA",
1848  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAA0ZAAAAAAAAGhkAAAAAAAAAAAAAAADwvw"
1849  				],
1850  				[
1851  					42,
1852  					1,
1853  					"insert",
1854  					{
1855  						"characters": "Object("
1856  					},
1857  					"BwAAABMZAAAAAAAAFBkAAAAAAAAAAAAAFBkAAAAAAAAVGQAAAAAAAAAAAAAVGQAAAAAAABYZAAAAAAAAAAAAABYZAAAAAAAAFxkAAAAAAAAAAAAAFxkAAAAAAAAYGQAAAAAAAAAAAAAYGQAAAAAAABkZAAAAAAAAAAAAABkZAAAAAAAAGhkAAAAAAAAAAAAA",
1858  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAABMZAAAAAAAAExkAAAAAAAAAAAAAAADwvw"
1859  				],
1860  				[
1861  					43,
1862  					1,
1863  					"left_delete",
1864  					null,
1865  					"AQAAABkZAAAAAAAAGRkAAAAAAAABAAAAKA",
1866  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAABoZAAAAAAAAGhkAAAAAAAAAAAAAAADwvw"
1867  				],
1868  				[
1869  					45,
1870  					1,
1871  					"insert_snippet",
1872  					{
1873  						"contents": "\"$0\""
1874  					},
1875  					"AQAAABoZAAAAAAAAHBkAAAAAAAAAAAAA",
1876  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAABoZAAAAAAAAGhkAAAAAAAAAAAAAAADwvw"
1877  				],
1878  				[
1879  					46,
1880  					1,
1881  					"insert",
1882  					{
1883  						"characters": "Root"
1884  					},
1885  					"BAAAABsZAAAAAAAAHBkAAAAAAAAAAAAAHBkAAAAAAAAdGQAAAAAAAAAAAAAdGQAAAAAAAB4ZAAAAAAAAAAAAAB4ZAAAAAAAAHxkAAAAAAAAAAAAA",
1886  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAABsZAAAAAAAAGxkAAAAAAAAAAAAAAADwvw"
1887  				],
1888  				[
1889  					50,
1890  					1,
1891  					"delete_word",
1892  					{
1893  						"forward": false
1894  					},
1895  					"AQAAACIaAAAAAAAAIhoAAAAAAAANAAAAR2V0TGFzdE9iamVjdA",
1896  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAC8aAAAAAAAALxoAAAAAAAAAAAAAAADwvw"
1897  				],
1898  				[
1899  					52,
1900  					2,
1901  					"left_delete",
1902  					null,
1903  					"AgAAACMaAAAAAAAAIxoAAAAAAAABAAAAKSIaAAAAAAAAIhoAAAAAAAABAAAAKA",
1904  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAACQaAAAAAAAAJBoAAAAAAAAAAAAAAADwvw"
1905  				],
1906  				[
1907  					53,
1908  					1,
1909  					"copilot_accept_completion",
1910  					null,
1911  					"AgAAAPwZAAAAAAAA/BkAAAAAAAAmAAAAICAgICAgICBtYXRlcmlhbF9udWxsID0gc2VsZi5kb2N1bWVudC78GQAAAAAAADsaAAAAAAAAAAAAAA",
1912  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAACIaAAAAAAAAIhoAAAAAAAAAAAAAAADwvw"
1913  				],
1914  				[
1915  					63,
1916  					5,
1917  					"swap_line_up",
1918  					null,
1919  					"DAAAANEZAAAAAAAA0RkAAAAAAACJAAAAICAgICAgICAjIHJlbW92ZSBzdXBlcmZsdW91cyBtYXRlcmlhbCBudWxsCiAgICAgICAgbWF0ZXJpYWxfbnVsbCA9IHNlbGYuZG9jdW1lbnQuU2VhcmNoT2JqZWN0KCJNYXRlcmlhbHMiKQogICAgICAgIG1hdGVyaWFsX251bGwuUmVtb3ZlKCnQGQAAAAAAANAZAAAAAAAAAQAAAAq2GQAAAAAAALcZAAAAAAAAAAAAALYZAAAAAAAAPxoAAAAAAAAAAAAAthkAAAAAAAC2GQAAAAAAAIoAAAAgICAgICAgICMgcmVtb3ZlIHN1cGVyZmx1b3VzIG1hdGVyaWFsIG51bGwKICAgICAgICBtYXRlcmlhbF9udWxsID0gc2VsZi5kb2N1bWVudC5TZWFyY2hPYmplY3QoIk1hdGVyaWFscyIpCiAgICAgICAgbWF0ZXJpYWxfbnVsbC5SZW1vdmUoKQqbGQAAAAAAACUaAAAAAAAAAAAAAJsZAAAAAAAAmxkAAAAAAACKAAAAICAgICAgICAjIHJlbW92ZSBzdXBlcmZsdW91cyBtYXRlcmlhbCBudWxsCiAgICAgICAgbWF0ZXJpYWxfbnVsbCA9IHNlbGYuZG9jdW1lbnQuU2VhcmNoT2JqZWN0KCJNYXRlcmlhbHMiKQogICAgICAgIG1hdGVyaWFsX251bGwuUmVtb3ZlKCkKchkAAAAAAAD8GQAAAAAAAAAAAAByGQAAAAAAAHIZAAAAAAAAigAAACAgICAgICAgIyByZW1vdmUgc3VwZXJmbHVvdXMgbWF0ZXJpYWwgbnVsbAogICAgICAgIG1hdGVyaWFsX251bGwgPSBzZWxmLmRvY3VtZW50LlNlYXJjaE9iamVjdCgiTWF0ZXJpYWxzIikKICAgICAgICBtYXRlcmlhbF9udWxsLlJlbW92ZSgpCkoZAAAAAAAA1BkAAAAAAAAAAAAAShkAAAAAAABKGQAAAAAAAIoAAAAgICAgICAgICMgcmVtb3ZlIHN1cGVyZmx1b3VzIG1hdGVyaWFsIG51bGwKICAgICAgICBtYXRlcmlhbF9udWxsID0gc2VsZi5kb2N1bWVudC5TZWFyY2hPYmplY3QoIk1hdGVyaWFscyIpCiAgICAgICAgbWF0ZXJpYWxfbnVsbC5SZW1vdmUoKQoiGQAAAAAAAKwZAAAAAAAAAAAAAA",
1920  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFoaAAAAAAAA2RkAAAAAAAAAAAAAAABMQA"
1921  				],
1922  				[
1923  					64,
1924  					2,
1925  					"swap_line_up",
1926  					null,
1927  					"BAAAACIZAAAAAAAAIhkAAAAAAACKAAAAICAgICAgICAjIHJlbW92ZSBzdXBlcmZsdW91cyBtYXRlcmlhbCBudWxsCiAgICAgICAgbWF0ZXJpYWxfbnVsbCA9IHNlbGYuZG9jdW1lbnQuU2VhcmNoT2JqZWN0KCJNYXRlcmlhbHMiKQogICAgICAgIG1hdGVyaWFsX251bGwuUmVtb3ZlKCkK6xgAAAAAAAB1GQAAAAAAAAAAAADrGAAAAAAAAOsYAAAAAAAAigAAACAgICAgICAgIyByZW1vdmUgc3VwZXJmbHVvdXMgbWF0ZXJpYWwgbnVsbAogICAgICAgIG1hdGVyaWFsX251bGwgPSBzZWxmLmRvY3VtZW50LlNlYXJjaE9iamVjdCgiTWF0ZXJpYWxzIikKICAgICAgICBtYXRlcmlhbF9udWxsLlJlbW92ZSgpCskYAAAAAAAAUxkAAAAAAAAAAAAA",
1928  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAKsZAAAAAAAAKhkAAAAAAAAAAAAAAABMQA"
1929  				],
1930  				[
1931  					72,
1932  					1,
1933  					"insert",
1934  					{
1935  						"characters": "\nprtin"
1936  					},
1937  					"BwAAADMZAAAAAAAANBkAAAAAAAAAAAAANBkAAAAAAAA8GQAAAAAAAAAAAAA8GQAAAAAAAD0ZAAAAAAAAAAAAAD0ZAAAAAAAAPhkAAAAAAAAAAAAAPhkAAAAAAAA/GQAAAAAAAAAAAAA/GQAAAAAAAEAZAAAAAAAAAAAAAEAZAAAAAAAAQRkAAAAAAAAAAAAA",
1938  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADMZAAAAAAAAMxkAAAAAAAAAAAAAAADwvw"
1939  				],
1940  				[
1941  					73,
1942  					3,
1943  					"left_delete",
1944  					null,
1945  					"AwAAAEAZAAAAAAAAQBkAAAAAAAABAAAAbj8ZAAAAAAAAPxkAAAAAAAABAAAAaT4ZAAAAAAAAPhkAAAAAAAABAAAAdA",
1946  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEEZAAAAAAAAQRkAAAAAAAAAAAAAAADwvw"
1947  				],
1948  				[
1949  					74,
1950  					1,
1951  					"copilot_accept_completion",
1952  					null,
1953  					"AgAAADQZAAAAAAAANBkAAAAAAAAKAAAAICAgICAgICBwcjQZAAAAAAAAUBkAAAAAAAAAAAAA",
1954  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAD4ZAAAAAAAAPhkAAAAAAAAAAAAAAADwvw"
1955  				],
1956  				[
1957  					77,
1958  					1,
1959  					"insert",
1960  					{
1961  						"characters": "\n"
1962  					},
1963  					"AgAAAMgZAAAAAAAAyRkAAAAAAAAAAAAAyRkAAAAAAADRGQAAAAAAAAAAAAA",
1964  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAMgZAAAAAAAAyBkAAAAAAAD////////vfw"
1965  				],
1966  				[
1967  					78,
1968  					1,
1969  					"insert",
1970  					{
1971  						"characters": "pr"
1972  					},
1973  					"AgAAANEZAAAAAAAA0hkAAAAAAAAAAAAA0hkAAAAAAADTGQAAAAAAAAAAAAA",
1974  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANEZAAAAAAAA0RkAAAAAAAAAAAAAAADwvw"
1975  				],
1976  				[
1977  					79,
1978  					1,
1979  					"copilot_accept_completion",
1980  					null,
1981  					"AgAAAMkZAAAAAAAAyRkAAAAAAAAKAAAAICAgICAgICBwcskZAAAAAAAA4RkAAAAAAAAAAAAA",
1982  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANMZAAAAAAAA0xkAAAAAAAAAAAAAAADwvw"
1983  				],
1984  				[
1985  					87,
1986  					1,
1987  					"insert",
1988  					{
1989  						"characters": ".GetClone"
1990  					},
1991  					"CQAAAAoYAAAAAAAACxgAAAAAAAAAAAAACxgAAAAAAAAMGAAAAAAAAAAAAAAMGAAAAAAAAA0YAAAAAAAAAAAAAA0YAAAAAAAADhgAAAAAAAAAAAAADhgAAAAAAAAPGAAAAAAAAAAAAAAPGAAAAAAAABAYAAAAAAAAAAAAABAYAAAAAAAAERgAAAAAAAAAAAAAERgAAAAAAAASGAAAAAAAAAAAAAASGAAAAAAAABMYAAAAAAAAAAAAAA",
1992  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAoYAAAAAAAAChgAAAAAAAAAAAAAAADwvw"
1993  				],
1994  				[
1995  					88,
1996  					1,
1997  					"insert_snippet",
1998  					{
1999  						"contents": "($0)"
2000  					},
2001  					"AQAAABMYAAAAAAAAFRgAAAAAAAAAAAAA",
2002  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAABMYAAAAAAAAExgAAAAAAAAAAAAAAADwvw"
2003  				],
2004  				[
2005  					94,
2006  					1,
2007  					"run_macro_file",
2008  					{
2009  						"file": "res://Packages/Default/Delete to Hard BOL.sublime-macro"
2010  					},
2011  					"AQAAANQZAAAAAAAA1BkAAAAAAAAYAAAAICAgICAgICBwcmludChyb290X251bGwp",
2012  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAOwZAAAAAAAA7BkAAAAAAAAAAAAAAADwvw"
2013  				],
2014  				[
2015  					95,
2016  					1,
2017  					"left_delete",
2018  					null,
2019  					"AQAAANMZAAAAAAAA0xkAAAAAAAABAAAACg",
2020  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANQZAAAAAAAA1BkAAAAAAAAAAAAAAADwvw"
2021  				],
2022  				[
2023  					97,
2024  					1,
2025  					"run_macro_file",
2026  					{
2027  						"file": "res://Packages/Default/Delete to Hard BOL.sublime-macro"
2028  					},
2029  					"AQAAAD8ZAAAAAAAAPxkAAAAAAAAcAAAAICAgICAgICBwcmludChtYXRlcmlhbF9udWxsKQ",
2030  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFsZAAAAAAAAWxkAAAAAAAAAAAAAAKB3QA"
2031  				],
2032  				[
2033  					98,
2034  					1,
2035  					"left_delete",
2036  					null,
2037  					"AQAAAD4ZAAAAAAAAPhkAAAAAAAABAAAACg",
2038  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAD8ZAAAAAAAAPxkAAAAAAAAAAAAAAADwvw"
2039  				],
2040  				[
2041  					102,
2042  					5,
2043  					"left_delete",
2044  					null,
2045  					"BQAAAMMZAAAAAAAAwxkAAAAAAAABAAAALsIZAAAAAAAAwhkAAAAAAAABAAAAZsEZAAAAAAAAwRkAAAAAAAABAAAAbMAZAAAAAAAAwBkAAAAAAAABAAAAZb8ZAAAAAAAAvxkAAAAAAAABAAAAcw",
2046  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAMQZAAAAAAAAxBkAAAAAAAAAAAAAAADwvw"
2047  				],
2048  				[
2049  					106,
2050  					2,
2051  					"delete_word",
2052  					{
2053  						"forward": false
2054  					},
2055  					"AgAAAA4aAAAAAAAADhoAAAAAAAABAAAALgoaAAAAAAAAChoAAAAAAAAEAAAAc2VsZg",
2056  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAA8aAAAAAAAADxoAAAAAAAAAAAAAAADwvw"
2057  				],
2058  				[
2059  					109,
2060  					1,
2061  					"insert",
2062  					{
2063  						"characters": "mesh_copy"
2064  					},
2065  					"CQAAAAoaAAAAAAAACxoAAAAAAAAAAAAACxoAAAAAAAAMGgAAAAAAAAAAAAAMGgAAAAAAAA0aAAAAAAAAAAAAAA0aAAAAAAAADhoAAAAAAAAAAAAADhoAAAAAAAAPGgAAAAAAAAAAAAAPGgAAAAAAABAaAAAAAAAAAAAAABAaAAAAAAAAERoAAAAAAAAAAAAAERoAAAAAAAASGgAAAAAAAAAAAAASGgAAAAAAABMaAAAAAAAAAAAAAA",
2066  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAoaAAAAAAAAChoAAAAAAAAAAAAAAADwvw"
2067  				],
2068  				[
2069  					110,
2070  					1,
2071  					"insert",
2072  					{
2073  						"characters": " ="
2074  					},
2075  					"AgAAABMaAAAAAAAAFBoAAAAAAAAAAAAAFBoAAAAAAAAVGgAAAAAAAAAAAAA",
2076  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAABMaAAAAAAAAExoAAAAAAAAAAAAAAADwvw"
2077  				],
2078  				[
2079  					111,
2080  					1,
2081  					"insert",
2082  					{
2083  						"characters": " "
2084  					},
2085  					"AQAAABUaAAAAAAAAFhoAAAAAAAAAAAAA",
2086  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAABUaAAAAAAAAFRoAAAAAAAAAAAAAAADwvw"
2087  				],
2088  				[
2089  					113,
2090  					1,
2091  					"insert",
2092  					{
2093  						"characters": ".GetC"
2094  					},
2095  					"BQAAADEaAAAAAAAAMhoAAAAAAAAAAAAAMhoAAAAAAAAzGgAAAAAAAAAAAAAzGgAAAAAAADQaAAAAAAAAAAAAADQaAAAAAAAANRoAAAAAAAAAAAAANRoAAAAAAAA2GgAAAAAAAAAAAAA",
2096  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADEaAAAAAAAAMRoAAAAAAAD////////vfw"
2097  				],
2098  				[
2099  					114,
2100  					1,
2101  					"insert_completion",
2102  					{
2103  						"completion": "GetClone",
2104  						"format": "text",
2105  						"keep_prefix": false,
2106  						"must_insert": false,
2107  						"trigger": "GetClone"
2108  					},
2109  					"AgAAADIaAAAAAAAAMhoAAAAAAAAEAAAAR2V0QzIaAAAAAAAAOhoAAAAAAAAAAAAA",
2110  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADYaAAAAAAAANhoAAAAAAAAAAAAAAADwvw"
2111  				],
2112  				[
2113  					115,
2114  					1,
2115  					"insert",
2116  					{
2117  						"characters": ")"
2118  					},
2119  					"AQAAADoaAAAAAAAAOxoAAAAAAAAAAAAA",
2120  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADoaAAAAAAAAOhoAAAAAAAAAAAAAAADwvw"
2121  				],
2122  				[
2123  					116,
2124  					1,
2125  					"left_delete",
2126  					null,
2127  					"AQAAADoaAAAAAAAAOhoAAAAAAAABAAAAKQ",
2128  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADsaAAAAAAAAOxoAAAAAAAAAAAAAAADwvw"
2129  				],
2130  				[
2131  					117,
2132  					1,
2133  					"insert_snippet",
2134  					{
2135  						"contents": "($0)"
2136  					},
2137  					"AQAAADoaAAAAAAAAPBoAAAAAAAAAAAAA",
2138  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADoaAAAAAAAAOhoAAAAAAAAAAAAAAADwvw"
2139  				],
2140  				[
2141  					121,
2142  					1,
2143  					"left_delete",
2144  					null,
2145  					"AQAAAAoYAAAAAAAAChgAAAAAAAALAAAALkdldENsb25lKCk",
2146  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAoYAAAAAAAAFRgAAAAAAAAAAAAAAADwvw"
2147  				],
2148  				[
2149  					128,
2150  					1,
2151  					"insert",
2152  					{
2153  						"characters": "self."
2154  					},
2155  					"BQAAAP8ZAAAAAAAAABoAAAAAAAAAAAAAABoAAAAAAAABGgAAAAAAAAAAAAABGgAAAAAAAAIaAAAAAAAAAAAAAAIaAAAAAAAAAxoAAAAAAAAAAAAAAxoAAAAAAAAEGgAAAAAAAAAAAAA",
2156  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAP8ZAAAAAAAA/xkAAAAAAAAAAAAAAADwvw"
2157  				],
2158  				[
2159  					139,
2160  					1,
2161  					"run_macro_file",
2162  					{
2163  						"file": "res://Packages/Default/Delete to Hard BOL.sublime-macro"
2164  					},
2165  					"AQAAAM8ZAAAAAAAAzxkAAAAAAAAnAAAAICAgICAgICAjIG1vdmUgb3V0IGZyb20gdW5kZXIgcm9vdCBudWxs",
2166  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPYZAAAAAAAA9hkAAAAAAAAAAAAAAEBzQA"
2167  				],
2168  				[
2169  					140,
2170  					1,
2171  					"left_delete",
2172  					null,
2173  					"AQAAAM4ZAAAAAAAAzhkAAAAAAAABAAAACg",
2174  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAM8ZAAAAAAAAzxkAAAAAAAAAAAAAAADwvw"
2175  				],
2176  				[
2177  					142,
2178  					1,
2179  					"insert",
2180  					{
2181  						"characters": "self."
2182  					},
2183  					"BQAAALQZAAAAAAAAtRkAAAAAAAAAAAAAtRkAAAAAAAC2GQAAAAAAAAAAAAC2GQAAAAAAALcZAAAAAAAAAAAAALcZAAAAAAAAuBkAAAAAAAAAAAAAuBkAAAAAAAC5GQAAAAAAAAAAAAA",
2184  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALQZAAAAAAAAtBkAAAAAAAAAAAAAAABMQA"
2185  				],
2186  				[
2187  					144,
2188  					1,
2189  					"insert",
2190  					{
2191  						"characters": ".GetClome"
2192  					},
2193  					"CQAAANMZAAAAAAAA1BkAAAAAAAAAAAAA1BkAAAAAAADVGQAAAAAAAAAAAADVGQAAAAAAANYZAAAAAAAAAAAAANYZAAAAAAAA1xkAAAAAAAAAAAAA1xkAAAAAAADYGQAAAAAAAAAAAADYGQAAAAAAANkZAAAAAAAAAAAAANkZAAAAAAAA2hkAAAAAAAAAAAAA2hkAAAAAAADbGQAAAAAAAAAAAADbGQAAAAAAANwZAAAAAAAAAAAAAA",
2194  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANMZAAAAAAAA0xkAAAAAAAD////////vfw"
2195  				],
2196  				[
2197  					145,
2198  					1,
2199  					"insert_snippet",
2200  					{
2201  						"contents": "($0)"
2202  					},
2203  					"AQAAANwZAAAAAAAA3hkAAAAAAAAAAAAA",
2204  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANwZAAAAAAAA3BkAAAAAAAAAAAAAAADwvw"
2205  				],
2206  				[
2207  					147,
2208  					1,
2209  					"left_delete",
2210  					null,
2211  					"AQAAANoZAAAAAAAA2hkAAAAAAAABAAAAbQ",
2212  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANsZAAAAAAAA2xkAAAAAAAAAAAAAAADwvw"
2213  				],
2214  				[
2215  					148,
2216  					1,
2217  					"insert",
2218  					{
2219  						"characters": "n"
2220  					},
2221  					"AQAAANoZAAAAAAAA2xkAAAAAAAAAAAAA",
2222  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANoZAAAAAAAA2hkAAAAAAAAAAAAAAADwvw"
2223  				],
2224  				[
2225  					151,
2226  					1,
2227  					"run_macro_file",
2228  					{
2229  						"file": "res://Packages/Default/Delete to Hard BOL.sublime-macro"
2230  					},
2231  					"AQAAAN8ZAAAAAAAA3xkAAAAAAAA/AAAAICAgICAgICBzZWxmLm1lc2hfY29weSA9IG1lc2guSW5zZXJ0QWZ0ZXIocm9vdF9udWxsKS5HZXRDbG9uZSgp",
2232  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAB4aAAAAAAAAHhoAAAAAAAD////////vfw"
2233  				],
2234  				[
2235  					152,
2236  					1,
2237  					"left_delete",
2238  					null,
2239  					"AQAAAN4ZAAAAAAAA3hkAAAAAAAABAAAACg",
2240  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAN8ZAAAAAAAA3xkAAAAAAAAAAAAAAADwvw"
2241  				],
2242  				[
2243  					157,
2244  					1,
2245  					"insert",
2246  					{
2247  						"characters": "clone"
2248  					},
2249  					"BQAAAGEZAAAAAAAAYhkAAAAAAAAAAAAAYhkAAAAAAABjGQAAAAAAAAAAAABjGQAAAAAAAGQZAAAAAAAAAAAAAGQZAAAAAAAAZRkAAAAAAAAAAAAAZRkAAAAAAABmGQAAAAAAAAAAAAA",
2250  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGEZAAAAAAAAYRkAAAAAAAAAAAAAAADwvw"
2251  				],
2252  				[
2253  					158,
2254  					1,
2255  					"insert",
2256  					{
2257  						"characters": " of"
2258  					},
2259  					"AwAAAGYZAAAAAAAAZxkAAAAAAAAAAAAAZxkAAAAAAABoGQAAAAAAAAAAAABoGQAAAAAAAGkZAAAAAAAAAAAAAA",
2260  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGYZAAAAAAAAZhkAAAAAAAAAAAAAAADwvw"
2261  				],
2262  				[
2263  					159,
2264  					1,
2265  					"insert",
2266  					{
2267  						"characters": " "
2268  					},
2269  					"AQAAAGkZAAAAAAAAahkAAAAAAAAAAAAA",
2270  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGkZAAAAAAAAaRkAAAAAAAAAAAAAAADwvw"
2271  				],
2272  				[
2273  					162,
2274  					1,
2275  					"insert",
2276  					{
2277  						"characters": " and"
2278  					},
2279  					"BAAAAAIaAAAAAAAAAxoAAAAAAAAAAAAAAxoAAAAAAAAEGgAAAAAAAAAAAAAEGgAAAAAAAAUaAAAAAAAAAAAAAAUaAAAAAAAABhoAAAAAAAAAAAAA",
2280  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAIaAAAAAAAAAhoAAAAAAAD////////vfw"
2281  				],
2282  				[
2283  					163,
2284  					1,
2285  					"insert",
2286  					{
2287  						"characters": " mesh"
2288  					},
2289  					"BQAAAAYaAAAAAAAABxoAAAAAAAAAAAAABxoAAAAAAAAIGgAAAAAAAAAAAAAIGgAAAAAAAAkaAAAAAAAAAAAAAAkaAAAAAAAAChoAAAAAAAAAAAAAChoAAAAAAAALGgAAAAAAAAAAAAA",
2290  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAYaAAAAAAAABhoAAAAAAAAAAAAAAADwvw"
2291  				],
2292  				[
2293  					4,
2294  					1,
2295  					"left_delete",
2296  					null,
2297  					"AQAAANIUAAAAAAAA0hQAAAAAAAABAAAACg",
2298  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADTFAAAAAAAANMUAAAAAAAAAAAAAAAA8L8"
2299  				],
2300  				[
2301  					7,
2302  					1,
2303  					"insert",
2304  					{
2305  						"characters": " "
2306  					},
2307  					"AQAAACUVAAAAAAAAJhUAAAAAAAAAAAAA",
2308  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAlFQAAAAAAACUVAAAAAAAAAAAAAAAA8L8"
2309  				],
2310  				[
2311  					8,
2312  					1,
2313  					"insert",
2314  					{
2315  						"characters": "size=None"
2316  					},
2317  					"CQAAACYVAAAAAAAAJxUAAAAAAAAAAAAAJxUAAAAAAAAoFQAAAAAAAAAAAAAoFQAAAAAAACkVAAAAAAAAAAAAACkVAAAAAAAAKhUAAAAAAAAAAAAAKhUAAAAAAAArFQAAAAAAAAAAAAArFQAAAAAAACwVAAAAAAAAAAAAACwVAAAAAAAALRUAAAAAAAAAAAAALRUAAAAAAAAuFQAAAAAAAAAAAAAuFQAAAAAAAC8VAAAAAAAAAAAAAA",
2318  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAmFQAAAAAAACYVAAAAAAAAAAAAAAAA8L8"
2319  				],
2320  				[
2321  					9,
2322  					1,
2323  					"insert",
2324  					{
2325  						"characters": ","
2326  					},
2327  					"AQAAAC8VAAAAAAAAMBUAAAAAAAAAAAAA",
2328  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAvFQAAAAAAAC8VAAAAAAAAAAAAAAAA8L8"
2329  				],
2330  				[
2331  					11,
2332  					1,
2333  					"insert",
2334  					{
2335  						"characters": "\nself.si"
2336  					},
2337  					"CQAAAI4VAAAAAAAAjxUAAAAAAAAAAAAAjxUAAAAAAACXFQAAAAAAAAAAAACXFQAAAAAAAJgVAAAAAAAAAAAAAJgVAAAAAAAAmRUAAAAAAAAAAAAAmRUAAAAAAACaFQAAAAAAAAAAAACaFQAAAAAAAJsVAAAAAAAAAAAAAJsVAAAAAAAAnBUAAAAAAAAAAAAAnBUAAAAAAACdFQAAAAAAAAAAAACdFQAAAAAAAJ4VAAAAAAAAAAAAAA",
2338  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACOFQAAAAAAAI4VAAAAAAAAAAAAAABQfUA"
2339  				],
2340  				[
2341  					13,
2342  					1,
2343  					"insert_completion",
2344  					{
2345  						"completion": "size",
2346  						"format": "text",
2347  						"keep_prefix": false,
2348  						"must_insert": false,
2349  						"trigger": "size"
2350  					},
2351  					"AgAAAJwVAAAAAAAAnBUAAAAAAAACAAAAc2mcFQAAAAAAAKAVAAAAAAAAAAAAAA",
2352  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACeFQAAAAAAAJ4VAAAAAAAAAAAAAAAA8L8"
2353  				],
2354  				[
2355  					14,
2356  					1,
2357  					"copilot_accept_completion",
2358  					null,
2359  					"AgAAAI8VAAAAAAAAjxUAAAAAAAARAAAAICAgICAgICBzZWxmLnNpemWPFQAAAAAAAKcVAAAAAAAAAAAAAA",
2360  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACgFQAAAAAAAKAVAAAAAAAAAAAAAAAA8L8"
2361  				],
2362  				[
2363  					17,
2364  					1,
2365  					"insert",
2366  					{
2367  						"characters": "\nif"
2368  					},
2369  					"BQAAADwWAAAAAAAAPRYAAAAAAAAAAAAAPRYAAAAAAABBFgAAAAAAAAAAAABBFgAAAAAAAEUWAAAAAAAAAAAAAEUWAAAAAAAARhYAAAAAAAAAAAAARhYAAAAAAABHFgAAAAAAAAAAAAA",
2370  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA8FgAAAAAAADwWAAAAAAAA////////738"
2371  				],
2372  				[
2373  					18,
2374  					1,
2375  					"insert",
2376  					{
2377  						"characters": " "
2378  					},
2379  					"AQAAAEcWAAAAAAAASBYAAAAAAAAAAAAA",
2380  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABHFgAAAAAAAEcWAAAAAAAAAAAAAAAA8L8"
2381  				],
2382  				[
2383  					19,
2384  					1,
2385  					"copilot_accept_completion",
2386  					null,
2387  					"AgAAAD0WAAAAAAAAPRYAAAAAAAALAAAAICAgICAgICBpZiA9FgAAAAAAAIYWAAAAAAAAAAAAAA",
2388  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABIFgAAAAAAAEgWAAAAAAAAAAAAAAAA8L8"
2389  				],
2390  				[
2391  					20,
2392  					9,
2393  					"delete_word",
2394  					{
2395  						"forward": false
2396  					},
2397  					"CQAAAIIWAAAAAAAAghYAAAAAAAAEAAAAc2l6ZYEWAAAAAAAAgRYAAAAAAAABAAAALn0WAAAAAAAAfRYAAAAAAAAEAAAAc2VsZnsWAAAAAAAAexYAAAAAAAACAAAAPSB5FgAAAAAAAHkWAAAAAAAAAgAAAF0gbBYAAAAAAABsFgAAAAAAAA0AAABQUklNX0NVQkVfTEVOaxYAAAAAAABrFgAAAAAAAAEAAAAuaBYAAAAAAABoFgAAAAAAAAMAAABjNGRnFgAAAAAAAGcWAAAAAAAAAQAAAFs",
2398  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACGFgAAAAAAAIYWAAAAAAAAAAAAAAAA8L8"
2399  				],
2400  				[
2401  					21,
2402  					3,
2403  					"left_delete",
2404  					null,
2405  					"AwAAAGYWAAAAAAAAZhYAAAAAAAABAAAAamUWAAAAAAAAZRYAAAAAAAABAAAAYmQWAAAAAAAAZBYAAAAAAAABAAAAbw",
2406  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABnFgAAAAAAAGcWAAAAAAAAAAAAAAAA8L8"
2407  				],
2408  				[
2409  					22,
2410  					1,
2411  					"insert",
2412  					{
2413  						"characters": ".wid"
2414  					},
2415  					"BAAAAGQWAAAAAAAAZRYAAAAAAAAAAAAAZRYAAAAAAABmFgAAAAAAAAAAAABmFgAAAAAAAGcWAAAAAAAAAAAAAGcWAAAAAAAAaBYAAAAAAAAAAAAA",
2416  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABkFgAAAAAAAGQWAAAAAAAAAAAAAAAA8L8"
2417  				],
2418  				[
2419  					23,
2420  					1,
2421  					"insert_completion",
2422  					{
2423  						"completion": "width",
2424  						"format": "text",
2425  						"keep_prefix": false,
2426  						"must_insert": false,
2427  						"trigger": "width"
2428  					},
2429  					"AgAAAGUWAAAAAAAAZRYAAAAAAAADAAAAd2lkZRYAAAAAAABqFgAAAAAAAAAAAAA",
2430  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABoFgAAAAAAAGgWAAAAAAAAAAAAAAAA8L8"
2431  				],
2432  				[
2433  					24,
2434  					1,
2435  					"insert",
2436  					{
2437  						"characters": " ="
2438  					},
2439  					"AgAAAGoWAAAAAAAAaxYAAAAAAAAAAAAAaxYAAAAAAABsFgAAAAAAAAAAAAA",
2440  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABqFgAAAAAAAGoWAAAAAAAAAAAAAAAA8L8"
2441  				],
2442  				[
2443  					25,
2444  					1,
2445  					"insert",
2446  					{
2447  						"characters": " s"
2448  					},
2449  					"AgAAAGwWAAAAAAAAbRYAAAAAAAAAAAAAbRYAAAAAAABuFgAAAAAAAAAAAAA",
2450  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABsFgAAAAAAAGwWAAAAAAAAAAAAAAAA8L8"
2451  				],
2452  				[
2453  					26,
2454  					1,
2455  					"insert_completion",
2456  					{
2457  						"completion": "self",
2458  						"format": "snippet",
2459  						"keep_prefix": false,
2460  						"must_insert": false,
2461  						"trigger": "self"
2462  					},
2463  					"AgAAAG0WAAAAAAAAbRYAAAAAAAABAAAAc20WAAAAAAAAcRYAAAAAAAAAAAAA",
2464  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABuFgAAAAAAAG4WAAAAAAAAAAAAAAAA8L8"
2465  				],
2466  				[
2467  					27,
2468  					1,
2469  					"insert",
2470  					{
2471  						"characters": ".h"
2472  					},
2473  					"AgAAAHEWAAAAAAAAchYAAAAAAAAAAAAAchYAAAAAAABzFgAAAAAAAAAAAAA",
2474  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABxFgAAAAAAAHEWAAAAAAAAAAAAAAAA8L8"
2475  				],
2476  				[
2477  					28,
2478  					1,
2479  					"copilot_accept_completion",
2480  					null,
2481  					"AgAAAFMWAAAAAAAAUxYAAAAAAAAgAAAAICAgICAgICAgICAgc2VsZi4ud2lkdGggPSBzZWxmLmhTFgAAAAAAAJEWAAAAAAAAAAAAAA",
2482  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABzFgAAAAAAAHMWAAAAAAAAAAAAAAAA8L8"
2483  				],
2484  				[
2485  					30,
2486  					2,
2487  					"anaconda_auto_format",
2488  					null,
2489  					"AQAAAAAAAAAAAAAAxBsAAAAAAACtGwAAZnJvbSBweWRlYXRpb24ub2JqZWN0cy5hYnN0cmFjdF9vYmplY3RzIGltcG9ydCBTb2xpZE9iamVjdAppbXBvcnQgYzRkCgoKY2xhc3MgU3BoZXJlKFNvbGlkT2JqZWN0KToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgcmFkaXVzPTEwMCwgKiprd2FyZ3MpOgogICAgICAgIHNlbGYucmFkaXVzID0gcmFkaXVzCiAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqKmt3YXJncykKCiAgICBkZWYgc3BlY2lmeV9vYmplY3Qoc2VsZik6CiAgICAgICAgc2VsZi5vYmogPSBjNGQuQmFzZU9iamVjdChjNGQuT3NwaGVyZSkKCiAgICBkZWYgc2V0X29iamVjdF9wcm9wZXJ0aWVzKHNlbGYpOgogICAgICAgIHNlbGYub2JqW2M0ZC5QUklNX1NQSEVSRV9SQURdID0gc2VsZi5yYWRpdXMKICAgICAgICBzZWxmLm9ialtjNGQuUFJJTV9TUEhFUkVfVFlQRV0gPSA0ICAjIHNldCB0eXBlIHRvIGljb3NhaGVkcm9uCgpjbGFzcyBDeWxpbmRlcihTb2xpZE9iamVjdCk6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHJhZGl1cz01MCwgaGVpZ2h0PTE1MCwgb3JpZW50YXRpb249IngrIiwgKiprd2FyZ3MpOgogICAgICAgIHNlbGYucmFkaXVzID0gcmFkaXVzCiAgICAgICAgc2VsZi5oZWlnaHQgPSBoZWlnaHQKICAgICAgICBzZWxmLm9yaWVudGF0aW9uID0gb3JpZW50YXRpb24KICAgICAgICBzdXBlcigpLl9faW5pdF9fKCoqa3dhcmdzKQoKICAgIGRlZiBzcGVjaWZ5X29iamVjdChzZWxmKToKICAgICAgICBzZWxmLm9iaiA9IGM0ZC5CYXNlT2JqZWN0KGM0ZC5PY3lsaW5kZXIpCgogICAgZGVmIHNldF9vYmplY3RfcHJvcGVydGllcyhzZWxmKToKICAgICAgICBvcmllbnRhdGlvbnMgPSB7CiAgICAgICAgICAgICJ4KyI6IDAsCiAgICAgICAgICAgICJ4LSI6IDEsCiAgICAgICAgICAgICJ5KyI6IDIsCiAgICAgICAgICAgICJ5LSI6IDMsCiAgICAgICAgICAgICJ6KyI6IDQsCiAgICAgICAgICAgICJ6LSI6IDUKICAgICAgICB9CiAgICAgICAgc2VsZi5vYmpbYzRkLlBSSU1fQVhJU10gPSBvcmllbnRhdGlvbnNbc2VsZi5vcmllbnRhdGlvbl0KICAgICAgICBzZWxmLm9ialtjNGQuUFJJTV9DWUxJTkRFUl9SQURJVVNdID0gc2VsZi5yYWRpdXMKICAgICAgICBzZWxmLm9ialtjNGQuUFJJTV9DWUxJTkRFUl9IRUlHSFRdID0gc2VsZi5oZWlnaHQKICAgICAgICBzZWxmLm9ialtjNGQuUFJJTV9DWUxJTkRFUl9TRUddID0gMzIKCmNsYXNzIENvbmUoU29saWRPYmplY3QpOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCByYWRpdXM9NTAsIGhlaWdodD0xNTAsIG9yaWVudGF0aW9uPSJ4KyIsICoqa3dhcmdzKToKICAgICAgICBzZWxmLnJhZGl1cyA9IHJhZGl1cwogICAgICAgIHNlbGYuaGVpZ2h0ID0gaGVpZ2h0CiAgICAgICAgc2VsZi5vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uCiAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqKmt3YXJncykKCiAgICBkZWYgc3BlY2lmeV9vYmplY3Qoc2VsZik6CiAgICAgICAgc2VsZi5vYmogPSBjNGQuQmFzZU9iamVjdChjNGQuT2NvbmUpCgogICAgZGVmIHNldF9vYmplY3RfcHJvcGVydGllcyhzZWxmKToKICAgICAgICBvcmllbnRhdGlvbnMgPSB7CiAgICAgICAgICAgICJ4KyI6IDAsCiAgICAgICAgICAgICJ4LSI6IDEsCiAgICAgICAgICAgICJ5KyI6IDIsCiAgICAgICAgICAgICJ5LSI6IDMsCiAgICAgICAgICAgICJ6KyI6IDQsCiAgICAgICAgICAgICJ6LSI6IDUKICAgICAgICB9CiAgICAgICAgc2VsZi5vYmpbYzRkLlBSSU1fQVhJU10gPSBvcmllbnRhdGlvbnNbc2VsZi5vcmllbnRhdGlvbl0KICAgICAgICBzZWxmLm9ialtjNGQuUFJJTV9DT05FX0JSQURdID0gc2VsZi5yYWRpdXMKICAgICAgICBzZWxmLm9ialtjNGQuUFJJTV9DT05FX0hFSUdIVF0gPSBzZWxmLmhlaWdodAogICAgICAgIHNlbGYub2JqW2M0ZC5QUklNX0NPTkVfU0VHXSA9IDMyCgpjbGFzcyBNZXRhQmFsbChTb2xpZE9iamVjdCk6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsICpjaGlsZHJlbiwgaHVsbF92YWx1ZT0xLCBzdWJkaXZpc2lvbj01LCAqKmt3YXJncyk6CiAgICAgICAgc2VsZi5jaGlsZHJlbiA9IGNoaWxkcmVuCiAgICAgICAgc2VsZi5odWxsX3ZhbHVlID0gaHVsbF92YWx1ZQogICAgICAgIHNlbGYuc3ViZGl2aXNpb24gPSBzdWJkaXZpc2lvbgogICAgICAgIHNlbGYuaW5zZXJ0X2NoaWxkcmVuKCkKICAgICAgICBzdXBlcigpLl9faW5pdF9fKCoqa3dhcmdzKQoKICAgIGRlZiBzcGVjaWZ5X29iamVjdChzZWxmKToKICAgICAgICBzZWxmLm9iaiA9IGM0ZC5CYXNlT2JqZWN0KGM0ZC5PbWV0YWJhbGwpCgogICAgZGVmIHNldF9vYmplY3RfcHJvcGVydGllcyhzZWxmKToKICAgICAgICBzZWxmLm9ialtjNGQuTUVUQUJBTExPQkpFQ1RfVEhSRVNIT0xEXSA9IHNlbGYuaHVsbF92YWx1ZQogICAgICAgIHNlbGYub2JqW2M0ZC5NRVRBQkFMTE9CSkVDVF9TVUJFRElUT1JdID0gc2VsZi5zdWJkaXZpc2lvbgogICAgICAgIHNlbGYub2JqW2M0ZC5NRVRBQkFMTE9CSkVDVF9TVUJSQVldID0gc2VsZi5zdWJkaXZpc2lvbgoKICAgIGRlZiBpbnNlcnRfY2hpbGRyZW4oc2VsZik6CiAgICAgICAgZm9yIGNoaWxkIGluIHNlbGYuY2hpbGRyZW46CiAgICAgICAgICAgIGNoaWxkLm9iai5JbnNlcnRVbmRlcihzZWxmLm9iaikKCmNsYXNzIFBsYW5lKFNvbGlkT2JqZWN0KToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgd2lkdGg9NDAwLCBoZWlnaHQ9NDAwLCB3aWR0aF9zZWdtZW50cz0xMCwgaGVpZ2h0X3NlZ21lbnRzPTEwLCBvcmllbnRhdGlvbj0ieisiLCAqKmt3YXJncyk6CiAgICAgICAgc2VsZi53aWR0aCA9IHdpZHRoCiAgICAgICAgc2VsZi5oZWlnaHQgPSBoZWlnaHQKICAgICAgICBzZWxmLndpZHRoX3NlZ21lbnRzID0gd2lkdGhfc2VnbWVudHMKICAgICAgICBzZWxmLmhlaWdodF9zZWdtZW50cyA9IGhlaWdodF9zZWdtZW50cwogICAgICAgIHNlbGYub3JpZW50YXRpb24gPSBvcmllbnRhdGlvbgogICAgICAgIHN1cGVyKCkuX19pbml0X18oKiprd2FyZ3MpCgogICAgZGVmIHNwZWNpZnlfb2JqZWN0KHNlbGYpOgogICAgICAgIHNlbGYub2JqID0gYzRkLkJhc2VPYmplY3QoYzRkLk9wbGFuZSkKCiAgICBkZWYgc2V0X29iamVjdF9wcm9wZXJ0aWVzKHNlbGYpOgogICAgICAgIHNlbGYub2JqW2M0ZC5QUklNX1BMQU5FX1dJRFRIXSA9IHNlbGYud2lkdGgKICAgICAgICBzZWxmLm9ialtjNGQuUFJJTV9QTEFORV9IRUlHSFRdID0gc2VsZi5oZWlnaHQKICAgICAgICBzZWxmLm9ialtjNGQuUFJJTV9QTEFORV9TVUJXXSA9IHNlbGYud2lkdGhfc2VnbWVudHMKICAgICAgICBzZWxmLm9ialtjNGQuUFJJTV9QTEFORV9TVUJIXSA9IHNlbGYuaGVpZ2h0X3NlZ21lbnRzCiAgICAgICAgb3JpZW50YXRpb25zID0gewogICAgICAgICAgICAieCsiOiAwLAogICAgICAgICAgICAieC0iOiAxLAogICAgICAgICAgICAieSsiOiAyLAogICAgICAgICAgICAieS0iOiAzLAogICAgICAgICAgICAieisiOiA0LAogICAgICAgICAgICAiei0iOiA1CiAgICAgICAgfQogICAgICAgIHNlbGYub2JqW2M0ZC5QUklNX0FYSVNdID0gb3JpZW50YXRpb25zW3NlbGYub3JpZW50YXRpb25dCgogICAgZGVmIHNldF91bmlxdWVfZGVzY19pZHMoc2VsZik6CiAgICAgICAgc2VsZi5kZXNjX2lkcyA9IHsKICAgICAgICAgICAgIndpZHRoIjogYzRkLkRlc2NJRChjNGQuRGVzY0xldmVsKGM0ZC5QUklNX1BMQU5FX1dJRFRILCBjNGQuRFRZUEVfUkVBTCwgMCkpLAogICAgICAgICAgICAiaGVpZ2h0IjogYzRkLkRlc2NJRChjNGQuRGVzY0xldmVsKGM0ZC5QUklNX1BMQU5FX0hFSUdIVCwgYzRkLkRUWVBFX1JFQUwsIDApKQogICAgICAgIH0KCmNsYXNzIEV4dHJ1ZGUoU29saWRPYmplY3QpOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqY2hpbGRyZW4sIG9mZnNldD0wLCAqKmt3YXJncyk6CiAgICAgICAgc2VsZi5jaGlsZHJlbiA9IGNoaWxkcmVuCiAgICAgICAgc2VsZi5vZmZzZXQgPSBvZmZzZXQKICAgICAgICBzdXBlcigpLl9faW5pdF9fKCoqa3dhcmdzKQogICAgICAgIHNlbGYuaW5zZXJ0X2NoaWxkcmVuKCkKCiAgICBkZWYgc3BlY2lmeV9vYmplY3Qoc2VsZik6CiAgICAgICAgc2VsZi5vYmogPSBjNGQuQmFzZU9iamVjdChjNGQuT2V4dHJ1ZGUpCgogICAgZGVmIHNldF9vYmplY3RfcHJvcGVydGllcyhzZWxmKToKICAgICAgICBzZWxmLm9ialtjNGQuRVhUUlVERU9CSkVDVF9FWFRSVVNJT05PRkZTRVRdID0gc2VsZi5vZmZzZXQKCiAgICBkZWYgaW5zZXJ0X2NoaWxkcmVuKHNlbGYpOgogICAgICAgIGZvciBjaGlsZCBpbiBzZWxmLmNoaWxkcmVuOgogICAgICAgICAgICBjaGlsZC5vYmouSW5zZXJ0VW5kZXIoc2VsZi5vYmopCgogICAgZGVmIHNldF91bmlxdWVfZGVzY19pZHMoc2VsZik6CiAgICAgICAgc2VsZi5kZXNjX2lkcyA9IHsKICAgICAgICAgICAgIm9mZnNldCI6IGM0ZC5EZXNjSUQoYzRkLkRlc2NMZXZlbChjNGQuRVhUUlVERU9CSkVDVF9FWFRSVVNJT05PRkZTRVQsIGM0ZC5EVFlQRV9SRUFMLCAwKSkKICAgICAgICB9CgpjbGFzcyBMb2Z0KFNvbGlkT2JqZWN0KToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgogICAgICAgIHN1cGVyKCkuX19pbml0X18oKiprd2FyZ3MpCgogICAgZGVmIHNwZWNpZnlfb2JqZWN0KHNlbGYpOgogICAgICAgIHNlbGYub2JqID0gYzRkLkJhc2VPYmplY3QoYzRkLk9sb2Z0KQoKY2xhc3MgU3dlZXBOdXJicyhTb2xpZE9iamVjdCk6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHJhaWw9Tm9uZSwgcHJvZmlsZT1Ob25lLCAqKmt3YXJncyk6CiAgICAgICAgc2VsZi5yYWlsID0gcmFpbAogICAgICAgIHNlbGYucHJvZmlsZSA9IHByb2ZpbGUKICAgICAgICBzdXBlcigpLl9faW5pdF9fKCoqa3dhcmdzKQogICAgICAgIHNlbGYuaW5zZXJ0X2NoaWxkcmVuKCkKCiAgICBkZWYgc3BlY2lmeV9vYmplY3Qoc2VsZik6CiAgICAgICAgc2VsZi5vYmogPSBjNGQuQmFzZU9iamVjdChjNGQuT3N3ZWVwKQoKICAgIGRlZiBpbnNlcnRfY2hpbGRyZW4oc2VsZik6CiAgICAgICAgc2VsZi5yYWlsLm9iai5JbnNlcnRVbmRlcihzZWxmLm9iaikKICAgICAgICBzZWxmLnByb2ZpbGUub2JqLkluc2VydFVuZGVyKHNlbGYub2JqKQoKICAgIGRlZiBzZXRfdW5pcXVlX2Rlc2NfaWRzKHNlbGYpOgogICAgICAgIHNlbGYuZGVzY19pZHMgPSB7CiAgICAgICAgICAgICJzdGFydF9ncm93dGgiOiBjNGQuRGVzY0lEKGM0ZC5EZXNjTGV2ZWwoYzRkLlNXRUVQT0JKRUNUX1NUQVJUR1JPV1RILCBjNGQuRFRZUEVfUkVBTCwgMCkpLAogICAgICAgICAgICAiZW5kX2dyb3d0aCI6IGM0ZC5EZXNjSUQoYzRkLkRlc2NMZXZlbChjNGQuU1dFRVBPQkpFQ1RfR1JPV1RILCBjNGQuRFRZUEVfUkVBTCwgMCkpCiAgICAgICAgfQoKY2xhc3MgQ3ViZShTb2xpZE9iamVjdCk6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHdpZHRoPTEwMCwgaGVpZ2h0PTEwMCwgZGVwdGg9MTAwLCBzaXplPU5vbmUsICoqa3dhcmdzKToKICAgICAgICBzZWxmLndpZHRoID0gd2lkdGgKICAgICAgICBzZWxmLmhlaWdodCA9IGhlaWdodAogICAgICAgIHNlbGYuZGVwdGggPSBkZXB0aAogICAgICAgIHNlbGYuc2l6ZSA9IHNpemUKICAgICAgICBzdXBlcigpLl9faW5pdF9fKCoqa3dhcmdzKQoKICAgIGRlZiBzcGVjaWZ5X29iamVjdChzZWxmKToKICAgICAgICBzZWxmLm9iaiA9IGM0ZC5CYXNlT2JqZWN0KGM0ZC5PY3ViZSkKCiAgICBkZWYgc2V0X29iamVjdF9wcm9wZXJ0aWVzKHNlbGYpOgogICAgICAgIGlmIHNlbGYuc2l6ZToKICAgICAgICAgICAgc2VsZi4ud2lkdGggPSBzZWxmLmhlaWdodCA9IHNlbGYuZGVwdGggPSBzZWxmLnNpemUKICAgICAgICBzZWxmLm9ialtjNGQuUFJJTV9DVUJFX0xFTiwgYzRkLlZFQ1RPUl9YXSA9IHNlbGYud2lkdGgKICAgICAgICBzZWxmLm9ialtjNGQuUFJJTV9DVUJFX0xFTiwgYzRkLlZFQ1RPUl9ZXSA9IHNlbGYuaGVpZ2h0CiAgICAgICAgc2VsZi5vYmpbYzRkLlBSSU1fQ1VCRV9MRU4sIGM0ZC5WRUNUT1JfWl0gPSBzZWxmLmRlcHRoCgogICAgZGVmIHNldF91bmlxdWVfZGVzY19pZHMoc2VsZik6CiAgICAgICAgc2VsZi5kZXNjX2lkcyA9IHsKICAgICAgICAgICAgIndpZHRoIjogYzRkLkRlc2NJRChjNGQuRGVzY0xldmVsKGM0ZC5QUklNX0NVQkVfTEVOLCBjNGQuRFRZUEVfUkVBTCwgMCkpLAogICAgICAgICAgICAiaGVpZ2h0IjogYzRkLkRlc2NJRChjNGQuRGVzY0xldmVsKGM0ZC5QUklNX0NVQkVfTEVOLCBjNGQuRFRZUEVfUkVBTCwgMSkpLAogICAgICAgICAgICAiZGVwdGgiOiBjNGQuRGVzY0lEKGM0ZC5EZXNjTGV2ZWwoYzRkLlBSSU1fQ1VCRV9MRU4sIGM0ZC5EVFlQRV9SRUFMLCAyKSkKICAgICAgICB9CgpjbGFzcyBVU0QoU29saWRPYmplY3QpOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlX3BhdGg9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgIHNlbGYuZmlsZV9wYXRoID0gZmlsZV9wYXRoCiAgICAgICAgc2VsZi5leHRyYWN0X29iamVjdF9mcm9tX2ltcG9ydCgpCiAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqKmt3YXJncykKCiAgICBkZWYgc3BlY2lmeV9vYmplY3Qoc2VsZik6CiAgICAgICAgc2VsZi5vYmogPSBzZWxmLm1lc2gKCiAgICBkZWYgZXh0cmFjdF9vYmplY3RfZnJvbV9pbXBvcnQoc2VsZik6CiAgICAgICAgc2VsZi5kb2N1bWVudCA9IGM0ZC5kb2N1bWVudHMuR2V0QWN0aXZlRG9jdW1lbnQoKQogICAgICAgIGM0ZC5kb2N1bWVudHMuTWVyZ2VEb2N1bWVudChzZWxmLmRvY3VtZW50LCBzZWxmLmZpbGVfcGF0aCwgYzRkLlNDRU5FRklMVEVSX05PTkUpCiAgICAgICAgIyByZW1vdmUgc3VwZXJmbHVvdXMgbWF0ZXJpYWwgbnVsbAogICAgICAgIG1hdGVyaWFsX251bGwgPSBzZWxmLmRvY3VtZW50LlNlYXJjaE9iamVjdCgiTWF0ZXJpYWxzIikKICAgICAgICBtYXRlcmlhbF9udWxsLlJlbW92ZSgpCiAgICAgICAgIyBnZXQgY2xvbmUgb2YgbWVzaCBmcm9tIHJvb3QgbnVsbAogICAgICAgIHJvb3RfbnVsbCA9IHNlbGYuZG9jdW1lbnQuU2VhcmNoT2JqZWN0KCJSb290IikKICAgICAgICBzZWxmLm1lc2ggPSByb290X251bGwuR2V0RG93bigpLkdldENsb25lKCkKICAgICAgICAjIHJlbW92ZSByb290IG51bGwgYW5kIG1lc2gKICAgICAgICByb290X251bGwuUmVtb3ZlKCk",
2490  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACRFgAAAAAAAJEWAAAAAAAAAAAAAAAA8L8"
2491  				],
2492  				[
2493  					35,
2494  					1,
2495  					"left_delete",
2496  					null,
2497  					"AQAAAGwWAAAAAAAAbBYAAAAAAAABAAAALg",
2498  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABtFgAAAAAAAG0WAAAAAAAAAAAAAAAA8L8"
2499  				]
2500  			]
2501  		},
2502  		{
2503  			"file": "objects/custom_objects.py",
2504  			"settings":
2505  			{
2506  				"buffer_size": 87954,
2507  				"encoding": "UTF-8",
2508  				"line_ending": "Unix"
2509  			},
2510  			"undo_stack":
2511  			[
2512  				[
2513  					17,
2514  					1,
2515  					"insert",
2516  					{
2517  						"characters": "s"
2518  					},
2519  					"AQAAAPROAQAAAAAA9U4BAAAAAAAAAAAA",
2520  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAD0TgEAAAAAAPROAQAAAAAAAAAAAAAA8L8"
2521  				],
2522  				[
2523  					32,
2524  					1,
2525  					"insert",
2526  					{
2527  						"characters": "color=W"
2528  					},
2529  					"BwAAAHmNAAAAAAAAeo0AAAAAAAAAAAAAeo0AAAAAAAB7jQAAAAAAAAAAAAB7jQAAAAAAAHyNAAAAAAAAAAAAAHyNAAAAAAAAfY0AAAAAAAAAAAAAfY0AAAAAAAB+jQAAAAAAAAAAAAB+jQAAAAAAAH+NAAAAAAAAAAAAAH+NAAAAAAAAgI0AAAAAAAAAAAAA",
2530  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB5jQAAAAAAAHmNAAAAAAAAAAAAAAAA8L8"
2531  				],
2532  				[
2533  					33,
2534  					1,
2535  					"insert",
2536  					{
2537  						"characters": "HITE,"
2538  					},
2539  					"BQAAAICNAAAAAAAAgY0AAAAAAAAAAAAAgY0AAAAAAACCjQAAAAAAAAAAAACCjQAAAAAAAIONAAAAAAAAAAAAAIONAAAAAAAAhI0AAAAAAAAAAAAAhI0AAAAAAACFjQAAAAAAAAAAAAA",
2540  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACAjQAAAAAAAICNAAAAAAAAAAAAAAAA8L8"
2541  				],
2542  				[
2543  					34,
2544  					1,
2545  					"insert",
2546  					{
2547  						"characters": " "
2548  					},
2549  					"AQAAAIWNAAAAAAAAho0AAAAAAAAAAAAA",
2550  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACFjQAAAAAAAIWNAAAAAAAAAAAAAAAA8L8"
2551  				],
2552  				[
2553  					38,
2554  					1,
2555  					"insert",
2556  					{
2557  						"characters": "\n"
2558  					},
2559  					"AgAAAOyPAAAAAAAA7Y8AAAAAAAAAAAAA7Y8AAAAAAAD1jwAAAAAAAAAAAAA",
2560  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADsjwAAAAAAAOyPAAAAAAAAAAAAAADAbUA"
2561  				],
2562  				[
2563  					39,
2564  					1,
2565  					"copilot_accept_completion",
2566  					null,
2567  					"AgAAAO2PAAAAAAAA7Y8AAAAAAAAIAAAAICAgICAgICDtjwAAAAAAAAeQAAAAAAAAAAAAAA",
2568  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAD1jwAAAAAAAPWPAAAAAAAAAAAAAAAA8L8"
2569  				],
2570  				[
2571  					55,
2572  					1,
2573  					"insert",
2574  					{
2575  						"characters": ","
2576  					},
2577  					"AQAAAOuSAAAAAAAA7JIAAAAAAAAAAAAA",
2578  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADrkgAAAAAAAOuSAAAAAAAAAAAAAAAA8L8"
2579  				],
2580  				[
2581  					56,
2582  					1,
2583  					"insert",
2584  					{
2585  						"characters": " color="
2586  					},
2587  					"BwAAAOySAAAAAAAA7ZIAAAAAAAAAAAAA7ZIAAAAAAADukgAAAAAAAAAAAADukgAAAAAAAO+SAAAAAAAAAAAAAO+SAAAAAAAA8JIAAAAAAAAAAAAA8JIAAAAAAADxkgAAAAAAAAAAAADxkgAAAAAAAPKSAAAAAAAAAAAAAPKSAAAAAAAA85IAAAAAAAAAAAAA",
2588  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADskgAAAAAAAOySAAAAAAAAAAAAAAAA8L8"
2589  				],
2590  				[
2591  					57,
2592  					1,
2593  					"insert_completion",
2594  					{
2595  						"completion": "self",
2596  						"format": "snippet",
2597  						"keep_prefix": false,
2598  						"must_insert": true,
2599  						"trigger": "self"
2600  					},
2601  					"AQAAAPOSAAAAAAAA95IAAAAAAAAAAAAA",
2602  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADzkgAAAAAAAPOSAAAAAAAAAAAAAAAA8L8"
2603  				],
2604  				[
2605  					58,
2606  					1,
2607  					"insert",
2608  					{
2609  						"characters": "-"
2610  					},
2611  					"AQAAAPeSAAAAAAAA+JIAAAAAAAAAAAAA",
2612  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAD3kgAAAAAAAPeSAAAAAAAAAAAAAAAA8L8"
2613  				],
2614  				[
2615  					59,
2616  					1,
2617  					"left_delete",
2618  					null,
2619  					"AQAAAPeSAAAAAAAA95IAAAAAAAABAAAALQ",
2620  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAD4kgAAAAAAAPiSAAAAAAAAAAAAAAAA8L8"
2621  				],
2622  				[
2623  					60,
2624  					1,
2625  					"insert",
2626  					{
2627  						"characters": ".col"
2628  					},
2629  					"BAAAAPeSAAAAAAAA+JIAAAAAAAAAAAAA+JIAAAAAAAD5kgAAAAAAAAAAAAD5kgAAAAAAAPqSAAAAAAAAAAAAAPqSAAAAAAAA+5IAAAAAAAAAAAAA",
2630  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAD3kgAAAAAAAPeSAAAAAAAAAAAAAAAA8L8"
2631  				],
2632  				[
2633  					61,
2634  					1,
2635  					"insert_completion",
2636  					{
2637  						"completion": "color",
2638  						"format": "snippet",
2639  						"keep_prefix": false,
2640  						"must_insert": false,
2641  						"trigger": "color"
2642  					},
2643  					"AgAAAPiSAAAAAAAA+JIAAAAAAAADAAAAY29s+JIAAAAAAAD9kgAAAAAAAAAAAAA",
2644  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAD7kgAAAAAAAPuSAAAAAAAAAAAAAAAA8L8"
2645  				],
2646  				[
2647  					65,
2648  					1,
2649  					"insert",
2650  					{
2651  						"characters": "color=W"
2652  					},
2653  					"BwAAABWuAAAAAAAAFq4AAAAAAAAAAAAAFq4AAAAAAAAXrgAAAAAAAAAAAAAXrgAAAAAAABiuAAAAAAAAAAAAABiuAAAAAAAAGa4AAAAAAAAAAAAAGa4AAAAAAAAargAAAAAAAAAAAAAargAAAAAAABuuAAAAAAAAAAAAABuuAAAAAAAAHK4AAAAAAAAAAAAA",
2654  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAVrgAAAAAAABWuAAAAAAAAAAAAAAAA8L8"
2655  				],
2656  				[
2657  					66,
2658  					1,
2659  					"insert",
2660  					{
2661  						"characters": "HITE,"
2662  					},
2663  					"BQAAAByuAAAAAAAAHa4AAAAAAAAAAAAAHa4AAAAAAAAergAAAAAAAAAAAAAergAAAAAAAB+uAAAAAAAAAAAAAB+uAAAAAAAAIK4AAAAAAAAAAAAAIK4AAAAAAAAhrgAAAAAAAAAAAAA",
2664  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAcrgAAAAAAAByuAAAAAAAAAAAAAAAA8L8"
2665  				],
2666  				[
2667  					67,
2668  					1,
2669  					"insert",
2670  					{
2671  						"characters": " "
2672  					},
2673  					"AQAAACGuAAAAAAAAIq4AAAAAAAAAAAAA",
2674  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAhrgAAAAAAACGuAAAAAAAAAAAAAAAA8L8"
2675  				],
2676  				[
2677  					70,
2678  					1,
2679  					"insert",
2680  					{
2681  						"characters": "\n"
2682  					},
2683  					"AgAAAMCuAAAAAAAAwa4AAAAAAAAAAAAAwa4AAAAAAADJrgAAAAAAAAAAAAA",
2684  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADArgAAAAAAAMCuAAAAAAAAAAAAAAAA8L8"
2685  				],
2686  				[
2687  					71,
2688  					1,
2689  					"copilot_accept_completion",
2690  					null,
2691  					"AgAAAMGuAAAAAAAAwa4AAAAAAAAIAAAAICAgICAgICDBrgAAAAAAANuuAAAAAAAAAAAAAA",
2692  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADJrgAAAAAAAMmuAAAAAAAAAAAAAAAA8L8"
2693  				],
2694  				[
2695  					84,
2696  					1,
2697  					"insert",
2698  					{
2699  						"characters": ","
2700  					},
2701  					"AQAAADmwAAAAAAAAOrAAAAAAAAAAAAAA",
2702  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA5sAAAAAAAADmwAAAAAAAAAAAAAAAA8L8"
2703  				],
2704  				[
2705  					85,
2706  					1,
2707  					"insert",
2708  					{
2709  						"characters": " color="
2710  					},
2711  					"BwAAADqwAAAAAAAAO7AAAAAAAAAAAAAAO7AAAAAAAAA8sAAAAAAAAAAAAAA8sAAAAAAAAD2wAAAAAAAAAAAAAD2wAAAAAAAAPrAAAAAAAAAAAAAAPrAAAAAAAAA/sAAAAAAAAAAAAAA/sAAAAAAAAECwAAAAAAAAAAAAAECwAAAAAAAAQbAAAAAAAAAAAAAA",
2712  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA6sAAAAAAAADqwAAAAAAAAAAAAAAAA8L8"
2713  				],
2714  				[
2715  					86,
2716  					1,
2717  					"insert_completion",
2718  					{
2719  						"completion": "self",
2720  						"format": "snippet",
2721  						"keep_prefix": false,
2722  						"must_insert": true,
2723  						"trigger": "self"
2724  					},
2725  					"AQAAAEGwAAAAAAAARbAAAAAAAAAAAAAA",
2726  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABBsAAAAAAAAEGwAAAAAAAAAAAAAAAA8L8"
2727  				],
2728  				[
2729  					87,
2730  					1,
2731  					"insert",
2732  					{
2733  						"characters": ".c"
2734  					},
2735  					"AgAAAEWwAAAAAAAARrAAAAAAAAAAAAAARrAAAAAAAABHsAAAAAAAAAAAAAA",
2736  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABFsAAAAAAAAEWwAAAAAAAAAAAAAAAA8L8"
2737  				],
2738  				[
2739  					88,
2740  					1,
2741  					"insert_completion",
2742  					{
2743  						"completion": "color",
2744  						"format": "snippet",
2745  						"keep_prefix": false,
2746  						"must_insert": false,
2747  						"trigger": "color"
2748  					},
2749  					"AgAAAEawAAAAAAAARrAAAAAAAAABAAAAY0awAAAAAAAAS7AAAAAAAAAAAAAA",
2750  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABHsAAAAAAAAEewAAAAAAAAAAAAAAAA8L8"
2751  				],
2752  				[
2753  					118,
2754  					1,
2755  					"insert",
2756  					{
2757  						"characters": ","
2758  					},
2759  					"AQAAALWTAAAAAAAAtpMAAAAAAAAAAAAA",
2760  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAC1kwAAAAAAALWTAAAAAAAAAAAAAAAA8L8"
2761  				],
2762  				[
2763  					119,
2764  					1,
2765  					"insert",
2766  					{
2767  						"characters": " color="
2768  					},
2769  					"BwAAALaTAAAAAAAAt5MAAAAAAAAAAAAAt5MAAAAAAAC4kwAAAAAAAAAAAAC4kwAAAAAAALmTAAAAAAAAAAAAALmTAAAAAAAAupMAAAAAAAAAAAAAupMAAAAAAAC7kwAAAAAAAAAAAAC7kwAAAAAAALyTAAAAAAAAAAAAALyTAAAAAAAAvZMAAAAAAAAAAAAA",
2770  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAC2kwAAAAAAALaTAAAAAAAAAAAAAAAA8L8"
2771  				],
2772  				[
2773  					120,
2774  					1,
2775  					"insert",
2776  					{
2777  						"characters": "s"
2778  					},
2779  					"AQAAAL2TAAAAAAAAvpMAAAAAAAAAAAAA",
2780  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAC9kwAAAAAAAL2TAAAAAAAAAAAAAAAA8L8"
2781  				],
2782  				[
2783  					121,
2784  					1,
2785  					"insert_completion",
2786  					{
2787  						"completion": "self",
2788  						"format": "snippet",
2789  						"keep_prefix": false,
2790  						"must_insert": false,
2791  						"trigger": "self"
2792  					},
2793  					"AgAAAL2TAAAAAAAAvZMAAAAAAAABAAAAc72TAAAAAAAAwZMAAAAAAAAAAAAA",
2794  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAC+kwAAAAAAAL6TAAAAAAAAAAAAAAAA8L8"
2795  				],
2796  				[
2797  					122,
2798  					1,
2799  					"insert",
2800  					{
2801  						"characters": "."
2802  					},
2803  					"AQAAAMGTAAAAAAAAwpMAAAAAAAAAAAAA",
2804  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADBkwAAAAAAAMGTAAAAAAAAAAAAAAAA8L8"
2805  				],
2806  				[
2807  					123,
2808  					1,
2809  					"insert_completion",
2810  					{
2811  						"completion": "color",
2812  						"format": "snippet",
2813  						"keep_prefix": false,
2814  						"must_insert": true,
2815  						"trigger": "color"
2816  					},
2817  					"AQAAAMKTAAAAAAAAx5MAAAAAAAAAAAAA",
2818  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADCkwAAAAAAAMKTAAAAAAAAAAAAAAAA8L8"
2819  				],
2820  				[
2821  					127,
2822  					6,
2823  					"delete_word",
2824  					{
2825  						"forward": false
2826  					},
2827  					"BgAAAPiSAAAAAAAA+JIAAAAAAAAFAAAAY29sb3L3kgAAAAAAAPeSAAAAAAAAAQAAAC7zkgAAAAAAAPOSAAAAAAAABAAAAHNlbGbykgAAAAAAAPKSAAAAAAAAAQAAAD3tkgAAAAAAAO2SAAAAAAAABQAAAGNvbG9y6pIAAAAAAADqkgAAAAAAAAMAAAAiLCA",
2828  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAD9kgAAAAAAAP2SAAAAAAAAAAAAAAAA8L8"
2829  				],
2830  				[
2831  					128,
2832  					1,
2833  					"insert",
2834  					{
2835  						"characters": "\""
2836  					},
2837  					"AQAAAOqSAAAAAAAA65IAAAAAAAAAAAAA",
2838  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADqkgAAAAAAAOqSAAAAAAAAAAAAAAAA8L8"
2839  				],
2840  				[
2841  					130,
2842  					1,
2843  					"insert",
2844  					{
2845  						"characters": ","
2846  					},
2847  					"AQAAAOuSAAAAAAAA7JIAAAAAAAAAAAAA",
2848  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADrkgAAAAAAAOuSAAAAAAAAAAAAAAAA8L8"
2849  				],
2850  				[
2851  					131,
2852  					1,
2853  					"insert",
2854  					{
2855  						"characters": " he"
2856  					},
2857  					"AwAAAOySAAAAAAAA7ZIAAAAAAAAAAAAA7ZIAAAAAAADukgAAAAAAAAAAAADukgAAAAAAAO+SAAAAAAAAAAAAAA",
2858  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADskgAAAAAAAOySAAAAAAAAAAAAAAAA8L8"
2859  				],
2860  				[
2861  					132,
2862  					1,
2863  					"insert",
2864  					{
2865  						"characters": "lper_mode=T"
2866  					},
2867  					"CwAAAO+SAAAAAAAA8JIAAAAAAAAAAAAA8JIAAAAAAADxkgAAAAAAAAAAAADxkgAAAAAAAPKSAAAAAAAAAAAAAPKSAAAAAAAA85IAAAAAAAAAAAAA85IAAAAAAAD0kgAAAAAAAAAAAAD0kgAAAAAAAPWSAAAAAAAAAAAAAPWSAAAAAAAA9pIAAAAAAAAAAAAA9pIAAAAAAAD3kgAAAAAAAAAAAAD3kgAAAAAAAPiSAAAAAAAAAAAAAPiSAAAAAAAA+ZIAAAAAAAAAAAAA+ZIAAAAAAAD6kgAAAAAAAAAAAAA",
2868  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADvkgAAAAAAAO+SAAAAAAAAAAAAAAAA8L8"
2869  				],
2870  				[
2871  					133,
2872  					1,
2873  					"insert_completion",
2874  					{
2875  						"completion": "True",
2876  						"format": "snippet",
2877  						"keep_prefix": false,
2878  						"must_insert": false,
2879  						"trigger": "True"
2880  					},
2881  					"AgAAAPmSAAAAAAAA+ZIAAAAAAAABAAAAVPmSAAAAAAAA/ZIAAAAAAAAAAAAA",
2882  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAD6kgAAAAAAAPqSAAAAAAAAAAAAAAAA8L8"
2883  				],
2884  				[
2885  					139,
2886  					1,
2887  					"insert",
2888  					{
2889  						"characters": "\n\n\n"
2890  					},
2891  					"CAAAAGlQAQAAAAAAalABAAAAAAAAAAAAalABAAAAAAB2UAEAAAAAAAAAAAB2UAEAAAAAAHdQAQAAAAAAAAAAAHdQAQAAAAAAg1ABAAAAAAAAAAAAalABAAAAAABqUAEAAAAAAAwAAAAgICAgICAgICAgICB3UAEAAAAAAHhQAQAAAAAAAAAAAHhQAQAAAAAAhFABAAAAAAAAAAAAa1ABAAAAAABrUAEAAAAAAAwAAAAgICAgICAgICAgICA",
2892  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABpUAEAAAAAAGlQAQAAAAAAAAAAAAAA8L8"
2893  				],
2894  				[
2895  					140,
2896  					3,
2897  					"left_delete",
2898  					null,
2899  					"AwAAAHRQAQAAAAAAdFABAAAAAAAEAAAAICAgIHBQAQAAAAAAcFABAAAAAAAEAAAAICAgIGxQAQAAAAAAbFABAAAAAAAEAAAAICAgIA",
2900  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB4UAEAAAAAAHhQAQAAAAAAAAAAAAAA8L8"
2901  				],
2902  				[
2903  					141,
2904  					1,
2905  					"paste",
2906  					null,
2907  					"AQAAAGxQAQAAAAAAsFcBAAAAAAAAAAAA",
2908  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABsUAEAAAAAAGxQAQAAAAAAAAAAAAAA8L8"
2909  				],
2910  				[
2911  					143,
2912  					1,
2913  					"left_delete",
2914  					null,
2915  					"AQAAAGtQAQAAAAAAa1ABAAAAAAABAAAACg",
2916  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABsUAEAAAAAAGxQAQAAAAAAAAAAAAAAAAA"
2917  				],
2918  				[
2919  					156,
2920  					1,
2921  					"left_delete",
2922  					null,
2923  					"AQAAAHhSAQAAAAAAeFIBAAAAAAAOAAAAaGVscGVyX29iamVjdHM",
2924  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB4UgEAAAAAAIZSAQAAAAAAAAAAAAAA8L8"
2925  				],
2926  				[
2927  					158,
2928  					1,
2929  					"left_delete",
2930  					null,
2931  					"AQAAAHhSAQAAAAAAeFIBAAAAAAABAAAALg",
2932  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB5UgEAAAAAAHlSAQAAAAAAAAAAAAAA8L8"
2933  				],
2934  				[
2935  					161,
2936  					1,
2937  					"left_delete",
2938  					null,
2939  					"AQAAAKVSAQAAAAAApVIBAAAAAAANAAAAc29saWRfb2JqZWN0cw",
2940  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAClUgEAAAAAALJSAQAAAAAAAAAAAAAA8L8"
2941  				],
2942  				[
2943  					163,
2944  					1,
2945  					"left_delete",
2946  					null,
2947  					"AQAAAKVSAQAAAAAApVIBAAAAAAABAAAALg",
2948  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACmUgEAAAAAAKZSAQAAAAAAAAAAAAAA8L8"
2949  				]
2950  			]
2951  		},
2952  		{
2953  			"file": "constants.py",
2954  			"settings":
2955  			{
2956  				"buffer_size": 3485,
2957  				"encoding": "UTF-8",
2958  				"line_ending": "Unix"
2959  			},
2960  			"undo_stack":
2961  			[
2962  				[
2963  					3,
2964  					1,
2965  					"left_delete",
2966  					null,
2967  					"AQAAAJsBAAAAAAAAmwEAAAAAAAABAAAAMw",
2968  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJwBAAAAAAAAnAEAAAAAAAAAAAAAAADwvw"
2969  				],
2970  				[
2971  					4,
2972  					1,
2973  					"insert",
2974  					{
2975  						"characters": "5"
2976  					},
2977  					"AQAAAJsBAAAAAAAAnAEAAAAAAAAAAAAA",
2978  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJsBAAAAAAAAmwEAAAAAAAAAAAAAAADwvw"
2979  				],
2980  				[
2981  					7,
2982  					1,
2983  					"left_delete",
2984  					null,
2985  					"AQAAAJsBAAAAAAAAmwEAAAAAAAABAAAANQ",
2986  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJwBAAAAAAAAnAEAAAAAAAAAAAAAAADwvw"
2987  				],
2988  				[
2989  					8,
2990  					1,
2991  					"insert",
2992  					{
2993  						"characters": "7"
2994  					},
2995  					"AQAAAJsBAAAAAAAAnAEAAAAAAAAAAAAA",
2996  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJsBAAAAAAAAmwEAAAAAAAAAAAAAAADwvw"
2997  				]
2998  			]
2999  		},
3000  		{
3001  			"file": "objects/line_objects.py",
3002  			"settings":
3003  			{
3004  				"buffer_size": 15953,
3005  				"encoding": "UTF-8",
3006  				"line_ending": "Unix"
3007  			},
3008  			"undo_stack":
3009  			[
3010  				[
3011  					6,
3012  					1,
3013  					"insert",
3014  					{
3015  						"characters": "\n\n"
3016  					},
3017  					"AgAAAC8LAAAAAAAAMAsAAAAAAAAAAAAAMAsAAAAAAAAxCwAAAAAAAAAAAAA",
3018  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAvCwAAAAAAAC8LAAAAAAAAAAAAAAAA8L8"
3019  				],
3020  				[
3021  					8,
3022  					1,
3023  					"insert",
3024  					{
3025  						"characters": "class"
3026  					},
3027  					"BQAAADALAAAAAAAAMQsAAAAAAAAAAAAAMQsAAAAAAAAyCwAAAAAAAAAAAAAyCwAAAAAAADMLAAAAAAAAAAAAADMLAAAAAAAANAsAAAAAAAAAAAAANAsAAAAAAAA1CwAAAAAAAAAAAAA",
3028  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAwCwAAAAAAADALAAAAAAAAAAAAAAAAAAA"
3029  				],
3030  				[
3031  					9,
3032  					1,
3033  					"insert",
3034  					{
3035  						"characters": " Square"
3036  					},
3037  					"BwAAADULAAAAAAAANgsAAAAAAAAAAAAANgsAAAAAAAA3CwAAAAAAAAAAAAA3CwAAAAAAADgLAAAAAAAAAAAAADgLAAAAAAAAOQsAAAAAAAAAAAAAOQsAAAAAAAA6CwAAAAAAAAAAAAA6CwAAAAAAADsLAAAAAAAAAAAAADsLAAAAAAAAPAsAAAAAAAAAAAAA",
3038  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA1CwAAAAAAADULAAAAAAAAAAAAAAAA8L8"
3039  				],
3040  				[
3041  					10,
3042  					1,
3043  					"insert_snippet",
3044  					{
3045  						"contents": "($0)"
3046  					},
3047  					"AQAAADwLAAAAAAAAPgsAAAAAAAAAAAAA",
3048  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA8CwAAAAAAADwLAAAAAAAAAAAAAAAA8L8"
3049  				],
3050  				[
3051  					12,
3052  					1,
3053  					"insert",
3054  					{
3055  						"characters": "Lin"
3056  					},
3057  					"AwAAAD0LAAAAAAAAPgsAAAAAAAAAAAAAPgsAAAAAAAA/CwAAAAAAAAAAAAA/CwAAAAAAAEALAAAAAAAAAAAAAA",
3058  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA9CwAAAAAAAD0LAAAAAAAAAAAAAAAA8L8"
3059  				],
3060  				[
3061  					13,
3062  					3,
3063  					"left_delete",
3064  					null,
3065  					"AwAAAD8LAAAAAAAAPwsAAAAAAAABAAAAbj4LAAAAAAAAPgsAAAAAAAABAAAAaT0LAAAAAAAAPQsAAAAAAAABAAAATA",
3066  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABACwAAAAAAAEALAAAAAAAAAAAAAAAA8L8"
3067  				],
3068  				[
3069  					15,
3070  					1,
3071  					"insert",
3072  					{
3073  						"characters": "Rect"
3074  					},
3075  					"BAAAAD0LAAAAAAAAPgsAAAAAAAAAAAAAPgsAAAAAAAA/CwAAAAAAAAAAAAA/CwAAAAAAAEALAAAAAAAAAAAAAEALAAAAAAAAQQsAAAAAAAAAAAAA",
3076  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA9CwAAAAAAAD0LAAAAAAAAAAAAAAAA8L8"
3077  				],
3078  				[
3079  					16,
3080  					1,
3081  					"insert_completion",
3082  					{
3083  						"completion": "Rectangle",
3084  						"format": "text",
3085  						"keep_prefix": false,
3086  						"must_insert": false,
3087  						"trigger": "Rectangle"
3088  					},
3089  					"AgAAAD0LAAAAAAAAPQsAAAAAAAAEAAAAUmVjdD0LAAAAAAAARgsAAAAAAAAAAAAA",
3090  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABBCwAAAAAAAEELAAAAAAAAAAAAAAAA8L8"
3091  				],
3092  				[
3093  					18,
3094  					1,
3095  					"insert",
3096  					{
3097  						"characters": ":"
3098  					},
3099  					"AQAAAEcLAAAAAAAASAsAAAAAAAAAAAAA",
3100  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABHCwAAAAAAAEcLAAAAAAAAAAAAAAAA8L8"
3101  				],
3102  				[
3103  					19,
3104  					1,
3105  					"insert",
3106  					{
3107  						"characters": "\n\ndef"
3108  					},
3109  					"CAAAAEgLAAAAAAAASQsAAAAAAAAAAAAASQsAAAAAAABNCwAAAAAAAAAAAABNCwAAAAAAAE4LAAAAAAAAAAAAAE4LAAAAAAAAUgsAAAAAAAAAAAAASQsAAAAAAABJCwAAAAAAAAQAAAAgICAgTgsAAAAAAABPCwAAAAAAAAAAAABPCwAAAAAAAFALAAAAAAAAAAAAAFALAAAAAAAAUQsAAAAAAAAAAAAA",
3110  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABICwAAAAAAAEgLAAAAAAAAAAAAAAAA8L8"
3111  				],
3112  				[
3113  					20,
3114  					1,
3115  					"insert",
3116  					{
3117  						"characters": " i"
3118  					},
3119  					"AgAAAFELAAAAAAAAUgsAAAAAAAAAAAAAUgsAAAAAAABTCwAAAAAAAAAAAAA",
3120  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABRCwAAAAAAAFELAAAAAAAAAAAAAAAA8L8"
3121  				],
3122  				[
3123  					21,
3124  					1,
3125  					"left_delete",
3126  					null,
3127  					"AQAAAFILAAAAAAAAUgsAAAAAAAABAAAAaQ",
3128  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABTCwAAAAAAAFMLAAAAAAAAAAAAAAAA8L8"
3129  				],
3130  				[
3131  					22,
3132  					1,
3133  					"insert_completion",
3134  					{
3135  						"completion": "__init__",
3136  						"format": "snippet",
3137  						"keep_prefix": false,
3138  						"must_insert": true,
3139  						"trigger": "__init__"
3140  					},
3141  					"AQAAAFILAAAAAAAAWgsAAAAAAAAAAAAA",
3142  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABSCwAAAAAAAFILAAAAAAAAAAAAAAAA8L8"
3143  				],
3144  				[
3145  					23,
3146  					1,
3147  					"insert_snippet",
3148  					{
3149  						"contents": "($0)"
3150  					},
3151  					"AQAAAFoLAAAAAAAAXAsAAAAAAAAAAAAA",
3152  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABaCwAAAAAAAFoLAAAAAAAAAAAAAAAA8L8"
3153  				],
3154  				[
3155  					25,
3156  					1,
3157  					"insert",
3158  					{
3159  						"characters": "s"
3160  					},
3161  					"AQAAAFsLAAAAAAAAXAsAAAAAAAAAAAAA",
3162  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABbCwAAAAAAAFsLAAAAAAAAAAAAAAAA8L8"
3163  				],
3164  				[
3165  					26,
3166  					1,
3167  					"insert_completion",
3168  					{
3169  						"completion": "self",
3170  						"format": "text",
3171  						"keep_prefix": false,
3172  						"must_insert": false,
3173  						"trigger": "self"
3174  					},
3175  					"AgAAAFsLAAAAAAAAWwsAAAAAAAABAAAAc1sLAAAAAAAAXwsAAAAAAAAAAAAA",
3176  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABcCwAAAAAAAFwLAAAAAAAAAAAAAAAA8L8"
3177  				],
3178  				[
3179  					27,
3180  					1,
3181  					"insert",
3182  					{
3183  						"characters": ","
3184  					},
3185  					"AQAAAF8LAAAAAAAAYAsAAAAAAAAAAAAA",
3186  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABfCwAAAAAAAF8LAAAAAAAAAAAAAAAA8L8"
3187  				],
3188  				[
3189  					28,
3190  					1,
3191  					"insert",
3192  					{
3193  						"characters": " size="
3194  					},
3195  					"BgAAAGALAAAAAAAAYQsAAAAAAAAAAAAAYQsAAAAAAABiCwAAAAAAAAAAAABiCwAAAAAAAGMLAAAAAAAAAAAAAGMLAAAAAAAAZAsAAAAAAAAAAAAAZAsAAAAAAABlCwAAAAAAAAAAAABlCwAAAAAAAGYLAAAAAAAAAAAAAA",
3196  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABgCwAAAAAAAGALAAAAAAAAAAAAAAAA8L8"
3197  				],
3198  				[
3199  					29,
3200  					1,
3201  					"insert",
3202  					{
3203  						"characters": "100"
3204  					},
3205  					"AwAAAGYLAAAAAAAAZwsAAAAAAAAAAAAAZwsAAAAAAABoCwAAAAAAAAAAAABoCwAAAAAAAGkLAAAAAAAAAAAAAA",
3206  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABmCwAAAAAAAGYLAAAAAAAAAAAAAAAA8L8"
3207  				],
3208  				[
3209  					30,
3210  					1,
3211  					"insert",
3212  					{
3213  						"characters": ","
3214  					},
3215  					"AQAAAGkLAAAAAAAAagsAAAAAAAAAAAAA",
3216  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABpCwAAAAAAAGkLAAAAAAAAAAAAAAAA8L8"
3217  				],
3218  				[
3219  					31,
3220  					1,
3221  					"insert",
3222  					{
3223  						"characters": " **kwarg"
3224  					},
3225  					"CAAAAGoLAAAAAAAAawsAAAAAAAAAAAAAawsAAAAAAABsCwAAAAAAAAAAAABsCwAAAAAAAG0LAAAAAAAAAAAAAG0LAAAAAAAAbgsAAAAAAAAAAAAAbgsAAAAAAABvCwAAAAAAAAAAAABvCwAAAAAAAHALAAAAAAAAAAAAAHALAAAAAAAAcQsAAAAAAAAAAAAAcQsAAAAAAAByCwAAAAAAAAAAAAA",
3226  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABqCwAAAAAAAGoLAAAAAAAAAAAAAAAA8L8"
3227  				],
3228  				[
3229  					32,
3230  					1,
3231  					"insert",
3232  					{
3233  						"characters": "s"
3234  					},
3235  					"AQAAAHILAAAAAAAAcwsAAAAAAAAAAAAA",
3236  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAByCwAAAAAAAHILAAAAAAAAAAAAAAAA8L8"
3237  				],
3238  				[
3239  					34,
3240  					1,
3241  					"insert",
3242  					{
3243  						"characters": ":"
3244  					},
3245  					"AQAAAHQLAAAAAAAAdQsAAAAAAAAAAAAA",
3246  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB0CwAAAAAAAHQLAAAAAAAAAAAAAAAA8L8"
3247  				],
3248  				[
3249  					35,
3250  					1,
3251  					"insert",
3252  					{
3253  						"characters": "\n"
3254  					},
3255  					"AwAAAHULAAAAAAAAdgsAAAAAAAAAAAAAdgsAAAAAAAB6CwAAAAAAAAAAAAB6CwAAAAAAAH4LAAAAAAAAAAAAAA",
3256  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB1CwAAAAAAAHULAAAAAAAAAAAAAAAA8L8"
3257  				],
3258  				[
3259  					36,
3260  					1,
3261  					"copilot_accept_completion",
3262  					null,
3263  					"AgAAAHYLAAAAAAAAdgsAAAAAAAAIAAAAICAgICAgICB2CwAAAAAAALELAAAAAAAAAAAAAA",
3264  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB+CwAAAAAAAH4LAAAAAAAAAAAAAAAA8L8"
3265  				],
3266  				[
3267  					38,
3268  					2,
3269  					"anaconda_auto_format",
3270  					null,
3271  					"AQAAAAAAAAAAAAAAOD4AAAAAAAAjPgAAaW1wb3J0IHB5ZGVhdGlvbgppbXBvcnQgaW1wb3J0bGliCmltcG9ydGxpYi5yZWxvYWQocHlkZWF0aW9uLm9iamVjdHMuYWJzdHJhY3Rfb2JqZWN0cykKZnJvbSBweWRlYXRpb24ub2JqZWN0cy5hYnN0cmFjdF9vYmplY3RzIGltcG9ydCBMaW5lT2JqZWN0CmZyb20gcHlkZWF0aW9uLm9iamVjdHMuaGVscGVyX29iamVjdHMgaW1wb3J0IE51bGwsIE1vU3BsaW5lCmZyb20gcHlkZWF0aW9uLmNvbnN0YW50cyBpbXBvcnQgKgpmcm9tIHB5ZGVhdGlvbi54cHJlc3NvLnhwcmVzc2lvbnMgaW1wb3J0IFhJZGVudGl0eQppbXBvcnQgYzRkCmltcG9ydCBvcwoKCmNsYXNzIENpcmNsZShMaW5lT2JqZWN0KToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgcmFkaXVzPTIwMCwgZWxsaXBzZV9yYXRpbz0xLCByaW5nX3JhdGlvPTEsICoqa3dhcmdzKToKICAgICAgICBzZWxmLnJhZGl1cyA9IHJhZGl1cwogICAgICAgIHNlbGYuZWxsaXBzZV9yYXRpbyA9IGVsbGlwc2VfcmF0aW8KICAgICAgICBzZWxmLnJpbmdfcmF0aW8gPSByaW5nX3JhdGlvCiAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqKmt3YXJncykKCiAgICBkZWYgc3BlY2lmeV9vYmplY3Qoc2VsZik6CiAgICAgICAgc2VsZi5vYmogPSBjNGQuQmFzZU9iamVjdChjNGQuT3NwbGluZWNpcmNsZSkKCiAgICBkZWYgc2V0X29iamVjdF9wcm9wZXJ0aWVzKHNlbGYpOgogICAgICAgICMgY2hlY2sgaW5wdXQgdmFsdWVzCiAgICAgICAgaWYgbm90IDAgPD0gc2VsZi5yaW5nX3JhdGlvIDw9IDE6CiAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInJpbmdfcmF0aW8gbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDEiKQogICAgICAgIGlmIG5vdCAwIDw9IHNlbGYuZWxsaXBzZV9yYXRpbyA8PSAxOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJyaW5nX3JhdGlvIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAxIikKICAgICAgICAjIGltcGxpY2l0IHByb3BlcnRpZXMKICAgICAgICBpZiBzZWxmLnJpbmdfcmF0aW8gIT0gMToKICAgICAgICAgICAgc2VsZi5vYmpbYzRkLlBSSU1fQ0lSQ0xFX1JJTkddID0gVHJ1ZQogICAgICAgIGlubmVyX3JhZGl1cyA9IHNlbGYucmFkaXVzICogc2VsZi5yaW5nX3JhdGlvCiAgICAgICAgaWYgc2VsZi5lbGxpcHNlX3JhdGlvICE9IDE6CiAgICAgICAgICAgIHNlbGYub2JqW2M0ZC5QUklNX0NJUkNMRV9FTExJUFNFXSA9IFRydWUKICAgICAgICBlbGxpcHNlX3JhZGl1cyA9IHNlbGYucmFkaXVzICogc2VsZi5lbGxpcHNlX3JhdGlvCiAgICAgICAgIyBzZXQgcHJvcGVydGllcwogICAgICAgIHNlbGYub2JqW2M0ZC5QUklNX0NJUkNMRV9SQURJVVNZXSA9IGVsbGlwc2VfcmFkaXVzCiAgICAgICAgc2VsZi5vYmpbYzRkLlBSSU1fQ0lSQ0xFX0lOTkVSXSA9IGlubmVyX3JhZGl1cwogICAgICAgIHNlbGYub2JqW2M0ZC5QUklNX0NJUkNMRV9SQURJVVNdID0gc2VsZi5yYWRpdXMKICAgICAgICAjIHNldCBjb25zdGFudHMKICAgICAgICBzZWxmLm9ialtjNGQuU1BMSU5FT0JKRUNUX1NVQl0gPSAzMgoKICAgIGRlZiBzZXRfdW5pcXVlX2Rlc2NfaWRzKHNlbGYpOgogICAgICAgIHNlbGYuZGVzY19pZHMgPSB7CiAgICAgICAgICAgICJyYWRpdXMiOiBjNGQuRGVzY0lEKGM0ZC5EZXNjTGV2ZWwoYzRkLlBSSU1fQ0lSQ0xFX1JBRElVUywgYzRkLkRUWVBFX1JFQUwsIDApKQogICAgICAgIH0KCmNsYXNzIFJlY3RhbmdsZShMaW5lT2JqZWN0KToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgd2lkdGg9MTAwLCBoZWlnaHQ9MTAwLCByb3VuZGluZz1GYWxzZSwgKiprd2FyZ3MpOgogICAgICAgIHNlbGYud2lkdGggPSB3aWR0aAogICAgICAgIHNlbGYuaGVpZ2h0ID0gaGVpZ2h0CiAgICAgICAgc2VsZi5yb3VuZGluZyA9IHJvdW5kaW5nCiAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqKmt3YXJncykKCiAgICBkZWYgc3BlY2lmeV9vYmplY3Qoc2VsZik6CiAgICAgICAgc2VsZi5vYmogPSBjNGQuQmFzZU9iamVjdChjNGQuT3NwbGluZXJlY3RhbmdsZSkKCiAgICBkZWYgc2V0X29iamVjdF9wcm9wZXJ0aWVzKHNlbGYpOgogICAgICAgICMgY2hlY2sgaW5wdXQgdmFsdWVzCiAgICAgICAgaWYgbm90IDAgPD0gc2VsZi5yb3VuZGluZyA8PSAxOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJyb3VuZGluZyBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMSIpCiAgICAgICAgc2VsZi5vYmpbYzRkLlBSSU1fUkVDVEFOR0xFX1dJRFRIXSA9IHNlbGYud2lkdGgKICAgICAgICBzZWxmLm9ialtjNGQuUFJJTV9SRUNUQU5HTEVfSEVJR0hUXSA9IHNlbGYuaGVpZ2h0CiAgICAgICAgaWYgc2VsZi5yb3VuZGluZzoKICAgICAgICAgICAgc2VsZi5vYmpbYzRkLlBSSU1fUkVDVEFOR0xFX1JPVU5ESU5HXSA9IFRydWUKICAgICAgICAgICAgcm91bmRpbmdfcmFkaXVzID0gc2VsZi5yb3VuZGluZyAqIG1pbihzZWxmLndpZHRoLCBzZWxmLmhlaWdodCkgLyAyCiAgICAgICAgICAgIHNlbGYub2JqW2M0ZC5QUklNX1JFQ1RBTkdMRV9SQURJVVNdID0gcm91bmRpbmdfcmFkaXVzCgogICAgZGVmIHNldF91bmlxdWVfZGVzY19pZHMoc2VsZik6CiAgICAgICAgc2VsZi5kZXNjX2lkcyA9IHsKICAgICAgICAgICAgIndpZHRoIjogYzRkLkRlc2NJRChjNGQuRGVzY0xldmVsKGM0ZC5QUklNX1JFQ1RBTkdMRV9XSURUSCwgYzRkLkRUWVBFX1JFQUwsIDApKSwKICAgICAgICAgICAgImhlaWdodCI6IGM0ZC5EZXNjSUQoYzRkLkRlc2NMZXZlbChjNGQuUFJJTV9SRUNUQU5HTEVfSEVJR0hULCBjNGQuRFRZUEVfUkVBTCwgMCkpLAogICAgICAgICAgICAicm91bmRpbmdfcmFkaXVzIjogYzRkLkRlc2NJRChjNGQuRGVzY0xldmVsKGM0ZC5QUklNX1JFQ1RBTkdMRV9SQURJVVMsIGM0ZC5EVFlQRV9SRUFMLCAwKSkKICAgICAgICB9CgpjbGFzcyBTcXVhcmUoUmVjdGFuZ2xlKToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgc2l6ZT0xMDAsICoqa3dhcmdzKToKICAgICAgICBzdXBlcigpLl9faW5pdF9fKHdpZHRoPXNpemUsIGhlaWdodD1zaXplLCAqKmt3YXJncykKCmNsYXNzIEFyYyhMaW5lT2JqZWN0KToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgcmFkaXVzPTE1MCwgc3RhcnRfYW5nbGU9MCwgZW5kX2FuZ2xlPVBJIC8gMiwgKiprd2FyZ3MpOgogICAgICAgIHNlbGYucmFkaXVzID0gcmFkaXVzCiAgICAgICAgc2VsZi5zdGFydF9hbmdsZSA9IHN0YXJ0X2FuZ2xlCiAgICAgICAgc2VsZi5lbmRfYW5nbGUgPSBlbmRfYW5nbGUKICAgICAgICBzdXBlcigpLl9faW5pdF9fKCoqa3dhcmdzKQoKICAgIGRlZiBzcGVjaWZ5X29iamVjdChzZWxmKToKICAgICAgICBzZWxmLm9iaiA9IGM0ZC5CYXNlT2JqZWN0KGM0ZC5Pc3BsaW5lYXJjKQoKICAgIGRlZiBzZXRfb2JqZWN0X3Byb3BlcnRpZXMoc2VsZik6CiAgICAgICAgc2VsZi5vYmpbYzRkLlBSSU1fQVJDX1JBRElVU10gPSBzZWxmLnJhZGl1cwogICAgICAgIHNlbGYub2JqW2M0ZC5QUklNX0FSQ19TVEFSVF0gPSBzZWxmLnN0YXJ0X2FuZ2xlCiAgICAgICAgc2VsZi5vYmpbYzRkLlBSSU1fQVJDX0VORF0gPSBzZWxmLmVuZF9hbmdsZQoKICAgIGRlZiBzZXRfdW5pcXVlX2Rlc2NfaWRzKHNlbGYpOgogICAgICAgIHNlbGYuZGVzY19pZHMgPSB7CiAgICAgICAgICAgICJyYWRpdXMiOiBjNGQuRGVzY0lEKGM0ZC5EZXNjTGV2ZWwoYzRkLlBSSU1fQVJDX1JBRElVUywgYzRkLkRUWVBFX1JFQUwsIDApKSwKICAgICAgICAgICAgInN0YXJ0X2FuZ2xlIjogYzRkLkRlc2NJRChjNGQuRGVzY0xldmVsKGM0ZC5QUklNX0FSQ19TVEFSVCwgYzRkLkRUWVBFX1JFQUwsIDApKSwKICAgICAgICAgICAgImVuZF9hbmdsZSI6IGM0ZC5EZXNjSUQoYzRkLkRlc2NMZXZlbChjNGQuUFJJTV9BUkNfRU5ELCBjNGQuRFRZUEVfUkVBTCwgMCkpCiAgICAgICAgfQoKY2xhc3MgU3BsaW5lKExpbmVPYmplY3QpOgogICAgIiIiY3JlYXRlcyBhIGJhc2ljIHNwbGluZSIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb2ludHM9W10sIHNwbGluZV90eXBlPSJiZXppZXIiLCAqKmt3YXJncyk6CiAgICAgICAgc2VsZi5wb2ludHMgPSBwb2ludHMKICAgICAgICBzZWxmLnNwbGluZV90eXBlID0gc3BsaW5lX3R5cGUKICAgICAgICBzdXBlcigpLl9faW5pdF9fKCoqa3dhcmdzKQogICAgICAgIHNlbGYuYWRkX3BvaW50c190b19zcGxpbmUoKQoKICAgIGRlZiBzcGVjaWZ5X29iamVjdChzZWxmKToKICAgICAgICBzZWxmLm9iaiA9IGM0ZC5CYXNlT2JqZWN0KGM0ZC5Pc3BsaW5lKQoKICAgIGRlZiBhZGRfcG9pbnRzX3RvX3NwbGluZShzZWxmKToKICAgICAgICBpZiBzZWxmLnBvaW50czoKICAgICAgICAgICAgIyBjb252ZXJ0IHBvaW50cyB0byBjNGQgdmVjdG9ycwogICAgICAgICAgICBjNGRfcG9pbnRzID0gW2M0ZC5WZWN0b3IoKnBvaW50KSBpZiB0eXBlKHBvaW50KSBpbiAobGlzdCwgdHVwbGUpIGVsc2UgcG9pbnQgZm9yIHBvaW50IGluIHNlbGYucG9pbnRzXQogICAgICAgICAgICBwb2ludF9jb3VudCA9IGxlbihzZWxmLnBvaW50cykKICAgICAgICAgICAgc2VsZi5vYmouUmVzaXplT2JqZWN0KHBvaW50X2NvdW50KQogICAgICAgICAgICBzZWxmLm9iai5TZXRBbGxQb2ludHMoYzRkX3BvaW50cykKCiAgICBkZWYgc2V0X29iamVjdF9wcm9wZXJ0aWVzKHNlbGYpOgogICAgICAgIHNwbGluZV90eXBlcyA9IHsKICAgICAgICAgICAgImxpbmVhciI6IDAsCiAgICAgICAgICAgICJjdWJpYyI6IDEsCiAgICAgICAgICAgICJha2ltYSI6IDIsCiAgICAgICAgICAgICJiLXNwbGluZSI6IDMsCiAgICAgICAgICAgICJiZXppZXIiOiA0CiAgICAgICAgfQogICAgICAgICMgc2V0IGludGVycG9sYXRpb24KICAgICAgICBzZWxmLm9ialtjNGQuU1BMSU5FT0JKRUNUX1RZUEVdID0gc3BsaW5lX3R5cGVzW3NlbGYuc3BsaW5lX3R5cGVdCgpjbGFzcyBTVkcoU3BsaW5lKTogICMgdGFrZXMgY2FyZSBvZiBpbXBvcnRpbmcgc3ZncwoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlX25hbWUsIHg9MCwgeT0wLCB6PTAsICoqa3dhcmdzKToKICAgICAgICBzZWxmLmZpbGVfbmFtZSA9IGZpbGVfbmFtZQogICAgICAgIHNlbGYueCA9IHgKICAgICAgICBzZWxmLnkgPSB5CiAgICAgICAgc2VsZi56ID0gegogICAgICAgIHNlbGYuZXh0cmFjdF9zcGxpbmVfZnJvbV92ZWN0b3JfaW1wb3J0KCkKICAgICAgICBzdXBlcigpLl9faW5pdF9fKCoqa3dhcmdzKQogICAgICAgIHNlbGYuZml4X2F4ZXMoKQoKICAgIGRlZiBleHRyYWN0X3NwbGluZV9mcm9tX3ZlY3Rvcl9pbXBvcnQoc2VsZik6CiAgICAgICAgZmlsZV9wYXRoID0gb3MucGF0aC5qb2luKFNWR19QQVRILCBzZWxmLmZpbGVfbmFtZSArICIuc3ZnIikKICAgICAgICB2ZWN0b3JfaW1wb3J0ID0gYzRkLkJhc2VPYmplY3QoMTA1Nzg5OSkKICAgICAgICBzZWxmLmRvY3VtZW50ID0gYzRkLmRvY3VtZW50cy5HZXRBY3RpdmVEb2N1bWVudCgpCiAgICAgICAgc2VsZi5kb2N1bWVudC5JbnNlcnRPYmplY3QodmVjdG9yX2ltcG9ydCkKICAgICAgICB2ZWN0b3JfaW1wb3J0W2M0ZC5BUlRfRklMRV0gPSBmaWxlX3BhdGgKICAgICAgICBzZWxmLmRvY3VtZW50LkV4ZWN1dGVQYXNzZXMoCiAgICAgICAgICAgIGJ0PU5vbmUsIGFuaW1hdGlvbj1GYWxzZSwgZXhwcmVzc2lvbnM9RmFsc2UsIGNhY2hlcz1UcnVlLCBmbGFncz1jNGQuQlVJTERGTEFHU19OT05FKQogICAgICAgIHZlY3Rvcl9pbXBvcnQuUmVtb3ZlKCkKICAgICAgICBjYWNoZSA9IHZlY3Rvcl9pbXBvcnQuR2V0Q2FjaGUoKQogICAgICAgIGNhY2hlID0gY2FjaGUuR2V0RG93bigpCiAgICAgICAgY2FjaGUgPSBjYWNoZS5HZXREb3duKCkKICAgICAgICBjYWNoZSA9IGNhY2hlLkdldERvd25MYXN0KCkKICAgICAgICBzZWxmLnNwbGluZSA9IGNhY2hlLkdldENsb25lKCkKCiAgICBkZWYgZml4X2F4ZXMoc2VsZik6CiAgICAgICAgc2VsZi5kb2N1bWVudC5TZXRTZWxlY3Rpb24oc2VsZi5vYmopICAjIHNlbGVjdCBzdmcKICAgICAgICBjNGQuQ2FsbENvbW1hbmQoMTAxMTk4MikgICMgbW92ZXMgc3ZnIGF4ZXMgdG8gY2VudGVyCiAgICAgICAgc2VsZi5vYmpbYzRkLklEX0JBU0VPQkpFQ1RfUkVMX1BPU0lUSU9OXSA9IGM0ZC5WZWN0b3IoCiAgICAgICAgICAgIDAsIDAsIDApICAjIG1vdmUgc3ZnIHRvIG9yaWdpbgogICAgICAgICMgc2V0IHNwZWNpZmllZCBwb3NpdGlvbgogICAgICAgIHNlbGYuc2V0X3Bvc2l0aW9uKHg9c2VsZi54LCB5PXNlbGYueSwgej1zZWxmLnopCgogICAgZGVmIHNwZWNpZnlfb2JqZWN0KHNlbGYpOgogICAgICAgIHNlbGYub2JqID0gc2VsZi5zcGxpbmUKCmNsYXNzIEVkZ2VTcGxpbmUoTGluZU9iamVjdCk6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHNvbGlkX29iamVjdCwgbW9kZT0ib3V0bGluZSIsICoqa3dhcmdzKToKICAgICAgICBzZWxmLnNvbGlkX29iamVjdCA9IHNvbGlkX29iamVjdAogICAgICAgIHNlbGYubW9kZSA9IG1vZGUKICAgICAgICBzdXBlcigpLl9faW5pdF9fKCoqa3dhcmdzKQogICAgICAgIHNlbGYuaW5zZXJ0X3NvbGlkX29iamVjdCgpCiAgICAgICAgc2VsZi5maXhfdmlzaWJpbGl0eV9iZWhhdmlvdXIoKQoKICAgIGRlZiBzcGVjaWZ5X29iamVjdChzZWxmKToKICAgICAgICBzZWxmLm9iaiA9IGM0ZC5CYXNlT2JqZWN0KDEwNTcxODApCgogICAgZGVmIGluc2VydF9zb2xpZF9vYmplY3Qoc2VsZik6CiAgICAgICAgc2VsZi5zb2xpZF9vYmplY3Qub2JqLkluc2VydFVuZGVyKHNlbGYub2JqKQoKICAgIGRlZiBzZXRfb2JqZWN0X3Byb3BlcnRpZXMoc2VsZik6CiAgICAgICAgIyBzZXQgbW9kZQogICAgICAgIG1vZGVzID0gewogICAgICAgICAgICAic3RhbmRhcmQiOiAwLAogICAgICAgICAgICAiY3VydmF0dXJlIjogMSwKICAgICAgICAgICAgImNvbnRvdXIiOiAyLAogICAgICAgICAgICAib3V0bGluZSI6IDMsCiAgICAgICAgICAgICJpbnRlcnNlY3Rpb24iOiA0LAogICAgICAgIH0KICAgICAgICBzZWxmLm9ialtjNGQuSURfTVRfRURHRVRPU1BMSU5FX01PREVfQ1lDTEVdID0gbW9kZXNbc2VsZi5tb2RlXQogICAgICAgIHNlbGYub2JqW2M0ZC5JRF9NVF9FREdFVE9TUExJTkVfUEhPTkdfQU5HTEVdID0gUEkvOQogICAgICAgICMgam9pbiBzcGxpbmUgc2VnbWVudHMgd2l0aGluIDVjbSB0aHJlc2hvbGQKICAgICAgICBzZWxmLm9ialtjNGQuSURfTVRfRURHRVRPU1BMSU5FX0VER0VTUExJTkVfSk9JTl0gPSBUcnVlCiAgICAgICAgc2VsZi5vYmpbYzRkLklEX01UX0VER0VUT1NQTElORV9FREdFU1BMSU5FX0pPSU5fVEhSRVNIT0xEXSA9IDUKCiAgICBkZWYgZml4X3Zpc2liaWxpdHlfYmVoYXZpb3VyKHNlbGYpOgogICAgICAgICIiIndlIGxpbmsgdGhlIHZpc2liaWxpdHkgb2YgdGhlIG9iamVjdCB0byB0aGUgc2tldGNoIHRhZyBzcGxpbmUgdHlwZSBmaXggdGhlIHZpc2liaWxpdHkgYmVoYXZpb3VyIiIiCiAgICAgICAgdmlzaWJpbGl0eV9yZWxhdGlvbiA9IFhJZGVudGl0eSgKICAgICAgICAgICAgcGFydD1zZWxmLnNrZXRjaF90YWcsIHdob2xlPXNlbGYsIGRlc2NfaWRzPVtzZWxmLnNrZXRjaF90YWcuZGVzY19pZHNbInJlbmRlcl9zcGxpbmVzIl1dLCBwYXJhbWV0ZXI9c2VsZi52aXNpYmlsaXR5X3BhcmFtZXRlciwgbmFtZT0iVmlzaWJpbGl0eUluaGVyaXRhbmNlIikKCmNsYXNzIFB5U3BsaW5lKExpbmVPYmplY3QpOgogICAgIiIidHVybnMgYSBjNGQgc3BsaW5lIGludG8gYSBweWRlYXRpb24gc3BsaW5lIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGlucHV0X3NwbGluZSwgc3BsaW5lX3R5cGU9ImJlemllciIsICoqa3dhcmdzKToKICAgICAgICBzZWxmLmlucHV0X3NwbGluZSA9IHNlbGYuZ2V0X3NwbGluZShpbnB1dF9zcGxpbmUpCiAgICAgICAgc2VsZi5zcGxpbmVfdHlwZSA9IHNwbGluZV90eXBlCiAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqKmt3YXJncykKCiAgICBkZWYgZ2V0X3NwbGluZShzZWxmLCBpbnB1dF9zcGxpbmUpOgogICAgICAgICMgdHVybnMgYW55IHByaW1pdGl2ZSBzcGxpbmUgaW50byBhIHNpbmdsZSBlZGl0YWJsZSBzcGxpbmUKICAgICAgICBpZiB0eXBlKGlucHV0X3NwbGluZSkgaXMgbm90IGM0ZC5TcGxpbmVPYmplY3Q6CiAgICAgICAgICAgIHBhc3MKICAgICAgICByZXR1cm4gaW5wdXRfc3BsaW5lCgogICAgZGVmIHNwZWNpZnlfb2JqZWN0KHNlbGYpOgogICAgICAgIHNlbGYub2JqID0gc2VsZi5pbnB1dF9zcGxpbmUuR2V0Q2xvbmUoKQoKICAgIGRlZiBzZXRfb2JqZWN0X3Byb3BlcnRpZXMoc2VsZik6CiAgICAgICAgc3BsaW5lX3R5cGVzID0gewogICAgICAgICAgICAibGluZWFyIjogMCwKICAgICAgICAgICAgImN1YmljIjogMSwKICAgICAgICAgICAgImFraW1hIjogMiwKICAgICAgICAgICAgImItc3BsaW5lIjogMywKICAgICAgICAgICAgImJlemllciI6IDQKICAgICAgICB9CiAgICAgICAgIyBzZXQgaW50ZXJwb2xhdGlvbgogICAgICAgIHNlbGYub2JqW2M0ZC5TUExJTkVPQkpFQ1RfVFlQRV0gPSBzcGxpbmVfdHlwZXNbc2VsZi5zcGxpbmVfdHlwZV0KCmNsYXNzIFNwbGluZVRleHQoTGluZU9iamVjdCk6CiAgICAiIiJjcmVhdGVzIHRoZSBuYXRpdmUgdGV4dCBvYmplY3Qgb2YgYzRkIGFzIG9wcG9zZWQgdG8gdGhlIGN1c3RvbWl6ZWQgdmVyc2lvbiB3aGljaCBoYXMgYWRkaXRpb25hbCBzdHJ1Y3R1cmUiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgdGV4dCwgaGVpZ2h0PTUwLCBhbmNob3I9ImNlbnRlciIsIHNlcGVyYXRlX2xldHRlcnM9RmFsc2UsIGRyYXdfb3JkZXI9ImxlZnRfdG9fcmlnaHQiLCAqKmt3YXJncyk6CiAgICAgICAgc2VsZi50ZXh0ID0gdGV4dAogICAgICAgIHNlbGYuaGVpZ2h0ID0gaGVpZ2h0CiAgICAgICAgc2VsZi5hbmNob3IgPSBhbmNob3IKICAgICAgICBzZWxmLnNlcGVyYXRlX2xldHRlcnMgPSBzZXBlcmF0ZV9sZXR0ZXJzCiAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhuYW1lPXRleHQsIGRyYXdfb3JkZXI9ZHJhd19vcmRlciwgKiprd2FyZ3MpCgoKICAgIGRlZiBzcGVjaWZ5X29iamVjdChzZWxmKToKICAgICAgICBzZWxmLm9iaiA9IGM0ZC5CYXNlT2JqZWN0KGM0ZC5Pc3BsaW5ldGV4dCkKCiAgICBkZWYgc2V0X29iamVjdF9wcm9wZXJ0aWVzKHNlbGYpOgogICAgICAgIGFuY2hvcnMgPSB7ImxlZnQiOiAwLCAibWlkZGxlIjogMSwgImNlbnRlciI6IDEsICJyaWdodCI6IDB9CiAgICAgICAgc2VsZi5vYmpbYzRkLlBSSU1fVEVYVF9URVhUXSA9IHNlbGYudGV4dAogICAgICAgIHNlbGYub2JqW2M0ZC5QUklNX1RFWFRfSEVJR0hUXSA9IHNlbGYuaGVpZ2h0CiAgICAgICAgc2VsZi5vYmpbYzRkLlBSSU1fVEVYVF9BTElHTl0gPSBhbmNob3JzW3NlbGYuYW5jaG9yXQogICAgICAgIHNlbGYub2JqW2M0ZC5QUklNX1RFWFRfU0VQQVJBVEVdID0gc2VsZi5zZXBlcmF0ZV9sZXR0ZXJzCiAgICAgICAgIyBvcHRpb25hbGx5IGNlbnRlciBvYmplY3QKICAgICAgICBpZiBzZWxmLmFuY2hvciA9PSAiY2VudGVyIjoKICAgICAgICAgICAgY2VudGVyID0gc2VsZi5nZXRfY2VudGVyKCkKICAgICAgICAgICAgc2VsZi5tb3ZlKHBvc2l0aW9uPS1jZW50ZXIpCgogICAgZGVmIHNldF91bmlxdWVfZGVzY19pZHMoc2VsZik6CiAgICAgICAgc2VsZi5kZXNjX2lkcyA9IHsKICAgICAgICAgICAgInRleHQiOiBjNGQuRGVzY0lEKGM0ZC5EZXNjTGV2ZWwoYzRkLlBSSU1fVEVYVF9URVhULCBjNGQuRFRZUEVfU1RSSU5HLCAwKSksCiAgICAgICAgICAgICJ0ZXh0X2hlaWdodCI6IGM0ZC5EZXNjSUQoYzRkLkRlc2NMZXZlbChjNGQuUFJJTV9URVhUX0hFSUdIVCwgYzRkLkRUWVBFX1JFQUwsIDApKQogICAgICAgIH0KCmNsYXNzIFNwbGluZU1hc2soTGluZU9iamVjdCk6CiAgICAiIiJjcmVhdGVzIGEgc3BsaW5lIG1hc2siIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgKmlucHV0X3NwbGluZXMsIG1vZGU9InVuaW9uIiwgKiprd2FyZ3MpOgogICAgICAgIHNlbGYuaW5wdXRfc3BsaW5lcyA9IGlucHV0X3NwbGluZXMKICAgICAgICBzZWxmLm1vZGUgPSBtb2RlCiAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqKmt3YXJncykKICAgICAgICBzZWxmLmluc2VydF9pbnB1dF9zcGxpbmVzKCkKCiAgICBkZWYgc3BlY2lmeV9vYmplY3Qoc2VsZik6CiAgICAgICAgc2VsZi5vYmogPSBjNGQuQmFzZU9iamVjdCgxMDE5Mzk2KQoKICAgIGRlZiBzZXRfb2JqZWN0X3Byb3BlcnRpZXMoc2VsZik6CiAgICAgICAgbW9kZXMgPSB7CiAgICAgICAgICAgICJ1bmlvbiI6IDAsCiAgICAgICAgICAgICJhLWIiOiAxLAogICAgICAgICAgICAiYi1hIjogMiwKICAgICAgICAgICAgImFuZCI6IDMsCiAgICAgICAgICAgICJvciI6IDQsCiAgICAgICAgICAgICJpbnRlcnNlY3Rpb24iOiA1CiAgICAgICAgfQogICAgICAgIHNlbGYub2JqW2M0ZC5NR1NQTElORU1BU0tPQkpFQ1RfTU9ERV0gPSBtb2Rlc1tzZWxmLm1vZGVdCgogICAgZGVmIGluc2VydF9pbnB1dF9zcGxpbmVzKHNlbGYpOgogICAgICAgIGZvciBzcGxpbmUgaW4gc2VsZi5pbnB1dF9zcGxpbmVzOgogICAgICAgICAgICBzcGxpbmUub2JqLkluc2VydFVuZGVyKHNlbGYub2JqKQoKICAgIGRlZiBzcGVjaWZ5X3JlbGF0aW9ucyhzZWxmKToKICAgICAgICBmb3IgaW5wdXRfc3BsaW5lIGluIHNlbGYuaW5wdXRfc3BsaW5lczoKICAgICAgICAgICAgaWYgaGFzYXR0cihpbnB1dF9zcGxpbmUsICJ2aXNpYmlsaXR5X3BhcmFtZXRlciIpOgogICAgICAgICAgICAgICAgdmlzaWJpbGl0eV9yZWxhdGlvbiA9IFhJZGVudGl0eSgKICAgICAgICAgICAgICAgICAgICAgICAgcGFydD1pbnB1dF9zcGxpbmUsIHdob2xlPXNlbGYsIGRlc2NfaWRzPVtpbnB1dF9zcGxpbmUudmlzaWJpbGl0eV9wYXJhbWV0ZXIuZGVzY19pZF0sIHBhcmFtZXRlcj1zZWxmLnZpc2liaWxpdHlfcGFyYW1ldGVyLCBuYW1lPSJWaXNpYmlsaXR5SW5oZXJpdGFuY2UiKQoKY2xhc3MgVmlzaWJsZU1vU3BsaW5lKExpbmVPYmplY3QpOgogICAgIiIiY3JlYXRlcyBhIHZpc2libGUgTW9TcGxpbmUiIiIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kZT0ic3BsaW5lIiwgZ2VuZXJhdGlvbl9tb2RlPSJldmVuIiwgcG9pbnRfY291bnQ9MTAwLCBzb3VyY2Vfc3BsaW5lPU5vbmUsIGRlc3RpbmF0aW9uX3NwbGluZT1Ob25lLCBlZmZlY3RvcnM9W10sICoqa3dhcmdzKToKICAgICAgICBzZWxmLm1vZGUgPSBtb2RlCiAgICAgICAgc2VsZi5nZW5lcmF0aW9uX21vZGUgPSBnZW5lcmF0aW9uX21vZGUKICAgICAgICBzZWxmLnBvaW50X2NvdW50ID0gcG9pbnRfY291bnQKICAgICAgICBzZWxmLnNvdXJjZV9zcGxpbmUgPSBzb3VyY2Vfc3BsaW5lCiAgICAgICAgc2VsZi5lZmZlY3RvcnMgPSBlZmZlY3RvcnMKICAgICAgICBzZWxmLmRlc3RpbmF0aW9uX3NwbGluZSA9IGRlc3RpbmF0aW9uX3NwbGluZQogICAgICAgIHN1cGVyKCkuX19pbml0X18oKiprd2FyZ3MpCiAgICAgICAgc2VsZi5hZGRfZWZmZWN0b3JzKCkKCiAgICBkZWYgc3BlY2lmeV9vYmplY3Qoc2VsZik6CiAgICAgICAgc2VsZi5vYmogPSBjNGQuQmFzZU9iamVjdCg0NDAwMDAwNTQpCgogICAgZGVmIHNldF9vYmplY3RfcHJvcGVydGllcyhzZWxmKToKICAgICAgICAjIGltcGxpY2l0IHByb3BlcnRpZXMKICAgICAgICBtb2RlcyA9IHsic2ltcGxlIjogMCwgInNwbGluZSI6IDEsICJ0dXJ0bGUiOiAyfQogICAgICAgIGdlbmVyYXRpb25fbW9kZXMgPSB7InZlcnRleCI6IDAsICJjb3VudCI6IDEsICJldmVuIjogMiwgInN0ZXAiOiAzfQogICAgICAgICMgc2V0IHByb3BlcnRpZXMKICAgICAgICBzZWxmLm9ialtjNGQuTUdNT1NQTElORU9CSkVDVF9NT0RFXSA9IG1vZGVzW3NlbGYubW9kZV0KICAgICAgICBzZWxmLm9ialtjNGQuTUdNT1NQTElORU9CSkVDVF9TUExJTkVfTU9ERV0gPSBnZW5lcmF0aW9uX21vZGVzW3NlbGYuZ2VuZXJhdGlvbl9tb2RlXQogICAgICAgIHNlbGYub2JqW2M0ZC5NR01PU1BMSU5FT0JKRUNUX1NQTElORV9DT1VOVF0gPSBzZWxmLnBvaW50X2NvdW50CiAgICAgICAgIyBkaXNwbGF5IGFzIHJlZ3VsYXIgc3BsaW5lCiAgICAgICAgc2VsZi5vYmpbYzRkLk1HTU9TUExJTkVPQkpFQ1RfRElTUExBWU1PREVdID0gMAogICAgICAgIGlmIHNlbGYuc291cmNlX3NwbGluZToKICAgICAgICAgICAgc2VsZi5vYmpbYzRkLk1HTU9TUExJTkVPQkpFQ1RfU09VUkNFX1NQTElORV0gPSBzZWxmLnNvdXJjZV9zcGxpbmUub2JqCiAgICAgICAgaWYgc2VsZi5kZXN0aW5hdGlvbl9zcGxpbmU6CiAgICAgICAgICAgIHNlbGYub2JqW2M0ZC5NR01PU1BMSU5FT0JKRUNUX0RFU1RfU1BMSU5FXSA9IHNlbGYuZGVzdGluYXRpb25fc3BsaW5lLm9iagoKICAgIGRlZiBzZXRfdW5pcXVlX2Rlc2NfaWRzKHNlbGYpOgogICAgICAgIHNlbGYuZGVzY19pZHMgPSB7CiAgICAgICAgICAgICJwb2ludF9jb3VudCI6IGM0ZC5EZXNjSUQoYzRkLkRlc2NMZXZlbChjNGQuTUdNT1NQTElORU9CSkVDVF9TUExJTkVfQ09VTlQsIGM0ZC5EVFlQRV9MT05HLCAwKSkKICAgICAgICB9CgogICAgZGVmIGFkZF9lZmZlY3RvcnMoc2VsZik6CiAgICAgICAgc2VsZi5lZmZlY3Rvcl9saXN0ID0gYzRkLkluRXhjbHVkZURhdGEoKQogICAgICAgIGZvciBlZmZlY3RvciBpbiBzZWxmLmVmZmVjdG9yczoKICAgICAgICAgICAgc2VsZi5lZmZlY3Rvcl9saXN0Lkluc2VydE9iamVjdChlZmZlY3Rvci5vYmosIDEpCiAgICAgICAgc2VsZi5vYmpbYzRkLklEX01HX01PVElPTkdFTkVSQVRPUl9FRkZFQ1RPUkxJU1RdID0gc2VsZi5lZmZlY3Rvcl9saXN0CgogICAgZGVmIGFkZF9lZmZlY3RvcihzZWxmLCBlZmZlY3Rvcik6CiAgICAgICAgc2VsZi5lZmZlY3Rvcl9saXN0Lkluc2VydE9iamVjdChlZmZlY3Rvci5vYmosIDEpCiAgICAgICAgc2VsZi5vYmpbYzRkLk1HTU9TUExJTkVPQkpFQ1RfRUZGRUNUT1JMSVNUXSA9IHNlbGYuZWZmZWN0b3JfbGlzdAoKY2xhc3MgU3BsaW5lU3ltbWV0cnkoTGluZU9iamVjdCk6CiAgICAiIiJ0aGUgc3ltbWV0cnkgb2JqZWN0IHVzZWQgdG8gbWlycm9yIHNwbGluZSBnZW9tZXRyeSIiIgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqaW5wdXRfc3BsaW5lcywgYXhpcz0ieCIsICoqa3dhcmdzKToKICAgICAgICBzZWxmLmlucHV0X3NwbGluZXMgPSBpbnB1dF9zcGxpbmVzCiAgICAgICAgc2VsZi5heGlzID0gYXhpcwogICAgICAgIHN1cGVyKCkuX19pbml0X18oKiprd2FyZ3MpCiAgICAgICAgc2VsZi5pbnNlcnRfaW5wdXRfc3BsaW5lcygpCgogICAgZGVmIHNwZWNpZnlfb2JqZWN0KHNlbGYpOgogICAgICAgIHNlbGYub2JqID0gYzRkLkJhc2VPYmplY3QoNTE0MikKCiAgICBkZWYgc2V0X29iamVjdF9wcm9wZXJ0aWVzKHNlbGYpOgogICAgICAgIGF4ZXMgPSB7IngiOiAxLCAieSI6IDIsICJ6IjogMH0KICAgICAgICBzZWxmLm9ialtjNGQuU1lNTUVUUllPQkpFQ1RfUExBTkVdID0gYXhlc1tzZWxmLmF4aXNdCgogICAgZGVmIGluc2VydF9pbnB1dF9zcGxpbmVzKHNlbGYpOgogICAgICAgIGZvciBzcGxpbmUgaW4gc2VsZi5pbnB1dF9zcGxpbmVzOgogICAgICAgICAgICBzcGxpbmUub2JqLkluc2VydFVuZGVyKHNlbGYub2JqKQoKY2xhc3MgSGVsaXgoTGluZU9iamVjdCk6CiAgICAiIiJ0aGUgaGVsaXggb2JqZWN0IiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0YXJ0X3JhZGl1cz0yMDAsIHN0YXJ0X2FuZ2xlPTAsIGVuZF9yYWRpdXM9MjAwLCBlbmRfYW5nbGU9MipQSSwgcmFkaWFsX2JpYXM9MS8yLCBoZWlnaHQ9MjAwLCBoZWlnaHRfYmlhcz0xLzIsIHN1YmRpdmlzaW9uPTEwMCwgKiprd2FyZ3MpOgogICAgICAgIHNlbGYuc3RhcnRfcmFkaXVzID0gc3RhcnRfcmFkaXVzCiAgICAgICAgc2VsZi5zdGFydF9hbmdsZSA9IHN0YXJ0X2FuZ2xlCiAgICAgICAgc2VsZi5lbmRfcmFkaXVzID0gZW5kX3JhZGl1cwogICAgICAgIHNlbGYuZW5kX2FuZ2xlID0gZW5kX2FuZ2xlCiAgICAgICAgc2VsZi5yYWRpYWxfYmlhcyA9IHJhZGlhbF9iaWFzCiAgICAgICAgc2VsZi5oZWlnaHQgPSBoZWlnaHQKICAgICAgICBzZWxmLmhlaWdodF9iaWFzID0gaGVpZ2h0X2JpYXMKICAgICAgICBzZWxmLnN1YmRpdmlzaW9uID0gc3ViZGl2aXNpb24KICAgICAgICBzdXBlcigpLl9faW5pdF9fKCoqa3dhcmdzKQoKICAgIGRlZiBzcGVjaWZ5X29iamVjdChzZWxmKToKICAgICAgICBzZWxmLm9iaiA9IGM0ZC5CYXNlT2JqZWN0KGM0ZC5Pc3BsaW5laGVsaXgpCgogICAgZGVmIHNldF9vYmplY3RfcHJvcGVydGllcyhzZWxmKToKICAgICAgICBzZWxmLm9ialtjNGQuUFJJTV9IRUxJWF9SQURJVVMxXSA9IHNlbGYuc3RhcnRfcmFkaXVzCiAgICAgICAgc2VsZi5vYmpbYzRkLlBSSU1fSEVMSVhfUkFESVVTMl0gPSBzZWxmLmVuZF9yYWRpdXMKICAgICAgICBzZWxmLm9ialtjNGQuUFJJTV9IRUxJWF9TVEFSVF0gPSBzZWxmLnN0YXJ0X2FuZ2xlCiAgICAgICAgc2VsZi5vYmpbYzRkLlBSSU1fSEVMSVhfRU5EXSA9IHNlbGYuZW5kX2FuZ2xlCiAgICAgICAgc2VsZi5vYmpbYzRkLlBSSU1fSEVMSVhfUkFESUFMQklBU10gPSBzZWxmLnJhZGlhbF9iaWFzCiAgICAgICAgc2VsZi5vYmpbYzRkLlBSSU1fSEVMSVhfSEVJR0hUXSA9IHNlbGYuaGVpZ2h0CiAgICAgICAgc2VsZi5vYmpbYzRkLlBSSU1fSEVMSVhfSEVJR0hUQklBU10gPSBzZWxmLmhlaWdodF9iaWFzCiAgICAgICAgc2VsZi5vYmpbYzRkLlBSSU1fSEVMSVhfU1VCXSA9IHNlbGYuc3ViZGl2aXNpb24KCmNsYXNzIE5TaWRlKExpbmVPYmplY3QpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHJhZGl1cz0xMDAsIHBvaW50X2NvdW50PTMsICoqa3dhcmdzKToKICAgICAgICBzZWxmLnJhZGl1cyA9IHJhZGl1cwogICAgICAgIHNlbGYucG9pbnRfY291bnQgPSBwb2ludF9jb3VudAogICAgICAgIHN1cGVyKCkuX19pbml0X18oKiprd2FyZ3MpCiAgICAKICAgIGRlZiBzcGVjaWZ5X29iamVjdChzZWxmKToKICAgICAgICBzZWxmLm9iaiA9IGM0ZC5CYXNlT2JqZWN0KGM0ZC5Pc3BsaW5lbnNpZGUpCiAgICAKICAgIGRlZiBzZXRfb2JqZWN0X3Byb3BlcnRpZXMoc2VsZik6CiAgICAgICAgc2VsZi5vYmpbYzRkLlBSSU1fTlNJREVfUkFESVVTXSA9IHNlbGYucmFkaXVzCiAgICAgICAgc2VsZi5vYmpbYzRkLlBSSU1fTlNJREVfU0lERVNdID0gc2VsZi5wb2ludF9jb3VudAogICAgICAgICMgQWRkaXRpb25hbCBwcm9wZXJ0aWVzIGxpa2UgYW5nbGUgY2FuIGJlIHNldCBoZXJlIGlmIG5lY2Vzc2FyeS4KICAgIAogICAgZGVmIHNldF91bmlxdWVfZGVzY19pZHMoc2VsZik6CiAgICAgICAgc2VsZi5kZXNjX2lkcyA9IHsKICAgICAgICAgICAgInJhZGl1cyI6IGM0ZC5EZXNjSUQoYzRkLkRlc2NMZXZlbChjNGQuUFJJTV9OU0lERV9SQURJVVMsIGM0ZC5EVFlQRV9SRUFMLCAwKSksCiAgICAgICAgICAgICJwb2ludF9jb3VudCI6IGM0ZC5EZXNjSUQoYzRkLkRlc2NMZXZlbChjNGQuUFJJTV9OU0lERV9TSURFUywgYzRkLkRUWVBFX0xPTkcsIDApKSwKICAgICAgICAgICAgIyBBZGQgRGVzY0lEcyBmb3IgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIGhlcmUKICAgICAgICB9CgpjbGFzcyBUcmlhbmdsZShOU2lkZSk6CiAgICBkZWYgX19pbml0X18oc2VsZiwgcmFkaXVzPTEwMCwgKiprd2FyZ3MpOgogICAgICAgIHN1cGVyKCkuX19pbml0X18ocmFkaXVzPXJhZGl1cywgcG9pbnRfY291bnQ9MywgKiprd2FyZ3MpCiAgICAKICAgIGRlZiBzZXRfb2JqZWN0X3Byb3BlcnRpZXMoc2VsZik6CiAgICAgICAgc3VwZXIoKS5zZXRfb2JqZWN0X3Byb3BlcnRpZXMoKQogICAgICAgIHNlbGYub2JqW1JPVF9CXSA9IC1jNGQudXRpbHMuUmFkKDkwKSAgIyBSb3RhdGUgYnkgLTkwIGRlZ3JlZXMgdG8gbWFrZSB0aGUgdHJpYW5nbGUgcG9pbnQgdXB3YXJkcy4KICAgIAogICAgZGVmIHNldF91bmlxdWVfZGVzY19pZHMoc2VsZik6CiAgICAgICAgc3VwZXIoKS5zZXRfdW5pcXVlX2Rlc2NfaWRzKCkKICAgICAgICAjIEFkZCBEZXNjSUQgZm9yIHRoZSBvcmllbnRhdGlvbiBhbmQgcm90YXRpb24gaWYgbmVjZXNzYXJ5IGZvciBhbmltYXRpb24gcHVycG9zZXMuCg",
3272  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACxCwAAAAAAALELAAAAAAAAAAAAAAAA8L8"
3273  				],
3274  				[
3275  					44,
3276  					1,
3277  					"insert",
3278  					{
3279  						"characters": "\n"
3280  					},
3281  					"AwAAAHcLAAAAAAAAeAsAAAAAAAAAAAAAeAsAAAAAAAB8CwAAAAAAAAAAAAB8CwAAAAAAAIALAAAAAAAAAAAAAA",
3282  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB3CwAAAAAAAHcLAAAAAAAAAAAAAAAA8L8"
3283  				],
3284  				[
3285  					45,
3286  					1,
3287  					"insert",
3288  					{
3289  						"characters": "s"
3290  					},
3291  					"AQAAAIALAAAAAAAAgQsAAAAAAAAAAAAA",
3292  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACACwAAAAAAAIALAAAAAAAAAAAAAAAA8L8"
3293  				],
3294  				[
3295  					46,
3296  					1,
3297  					"insert_completion",
3298  					{
3299  						"completion": "self",
3300  						"format": "snippet",
3301  						"keep_prefix": false,
3302  						"must_insert": false,
3303  						"trigger": "self"
3304  					},
3305  					"AgAAAIALAAAAAAAAgAsAAAAAAAABAAAAc4ALAAAAAAAAhAsAAAAAAAAAAAAA",
3306  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACBCwAAAAAAAIELAAAAAAAAAAAAAAAA8L8"
3307  				],
3308  				[
3309  					47,
3310  					1,
3311  					"insert",
3312  					{
3313  						"characters": ".s"
3314  					},
3315  					"AgAAAIQLAAAAAAAAhQsAAAAAAAAAAAAAhQsAAAAAAACGCwAAAAAAAAAAAAA",
3316  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACECwAAAAAAAIQLAAAAAAAAAAAAAAAA8L8"
3317  				],
3318  				[
3319  					48,
3320  					1,
3321  					"copilot_accept_completion",
3322  					null,
3323  					"AgAAAHgLAAAAAAAAeAsAAAAAAAAOAAAAICAgICAgICBzZWxmLnN4CwAAAAAAAJALAAAAAAAAAAAAAA",
3324  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAACGCwAAAAAAAIYLAAAAAAAAAAAAAAAA8L8"
3325  				]
3326  			]
3327  		},
3328  		{
3329  			"file": "tags.py",
3330  			"settings":
3331  			{
3332  				"buffer_size": 4670,
3333  				"encoding": "UTF-8",
3334  				"line_ending": "Unix"
3335  			},
3336  			"undo_stack":
3337  			[
3338  				[
3339  					7,
3340  					1,
3341  					"insert",
3342  					{
3343  						"characters": "\n\ndef"
3344  					},
3345  					"CAAAAG8EAAAAAAAAcAQAAAAAAAAAAAAAcAQAAAAAAAB0BAAAAAAAAAAAAAB0BAAAAAAAAHUEAAAAAAAAAAAAAHUEAAAAAAAAeQQAAAAAAAAAAAAAcAQAAAAAAABwBAAAAAAAAAQAAAAgICAgdQQAAAAAAAB2BAAAAAAAAAAAAAB2BAAAAAAAAHcEAAAAAAAAAAAAAHcEAAAAAAAAeAQAAAAAAAAAAAAA",
3346  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAG8EAAAAAAAAbwQAAAAAAAAAAAAAAADwvw"
3347  				],
3348  				[
3349  					8,
3350  					1,
3351  					"insert",
3352  					{
3353  						"characters": " in"
3354  					},
3355  					"AwAAAHgEAAAAAAAAeQQAAAAAAAAAAAAAeQQAAAAAAAB6BAAAAAAAAAAAAAB6BAAAAAAAAHsEAAAAAAAAAAAAAA",
3356  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHgEAAAAAAAAeAQAAAAAAAAAAAAAAADwvw"
3357  				],
3358  				[
3359  					9,
3360  					1,
3361  					"insert_completion",
3362  					{
3363  						"completion": "__init__",
3364  						"format": "text",
3365  						"keep_prefix": false,
3366  						"must_insert": false,
3367  						"trigger": "__init__"
3368  					},
3369  					"AgAAAHkEAAAAAAAAeQQAAAAAAAACAAAAaW55BAAAAAAAAIEEAAAAAAAAAAAAAA",
3370  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHsEAAAAAAAAewQAAAAAAAAAAAAAAADwvw"
3371  				],
3372  				[
3373  					10,
3374  					1,
3375  					"copilot_accept_completion",
3376  					null,
3377  					"AgAAAHEEAAAAAAAAcQQAAAAAAAAQAAAAICAgIGRlZiBfX2luaXRfX3EEAAAAAAAAkgQAAAAAAAAAAAAA",
3378  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIEEAAAAAAAAgQQAAAAAAAAAAAAAAADwvw"
3379  				],
3380  				[
3381  					11,
3382  					1,
3383  					"insert",
3384  					{
3385  						"characters": "\n"
3386  					},
3387  					"AwAAAJIEAAAAAAAAkwQAAAAAAAAAAAAAkwQAAAAAAACXBAAAAAAAAAAAAACXBAAAAAAAAJsEAAAAAAAAAAAAAA",
3388  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJIEAAAAAAAAkgQAAAAAAAAAAAAAAADwvw"
3389  				],
3390  				[
3391  					12,
3392  					1,
3393  					"copilot_accept_completion",
3394  					null,
3395  					"AgAAAJMEAAAAAAAAkwQAAAAAAAAIAAAAICAgICAgICCTBAAAAAAAANcEAAAAAAAAAAAAAA",
3396  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJsEAAAAAAAAmwQAAAAAAAAAAAAAAADwvw"
3397  				],
3398  				[
3399  					13,
3400  					1,
3401  					"run_macro_file",
3402  					{
3403  						"file": "res://Packages/Default/Delete to Hard BOL.sublime-macro"
3404  					},
3405  					"AQAAALYEAAAAAAAAtgQAAAAAAAAhAAAAICAgICAgICBzZWxmLnNldF90YWdfcHJvcGVydGllcygp",
3406  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANcEAAAAAAAA1wQAAAAAAAAAAAAAAADwvw"
3407  				],
3408  				[
3409  					14,
3410  					1,
3411  					"left_delete",
3412  					null,
3413  					"AQAAALUEAAAAAAAAtQQAAAAAAAABAAAACg",
3414  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALYEAAAAAAAAtgQAAAAAAAAAAAAAAADwvw"
3415  				],
3416  				[
3417  					17,
3418  					1,
3419  					"insert",
3420  					{
3421  						"characters": "\n"
3422  					},
3423  					"AwAAAJIEAAAAAAAAkwQAAAAAAAAAAAAAkwQAAAAAAACXBAAAAAAAAAAAAACXBAAAAAAAAJsEAAAAAAAAAAAAAA",
3424  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJIEAAAAAAAAkgQAAAAAAAAAAAAAAMBtQA"
3425  				],
3426  				[
3427  					21,
3428  					1,
3429  					"insert",
3430  					{
3431  						"characters": " outl"
3432  					},
3433  					"BgAAAIcEAAAAAAAAiAQAAAAAAAAAAAAAlAQAAAAAAACUBAAAAAAAAAgAAAAgICAgICAgIIgEAAAAAAAAiQQAAAAAAAAAAAAAiQQAAAAAAACKBAAAAAAAAAAAAACKBAAAAAAAAIsEAAAAAAAAAAAAAIsEAAAAAAAAjAQAAAAAAAAAAAAA",
3434  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIcEAAAAAAAAhwQAAAAAAAAAAAAAAADwvw"
3435  				],
3436  				[
3437  					22,
3438  					1,
3439  					"insert",
3440  					{
3441  						"characters": "ine="
3442  					},
3443  					"BAAAAIwEAAAAAAAAjQQAAAAAAAAAAAAAjQQAAAAAAACOBAAAAAAAAAAAAACOBAAAAAAAAI8EAAAAAAAAAAAAAI8EAAAAAAAAkAQAAAAAAAAAAAAA",
3444  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIwEAAAAAAAAjAQAAAAAAAAAAAAAAADwvw"
3445  				],
3446  				[
3447  					23,
3448  					1,
3449  					"insert",
3450  					{
3451  						"characters": "False,"
3452  					},
3453  					"BgAAAJAEAAAAAAAAkQQAAAAAAAAAAAAAkQQAAAAAAACSBAAAAAAAAAAAAACSBAAAAAAAAJMEAAAAAAAAAAAAAJMEAAAAAAAAlAQAAAAAAAAAAAAAlAQAAAAAAACVBAAAAAAAAAAAAACVBAAAAAAAAJYEAAAAAAAAAAAAAA",
3454  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJAEAAAAAAAAkAQAAAAAAAAAAAAAAADwvw"
3455  				],
3456  				[
3457  					24,
3458  					1,
3459  					"insert",
3460  					{
3461  						"characters": " "
3462  					},
3463  					"AQAAAJYEAAAAAAAAlwQAAAAAAAAAAAAA",
3464  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJYEAAAAAAAAlgQAAAAAAAAAAAAAAADwvw"
3465  				],
3466  				[
3467  					26,
3468  					1,
3469  					"insert",
3470  					{
3471  						"characters": "contour="
3472  					},
3473  					"CAAAAJcEAAAAAAAAmAQAAAAAAAAAAAAAmAQAAAAAAACZBAAAAAAAAAAAAACZBAAAAAAAAJoEAAAAAAAAAAAAAJoEAAAAAAAAmwQAAAAAAAAAAAAAmwQAAAAAAACcBAAAAAAAAAAAAACcBAAAAAAAAJ0EAAAAAAAAAAAAAJ0EAAAAAAAAngQAAAAAAAAAAAAAngQAAAAAAACfBAAAAAAAAAAAAAA",
3474  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJcEAAAAAAAAlwQAAAAAAAAAAAAAAADwvw"
3475  				],
3476  				[
3477  					27,
3478  					1,
3479  					"insert",
3480  					{
3481  						"characters": "False,"
3482  					},
3483  					"BgAAAJ8EAAAAAAAAoAQAAAAAAAAAAAAAoAQAAAAAAAChBAAAAAAAAAAAAAChBAAAAAAAAKIEAAAAAAAAAAAAAKIEAAAAAAAAowQAAAAAAAAAAAAAowQAAAAAAACkBAAAAAAAAAAAAACkBAAAAAAAAKUEAAAAAAAAAAAAAA",
3484  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJ8EAAAAAAAAnwQAAAAAAAAAAAAAAADwvw"
3485  				],
3486  				[
3487  					28,
3488  					1,
3489  					"insert",
3490  					{
3491  						"characters": " splines"
3492  					},
3493  					"CAAAAKUEAAAAAAAApgQAAAAAAAAAAAAApgQAAAAAAACnBAAAAAAAAAAAAACnBAAAAAAAAKgEAAAAAAAAAAAAAKgEAAAAAAAAqQQAAAAAAAAAAAAAqQQAAAAAAACqBAAAAAAAAAAAAACqBAAAAAAAAKsEAAAAAAAAAAAAAKsEAAAAAAAArAQAAAAAAAAAAAAArAQAAAAAAACtBAAAAAAAAAAAAAA",
3494  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAKUEAAAAAAAApQQAAAAAAAAAAAAAAADwvw"
3495  				],
3496  				[
3497  					29,
3498  					1,
3499  					"insert",
3500  					{
3501  						"characters": "=False,"
3502  					},
3503  					"BwAAAK0EAAAAAAAArgQAAAAAAAAAAAAArgQAAAAAAACvBAAAAAAAAAAAAACvBAAAAAAAALAEAAAAAAAAAAAAALAEAAAAAAAAsQQAAAAAAAAAAAAAsQQAAAAAAACyBAAAAAAAAAAAAACyBAAAAAAAALMEAAAAAAAAAAAAALMEAAAAAAAAtAQAAAAAAAAAAAAA",
3504  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAK0EAAAAAAAArQQAAAAAAAAAAAAAAADwvw"
3505  				],
3506  				[
3507  					30,
3508  					1,
3509  					"insert",
3510  					{
3511  						"characters": " "
3512  					},
3513  					"AQAAALQEAAAAAAAAtQQAAAAAAAAAAAAA",
3514  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALQEAAAAAAAAtAQAAAAAAAAAAAAAAADwvw"
3515  				],
3516  				[
3517  					31,
3518  					1,
3519  					"insert",
3520  					{
3521  						"characters": "folds=False"
3522  					},
3523  					"CwAAALUEAAAAAAAAtgQAAAAAAAAAAAAAtgQAAAAAAAC3BAAAAAAAAAAAAAC3BAAAAAAAALgEAAAAAAAAAAAAALgEAAAAAAAAuQQAAAAAAAAAAAAAuQQAAAAAAAC6BAAAAAAAAAAAAAC6BAAAAAAAALsEAAAAAAAAAAAAALsEAAAAAAAAvAQAAAAAAAAAAAAAvAQAAAAAAAC9BAAAAAAAAAAAAAC9BAAAAAAAAL4EAAAAAAAAAAAAAL4EAAAAAAAAvwQAAAAAAAAAAAAAvwQAAAAAAADABAAAAAAAAAAAAAA",
3524  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALUEAAAAAAAAtQQAAAAAAAAAAAAAAADwvw"
3525  				],
3526  				[
3527  					32,
3528  					1,
3529  					"insert",
3530  					{
3531  						"characters": ","
3532  					},
3533  					"AQAAAMAEAAAAAAAAwQQAAAAAAAAAAAAA",
3534  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAMAEAAAAAAAAwAQAAAAAAAAAAAAAAADwvw"
3535  				],
3536  				[
3537  					33,
3538  					1,
3539  					"insert",
3540  					{
3541  						"characters": " creases"
3542  					},
3543  					"CAAAAMEEAAAAAAAAwgQAAAAAAAAAAAAAwgQAAAAAAADDBAAAAAAAAAAAAADDBAAAAAAAAMQEAAAAAAAAAAAAAMQEAAAAAAAAxQQAAAAAAAAAAAAAxQQAAAAAAADGBAAAAAAAAAAAAADGBAAAAAAAAMcEAAAAAAAAAAAAAMcEAAAAAAAAyAQAAAAAAAAAAAAAyAQAAAAAAADJBAAAAAAAAAAAAAA",
3544  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAMEEAAAAAAAAwQQAAAAAAAAAAAAAAADwvw"
3545  				],
3546  				[
3547  					34,
3548  					1,
3549  					"insert",
3550  					{
3551  						"characters": "=False,"
3552  					},
3553  					"BwAAAMkEAAAAAAAAygQAAAAAAAAAAAAAygQAAAAAAADLBAAAAAAAAAAAAADLBAAAAAAAAMwEAAAAAAAAAAAAAMwEAAAAAAAAzQQAAAAAAAAAAAAAzQQAAAAAAADOBAAAAAAAAAAAAADOBAAAAAAAAM8EAAAAAAAAAAAAAM8EAAAAAAAA0AQAAAAAAAAAAAAA",
3554  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAMkEAAAAAAAAyQQAAAAAAAAAAAAAAADwvw"
3555  				],
3556  				[
3557  					37,
3558  					1,
3559  					"cut",
3560  					null,
3561  					"AQAAAJcEAAAAAAAAlwQAAAAAAAAdAAAAY29udG91cj1GYWxzZSwgc3BsaW5lcz1GYWxzZSw",
3562  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJcEAAAAAAAAtAQAAAAAAAAAAAAAAADwvw"
3563  				],
3564  				[
3565  					38,
3566  					1,
3567  					"left_delete",
3568  					null,
3569  					"AQAAAJYEAAAAAAAAlgQAAAAAAAABAAAAIA",
3570  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJcEAAAAAAAAlwQAAAAAAAAAAAAAAADwvw"
3571  				],
3572  				[
3573  					41,
3574  					1,
3575  					"paste",
3576  					null,
3577  					"AQAAALIEAAAAAAAAzwQAAAAAAAAAAAAA",
3578  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALIEAAAAAAAAsgQAAAAAAAAAAAAAAADwvw"
3579  				],
3580  				[
3581  					43,
3582  					1,
3583  					"insert",
3584  					{
3585  						"characters": " "
3586  					},
3587  					"AQAAALIEAAAAAAAAswQAAAAAAAAAAAAA",
3588  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALIEAAAAAAAAsgQAAAAAAAAAAAAAAADwvw"
3589  				],
3590  				[
3591  					45,
3592  					1,
3593  					"reindent",
3594  					null,
3595  					"AQAAANwEAAAAAAAA5AQAAAAAAAAAAAAA",
3596  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANwEAAAAAAAA3AQAAAAAAAAAAAAAAOB8QA"
3597  				],
3598  				[
3599  					46,
3600  					1,
3601  					"copilot_accept_completion",
3602  					null,
3603  					"AgAAANwEAAAAAAAA3AQAAAAAAAAIAAAAICAgICAgICDcBAAAAAAAAPoEAAAAAAAAAAAAAA",
3604  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAOQEAAAAAAAA5AQAAAAAAAAAAAAAAADwvw"
3605  				],
3606  				[
3607  					47,
3608  					1,
3609  					"insert",
3610  					{
3611  						"characters": "\n"
3612  					},
3613  					"AgAAAPoEAAAAAAAA+wQAAAAAAAAAAAAA+wQAAAAAAAADBQAAAAAAAAAAAAA",
3614  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPoEAAAAAAAA+gQAAAAAAAAAAAAAAADwvw"
3615  				],
3616  				[
3617  					48,
3618  					1,
3619  					"copilot_accept_completion",
3620  					null,
3621  					"AgAAAPsEAAAAAAAA+wQAAAAAAAAIAAAAICAgICAgICD7BAAAAAAAABUFAAAAAAAAAAAAAA",
3622  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAMFAAAAAAAAAwUAAAAAAAAAAAAAAADwvw"
3623  				],
3624  				[
3625  					49,
3626  					1,
3627  					"insert",
3628  					{
3629  						"characters": "\n"
3630  					},
3631  					"AgAAABUFAAAAAAAAFgUAAAAAAAAAAAAAFgUAAAAAAAAeBQAAAAAAAAAAAAA",
3632  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAABUFAAAAAAAAFQUAAAAAAAAAAAAAAADwvw"
3633  				],
3634  				[
3635  					50,
3636  					1,
3637  					"copilot_accept_completion",
3638  					null,
3639  					"AgAAABYFAAAAAAAAFgUAAAAAAAAIAAAAICAgICAgICAWBQAAAAAAADQFAAAAAAAAAAAAAA",
3640  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAB4FAAAAAAAAHgUAAAAAAAAAAAAAAADwvw"
3641  				],
3642  				[
3643  					51,
3644  					1,
3645  					"insert",
3646  					{
3647  						"characters": "\n"
3648  					},
3649  					"AgAAADQFAAAAAAAANQUAAAAAAAAAAAAANQUAAAAAAAA9BQAAAAAAAAAAAAA",
3650  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADQFAAAAAAAANAUAAAAAAAAAAAAAAADwvw"
3651  				],
3652  				[
3653  					52,
3654  					1,
3655  					"copilot_accept_completion",
3656  					null,
3657  					"AgAAADUFAAAAAAAANQUAAAAAAAAIAAAAICAgICAgICA1BQAAAAAAAFMFAAAAAAAAAAAAAA",
3658  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAD0FAAAAAAAAPQUAAAAAAAAAAAAAAADwvw"
3659  				],
3660  				[
3661  					53,
3662  					1,
3663  					"insert",
3664  					{
3665  						"characters": "\n"
3666  					},
3667  					"AgAAAFMFAAAAAAAAVAUAAAAAAAAAAAAAVAUAAAAAAABcBQAAAAAAAAAAAAA",
3668  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFMFAAAAAAAAUwUAAAAAAAAAAAAAAADwvw"
3669  				],
3670  				[
3671  					54,
3672  					1,
3673  					"copilot_accept_completion",
3674  					null,
3675  					"AgAAAFQFAAAAAAAAVAUAAAAAAAAIAAAAICAgICAgICBUBQAAAAAAAHIFAAAAAAAAAAAAAA",
3676  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFwFAAAAAAAAXAUAAAAAAAAAAAAAAADwvw"
3677  				],
3678  				[
3679  					55,
3680  					1,
3681  					"insert",
3682  					{
3683  						"characters": "\n"
3684  					},
3685  					"AgAAAHIFAAAAAAAAcwUAAAAAAAAAAAAAcwUAAAAAAAB7BQAAAAAAAAAAAAA",
3686  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHIFAAAAAAAAcgUAAAAAAAAAAAAAAADwvw"
3687  				],
3688  				[
3689  					56,
3690  					3,
3691  					"left_delete",
3692  					null,
3693  					"AwAAAHcFAAAAAAAAdwUAAAAAAAAEAAAAICAgIHMFAAAAAAAAcwUAAAAAAAAEAAAAICAgIHIFAAAAAAAAcgUAAAAAAAABAAAACg",
3694  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHsFAAAAAAAAewUAAAAAAAAAAAAAAADwvw"
3695  				],
3696  				[
3697  					66,
3698  					1,
3699  					"insert",
3700  					{
3701  						"characters": "True"
3702  					},
3703  					"BQAAAMoEAAAAAAAAywQAAAAAAAAAAAAAywQAAAAAAADLBAAAAAAAAAUAAABGYWxzZcsEAAAAAAAAzAQAAAAAAAAAAAAAzAQAAAAAAADNBAAAAAAAAAAAAADNBAAAAAAAAM4EAAAAAAAAAAAAAA",
3704  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAMoEAAAAAAAAzwQAAAAAAAAAAAAAAADwvw"
3705  				],
3706  				[
3707  					74,
3708  					1,
3709  					"left_delete",
3710  					null,
3711  					"AQAAALkHAAAAAAAAuQcAAAAAAAAFAAAARmFsc2U",
3712  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALkHAAAAAAAAvgcAAAAAAAAAAAAAAADwvw"
3713  				],
3714  				[
3715  					75,
3716  					1,
3717  					"insert",
3718  					{
3719  						"characters": "s"
3720  					},
3721  					"AQAAALkHAAAAAAAAugcAAAAAAAAAAAAA",
3722  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALkHAAAAAAAAuQcAAAAAAAAAAAAAAADwvw"
3723  				],
3724  				[
3725  					76,
3726  					1,
3727  					"copilot_accept_completion",
3728  					null,
3729  					"AgAAAIwHAAAAAAAAjAcAAAAAAAAuAAAAICAgICAgICBzZWxmLm9ialtjNGQuT1VUTElORU1BVF9MSU5FX0ZPTERdID0gc4wHAAAAAAAAwwcAAAAAAAAAAAAA",
3730  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALoHAAAAAAAAugcAAAAAAAAAAAAAAADwvw"
3731  				],
3732  				[
3733  					78,
3734  					1,
3735  					"delete_word",
3736  					{
3737  						"forward": false
3738  					},
3739  					"AQAAAPMHAAAAAAAA8wcAAAAAAAAFAAAARmFsc2U",
3740  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPgHAAAAAAAA+AcAAAAAAAAAAAAAABB4QA"
3741  				],
3742  				[
3743  					79,
3744  					1,
3745  					"copilot_accept_completion",
3746  					null,
3747  					"AgAAAMQHAAAAAAAAxAcAAAAAAAAvAAAAICAgICAgICBzZWxmLm9ialtjNGQuT1VUTElORU1BVF9MSU5FX0NSRUFTRV0gPSDEBwAAAAAAAP8HAAAAAAAAAAAAAA",
3748  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPMHAAAAAAAA8wcAAAAAAAAAAAAAAADwvw"
3749  				],
3750  				[
3751  					81,
3752  					1,
3753  					"delete_word",
3754  					{
3755  						"forward": false
3756  					},
3757  					"AQAAAC8IAAAAAAAALwgAAAAAAAAFAAAARmFsc2U",
3758  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADQIAAAAAAAANAgAAAAAAAAAAAAAANB5QA"
3759  				],
3760  				[
3761  					84,
3762  					1,
3763  					"insert",
3764  					{
3765  						"characters": "border=Fals"
3766  					},
3767  					"CwAAALMEAAAAAAAAtAQAAAAAAAAAAAAAtAQAAAAAAAC1BAAAAAAAAAAAAAC1BAAAAAAAALYEAAAAAAAAAAAAALYEAAAAAAAAtwQAAAAAAAAAAAAAtwQAAAAAAAC4BAAAAAAAAAAAAAC4BAAAAAAAALkEAAAAAAAAAAAAALkEAAAAAAAAugQAAAAAAAAAAAAAugQAAAAAAAC7BAAAAAAAAAAAAAC7BAAAAAAAALwEAAAAAAAAAAAAALwEAAAAAAAAvQQAAAAAAAAAAAAAvQQAAAAAAAC+BAAAAAAAAAAAAAA",
3768  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALMEAAAAAAAAswQAAAAAAAAAAAAAAADwvw"
3769  				],
3770  				[
3771  					85,
3772  					1,
3773  					"insert",
3774  					{
3775  						"characters": "e,"
3776  					},
3777  					"AgAAAL4EAAAAAAAAvwQAAAAAAAAAAAAAvwQAAAAAAADABAAAAAAAAAAAAAA",
3778  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAL4EAAAAAAAAvgQAAAAAAAAAAAAAAADwvw"
3779  				],
3780  				[
3781  					86,
3782  					1,
3783  					"insert",
3784  					{
3785  						"characters": " "
3786  					},
3787  					"AQAAAMAEAAAAAAAAwQQAAAAAAAAAAAAA",
3788  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAMAEAAAAAAAAwAQAAAAAAAAAAAAAAADwvw"
3789  				],
3790  				[
3791  					90,
3792  					1,
3793  					"insert",
3794  					{
3795  						"characters": "\n"
3796  					},
3797  					"AgAAAEEFAAAAAAAAQgUAAAAAAAAAAAAAQgUAAAAAAABKBQAAAAAAAAAAAAA",
3798  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEEFAAAAAAAAQQUAAAAAAAAAAAAAAEBqQA"
3799  				],
3800  				[
3801  					91,
3802  					1,
3803  					"copilot_accept_completion",
3804  					null,
3805  					"AgAAAEIFAAAAAAAAQgUAAAAAAAAIAAAAICAgICAgICBCBQAAAAAAAF4FAAAAAAAAAAAAAA",
3806  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEoFAAAAAAAASgUAAAAAAAAAAAAAAADwvw"
3807  				],
3808  				[
3809  					94,
3810  					1,
3811  					"insert",
3812  					{
3813  						"characters": "s"
3814  					},
3815  					"AQAAAFoIAAAAAAAAWwgAAAAAAAAAAAAA",
3816  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFoIAAAAAAAAWggAAAAAAAAAAAAAAADwvw"
3817  				],
3818  				[
3819  					95,
3820  					1,
3821  					"copilot_accept_completion",
3822  					null,
3823  					"AgAAACsIAAAAAAAAKwgAAAAAAAAwAAAAICAgICAgICBzZWxmLm9ialtjNGQuT1VUTElORU1BVF9MSU5FX0JPUkRFUl0gPSBzKwgAAAAAAABlCAAAAAAAAAAAAAA",
3824  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFsIAAAAAAAAWwgAAAAAAAAAAAAAAADwvw"
3825  				],
3826  				[
3827  					96,
3828  					1,
3829  					"insert",
3830  					{
3831  						"characters": "\n"
3832  					},
3833  					"AgAAAGUIAAAAAAAAZggAAAAAAAAAAAAAZggAAAAAAABuCAAAAAAAAAAAAAA",
3834  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGUIAAAAAAAAZQgAAAAAAAAAAAAAAADwvw"
3835  				],
3836  				[
3837  					97,
3838  					1,
3839  					"copilot_accept_completion",
3840  					null,
3841  					"AgAAAGYIAAAAAAAAZggAAAAAAAAIAAAAICAgICAgICBmCAAAAAAAAKIIAAAAAAAAAAAAAA",
3842  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAG4IAAAAAAAAbggAAAAAAAAAAAAAAADwvw"
3843  				],
3844  				[
3845  					99,
3846  					1,
3847  					"delete_word",
3848  					{
3849  						"forward": false
3850  					},
3851  					"AQAAAI8HAAAAAAAAjwcAAAAAAAAEAAAAVHJ1ZQ",
3852  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJMHAAAAAAAAkwcAAAAAAAAAAAAAAEB6QA"
3853  				],
3854  				[
3855  					100,
3856  					1,
3857  					"copilot_accept_completion",
3858  					null,
3859  					"AgAAAF8HAAAAAAAAXwcAAAAAAAAwAAAAICAgICAgICBzZWxmLm9ialtjNGQuT1VUTElORU1BVF9MSU5FX1NQTElORVNdID0gXwcAAAAAAACbBwAAAAAAAAAAAAA",
3860  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAI8HAAAAAAAAjwcAAAAAAAAAAAAAAADwvw"
3861  				],
3862  				[
3863  					104,
3864  					1,
3865  					"insert",
3866  					{
3867  						"characters": "\n"
3868  					},
3869  					"AgAAAKoIAAAAAAAAqwgAAAAAAAAAAAAAqwgAAAAAAACzCAAAAAAAAAAAAAA",
3870  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAKoIAAAAAAAAqggAAAAAAAAAAAAAAEB6QA"
3871  				],
3872  				[
3873  					105,
3874  					1,
3875  					"insert",
3876  					{
3877  						"characters": "s"
3878  					},
3879  					"AQAAALMIAAAAAAAAtAgAAAAAAAAAAAAA",
3880  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALMIAAAAAAAAswgAAAAAAAAAAAAAAADwvw"
3881  				],
3882  				[
3883  					106,
3884  					1,
3885  					"copilot_accept_completion",
3886  					null,
3887  					"AgAAAKsIAAAAAAAAqwgAAAAAAAAJAAAAICAgICAgICBzqwgAAAAAAADnCAAAAAAAAAAAAAA",
3888  					"BgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALQIAAAAAAAAtAgAAAAAAAAAAAAAAADwvw"
3889  				]
3890  			]
3891  		},
3892  		{
3893  			"file": "objects/helper_objects.py",
3894  			"settings":
3895  			{
3896  				"buffer_size": 24682,
3897  				"encoding": "UTF-8",
3898  				"line_ending": "Unix"
3899  			},
3900  			"undo_stack":
3901  			[
3902  				[
3903  					8,
3904  					1,
3905  					"left_delete",
3906  					null,
3907  					"AQAAAFZFAAAAAAAAVkUAAAAAAAABAAAACg",
3908  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFdFAAAAAAAAV0UAAAAAAAAAAAAAAADwvw"
3909  				],
3910  				[
3911  					21,
3912  					1,
3913  					"insert",
3914  					{
3915  						"characters": "\t"
3916  					},
3917  					"AQAAANoOAAAAAAAA3g4AAAAAAAAAAAAA",
3918  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANoOAAAAAAAA2g4AAAAAAAAAAAAAAABMQA"
3919  				],
3920  				[
3921  					50,
3922  					1,
3923  					"insert",
3924  					{
3925  						"characters": "spline_"
3926  					},
3927  					"IwAAAOcUAAAAAAAA6BQAAAAAAAAAAAAAGRAAAAAAAAAaEAAAAAAAAAAAAADtCwAAAAAAAO4LAAAAAAAAAAAAAOELAAAAAAAA4gsAAAAAAAAAAAAA0woAAAAAAADUCgAAAAAAAAAAAADsFAAAAAAAAO0UAAAAAAAAAAAAAB0QAAAAAAAAHhAAAAAAAAAAAAAA8AsAAAAAAADxCwAAAAAAAAAAAADjCwAAAAAAAOQLAAAAAAAAAAAAANQKAAAAAAAA1QoAAAAAAAAAAAAA8RQAAAAAAADyFAAAAAAAAAAAAAAhEAAAAAAAACIQAAAAAAAAAAAAAPMLAAAAAAAA9AsAAAAAAAAAAAAA5QsAAAAAAADmCwAAAAAAAAAAAADVCgAAAAAAANYKAAAAAAAAAAAAAPYUAAAAAAAA9xQAAAAAAAAAAAAAJRAAAAAAAAAmEAAAAAAAAAAAAAD2CwAAAAAAAPcLAAAAAAAAAAAAAOcLAAAAAAAA6AsAAAAAAAAAAAAA1goAAAAAAADXCgAAAAAAAAAAAAD7FAAAAAAAAPwUAAAAAAAAAAAAACkQAAAAAAAAKhAAAAAAAAAAAAAA+QsAAAAAAAD6CwAAAAAAAAAAAADpCwAAAAAAAOoLAAAAAAAAAAAAANcKAAAAAAAA2AoAAAAAAAAAAAAAABUAAAAAAAABFQAAAAAAAAAAAAAtEAAAAAAAAC4QAAAAAAAAAAAAAPwLAAAAAAAA/QsAAAAAAAAAAAAA6wsAAAAAAADsCwAAAAAAAAAAAADYCgAAAAAAANkKAAAAAAAAAAAAAAUVAAAAAAAABhUAAAAAAAAAAAAAMRAAAAAAAAAyEAAAAAAAAAAAAAD/CwAAAAAAAAAMAAAAAAAAAAAAAO0LAAAAAAAA7gsAAAAAAAAAAAAA2QoAAAAAAADaCgAAAAAAAAAAAAA",
3928  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAABQAAANMKAAAAAAAA0woAAAAAAAAAAAAAAADwv+ELAAAAAAAA4QsAAAAAAAAAAAAAAADwv+0LAAAAAAAA7QsAAAAAAAAAAAAAAADwvxkQAAAAAAAAGRAAAAAAAAAAAAAAAADwv+cUAAAAAAAA5xQAAAAAAAAAAAAAAADwvw"
3929  				],
3930  				[
3931  					56,
3932  					1,
3933  					"left_delete",
3934  					null,
3935  					"AQAAACELAAAAAAAAIQsAAAAAAAABAAAAIA",
3936  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAACILAAAAAAAAIgsAAAAAAAAAAAAAAADwvw"
3937  				],
3938  				[
3939  					84,
3940  					1,
3941  					"insert",
3942  					{
3943  						"characters": " "
3944  					},
3945  					"AQAAANIKAAAAAAAA0woAAAAAAAAAAAAA",
3946  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANIKAAAAAAAA0goAAAAAAAAAAAAAAADwvw"
3947  				],
3948  				[
3949  					85,
3950  					1,
3951  					"insert",
3952  					{
3953  						"characters": "c"
3954  					},
3955  					"AQAAANMKAAAAAAAA1AoAAAAAAAAAAAAA",
3956  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANMKAAAAAAAA0woAAAAAAAAAAAAAAADwvw"
3957  				],
3958  				[
3959  					86,
3960  					1,
3961  					"insert",
3962  					{
3963  						"characters": "ount_wid"
3964  					},
3965  					"CAAAANQKAAAAAAAA1QoAAAAAAAAAAAAA1QoAAAAAAADWCgAAAAAAAAAAAADWCgAAAAAAANcKAAAAAAAAAAAAANcKAAAAAAAA2AoAAAAAAAAAAAAA2AoAAAAAAADZCgAAAAAAAAAAAADZCgAAAAAAANoKAAAAAAAAAAAAANoKAAAAAAAA2woAAAAAAAAAAAAA2woAAAAAAADcCgAAAAAAAAAAAAA",
3966  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANQKAAAAAAAA1AoAAAAAAAAAAAAAAADwvw"
3967  				],
3968  				[
3969  					87,
3970  					1,
3971  					"insert",
3972  					{
3973  						"characters": "th="
3974  					},
3975  					"AwAAANwKAAAAAAAA3QoAAAAAAAAAAAAA3QoAAAAAAADeCgAAAAAAAAAAAADeCgAAAAAAAN8KAAAAAAAAAAAAAA",
3976  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANwKAAAAAAAA3AoAAAAAAAAAAAAAAADwvw"
3977  				],
3978  				[
3979  					88,
3980  					1,
3981  					"insert",
3982  					{
3983  						"characters": "10,"
3984  					},
3985  					"AwAAAN8KAAAAAAAA4AoAAAAAAAAAAAAA4AoAAAAAAADhCgAAAAAAAAAAAADhCgAAAAAAAOIKAAAAAAAAAAAAAA",
3986  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAN8KAAAAAAAA3woAAAAAAAAAAAAAAADwvw"
3987  				],
3988  				[
3989  					89,
3990  					1,
3991  					"insert",
3992  					{
3993  						"characters": " count"
3994  					},
3995  					"BgAAAOIKAAAAAAAA4woAAAAAAAAAAAAA4woAAAAAAADkCgAAAAAAAAAAAADkCgAAAAAAAOUKAAAAAAAAAAAAAOUKAAAAAAAA5goAAAAAAAAAAAAA5goAAAAAAADnCgAAAAAAAAAAAADnCgAAAAAAAOgKAAAAAAAAAAAAAA",
3996  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAOIKAAAAAAAA4goAAAAAAAAAAAAAAADwvw"
3997  				],
3998  				[
3999  					90,
4000  					1,
4001  					"insert",
4002  					{
4003  						"characters": "_height=10"
4004  					},
4005  					"CgAAAOgKAAAAAAAA6QoAAAAAAAAAAAAA6QoAAAAAAADqCgAAAAAAAAAAAADqCgAAAAAAAOsKAAAAAAAAAAAAAOsKAAAAAAAA7AoAAAAAAAAAAAAA7AoAAAAAAADtCgAAAAAAAAAAAADtCgAAAAAAAO4KAAAAAAAAAAAAAO4KAAAAAAAA7woAAAAAAAAAAAAA7woAAAAAAADwCgAAAAAAAAAAAADwCgAAAAAAAPEKAAAAAAAAAAAAAPEKAAAAAAAA8goAAAAAAAAAAAAA",
4006  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAOgKAAAAAAAA6AoAAAAAAAAAAAAAAADwvw"
4007  				],
4008  				[
4009  					91,
4010  					1,
4011  					"insert",
4012  					{
4013  						"characters": ","
4014  					},
4015  					"AQAAAPIKAAAAAAAA8woAAAAAAAAAAAAA",
4016  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPIKAAAAAAAA8goAAAAAAAAAAAAAAADwvw"
4017  				],
4018  				[
4019  					92,
4020  					1,
4021  					"insert",
4022  					{
4023  						"characters": " "
4024  					},
4025  					"AQAAAPMKAAAAAAAA9AoAAAAAAAAAAAAA",
4026  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPMKAAAAAAAA8woAAAAAAAAAAAAAAADwvw"
4027  				],
4028  				[
4029  					93,
4030  					1,
4031  					"left_delete",
4032  					null,
4033  					"AQAAAPMKAAAAAAAA8woAAAAAAAABAAAAIA",
4034  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPQKAAAAAAAA9AoAAAAAAAAAAAAAAADwvw"
4035  				],
4036  				[
4037  					94,
4038  					1,
4039  					"insert",
4040  					{
4041  						"characters": " cl"
4042  					},
4043  					"AwAAAPMKAAAAAAAA9AoAAAAAAAAAAAAA9AoAAAAAAAD1CgAAAAAAAAAAAAD1CgAAAAAAAPYKAAAAAAAAAAAAAA",
4044  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPMKAAAAAAAA8woAAAAAAAAAAAAAAADwvw"
4045  				],
4046  				[
4047  					95,
4048  					1,
4049  					"insert",
4050  					{
4051  						"characters": "ine"
4052  					},
4053  					"AwAAAPYKAAAAAAAA9woAAAAAAAAAAAAA9woAAAAAAAD4CgAAAAAAAAAAAAD4CgAAAAAAAPkKAAAAAAAAAAAAAA",
4054  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPYKAAAAAAAA9goAAAAAAAAAAAAAAADwvw"
4055  				],
4056  				[
4057  					96,
4058  					3,
4059  					"left_delete",
4060  					null,
4061  					"AwAAAPgKAAAAAAAA+AoAAAAAAAABAAAAZfcKAAAAAAAA9woAAAAAAAABAAAAbvYKAAAAAAAA9goAAAAAAAABAAAAaQ",
4062  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPkKAAAAAAAA+QoAAAAAAAAAAAAAAADwvw"
4063  				],
4064  				[
4065  					97,
4066  					1,
4067  					"insert",
4068  					{
4069  						"characters": "one_step_s"
4070  					},
4071  					"CgAAAPYKAAAAAAAA9woAAAAAAAAAAAAA9woAAAAAAAD4CgAAAAAAAAAAAAD4CgAAAAAAAPkKAAAAAAAAAAAAAPkKAAAAAAAA+goAAAAAAAAAAAAA+goAAAAAAAD7CgAAAAAAAAAAAAD7CgAAAAAAAPwKAAAAAAAAAAAAAPwKAAAAAAAA/QoAAAAAAAAAAAAA/QoAAAAAAAD+CgAAAAAAAAAAAAD+CgAAAAAAAP8KAAAAAAAAAAAAAP8KAAAAAAAAAAsAAAAAAAAAAAAA",
4072  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPYKAAAAAAAA9goAAAAAAAAAAAAAAADwvw"
4073  				],
4074  				[
4075  					98,
4076  					1,
4077  					"insert",
4078  					{
4079  						"characters": "ize="
4080  					},
4081  					"BAAAAAALAAAAAAAAAQsAAAAAAAAAAAAAAQsAAAAAAAACCwAAAAAAAAAAAAACCwAAAAAAAAMLAAAAAAAAAAAAAAMLAAAAAAAABAsAAAAAAAAAAAAA",
4082  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAALAAAAAAAAAAsAAAAAAAAAAAAAAADwvw"
4083  				],
4084  				[
4085  					99,
4086  					1,
4087  					"left_delete",
4088  					null,
4089  					"AQAAAAMLAAAAAAAAAwsAAAAAAAABAAAAPQ",
4090  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAQLAAAAAAAABAsAAAAAAAAAAAAAAADwvw"
4091  				],
4092  				[
4093  					100,
4094  					1,
4095  					"insert",
4096  					{
4097  						"characters": "_width"
4098  					},
4099  					"BgAAAAMLAAAAAAAABAsAAAAAAAAAAAAABAsAAAAAAAAFCwAAAAAAAAAAAAAFCwAAAAAAAAYLAAAAAAAAAAAAAAYLAAAAAAAABwsAAAAAAAAAAAAABwsAAAAAAAAICwAAAAAAAAAAAAAICwAAAAAAAAkLAAAAAAAAAAAAAA",
4100  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAMLAAAAAAAAAwsAAAAAAAAAAAAAAADwvw"
4101  				],
4102  				[
4103  					101,
4104  					1,
4105  					"insert",
4106  					{
4107  						"characters": "="
4108  					},
4109  					"AQAAAAkLAAAAAAAACgsAAAAAAAAAAAAA",
4110  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAkLAAAAAAAACQsAAAAAAAAAAAAAAADwvw"
4111  				],
4112  				[
4113  					102,
4114  					1,
4115  					"insert",
4116  					{
4117  						"characters": "300,"
4118  					},
4119  					"BAAAAAoLAAAAAAAACwsAAAAAAAAAAAAACwsAAAAAAAAMCwAAAAAAAAAAAAAMCwAAAAAAAA0LAAAAAAAAAAAAAA0LAAAAAAAADgsAAAAAAAAAAAAA",
4120  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAoLAAAAAAAACgsAAAAAAAAAAAAAAADwvw"
4121  				],
4122  				[
4123  					103,
4124  					1,
4125  					"insert",
4126  					{
4127  						"characters": " clone"
4128  					},
4129  					"BgAAAA4LAAAAAAAADwsAAAAAAAAAAAAADwsAAAAAAAAQCwAAAAAAAAAAAAAQCwAAAAAAABELAAAAAAAAAAAAABELAAAAAAAAEgsAAAAAAAAAAAAAEgsAAAAAAAATCwAAAAAAAAAAAAATCwAAAAAAABQLAAAAAAAAAAAAAA",
4130  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAA4LAAAAAAAADgsAAAAAAAAAAAAAAADwvw"
4131  				],
4132  				[
4133  					104,
4134  					1,
4135  					"insert",
4136  					{
4137  						"characters": "_step_siz"
4138  					},
4139  					"CQAAABQLAAAAAAAAFQsAAAAAAAAAAAAAFQsAAAAAAAAWCwAAAAAAAAAAAAAWCwAAAAAAABcLAAAAAAAAAAAAABcLAAAAAAAAGAsAAAAAAAAAAAAAGAsAAAAAAAAZCwAAAAAAAAAAAAAZCwAAAAAAABoLAAAAAAAAAAAAABoLAAAAAAAAGwsAAAAAAAAAAAAAGwsAAAAAAAAcCwAAAAAAAAAAAAAcCwAAAAAAAB0LAAAAAAAAAAAAAA",
4140  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAABQLAAAAAAAAFAsAAAAAAAAAAAAAAADwvw"
4141  				],
4142  				[
4143  					105,
4144  					1,
4145  					"insert",
4146  					{
4147  						"characters": "e_height="
4148  					},
4149  					"CQAAAB0LAAAAAAAAHgsAAAAAAAAAAAAAHgsAAAAAAAAfCwAAAAAAAAAAAAAfCwAAAAAAACALAAAAAAAAAAAAACALAAAAAAAAIQsAAAAAAAAAAAAAIQsAAAAAAAAiCwAAAAAAAAAAAAAiCwAAAAAAACMLAAAAAAAAAAAAACMLAAAAAAAAJAsAAAAAAAAAAAAAJAsAAAAAAAAlCwAAAAAAAAAAAAAlCwAAAAAAACYLAAAAAAAAAAAAAA",
4150  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAB0LAAAAAAAAHQsAAAAAAAAAAAAAAADwvw"
4151  				],
4152  				[
4153  					106,
4154  					1,
4155  					"insert",
4156  					{
4157  						"characters": "346"
4158  					},
4159  					"AwAAACYLAAAAAAAAJwsAAAAAAAAAAAAAJwsAAAAAAAAoCwAAAAAAAAAAAAAoCwAAAAAAACkLAAAAAAAAAAAAAA",
4160  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAACYLAAAAAAAAJgsAAAAAAAAAAAAAAADwvw"
4161  				],
4162  				[
4163  					107,
4164  					1,
4165  					"insert",
4166  					{
4167  						"characters": ".41"
4168  					},
4169  					"AwAAACkLAAAAAAAAKgsAAAAAAAAAAAAAKgsAAAAAAAArCwAAAAAAAAAAAAArCwAAAAAAACwLAAAAAAAAAAAAAA",
4170  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAACkLAAAAAAAAKQsAAAAAAAAAAAAAAADwvw"
4171  				],
4172  				[
4173  					108,
4174  					1,
4175  					"insert",
4176  					{
4177  						"characters": "02,"
4178  					},
4179  					"AwAAACwLAAAAAAAALQsAAAAAAAAAAAAALQsAAAAAAAAuCwAAAAAAAAAAAAAuCwAAAAAAAC8LAAAAAAAAAAAAAA",
4180  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAACwLAAAAAAAALAsAAAAAAAAAAAAAAADwvw"
4181  				],
4182  				[
4183  					113,
4184  					1,
4185  					"insert",
4186  					{
4187  						"characters": "\n"
4188  					},
4189  					"AgAAAGcMAAAAAAAAaAwAAAAAAAAAAAAAaAwAAAAAAABwDAAAAAAAAAAAAAA",
4190  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGcMAAAAAAAAZwwAAAAAAAD////////vfw"
4191  				],
4192  				[
4193  					114,
4194  					1,
4195  					"copilot_accept_completion",
4196  					null,
4197  					"AgAAAGgMAAAAAAAAaAwAAAAAAAAIAAAAICAgICAgICBoDAAAAAAAAI4MAAAAAAAAAAAAAA",
4198  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHAMAAAAAAAAcAwAAAAAAAAAAAAAAADwvw"
4199  				],
4200  				[
4201  					115,
4202  					1,
4203  					"insert",
4204  					{
4205  						"characters": "\n"
4206  					},
4207  					"AgAAAI4MAAAAAAAAjwwAAAAAAAAAAAAAjwwAAAAAAACXDAAAAAAAAAAAAAA",
4208  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAI4MAAAAAAAAjgwAAAAAAAAAAAAAAADwvw"
4209  				],
4210  				[
4211  					116,
4212  					1,
4213  					"copilot_accept_completion",
4214  					null,
4215  					"AgAAAI8MAAAAAAAAjwwAAAAAAAAIAAAAICAgICAgICCPDAAAAAAAALcMAAAAAAAAAAAAAA",
4216  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJcMAAAAAAAAlwwAAAAAAAAAAAAAAADwvw"
4217  				],
4218  				[
4219  					117,
4220  					1,
4221  					"insert",
4222  					{
4223  						"characters": "\n"
4224  					},
4225  					"AgAAALcMAAAAAAAAuAwAAAAAAAAAAAAAuAwAAAAAAADADAAAAAAAAAAAAAA",
4226  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALcMAAAAAAAAtwwAAAAAAAAAAAAAAADwvw"
4227  				],
4228  				[
4229  					118,
4230  					1,
4231  					"copilot_accept_completion",
4232  					null,
4233  					"AgAAALgMAAAAAAAAuAwAAAAAAAAIAAAAICAgICAgICC4DAAAAAAAAPIMAAAAAAAAAAAAAA",
4234  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAMAMAAAAAAAAwAwAAAAAAAAAAAAAAADwvw"
4235  				],
4236  				[
4237  					119,
4238  					1,
4239  					"insert",
4240  					{
4241  						"characters": "\n"
4242  					},
4243  					"AgAAAPIMAAAAAAAA8wwAAAAAAAAAAAAA8wwAAAAAAAD7DAAAAAAAAAAAAAA",
4244  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPIMAAAAAAAA8gwAAAAAAAAAAAAAAADwvw"
4245  				],
4246  				[
4247  					120,
4248  					1,
4249  					"copilot_accept_completion",
4250  					null,
4251  					"AgAAAPMMAAAAAAAA8wwAAAAAAAAIAAAAICAgICAgICDzDAAAAAAAAC8NAAAAAAAAAAAAAA",
4252  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPsMAAAAAAAA+wwAAAAAAAAAAAAAAADwvw"
4253  				],
4254  				[
4255  					127,
4256  					1,
4257  					"insert",
4258  					{
4259  						"characters": "honeyco"
4260  					},
4261  					"FQAAAIMMAAAAAAAAhAwAAAAAAAAAAAAAdQwAAAAAAAB2DAAAAAAAAAAAAADTCgAAAAAAANQKAAAAAAAAAAAAAIYMAAAAAAAAhwwAAAAAAAAAAAAAdwwAAAAAAAB4DAAAAAAAAAAAAADUCgAAAAAAANUKAAAAAAAAAAAAAIkMAAAAAAAAigwAAAAAAAAAAAAAeQwAAAAAAAB6DAAAAAAAAAAAAADVCgAAAAAAANYKAAAAAAAAAAAAAIwMAAAAAAAAjQwAAAAAAAAAAAAAewwAAAAAAAB8DAAAAAAAAAAAAADWCgAAAAAAANcKAAAAAAAAAAAAAI8MAAAAAAAAkAwAAAAAAAAAAAAAfQwAAAAAAAB+DAAAAAAAAAAAAADXCgAAAAAAANgKAAAAAAAAAAAAAJIMAAAAAAAAkwwAAAAAAAAAAAAAfwwAAAAAAACADAAAAAAAAAAAAADYCgAAAAAAANkKAAAAAAAAAAAAAJUMAAAAAAAAlgwAAAAAAAAAAAAAgQwAAAAAAACCDAAAAAAAAAAAAADZCgAAAAAAANoKAAAAAAAAAAAAAA",
4262  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAwAAANMKAAAAAAAA0woAAAAAAAAAAAAAAADwv3UMAAAAAAAAdQwAAAAAAAAAAAAAAADwv4MMAAAAAAAAgwwAAAAAAAAAAAAAAADwvw"
4263  				],
4264  				[
4265  					128,
4266  					1,
4267  					"insert",
4268  					{
4269  						"characters": "mb_"
4270  					},
4271  					"CQAAAJgMAAAAAAAAmQwAAAAAAAAAAAAAgwwAAAAAAACEDAAAAAAAAAAAAADaCgAAAAAAANsKAAAAAAAAAAAAAJsMAAAAAAAAnAwAAAAAAAAAAAAAhQwAAAAAAACGDAAAAAAAAAAAAADbCgAAAAAAANwKAAAAAAAAAAAAAJ4MAAAAAAAAnwwAAAAAAAAAAAAAhwwAAAAAAACIDAAAAAAAAAAAAADcCgAAAAAAAN0KAAAAAAAAAAAAAA",
4272  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAwAAANoKAAAAAAAA2goAAAAAAAAAAAAAAADwv4MMAAAAAAAAgwwAAAAAAAAAAAAAAADwv5gMAAAAAAAAmAwAAAAAAAAAAAAAAADwvw"
4273  				],
4274  				[
4275  					136,
4276  					1,
4277  					"insert",
4278  					{
4279  						"characters": "honeycom"
4280  					},
4281  					"GAAAAMkMAAAAAAAAygwAAAAAAAAAAAAAugwAAAAAAAC7DAAAAAAAAAAAAADtCgAAAAAAAO4KAAAAAAAAAAAAAMwMAAAAAAAAzQwAAAAAAAAAAAAAvAwAAAAAAAC9DAAAAAAAAAAAAADuCgAAAAAAAO8KAAAAAAAAAAAAAM8MAAAAAAAA0AwAAAAAAAAAAAAAvgwAAAAAAAC/DAAAAAAAAAAAAADvCgAAAAAAAPAKAAAAAAAAAAAAANIMAAAAAAAA0wwAAAAAAAAAAAAAwAwAAAAAAADBDAAAAAAAAAAAAADwCgAAAAAAAPEKAAAAAAAAAAAAANUMAAAAAAAA1gwAAAAAAAAAAAAAwgwAAAAAAADDDAAAAAAAAAAAAADxCgAAAAAAAPIKAAAAAAAAAAAAANgMAAAAAAAA2QwAAAAAAAAAAAAAxAwAAAAAAADFDAAAAAAAAAAAAADyCgAAAAAAAPMKAAAAAAAAAAAAANsMAAAAAAAA3AwAAAAAAAAAAAAAxgwAAAAAAADHDAAAAAAAAAAAAADzCgAAAAAAAPQKAAAAAAAAAAAAAN4MAAAAAAAA3wwAAAAAAAAAAAAAyAwAAAAAAADJDAAAAAAAAAAAAAD0CgAAAAAAAPUKAAAAAAAAAAAAAA",
4282  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAwAAAO0KAAAAAAAA7QoAAAAAAAAAAAAAAADwv7oMAAAAAAAAugwAAAAAAAAAAAAAAADwv8kMAAAAAAAAyQwAAAAAAAAAAAAAAADwvw"
4283  				],
4284  				[
4285  					137,
4286  					1,
4287  					"insert",
4288  					{
4289  						"characters": "b_"
4290  					},
4291  					"BgAAAOEMAAAAAAAA4gwAAAAAAAAAAAAAygwAAAAAAADLDAAAAAAAAAAAAAD1CgAAAAAAAPYKAAAAAAAAAAAAAOQMAAAAAAAA5QwAAAAAAAAAAAAAzAwAAAAAAADNDAAAAAAAAAAAAAD2CgAAAAAAAPcKAAAAAAAAAAAAAA",
4292  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAwAAAPUKAAAAAAAA9QoAAAAAAAAAAAAAAADwv8oMAAAAAAAAygwAAAAAAAAAAAAAAADwv+EMAAAAAAAA4QwAAAAAAAAAAAAAAADwvw"
4293  				],
4294  				[
4295  					145,
4296  					1,
4297  					"insert",
4298  					{
4299  						"characters": "hone"
4300  					},
4301  					"DAAAABkNAAAAAAAAGg0AAAAAAAAAAAAAAQ0AAAAAAAACDQAAAAAAAAAAAAAICwAAAAAAAAkLAAAAAAAAAAAAABwNAAAAAAAAHQ0AAAAAAAAAAAAAAw0AAAAAAAAEDQAAAAAAAAAAAAAJCwAAAAAAAAoLAAAAAAAAAAAAAB8NAAAAAAAAIA0AAAAAAAAAAAAABQ0AAAAAAAAGDQAAAAAAAAAAAAAKCwAAAAAAAAsLAAAAAAAAAAAAACINAAAAAAAAIw0AAAAAAAAAAAAABw0AAAAAAAAIDQAAAAAAAAAAAAALCwAAAAAAAAwLAAAAAAAAAAAAAA",
4302  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAwAAAAgLAAAAAAAACAsAAAAAAAAAAAAAAADwvwENAAAAAAAAAQ0AAAAAAAAAAAAAAADwvxkNAAAAAAAAGQ0AAAAAAAAAAAAAAADwvw"
4303  				],
4304  				[
4305  					146,
4306  					1,
4307  					"insert",
4308  					{
4309  						"characters": "ycomb_"
4310  					},
4311  					"EgAAACUNAAAAAAAAJg0AAAAAAAAAAAAACQ0AAAAAAAAKDQAAAAAAAAAAAAAMCwAAAAAAAA0LAAAAAAAAAAAAACgNAAAAAAAAKQ0AAAAAAAAAAAAACw0AAAAAAAAMDQAAAAAAAAAAAAANCwAAAAAAAA4LAAAAAAAAAAAAACsNAAAAAAAALA0AAAAAAAAAAAAADQ0AAAAAAAAODQAAAAAAAAAAAAAOCwAAAAAAAA8LAAAAAAAAAAAAAC4NAAAAAAAALw0AAAAAAAAAAAAADw0AAAAAAAAQDQAAAAAAAAAAAAAPCwAAAAAAABALAAAAAAAAAAAAADENAAAAAAAAMg0AAAAAAAAAAAAAEQ0AAAAAAAASDQAAAAAAAAAAAAAQCwAAAAAAABELAAAAAAAAAAAAADQNAAAAAAAANQ0AAAAAAAAAAAAAEw0AAAAAAAAUDQAAAAAAAAAAAAARCwAAAAAAABILAAAAAAAAAAAAAA",
4312  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAwAAAAwLAAAAAAAADAsAAAAAAAAAAAAAAADwvwkNAAAAAAAACQ0AAAAAAAAAAAAAAADwvyUNAAAAAAAAJQ0AAAAAAAAAAAAAAADwvw"
4313  				],
4314  				[
4315  					153,
4316  					1,
4317  					"insert",
4318  					{
4319  						"characters": "honeycomb"
4320  					},
4321  					"GwAAAHMNAAAAAAAAdA0AAAAAAAAAAAAAWg0AAAAAAABbDQAAAAAAAAAAAAAtCwAAAAAAAC4LAAAAAAAAAAAAAHYNAAAAAAAAdw0AAAAAAAAAAAAAXA0AAAAAAABdDQAAAAAAAAAAAAAuCwAAAAAAAC8LAAAAAAAAAAAAAHkNAAAAAAAAeg0AAAAAAAAAAAAAXg0AAAAAAABfDQAAAAAAAAAAAAAvCwAAAAAAADALAAAAAAAAAAAAAHwNAAAAAAAAfQ0AAAAAAAAAAAAAYA0AAAAAAABhDQAAAAAAAAAAAAAwCwAAAAAAADELAAAAAAAAAAAAAH8NAAAAAAAAgA0AAAAAAAAAAAAAYg0AAAAAAABjDQAAAAAAAAAAAAAxCwAAAAAAADILAAAAAAAAAAAAAIINAAAAAAAAgw0AAAAAAAAAAAAAZA0AAAAAAABlDQAAAAAAAAAAAAAyCwAAAAAAADMLAAAAAAAAAAAAAIUNAAAAAAAAhg0AAAAAAAAAAAAAZg0AAAAAAABnDQAAAAAAAAAAAAAzCwAAAAAAADQLAAAAAAAAAAAAAIgNAAAAAAAAiQ0AAAAAAAAAAAAAaA0AAAAAAABpDQAAAAAAAAAAAAA0CwAAAAAAADULAAAAAAAAAAAAAIsNAAAAAAAAjA0AAAAAAAAAAAAAag0AAAAAAABrDQAAAAAAAAAAAAA1CwAAAAAAADYLAAAAAAAAAAAAAA",
4322  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAwAAAC0LAAAAAAAALQsAAAAAAAAAAAAAAADwv1oNAAAAAAAAWg0AAAAAAAAAAAAAAADwv3MNAAAAAAAAcw0AAAAAAAAAAAAAAADwvw"
4323  				],
4324  				[
4325  					154,
4326  					1,
4327  					"insert",
4328  					{
4329  						"characters": "_"
4330  					},
4331  					"AwAAAI4NAAAAAAAAjw0AAAAAAAAAAAAAbA0AAAAAAABtDQAAAAAAAAAAAAA2CwAAAAAAADcLAAAAAAAAAAAAAA",
4332  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAwAAADYLAAAAAAAANgsAAAAAAAAAAAAAAADwv2wNAAAAAAAAbA0AAAAAAAAAAAAAAADwv44NAAAAAAAAjg0AAAAAAAAAAAAAAADwvw"
4333  				],
4334  				[
4335  					164,
4336  					1,
4337  					"insert",
4338  					{
4339  						"characters": "\n"
4340  					},
4341  					"AgAAANYQAAAAAAAA1xAAAAAAAAAAAAAA1xAAAAAAAADjEAAAAAAAAAAAAAA",
4342  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANYQAAAAAAAA1hAAAAAAAAAAAAAAAADwvw"
4343  				],
4344  				[
4345  					165,
4346  					1,
4347  					"insert",
4348  					{
4349  						"characters": "s"
4350  					},
4351  					"AQAAAOMQAAAAAAAA5BAAAAAAAAAAAAAA",
4352  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAOMQAAAAAAAA4xAAAAAAAAAAAAAAAADwvw"
4353  				],
4354  				[
4355  					166,
4356  					1,
4357  					"insert_completion",
4358  					{
4359  						"completion": "self",
4360  						"format": "text",
4361  						"keep_prefix": false,
4362  						"must_insert": false,
4363  						"trigger": "self"
4364  					},
4365  					"AgAAAOMQAAAAAAAA4xAAAAAAAAABAAAAc+MQAAAAAAAA5xAAAAAAAAAAAAAA",
4366  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAOQQAAAAAAAA5BAAAAAAAAAAAAAAAADwvw"
4367  				],
4368  				[
4369  					167,
4370  					1,
4371  					"insert",
4372  					{
4373  						"characters": "."
4374  					},
4375  					"AQAAAOcQAAAAAAAA6BAAAAAAAAAAAAAA",
4376  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAOcQAAAAAAAA5xAAAAAAAAAAAAAAAADwvw"
4377  				],
4378  				[
4379  					168,
4380  					1,
4381  					"insert_completion",
4382  					{
4383  						"completion": "obj",
4384  						"format": "text",
4385  						"keep_prefix": false,
4386  						"must_insert": true,
4387  						"trigger": "obj"
4388  					},
4389  					"AQAAAOgQAAAAAAAA6xAAAAAAAAAAAAAA",
4390  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAOgQAAAAAAAA6BAAAAAAAAAAAAAAAADwvw"
4391  				],
4392  				[
4393  					169,
4394  					1,
4395  					"insert",
4396  					{
4397  						"characters": "."
4398  					},
4399  					"AQAAAOsQAAAAAAAA7BAAAAAAAAAAAAAA",
4400  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAOsQAAAAAAAA6xAAAAAAAAAAAAAAAADwvw"
4401  				],
4402  				[
4403  					170,
4404  					1,
4405  					"left_delete",
4406  					null,
4407  					"AQAAAOsQAAAAAAAA6xAAAAAAAAABAAAALg",
4408  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAOwQAAAAAAAA7BAAAAAAAAAAAAAAAADwvw"
4409  				],
4410  				[
4411  					171,
4412  					1,
4413  					"paste",
4414  					null,
4415  					"AQAAAOsQAAAAAAAABREAAAAAAAAAAAAA",
4416  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAOsQAAAAAAAA6xAAAAAAAAAAAAAAAADwvw"
4417  				],
4418  				[
4419  					172,
4420  					1,
4421  					"copilot_accept_completion",
4422  					null,
4423  					"AgAAANcQAAAAAAAA1xAAAAAAAAAuAAAAICAgICAgICAgICAgc2VsZi5vYmpbYzRkLk1HX0hPTkVZQ09NQl9DT1VOVF9YXdcQAAAAAAAAIhEAAAAAAAAAAAAA",
4424  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAURAAAAAAAABREAAAAAAAAAAAAAAADwvw"
4425  				],
4426  				[
4427  					173,
4428  					1,
4429  					"insert",
4430  					{
4431  						"characters": "\n"
4432  					},
4433  					"AgAAACIRAAAAAAAAIxEAAAAAAAAAAAAAIxEAAAAAAAAvEQAAAAAAAAAAAAA",
4434  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAACIRAAAAAAAAIhEAAAAAAAAAAAAAAADwvw"
4435  				],
4436  				[
4437  					174,
4438  					1,
4439  					"copilot_accept_completion",
4440  					null,
4441  					"AgAAACMRAAAAAAAAIxEAAAAAAAAMAAAAICAgICAgICAgICAgIxEAAAAAAABvEQAAAAAAAAAAAAA",
4442  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAC8RAAAAAAAALxEAAAAAAAAAAAAAAADwvw"
4443  				],
4444  				[
4445  					175,
4446  					1,
4447  					"insert",
4448  					{
4449  						"characters": "\n"
4450  					},
4451  					"AgAAAG8RAAAAAAAAcBEAAAAAAAAAAAAAcBEAAAAAAAB8EQAAAAAAAAAAAAA",
4452  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAG8RAAAAAAAAbxEAAAAAAAAAAAAAAADwvw"
4453  				],
4454  				[
4455  					176,
4456  					1,
4457  					"insert",
4458  					{
4459  						"characters": "self.ob"
4460  					},
4461  					"BwAAAHwRAAAAAAAAfREAAAAAAAAAAAAAfREAAAAAAAB+EQAAAAAAAAAAAAB+EQAAAAAAAH8RAAAAAAAAAAAAAH8RAAAAAAAAgBEAAAAAAAAAAAAAgBEAAAAAAACBEQAAAAAAAAAAAACBEQAAAAAAAIIRAAAAAAAAAAAAAIIRAAAAAAAAgxEAAAAAAAAAAAAA",
4462  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHwRAAAAAAAAfBEAAAAAAAAAAAAAAADwvw"
4463  				],
4464  				[
4465  					177,
4466  					1,
4467  					"insert_completion",
4468  					{
4469  						"completion": "obj",
4470  						"format": "text",
4471  						"keep_prefix": false,
4472  						"must_insert": false,
4473  						"trigger": "obj"
4474  					},
4475  					"AgAAAIERAAAAAAAAgREAAAAAAAACAAAAb2KBEQAAAAAAAIQRAAAAAAAAAAAAAA",
4476  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIMRAAAAAAAAgxEAAAAAAAAAAAAAAADwvw"
4477  				],
4478  				[
4479  					178,
4480  					1,
4481  					"paste",
4482  					null,
4483  					"AQAAAIQRAAAAAAAAnREAAAAAAAAAAAAA",
4484  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIQRAAAAAAAAhBEAAAAAAAAAAAAAAADwvw"
4485  				],
4486  				[
4487  					179,
4488  					1,
4489  					"copilot_accept_completion",
4490  					null,
4491  					"AgAAAHARAAAAAAAAcBEAAAAAAAAtAAAAICAgICAgICAgICAgc2VsZi5vYmpbYzRkLk1HX0hPTkVZQ09NQl9TSVpFX1hdcBEAAAAAAADEEQAAAAAAAAAAAAA",
4492  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJ0RAAAAAAAAnREAAAAAAAAAAAAAAADwvw"
4493  				],
4494  				[
4495  					180,
4496  					1,
4497  					"insert",
4498  					{
4499  						"characters": "\n\t"
4500  					},
4501  					"AwAAAMQRAAAAAAAAxREAAAAAAAAAAAAAxREAAAAAAADREQAAAAAAAAAAAADREQAAAAAAANURAAAAAAAAAAAAAA",
4502  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAMQRAAAAAAAAxBEAAAAAAAAAAAAAAADwvw"
4503  				],
4504  				[
4505  					181,
4506  					1,
4507  					"left_delete",
4508  					null,
4509  					"AQAAANERAAAAAAAA0REAAAAAAAAEAAAAICAgIA",
4510  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANURAAAAAAAA1REAAAAAAAAAAAAAAADwvw"
4511  				],
4512  				[
4513  					182,
4514  					1,
4515  					"copilot_accept_completion",
4516  					null,
4517  					"AgAAAMURAAAAAAAAxREAAAAAAAAMAAAAICAgICAgICAgICAgxREAAAAAAAAaEgAAAAAAAAAAAAA",
4518  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANERAAAAAAAA0REAAAAAAAAAAAAAAADwvw"
4519  				],
4520  				[
4521  					189,
4522  					1,
4523  					"insert",
4524  					{
4525  						"characters": ""
4526  					},
4527  					"AQAAAG4SAAAAAAAAbxIAAAAAAAAAAAAA",
4528  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAG4SAAAAAAAAbhIAAAAAAAAAAAAAAADwvw"
4529  				],
4530  				[
4531  					190,
4532  					1,
4533  					"left_delete",
4534  					null,
4535  					"AQAAAG4SAAAAAAAAbhIAAAAAAAADAAAA76O/",
4536  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAG8SAAAAAAAAbxIAAAAAAAAAAAAAAADwvw"
4537  				],
4538  				[
4539  					200,
4540  					6,
4541  					"left_delete",
4542  					null,
4543  					"EgAAAEUNAAAAAAAARQ0AAAAAAAABAAAAZSMNAAAAAAAAIw0AAAAAAAABAAAAZRYLAAAAAAAAFgsAAAAAAAABAAAAZUINAAAAAAAAQg0AAAAAAAABAAAAbiENAAAAAAAAIQ0AAAAAAAABAAAAbhULAAAAAAAAFQsAAAAAAAABAAAAbj8NAAAAAAAAPw0AAAAAAAABAAAAbx8NAAAAAAAAHw0AAAAAAAABAAAAbxQLAAAAAAAAFAsAAAAAAAABAAAAbzwNAAAAAAAAPA0AAAAAAAABAAAAbB0NAAAAAAAAHQ0AAAAAAAABAAAAbBMLAAAAAAAAEwsAAAAAAAABAAAAbDkNAAAAAAAAOQ0AAAAAAAABAAAAYxsNAAAAAAAAGw0AAAAAAAABAAAAYxILAAAAAAAAEgsAAAAAAAABAAAAYzYNAAAAAAAANg0AAAAAAAABAAAAXxkNAAAAAAAAGQ0AAAAAAAABAAAAXxELAAAAAAAAEQsAAAAAAAABAAAAXw",
4544  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAwAAABcLAAAAAAAAFwsAAAAAAAAAAAAAAADwvyQNAAAAAAAAJA0AAAAAAAAAAAAAAADwv0YNAAAAAAAARg0AAAAAAAAAAAAAAADwvw"
4545  				],
4546  				[
4547  					216,
4548  					6,
4549  					"left_delete",
4550  					null,
4551  					"EgAAAIMNAAAAAAAAgw0AAAAAAAABAAAAZWANAAAAAAAAYA0AAAAAAAABAAAAZTULAAAAAAAANQsAAAAAAAABAAAAZYANAAAAAAAAgA0AAAAAAAABAAAAbl4NAAAAAAAAXg0AAAAAAAABAAAAbjQLAAAAAAAANAsAAAAAAAABAAAAbn0NAAAAAAAAfQ0AAAAAAAABAAAAb1wNAAAAAAAAXA0AAAAAAAABAAAAbzMLAAAAAAAAMwsAAAAAAAABAAAAb3oNAAAAAAAAeg0AAAAAAAABAAAAbFoNAAAAAAAAWg0AAAAAAAABAAAAbDILAAAAAAAAMgsAAAAAAAABAAAAbHcNAAAAAAAAdw0AAAAAAAABAAAAY1gNAAAAAAAAWA0AAAAAAAABAAAAYzELAAAAAAAAMQsAAAAAAAABAAAAY3QNAAAAAAAAdA0AAAAAAAABAAAAX1YNAAAAAAAAVg0AAAAAAAABAAAAXzALAAAAAAAAMAsAAAAAAAABAAAAXw",
4552  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAwAAADYLAAAAAAAANgsAAAAAAAAAAAAAAADwv2ENAAAAAAAAYQ0AAAAAAAAAAAAAAADwv4QNAAAAAAAAhA0AAAAAAAAAAAAAAADwvw"
4553  				],
4554  				[
4555  					227,
4556  					6,
4557  					"left_delete",
4558  					null,
4559  					"DAAAAOQRAAAAAAAA5BEAAAAAAAABAAAAZY8RAAAAAAAAjxEAAAAAAAABAAAAZeIRAAAAAAAA4hEAAAAAAAABAAAAbo4RAAAAAAAAjhEAAAAAAAABAAAAbuARAAAAAAAA4BEAAAAAAAABAAAAb40RAAAAAAAAjREAAAAAAAABAAAAb94RAAAAAAAA3hEAAAAAAAABAAAAbIwRAAAAAAAAjBEAAAAAAAABAAAAbNwRAAAAAAAA3BEAAAAAAAABAAAAY4sRAAAAAAAAixEAAAAAAAABAAAAY9oRAAAAAAAA2hEAAAAAAAABAAAAX4oRAAAAAAAAihEAAAAAAAABAAAAXw",
4560  					"DAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAgAAAJARAAAAAAAAkBEAAAAAAAAAAAAAAADwv+URAAAAAAAA5REAAAAAAAAAAAAAAMB9QA"
4561  				],
4562  				[
4563  					21,
4564  					1,
4565  					"insert",
4566  					{
4567  						"characters": "\nfrom"
4568  					},
4569  					"BQAAAOAAAAAAAAAA4QAAAAAAAAAAAAAA4QAAAAAAAADiAAAAAAAAAAAAAADiAAAAAAAAAOMAAAAAAAAAAAAAAOMAAAAAAAAA5AAAAAAAAAAAAAAA5AAAAAAAAADlAAAAAAAAAAAAAAA",
4570  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADgAAAAAAAAAOAAAAAAAAAAAAAAAAAA8L8"
4571  				],
4572  				[
4573  					22,
4574  					1,
4575  					"insert",
4576  					{
4577  						"characters": " "
4578  					},
4579  					"AQAAAOUAAAAAAAAA5gAAAAAAAAAAAAAA",
4580  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADlAAAAAAAAAOUAAAAAAAAAAAAAAAAA8L8"
4581  				],
4582  				[
4583  					23,
4584  					1,
4585  					"insert",
4586  					{
4587  						"characters": "py"
4588  					},
4589  					"AgAAAOYAAAAAAAAA5wAAAAAAAAAAAAAA5wAAAAAAAADoAAAAAAAAAAAAAAA",
4590  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADmAAAAAAAAAOYAAAAAAAAAAAAAAAAA8L8"
4591  				],
4592  				[
4593  					24,
4594  					1,
4595  					"insert_completion",
4596  					{
4597  						"completion": "pydeation",
4598  						"format": "text",
4599  						"keep_prefix": false,
4600  						"must_insert": false,
4601  						"trigger": "pydeation"
4602  					},
4603  					"AgAAAOYAAAAAAAAA5gAAAAAAAAACAAAAcHnmAAAAAAAAAO8AAAAAAAAAAAAAAA",
4604  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADoAAAAAAAAAOgAAAAAAAAAAAAAAAAA8L8"
4605  				],
4606  				[
4607  					25,
4608  					1,
4609  					"insert",
4610  					{
4611  						"characters": ".o"
4612  					},
4613  					"AgAAAO8AAAAAAAAA8AAAAAAAAAAAAAAA8AAAAAAAAADxAAAAAAAAAAAAAAA",
4614  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADvAAAAAAAAAO8AAAAAAAAAAAAAAAAA8L8"
4615  				],
4616  				[
4617  					26,
4618  					1,
4619  					"insert_completion",
4620  					{
4621  						"completion": "objects",
4622  						"format": "text",
4623  						"keep_prefix": false,
4624  						"must_insert": false,
4625  						"trigger": "objects"
4626  					},
4627  					"AgAAAPAAAAAAAAAA8AAAAAAAAAABAAAAb/AAAAAAAAAA9wAAAAAAAAAAAAAA",
4628  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADxAAAAAAAAAPEAAAAAAAAAAAAAAAAA8L8"
4629  				],
4630  				[
4631  					27,
4632  					1,
4633  					"insert",
4634  					{
4635  						"characters": ".k"
4636  					},
4637  					"AgAAAPcAAAAAAAAA+AAAAAAAAAAAAAAA+AAAAAAAAAD5AAAAAAAAAAAAAAA",
4638  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAD3AAAAAAAAAPcAAAAAAAAAAAAAAAAA8L8"
4639  				],
4640  				[
4641  					28,
4642  					1,
4643  					"left_delete",
4644  					null,
4645  					"AQAAAPgAAAAAAAAA+AAAAAAAAAABAAAAaw",
4646  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAD5AAAAAAAAAPkAAAAAAAAAAAAAAAAA8L8"
4647  				],
4648  				[
4649  					29,
4650  					1,
4651  					"insert",
4652  					{
4653  						"characters": "a"
4654  					},
4655  					"AQAAAPgAAAAAAAAA+QAAAAAAAAAAAAAA",
4656  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAD4AAAAAAAAAPgAAAAAAAAAAAAAAAAA8L8"
4657  				],
4658  				[
4659  					30,
4660  					1,
4661  					"insert_completion",
4662  					{
4663  						"completion": "abstract_objects",
4664  						"format": "text",
4665  						"keep_prefix": false,
4666  						"must_insert": false,
4667  						"trigger": "abstract_objects"
4668  					},
4669  					"AgAAAPgAAAAAAAAA+AAAAAAAAAABAAAAYfgAAAAAAAAACAEAAAAAAAAAAAAA",
4670  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAD5AAAAAAAAAPkAAAAAAAAAAAAAAAAA8L8"
4671  				],
4672  				[
4673  					31,
4674  					1,
4675  					"insert",
4676  					{
4677  						"characters": " n"
4678  					},
4679  					"AgAAAAgBAAAAAAAACQEAAAAAAAAAAAAACQEAAAAAAAAKAQAAAAAAAAAAAAA",
4680  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAIAQAAAAAAAAgBAAAAAAAAAAAAAAAA8L8"
4681  				],
4682  				[
4683  					32,
4684  					1,
4685  					"left_delete",
4686  					null,
4687  					"AQAAAAkBAAAAAAAACQEAAAAAAAABAAAAbg",
4688  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAKAQAAAAAAAAoBAAAAAAAAAAAAAAAA8L8"
4689  				],
4690  				[
4691  					33,
4692  					1,
4693  					"insert_completion",
4694  					{
4695  						"completion": "import",
4696  						"format": "snippet",
4697  						"keep_prefix": false,
4698  						"must_insert": true,
4699  						"trigger": "import"
4700  					},
4701  					"AQAAAAkBAAAAAAAADwEAAAAAAAAAAAAA",
4702  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAJAQAAAAAAAAkBAAAAAAAAAAAAAAAA8L8"
4703  				],
4704  				[
4705  					34,
4706  					1,
4707  					"insert",
4708  					{
4709  						"characters": " Lin"
4710  					},
4711  					"BAAAAA8BAAAAAAAAEAEAAAAAAAAAAAAAEAEAAAAAAAARAQAAAAAAAAAAAAARAQAAAAAAABIBAAAAAAAAAAAAABIBAAAAAAAAEwEAAAAAAAAAAAAA",
4712  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAPAQAAAAAAAA8BAAAAAAAAAAAAAAAA8L8"
4713  				],
4714  				[
4715  					35,
4716  					1,
4717  					"insert_completion",
4718  					{
4719  						"completion": "LineObject",
4720  						"format": "text",
4721  						"keep_prefix": false,
4722  						"must_insert": false,
4723  						"trigger": "LineObject"
4724  					},
4725  					"AgAAABABAAAAAAAAEAEAAAAAAAADAAAATGluEAEAAAAAAAAaAQAAAAAAAAAAAAA",
4726  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAATAQAAAAAAABMBAAAAAAAAAAAAAAAA8L8"
4727  				],
4728  				[
4729  					37,
4730  					2,
4731  					"anaconda_auto_format",
4732  					null,
4733  					"AQAAAAAAAAAAAAAAjGAAAAAAAABLYAAAZnJvbSBweWRlYXRpb24ub2JqZWN0cy5hYnN0cmFjdF9vYmplY3RzIGltcG9ydCBQcm90b09iamVjdCwgVmlzaWJsZU9iamVjdApmcm9tIHB5ZGVhdGlvbi54cHJlc3NvLnhwcmVzc2lvbnMgaW1wb3J0IFhJbmhlcml0R2xvYmFsTWF0cml4CmZyb20gYzRkLm1vZHVsZXMubW9ncmFwaCBpbXBvcnQgRmllbGRMYXllcgppbXBvcnQgYzRkCmZyb20gcHlkZWF0aW9uLmNvbnN0YW50cyBpbXBvcnQgUEkKZnJvbSBweWRlYXRpb24ub2JqZWN0cy5hYnN0cmFjdF9vYmplY3RzIGltcG9ydCBMaW5lT2JqZWN0CgoKY2xhc3MgTnVsbChQcm90b09iamVjdCk6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGRpc3BsYXk9ImRvdCIsICoqa3dhcmdzKToKICAgICAgICBzZWxmLmRpc3BsYXkgPSBkaXNwbGF5CiAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqKmt3YXJncykKCiAgICBkZWYgc3BlY2lmeV9vYmplY3Qoc2VsZik6CiAgICAgICAgc2VsZi5vYmogPSBjNGQuQmFzZU9iamVjdChjNGQuT251bGwpCgogICAgZGVmIHNldF9vYmplY3RfcHJvcGVydGllcyhzZWxmKToKICAgICAgICAjIGltcGxpY2l0IHByb3BlcnRpZXMKICAgICAgICBzaGFwZXMgPSB7ImRvdCI6IDAsICJjcm9zcyI6IDEsICJjaXJjbGUiOiAyLCBOb25lOiAxNH0KICAgICAgICAjIHNldCBwcm9wZXJ0aWVzCiAgICAgICAgc2VsZi5vYmpbYzRkLk5VTExPQkpFQ1RfRElTUExBWV0gPSBzaGFwZXNbc2VsZi5kaXNwbGF5XQoKY2xhc3MgTW9HcmFwaE9iamVjdChQcm90b09iamVjdCk6CgogICAgZGVmIGFkZF9lZmZlY3RvcnMoc2VsZik6CiAgICAgICAgc2VsZi5lZmZlY3Rvcl9saXN0ID0gYzRkLkluRXhjbHVkZURhdGEoKQogICAgICAgIGZvciBlZmZlY3RvciBpbiBzZWxmLmVmZmVjdG9yczoKICAgICAgICAgICAgc2VsZi5lZmZlY3Rvcl9saXN0Lkluc2VydE9iamVjdChlZmZlY3Rvci5vYmosIDEpCiAgICAgICAgc2VsZi5vYmpbYzRkLklEX01HX01PVElPTkdFTkVSQVRPUl9FRkZFQ1RPUkxJU1RdID0gc2VsZi5lZmZlY3Rvcl9saXN0CgogICAgZGVmIGFkZF9lZmZlY3RvcihzZWxmLCBlZmZlY3Rvcik6CiAgICAgICAgc2VsZi5lZmZlY3Rvcl9saXN0Lkluc2VydE9iamVjdChlZmZlY3Rvci5vYmosIDEpCiAgICAgICAgc2VsZi5vYmpbYzRkLk1HTU9TUExJTkVPQkpFQ1RfRUZGRUNUT1JMSVNUXSA9IHNlbGYuZWZmZWN0b3JfbGlzdAoKY2xhc3MgVHJhY2VyKE1vR3JhcGhPYmplY3QpOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqbm9kZXMsIHNwbGluZV90eXBlPSJiZXppZXIiLCB0cmFjaW5nX21vZGU9InBhdGgiLCByZXZlcnNlPUZhbHNlLCBub2Rlc190b19jaGlsZHJlbj1GYWxzZSwgaW50ZXJtZWRpYXRlX3BvaW50cz1Ob25lLCAqKmt3YXJncyk6CiAgICAgICAgc2VsZi5ub2RlcyA9IG5vZGVzCiAgICAgICAgc2VsZi5zcGxpbmVfdHlwZSA9IHNwbGluZV90eXBlCiAgICAgICAgc2VsZi50cmFjaW5nX21vZGUgPSB0cmFjaW5nX21vZGUKICAgICAgICBzZWxmLnJldmVyc2UgPSByZXZlcnNlCiAgICAgICAgc2VsZi5pbnRlcm1lZGlhdGVfcG9pbnRzID0gaW50ZXJtZWRpYXRlX3BvaW50cwogICAgICAgIHN1cGVyKCkuX19pbml0X18oKiprd2FyZ3MpCiAgICAgICAgaWYgbm9kZXNfdG9fY2hpbGRyZW46CiAgICAgICAgICAgIHNlbGYubm9kZXNfdG9fY2hpbGRyZW4oKQoKICAgIGRlZiBzcGVjaWZ5X29iamVjdChzZWxmKToKICAgICAgICBzZWxmLm9iaiA9IGM0ZC5CYXNlT2JqZWN0KDEwMTg2NTUpCgogICAgZGVmIG5vZGVzX3RvX2NoaWxkcmVuKHNlbGYpOgogICAgICAgICIiImluc2VydHMgbm9kZXMgdW5kZXIgdHJhY2VyIG9iamVjdCBhcyBjaGlsZHJlbiIiIgogICAgICAgIGZvciBub2RlIGluIHNlbGYubm9kZXM6CiAgICAgICAgICAgIG5vZGUub2JqLkluc2VydFVuZGVyKHNlbGYub2JqKQoKICAgIGRlZiBzZXRfb2JqZWN0X3Byb3BlcnRpZXMoc2VsZik6CiAgICAgICAgIyBpbXBsaWNpdCBwcm9wZXJ0aWVzCiAgICAgICAgdHJhY2VfbGlzdCA9IGM0ZC5JbkV4Y2x1ZGVEYXRhKCkKICAgICAgICBmb3Igbm9kZSBpbiBzZWxmLm5vZGVzOgogICAgICAgICAgICB0cmFjZV9saXN0Lkluc2VydE9iamVjdChub2RlLm9iaiwgMSkKICAgICAgICAjIHNldCBwcm9wZXJ0aWVzCiAgICAgICAgc2VsZi5vYmpbYzRkLk1HVFJBQ0VST0JKRUNUX09CSkVDVExJU1RdID0gdHJhY2VfbGlzdAogICAgICAgIHNwbGluZV90eXBlcyA9IHsibGluZWFyIjogMCwgImN1YmUiOiAxLCAiYWtpbWEiOiAyLCAiYi1zcGxpbmUiOiAzLCAiYmV6aWVyIjogNH0KICAgICAgICBzZWxmLm9ialtjNGQuU1BMSU5FT0JKRUNUX1RZUEVdID0gc3BsaW5lX3R5cGVzW3NlbGYuc3BsaW5lX3R5cGVdCiAgICAgICAgc2VsZi5vYmpbYzRkLk1HVFJBQ0VST0JKRUNUX1JFVkVSU0VTUExJTkVdID0gc2VsZi5yZXZlcnNlCiAgICAgICAgdHJhY2luZ19tb2RlcyA9IHsicGF0aCI6IDAsICJvYmplY3RzIjogMSwgImVsZW1lbnRzIjogMn0KICAgICAgICAjIHRyYWNpbmcgbW9kZSB0byBvYmplY3QKICAgICAgICBzZWxmLm9ialtjNGQuTUdUUkFDRVJPQkpFQ1RfTU9ERV0gPSB0cmFjaW5nX21vZGVzW3NlbGYudHJhY2luZ19tb2RlXQogICAgICAgICMgc2V0IGNvbnN0YW50cwogICAgICAgIHNlbGYub2JqW2M0ZC5TUExJTkVPQkpFQ1RfSU5URVJQT0xBVElPTl0gPSAxICAjIGFkYXB0aXZlCiAgICAgICAgc2VsZi5vYmpbYzRkLk1HVFJBQ0VST0JKRUNUX1VTRVBPSU5UU10gPSBGYWxzZSAgIyBubyB2ZXJ0ZXggdHJhY2luZwogICAgICAgIHNlbGYub2JqW2M0ZC5NR1RSQUNFUk9CSkVDVF9TUEFDRV0gPSBGYWxzZSAgIyBnbG9iYWwgc3BhY2UKCmNsYXNzIENsb25lcihNb0dyYXBoT2JqZWN0KToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kZT0ib2JqZWN0IiwgY2xvbmVzPVtdLCBlZmZlY3RvcnM9W10sIHRhcmdldF9vYmplY3Q9Tm9uZSwgdXNlX2luc3RhbmNlPUZhbHNlLCBob25leWNvbWJfY291bnRfd2lkdGg9MTAsIGhvbmV5Y29tYl9jb3VudF9oZWlnaHQ9MTAsIGhvbmV5Y29tYl9zdGVwX3NpemVfd2lkdGg9MzAwLCBob25leWNvbWJfc3RlcF9zaXplX2hlaWdodD0zNDYuNDEwMiwgc3BsaW5lX3N0ZXBfc2l6ZT0xMCwgb2Zmc2V0X3N0YXJ0PTAsIG9mZnNldF9lbmQ9MCwgb2Zmc2V0PTAsIG9yaWVudGF0aW9uPSJ4eiIsICoqa3dhcmdzKToKICAgICAgICBzZWxmLm1vZGUgPSBtb2RlCiAgICAgICAgc2VsZi5jbG9uZXMgPSBjbG9uZXMKICAgICAgICBzZWxmLmVmZmVjdG9ycyA9IGVmZmVjdG9ycwogICAgICAgIHNlbGYudGFyZ2V0X29iamVjdCA9IHRhcmdldF9vYmplY3QKICAgICAgICBzZWxmLnVzZV9pbnN0YW5jZSA9IHVzZV9pbnN0YW5jZQogICAgICAgIHNlbGYuc3BsaW5lX3N0ZXBfc2l6ZSA9IHNwbGluZV9zdGVwX3NpemUKICAgICAgICBzZWxmLmhvbmV5Y29tYl9jb3VudF93aWR0aCA9IGhvbmV5Y29tYl9jb3VudF93aWR0aAogICAgICAgIHNlbGYuaG9uZXljb21iX2NvdW50X2hlaWdodCA9IGhvbmV5Y29tYl9jb3VudF9oZWlnaHQKICAgICAgICBzZWxmLmhvbmV5Y29tYl9zdGVwX3NpemVfd2lkdGggPSBob25leWNvbWJfc3RlcF9zaXplX3dpZHRoCiAgICAgICAgc2VsZi5ob25leWNvbWJfc3RlcF9zaXplX2hlaWdodCA9IGhvbmV5Y29tYl9zdGVwX3NpemVfaGVpZ2h0CiAgICAgICAgc2VsZi5vZmZzZXRfc3RhcnQgPSBvZmZzZXRfc3RhcnQKICAgICAgICBzZWxmLm9mZnNldF9lbmQgPSAxIC0gb2Zmc2V0X2VuZAogICAgICAgIHNlbGYub2Zmc2V0ID0gb2Zmc2V0CiAgICAgICAgc2VsZi5vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uCiAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqKmt3YXJncykKICAgICAgICBzZWxmLmluc2VydF9jbG9uZXMoKQogICAgICAgIHNlbGYuYWRkX2VmZmVjdG9ycygpCgogICAgZGVmIHNwZWNpZnlfb2JqZWN0KHNlbGYpOgogICAgICAgIHNlbGYub2JqID0gYzRkLkJhc2VPYmplY3QoMTAxODU0NCkKCiAgICBkZWYgc2V0X29iamVjdF9wcm9wZXJ0aWVzKHNlbGYpOgogICAgICAgIG1vZGVzID0gewogICAgICAgICAgICAib2JqZWN0IjogMCwKICAgICAgICAgICAgImxpbmVhciI6IDEsCiAgICAgICAgICAgICJyYWRpYWwiOiAyLAogICAgICAgICAgICAiZ3JpZCI6IDMsCiAgICAgICAgICAgICJob25leWNvbWIiOiA0CiAgICAgICAgfQogICAgICAgIHNlbGYub2JqW2M0ZC5JRF9NR19NT1RJT05HRU5FUkFUT1JfTU9ERV0gPSBtb2Rlc1tzZWxmLm1vZGVdCiAgICAgICAgaWYgc2VsZi5tb2RlID09ICJob25leWNvbWIiOgogICAgICAgICAgICBvcmllbnRhdGlvbnMgPSB7CiAgICAgICAgICAgICAgICAieHkiOiAwLAogICAgICAgICAgICAgICAgInp5IjogMSwKICAgICAgICAgICAgICAgICJ4eiI6IDIsCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2VsZi5vYmpbYzRkLk1HX0hPTkVZQ09NQl9PUklFTlRBVElPTl0gPSBvcmllbnRhdGlvbnNbc2VsZi5vcmllbnRhdGlvbl0KICAgICAgICAgICAgc2VsZi5vYmpbYzRkLk1HX0hPTkVZQ09NQl9DT1VOVF9YXSA9IHNlbGYuaG9uZXljb21iX2NvdW50X3dpZHRoCiAgICAgICAgICAgIHNlbGYub2JqW2M0ZC5NR19IT05FWUNPTUJfQ09VTlRfWV0gPSBzZWxmLmhvbmV5Y29tYl9jb3VudF9oZWlnaHQKICAgICAgICAgICAgc2VsZi5vYmpbYzRkLk1HX0hPTkVZQ09NQl9TSVpFX1hdID0gc2VsZi5ob25leWNvbWJfc3RlcF9zaXplX3dpZHRoCiAgICAgICAgICAgIHNlbGYub2JqW2M0ZC5NR19IT05FWUNPTUJfU0laRV9ZXSA9IHNlbGYuaG9uZXljb21iX3N0ZXBfc2l6ZV9oZWlnaHQKICAgICAgICBzZWxmLm9ialtjNGQuTUdDTE9ORVJfRklYX0NMT05FU10gPSBGYWxzZQogICAgICAgIGlmIHNlbGYubW9kZSA9PSAib2JqZWN0IjoKICAgICAgICAgICAgc2VsZi5vYmpbYzRkLk1HX09CSkVDVF9MSU5LXSA9IHNlbGYudGFyZ2V0X29iamVjdC5vYmoKICAgICAgICAgICAgc2VsZi5vYmpbYzRkLk1HX1NQTElORV9NT0RFXSA9IDEKICAgICAgICAgICAgc2VsZi5vYmpbYzRkLk1HX1NQTElORV9TVEVQXSA9IHNlbGYuc3BsaW5lX3N0ZXBfc2l6ZQogICAgICAgICAgICBzZWxmLm9ialtjNGQuTUdfU1BMSU5FX09GRlNFVF0gPSBzZWxmLm9mZnNldAogICAgICAgICAgICBzZWxmLm9ialtjNGQuTUdfU1BMSU5FX1NUQVJUXSA9IHNlbGYub2Zmc2V0X3N0YXJ0CiAgICAgICAgICAgIHNlbGYub2JqW2M0ZC5NR19TUExJTkVfRU5EXSA9IHNlbGYub2Zmc2V0X2VuZAogICAgICAgICAgICBzZWxmLm9ialtjNGQuTUdfU1BMSU5FX0xPT1BdID0gRmFsc2UKCiAgICBkZWYgaW5zZXJ0X2Nsb25lcyhzZWxmKToKICAgICAgICBpZiBzZWxmLnVzZV9pbnN0YW5jZToKICAgICAgICAgICAgY2xvbmVfaW5zdGFuY2VzID0gW10KICAgICAgICAgICAgZm9yIGNsb25lIGluIHNlbGYuY2xvbmVzOgogICAgICAgICAgICAgICAgY2xvbmVfaW5zdGFuY2UgPSBJbnN0YW5jZShjbG9uZSkKICAgICAgICAgICAgICAgIGNsb25lX2luc3RhbmNlLm9iai5JbnNlcnRVbmRlcihzZWxmLm9iaikKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIGNoZWNrIGlmIGlucHV0IGlzIGFycmF5IGFuZCBpZiBub3QgdXNlIHRoZSBzaW5nbGUgb2JqZWN0CiAgICAgICAgICAgIGlmIHR5cGUoc2VsZi5jbG9uZXMpIGlzIG5vdCBsaXN0OgogICAgICAgICAgICAgICAgc2VsZi5jbG9uZXMgPSBbc2VsZi5jbG9uZXNdCiAgICAgICAgICAgIGZvciBjbG9uZSBpbiBzZWxmLmNsb25lczoKICAgICAgICAgICAgICAgIGNsb25lLm9iai5JbnNlcnRVbmRlcihzZWxmLm9iaikKCiAgICBkZWYgYWRkX2Nsb25lcyhzZWxmLCAqY2xvbmVzKToKICAgICAgICBpZiBzZWxmLnVzZV9pbnN0YW5jZToKICAgICAgICAgICAgY2xvbmVfaW5zdGFuY2VzID0gW10KICAgICAgICAgICAgZm9yIGNsb25lIGluIGNsb25lczoKICAgICAgICAgICAgICAgIGNsb25lX2luc3RhbmNlID0gSW5zdGFuY2UoY2xvbmUpCiAgICAgICAgICAgICAgICBjbG9uZV9pbnN0YW5jZS5vYmouSW5zZXJ0VW5kZXIoc2VsZi5vYmopCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZm9yIGNsb25lIGluIGNsb25lczoKICAgICAgICAgICAgICAgIGNsb25lLm9iai5JbnNlcnRVbmRlcihzZWxmLm9iaikKCiAgICBkZWYgc2V0X3VuaXF1ZV9kZXNjX2lkcyhzZWxmKToKICAgICAgICBzZWxmLmRlc2NfaWRzID0gewogICAgICAgICAgICAiY291bnQiOiBjNGQuRGVzY0lEKGM0ZC5EZXNjTGV2ZWwoYzRkLk1HX0xJTkVBUl9DT1VOVCwgYzRkLkRUWVBFX0xPTkcsIDApKSwKICAgICAgICAgICAgInNwbGluZV9zdGVwX3NpemUiOiBjNGQuRGVzY0lEKGM0ZC5EZXNjTGV2ZWwoYzRkLk1HX1NQTElORV9TVEVQLCBjNGQuRFRZUEVfUkVBTCwgMCkpLAogICAgICAgICAgICAib2Zmc2V0IjogYzRkLkRlc2NJRChjNGQuRGVzY0xldmVsKGM0ZC5NR19TUExJTkVfT0ZGU0VULCBjNGQuRFRZUEVfUkVBTCwgMCkpLAogICAgICAgICAgICAib2Zmc2V0X3N0YXJ0IjogYzRkLkRlc2NJRChjNGQuRGVzY0xldmVsKGM0ZC5NR19TUExJTkVfU1RBUlQsIGM0ZC5EVFlQRV9SRUFMLCAwKSksCiAgICAgICAgICAgICJvZmZzZXRfZW5kIjogYzRkLkRlc2NJRChjNGQuRGVzY0xldmVsKGM0ZC5NR19TUExJTkVfRU5ELCBjNGQuRFRZUEVfUkVBTCwgMCkpLAogICAgICAgICAgICAicm90YXRpb25faCI6IGM0ZC5EZXNjSUQoYzRkLkRlc2NMZXZlbCgxMDAwMDAwMCwgNDAwMDA3MDAzLCA0MDAwMDEwMDApKSwKICAgICAgICAgICAgInJvdGF0aW9uX3AiOiBjNGQuRGVzY0lEKGM0ZC5EZXNjTGV2ZWwoMTAwMDAwMDEsIDQwMDAwNzAwMywgNDAwMDAxMDAwKSksCiAgICAgICAgICAgICJyb3RhdGlvbl9iIjogYzRkLkRlc2NJRChjNGQuRGVzY0xldmVsKDEwMDAwMDAyLCA0MDAwMDcwMDMsIDQwMDAwMTAwMCkpCiAgICAgICAgfQoKY2xhc3MgSW5zdGFuY2UoVmlzaWJsZU9iamVjdCk6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHRhcmdldCwgaW5oZXJpdF9nbG9iYWxfbWF0cml4PVRydWUsICoqa3dhcmdzKToKICAgICAgICBzZWxmLnRhcmdldCA9IHRhcmdldAogICAgICAgIHN1cGVyKCkuX19pbml0X18oKiprd2FyZ3MpCiAgICAgICAgaWYgaW5oZXJpdF9nbG9iYWxfbWF0cml4OgogICAgICAgICAgICBzZWxmLmNyZWF0ZV9nbG9iYWxfbWF0cml4X2luaGVyaXRhbmNlKCkKCiAgICBkZWYgc3BlY2lmeV9vYmplY3Qoc2VsZik6CiAgICAgICAgc2VsZi5vYmogPSBjNGQuQmFzZU9iamVjdCg1MTI2KQoKICAgIGRlZiBzZXRfb2JqZWN0X3Byb3BlcnRpZXMoc2VsZik6CiAgICAgICAgc2VsZi5vYmpbYzRkLklOU1RBTkNFT0JKRUNUX0xJTktdID0gc2VsZi50YXJnZXQub2JqCgogICAgZGVmIGNyZWF0ZV9nbG9iYWxfbWF0cml4X2luaGVyaXRhbmNlKHNlbGYpOgogICAgICAgIGdsb2JhbF9tYXRyaXhfaW5oZXJpdGFuY2UgPSBYSW5oZXJpdEdsb2JhbE1hdHJpeCgKICAgICAgICAgICAgaW5oZXJpdG9yPXNlbGYudGFyZ2V0LCB0YXJnZXQ9c2VsZikKCmNsYXNzIEVtcHR5U3BsaW5lKFByb3RvT2JqZWN0KToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgc3BsaW5lX3R5cGU9ImJlemllciIsICoqa3dhcmdzKToKICAgICAgICBzZWxmLnNwbGluZV90eXBlID0gc3BsaW5lX3R5cGUKICAgICAgICBzdXBlcigpLl9faW5pdF9fKCoqa3dhcmdzKQoKICAgIGRlZiBzcGVjaWZ5X29iamVjdChzZWxmKToKICAgICAgICBzZWxmLm9iaiA9IGM0ZC5CYXNlT2JqZWN0KGM0ZC5Pc3BsaW5lKQoKICAgIGRlZiBzZXRfb2JqZWN0X3Byb3BlcnRpZXMoc2VsZik6CiAgICAgICAgc3BsaW5lX3R5cGVzID0gewogICAgICAgICAgICAibGluZWFyIjogMCwKICAgICAgICAgICAgImN1YmljIjogMSwKICAgICAgICAgICAgImFraW1hIjogMiwKICAgICAgICAgICAgImItc3BsaW5lIjogMywKICAgICAgICAgICAgImJlemllciI6IDQKICAgICAgICB9CiAgICAgICAgIyBzZXQgaW50ZXJwb2xhdGlvbgogICAgICAgIHNlbGYub2JqW2M0ZC5TUExJTkVPQkpFQ1RfVFlQRV0gPSBzcGxpbmVfdHlwZXNbc2VsZi5zcGxpbmVfdHlwZV0KCmNsYXNzIEhlbHBlclNwbGluZShQcm90b09iamVjdCk6CiAgICAiIiJ0dXJucyBhIGM0ZCBzcGxpbmUgaW50byBhIGhpZGRlbiBweWRlYXRpb24gc3BsaW5lIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGlucHV0X3NwbGluZSwgc3BsaW5lX3R5cGU9ImJlemllciIsICoqa3dhcmdzKToKICAgICAgICBzZWxmLmlucHV0X3NwbGluZSA9IHNlbGYuZ2V0X3NwbGluZShpbnB1dF9zcGxpbmUpCiAgICAgICAgc2VsZi5zcGxpbmVfdHlwZSA9IHNwbGluZV90eXBlCiAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqKmt3YXJncykKCiAgICBkZWYgZ2V0X3NwbGluZShzZWxmLCBpbnB1dF9zcGxpbmUpOgogICAgICAgICMgdHVybnMgYW55IHByaW1pdGl2ZSBzcGxpbmUgaW50byBhIHNpbmdsZSBlZGl0YWJsZSBzcGxpbmUKICAgICAgICBpZiB0eXBlKGlucHV0X3NwbGluZSkgaXMgbm90IGM0ZC5TcGxpbmVPYmplY3Q6CiAgICAgICAgICAgIHBhc3MKICAgICAgICByZXR1cm4gaW5wdXRfc3BsaW5lCgogICAgZGVmIHNwZWNpZnlfb2JqZWN0KHNlbGYpOgogICAgICAgIHNlbGYub2JqID0gc2VsZi5pbnB1dF9zcGxpbmUuR2V0Q2xvbmUoKQoKICAgIGRlZiBzZXRfb2JqZWN0X3Byb3BlcnRpZXMoc2VsZik6CiAgICAgICAgc3BsaW5lX3R5cGVzID0gewogICAgICAgICAgICAibGluZWFyIjogMCwKICAgICAgICAgICAgImN1YmljIjogMSwKICAgICAgICAgICAgImFraW1hIjogMiwKICAgICAgICAgICAgImItc3BsaW5lIjogMywKICAgICAgICAgICAgImJlemllciI6IDQKICAgICAgICB9CiAgICAgICAgIyBzZXQgaW50ZXJwb2xhdGlvbgogICAgICAgIHNlbGYub2JqW2M0ZC5TUExJTkVPQkpFQ1RfVFlQRV0gPSBzcGxpbmVfdHlwZXNbc2VsZi5zcGxpbmVfdHlwZV0KCmNsYXNzIE1vU3BsaW5lKE1vR3JhcGhPYmplY3QpOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2RlPSJzcGxpbmUiLCBnZW5lcmF0aW9uX21vZGU9ImV2ZW4iLCBwb2ludF9jb3VudD0xMDAsIHNvdXJjZV9zcGxpbmU9Tm9uZSwgZGVzdGluYXRpb25fc3BsaW5lPU5vbmUsIGVmZmVjdG9ycz1bXSwgKiprd2FyZ3MpOgogICAgICAgIHNlbGYubW9kZSA9IG1vZGUKICAgICAgICBzZWxmLmdlbmVyYXRpb25fbW9kZSA9IGdlbmVyYXRpb25fbW9kZQogICAgICAgIHNlbGYucG9pbnRfY291bnQgPSBwb2ludF9jb3VudAogICAgICAgIHNlbGYuc291cmNlX3NwbGluZSA9IHNvdXJjZV9zcGxpbmUKICAgICAgICBzZWxmLmVmZmVjdG9ycyA9IGVmZmVjdG9ycwogICAgICAgIHNlbGYuZGVzdGluYXRpb25fc3BsaW5lID0gZGVzdGluYXRpb25fc3BsaW5lCiAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqKmt3YXJncykKICAgICAgICBzZWxmLmFkZF9lZmZlY3RvcnMoKQoKICAgIGRlZiBzcGVjaWZ5X29iamVjdChzZWxmKToKICAgICAgICBzZWxmLm9iaiA9IGM0ZC5CYXNlT2JqZWN0KDQ0MDAwMDA1NCkKCiAgICBkZWYgc2V0X29iamVjdF9wcm9wZXJ0aWVzKHNlbGYpOgogICAgICAgICMgaW1wbGljaXQgcHJvcGVydGllcwogICAgICAgIG1vZGVzID0geyJzaW1wbGUiOiAwLCAic3BsaW5lIjogMSwgInR1cnRsZSI6IDJ9CiAgICAgICAgZ2VuZXJhdGlvbl9tb2RlcyA9IHsidmVydGV4IjogMCwgImNvdW50IjogMSwgImV2ZW4iOiAyLCAic3RlcCI6IDN9CiAgICAgICAgIyBzZXQgcHJvcGVydGllcwogICAgICAgIHNlbGYub2JqW2M0ZC5NR01PU1BMSU5FT0JKRUNUX01PREVdID0gbW9kZXNbc2VsZi5tb2RlXQogICAgICAgIHNlbGYub2JqW2M0ZC5NR01PU1BMSU5FT0JKRUNUX1NQTElORV9NT0RFXSA9IGdlbmVyYXRpb25fbW9kZXNbc2VsZi5nZW5lcmF0aW9uX21vZGVdCiAgICAgICAgc2VsZi5vYmpbYzRkLk1HTU9TUExJTkVPQkpFQ1RfU1BMSU5FX0NPVU5UXSA9IHNlbGYucG9pbnRfY291bnQKICAgICAgICAjIGRpc3BsYXkgYXMgcmVndWxhciBzcGxpbmUKICAgICAgICBzZWxmLm9ialtjNGQuTUdNT1NQTElORU9CSkVDVF9ESVNQTEFZTU9ERV0gPSAwCiAgICAgICAgaWYgc2VsZi5zb3VyY2Vfc3BsaW5lOgogICAgICAgICAgICBzZWxmLm9ialtjNGQuTUdNT1NQTElORU9CSkVDVF9TT1VSQ0VfU1BMSU5FXSA9IHNlbGYuc291cmNlX3NwbGluZS5vYmoKICAgICAgICBpZiBzZWxmLmRlc3RpbmF0aW9uX3NwbGluZToKICAgICAgICAgICAgc2VsZi5vYmpbYzRkLk1HTU9TUExJTkVPQkpFQ1RfREVTVF9TUExJTkVdID0gc2VsZi5kZXN0aW5hdGlvbl9zcGxpbmUub2JqCgogICAgZGVmIHNldF91bmlxdWVfZGVzY19pZHMoc2VsZik6CiAgICAgICAgc2VsZi5kZXNjX2lkcyA9IHsKICAgICAgICAgICAgInBvaW50X2NvdW50IjogYzRkLkRlc2NJRChjNGQuRGVzY0xldmVsKGM0ZC5NR01PU1BMSU5FT0JKRUNUX1NQTElORV9DT1VOVCwgYzRkLkRUWVBFX0xPTkcsIDApKQogICAgICAgIH0KCmNsYXNzIERlZm9ybWVyKFByb3RvT2JqZWN0KToKICAgIAogICAgZGVmIF9faW5pdF9fKHNlbGYsIHRhcmdldCwgZmllbGRzPVtdLCAqKmt3YXJncyk6CiAgICAgICAgc2VsZi50YXJnZXQgPSB0YXJnZXQKICAgICAgICBzZWxmLmZpZWxkcyA9IGZpZWxkcwogICAgICAgIHNlbGYuY3JlYXRlX2ZpZWxkX2xpc3QoKQogICAgICAgIHN1cGVyKCkuX19pbml0X18oKiprd2FyZ3MpCiAgICAgICAgc2VsZi5pbnNlcnRfZmllbGRfbGlzdCgpCiAgICAgICAgc2VsZi5pbnNlcnRfdW5kZXJfdGFyZ2V0KCkKCiAgICBkZWYgaW5zZXJ0X3VuZGVyX3RhcmdldChzZWxmKToKICAgICAgICBzZWxmLm9iai5JbnNlcnRVbmRlcihzZWxmLnRhcmdldC5vYmopCgogICAgZGVmIGNyZWF0ZV9maWVsZF9saXN0KHNlbGYpOgogICAgICAgIHNlbGYuZmllbGRfbGlzdCA9IGM0ZC5GaWVsZExpc3QoKQogICAgICAgIHNlbGYuc3BsaW5lX2ZpZWxkX2xheWVyX2lkID0gMTAKICAgICAgICBmb3IgZmllbGQgaW4gc2VsZi5maWVsZHM6CiAgICAgICAgICAgIGZpZWxkX2xheWVyID0gRmllbGRMYXllcihjNGQuRkxmaWVsZCkKICAgICAgICAgICAgZmllbGRfbGF5ZXIuU2V0TGlua2VkT2JqZWN0KGZpZWxkLm9iaikKICAgICAgICAgICAgc2VsZi5maWVsZF9saXN0Lkluc2VydExheWVyKGZpZWxkX2xheWVyKQoKICAgIGRlZiBpbnNlcnRfZmllbGRfbGlzdChzZWxmKToKICAgICAgICBwcmludChzZWxmLmZpZWxkX2xpc3QpCiAgICAgICAgc2VsZi5vYmpbYzRkLkZJRUxEU10gPSBzZWxmLmZpZWxkX2xpc3QKCmNsYXNzIEVmZmVjdG9yKFByb3RvT2JqZWN0KToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgZmllbGRzPVtdLCBzcGxpbmVfZmllbGQ9Tm9uZSwgcG9zaXRpb249Tm9uZSwgcm90YXRpb249Tm9uZSwgc2NhbGU9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgIHNlbGYuZmllbGRzID0gZmllbGRzCiAgICAgICAgc2VsZi5zcGxpbmVfZmllbGQgPSBzcGxpbmVfZmllbGQKICAgICAgICBzZWxmLnBvc2l0aW9uID0gcG9zaXRpb24KICAgICAgICBzZWxmLnJvdGF0aW9uID0gcm90YXRpb24KICAgICAgICBzZWxmLnNjYWxlID0gc2NhbGUKICAgICAgICBzZWxmLmNyZWF0ZV9maWVsZF9saXN0KCkKICAgICAgICBzdXBlcigpLl9faW5pdF9fKCoqa3dhcmdzKQogICAgICAgIHNlbGYuaW5zZXJ0X2ZpZWxkX2xpc3QoKQogICAgICAgIHNlbGYuc2V0X3RyYW5zZm9ybWF0aW9uX2RhdGEoKQogICAgICAgIHNlbGYuc2V0X3NwbGluZV9maWVsZF9kZXNjX2lkcygpCgogICAgZGVmIGNyZWF0ZV9maWVsZF9saXN0KHNlbGYpOgogICAgICAgIHNlbGYuZmllbGRfbGlzdCA9IGM0ZC5GaWVsZExpc3QoKQogICAgICAgIHNlbGYuc3BsaW5lX2ZpZWxkX2xheWVyX2lkID0gMTAKICAgICAgICBpZiBzZWxmLnNwbGluZV9maWVsZDoKICAgICAgICAgICAgc2VsZi5zcGxpbmVfZmllbGRfbGF5ZXIgPSBGaWVsZExheWVyKGM0ZC5GTHNwbGluZSkKICAgICAgICAgICAgc2VsZi5zcGxpbmVfZmllbGRfbGF5ZXIuU2V0TGlua2VkT2JqZWN0KHNlbGYuc3BsaW5lX2ZpZWxkLm9iaikKICAgICAgICAgICAgc2VsZi5zcGxpbmVfZmllbGRfbGF5ZXJfaWQgPSBzZWxmLnNwbGluZV9maWVsZF9sYXllci5HZXRVbmlxdWVJRCgpICsgXAogICAgICAgICAgICAgICAgMSAgIyB2ZXJ5IGRpcnR5IHNvbHV0aW9uIGZvciBub3cKICAgICAgICAgICAgc2VsZi5maWVsZF9saXN0Lkluc2VydExheWVyKHNlbGYuc3BsaW5lX2ZpZWxkX2xheWVyKQogICAgICAgIGZvciBmaWVsZCBpbiBzZWxmLmZpZWxkczoKICAgICAgICAgICAgZmllbGRfbGF5ZXIgPSBGaWVsZExheWVyKGM0ZC5GTGZpZWxkKQogICAgICAgICAgICBmaWVsZF9sYXllci5TZXRMaW5rZWRPYmplY3QoZmllbGQub2JqKQogICAgICAgICAgICBzZWxmLmZpZWxkX2xpc3QuSW5zZXJ0TGF5ZXIoZmllbGRfbGF5ZXIpCgogICAgZGVmIGluc2VydF9maWVsZF9saXN0KHNlbGYpOgogICAgICAgIHNlbGYub2JqW2M0ZC5GSUVMRFNdID0gc2VsZi5maWVsZF9saXN0CgogICAgZGVmIHNldF90cmFuc2Zvcm1hdGlvbl9kYXRhKHNlbGYpOgogICAgICAgICMgZW5zdXJlIHBvc2l0aW9uIGlzIG9mZiBieSBkZWZhdWx0CiAgICAgICAgc2VsZi5vYmpbYzRkLklEX01HX0JBU0VFRkZFQ1RPUl9QT1NJVElPTl9BQ1RJVkVdID0gRmFsc2UKICAgICAgICBpZiBzZWxmLnBvc2l0aW9uIGlzIFRydWU6CiAgICAgICAgICAgIHNlbGYub2JqW2M0ZC5JRF9NR19CQVNFRUZGRUNUT1JfUE9TSVRJT05fQUNUSVZFXSA9IFRydWUKICAgICAgICBpZiB0eXBlKHNlbGYucG9zaXRpb24pIGluICh0dXBsZSwgbGlzdCk6CiAgICAgICAgICAgIHNlbGYub2JqW2M0ZC5JRF9NR19CQVNFRUZGRUNUT1JfUE9TSVRJT05fQUNUSVZFXSA9IFRydWUKICAgICAgICAgICAgc2VsZi5vYmpbYzRkLklEX01HX0JBU0VFRkZFQ1RPUl9QT1NJVElPTl0gPSBjNGQuVmVjdG9yKAogICAgICAgICAgICAgICAgKnNlbGYucG9zaXRpb24pCiAgICAgICAgaWYgc2VsZi5yb3RhdGlvbjoKICAgICAgICAgICAgc2VsZi5vYmpbYzRkLklEX01HX0JBU0VFRkZFQ1RPUl9ST1RBVEVfQUNUSVZFXSA9IFRydWUKICAgICAgICAgICAgc2VsZi5vYmpbYzRkLklEX01HX0JBU0VFRkZFQ1RPUl9ST1RBVElPTl0gPSBjNGQuVmVjdG9yKAogICAgICAgICAgICAgICAgKnNlbGYucm90YXRpb24pCiAgICAgICAgaWYgdHlwZShzZWxmLnNjYWxlKSBpbiAoZmxvYXQsIGludCwgdHVwbGUsIGxpc3QpOgogICAgICAgICAgICBzZWxmLm9ialtjNGQuSURfTUdfQkFTRUVGRkVDVE9SX1NDQUxFX0FDVElWRV0gPSBUcnVlCiAgICAgICAgICAgIGlmIHR5cGUoc2VsZi5zY2FsZSkgaW4gKGZsb2F0LCBpbnQpOgogICAgICAgICAgICAgICAgc2VsZi5vYmpbYzRkLklEX01HX0JBU0VFRkZFQ1RPUl9VTklGT1JNU0NBTEVdID0gVHJ1ZQogICAgICAgICAgICAgICAgc2VsZi5vYmpbYzRkLklEX01HX0JBU0VFRkZFQ1RPUl9VU0NBTEVdID0gc2VsZi5zY2FsZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgc2VsZi5vYmpbYzRkLklEX01HX0JBU0VFRkZFQ1RPUl9TQ0FMRV0gPSBjNGQuVmVjdG9yKAogICAgICAgICAgICAgICAgICAgICpzZWxmLnNjYWxlKQoKICAgIGRlZiBzZXRfc3BsaW5lX2ZpZWxkX2Rlc2NfaWRzKHNlbGYpOgogICAgICAgIHNlbGYuc3BsaW5lX2ZpZWxkX2Rlc2NfaWRzID0gewogICAgICAgICAgICAic3BsaW5lX2ZpZWxkX3JhbmdlX3N0YXJ0IjogYzRkLkRlc2NJRChjNGQuRGVzY0xldmVsKGM0ZC5GSUVMRFMsIGM0ZC5DVVNUT01EQVRBVFlQRV9GSUVMRExJU1QsIDApLCBjNGQuRGVzY0xldmVsKHNlbGYuc3BsaW5lX2ZpZWxkX2xheWVyX2lkLCBjNGQuRFRZUEVfU1VCQ09OVEFJTkVSLCAwKSwgYzRkLkRlc2NMZXZlbChjNGQuRklFTERMQVlFUl9TUExJTkVfUkFOR0VfU1RBUlQsIDAsIDApKSwKICAgICAgICAgICAgInNwbGluZV9maWVsZF9yYW5nZV9lbmQiOiBjNGQuRGVzY0lEKGM0ZC5EZXNjTGV2ZWwoYzRkLkZJRUxEUywgYzRkLkNVU1RPTURBVEFUWVBFX0ZJRUxETElTVCwgMCksIGM0ZC5EZXNjTGV2ZWwoc2VsZi5zcGxpbmVfZmllbGRfbGF5ZXJfaWQsIGM0ZC5EVFlQRV9TVUJDT05UQUlORVIsIDApLCBjNGQuRGVzY0xldmVsKGM0ZC5GSUVMRExBWUVSX1NQTElORV9SQU5HRV9FTkQsIDAsIDApKSwKICAgICAgICAgICAgInNwbGluZV9maWVsZF9vZmZzZXQiOiBjNGQuRGVzY0lEKGM0ZC5EZXNjTGV2ZWwoYzRkLkZJRUxEUywgYzRkLkNVU1RPTURBVEFUWVBFX0ZJRUxETElTVCwgMCksIGM0ZC5EZXNjTGV2ZWwoc2VsZi5zcGxpbmVfZmllbGRfbGF5ZXJfaWQsIGM0ZC5EVFlQRV9TVUJDT05UQUlORVIsIDApLCBjNGQuRGVzY0xldmVsKGM0ZC5GSUVMRExBWUVSX1NQTElORV9PRkZTRVQsIDAsIDApKQogICAgICAgIH0KCmNsYXNzIFNwbGluZUVmZmVjdG9yKEVmZmVjdG9yKToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgc3BsaW5lPU5vbmUsIHNlZ21lbnRfbW9kZT0iaW5kZXgiLCBzZWdtZW50X2luZGV4PU5vbmUsIHRyYW5zZm9ybV9tb2RlPSJhYnNvbHV0ZSIsIHBvc2l0aW9uPVRydWUsIHJvdGF0aW9uPSgwLCAwLCAwKSwgb2Zmc2V0PTAsIG9mZnNldF9zdGFydD0wLCBvZmZzZXRfZW5kPTAsIGVmZmVjdGl2ZV9sZW5ndGg9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgIHNlbGYuc3BsaW5lID0gc3BsaW5lCiAgICAgICAgc2VsZi5zZWdtZW50X21vZGUgPSBzZWdtZW50X21vZGUKICAgICAgICBzZWxmLnNlZ21lbnRfaW5kZXggPSBzZWdtZW50X2luZGV4CiAgICAgICAgc2VsZi50cmFuc2Zvcm1fbW9kZSA9IHRyYW5zZm9ybV9tb2RlCiAgICAgICAgc2VsZi5vZmZzZXRfc3RhcnQgPSBvZmZzZXRfc3RhcnQKICAgICAgICBzZWxmLm9mZnNldF9lbmQgPSBvZmZzZXRfZW5kCiAgICAgICAgc2VsZi5vZmZzZXQgPSBvZmZzZXQKICAgICAgICBzZWxmLmVmZmVjdGl2ZV9sZW5ndGggPSBlZmZlY3RpdmVfbGVuZ3RoCiAgICAgICAgc2VsZi5nZXRfZWZmZWN0aXZlX2xlbmd0aCgpCiAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwb3NpdGlvbj1wb3NpdGlvbiwgcm90YXRpb249cm90YXRpb24sICoqa3dhcmdzKQoKICAgIGRlZiBzcGVjaWZ5X29iamVjdChzZWxmKToKICAgICAgICBzZWxmLm9iaiA9IGM0ZC5CYXNlT2JqZWN0KDEwMTg3NzQpCgogICAgZGVmIHNldF9vYmplY3RfcHJvcGVydGllcyhzZWxmKToKICAgICAgICBzZWdtZW50X21vZGVzID0geyJpbmRleCI6IDAsICJldmVuX3NwYWNpbmciOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgInJhbmRvbSI6IDIsICJmdWxsX3NwYWNpbmciOiAzfQogICAgICAgIHRyYW5zZm9ybV9tb2RlcyA9IHsicmVsYXRpdmVfdG9fbm9kZSI6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJhYnNvbHV0ZSI6IDEsICJyZWxhdGl2ZV90b19zcGxpbmUiOiAyfQogICAgICAgIGlmIHNlbGYuc3BsaW5lOgogICAgICAgICAgICBzZWxmLm9ialtjNGQuTUdTUExJTkVFRkZFQ1RPUl9TUExJTkVdID0gc2VsZi5zcGxpbmUub2JqCiAgICAgICAgc2VsZi5vYmpbYzRkLk1HU1BMSU5FRUZGRUNUT1JfU0VHTUVOVE1PREVdID0gc2VnbWVudF9tb2Rlc1tzZWxmLnNlZ21lbnRfbW9kZV0KICAgICAgICBzZWxmLm9ialtjNGQuTUdTUExJTkVFRkZFQ1RPUl9TRUdNRU5USU5ERVhdID0gc2VsZi5zZWdtZW50X2luZGV4CiAgICAgICAgc2VsZi5vYmpbYzRkLk1HU1BMSU5FRUZGRUNUT1JfVFJBTlNGT1JNTU9ERV0gPSB0cmFuc2Zvcm1fbW9kZXNbc2VsZi50cmFuc2Zvcm1fbW9kZV0KICAgICAgICBzZWxmLm9ialtjNGQuTUdTUExJTkVFRkZFQ1RPUl9TVEFSVF0gPSBzZWxmLm9mZnNldF9zdGFydAogICAgICAgIHNlbGYub2JqW2M0ZC5NR1NQTElORUVGRkVDVE9SX0VORF0gPSAxIC0gc2VsZi5vZmZzZXRfZW5kCiAgICAgICAgc2VsZi5vYmpbYzRkLk1HU1BMSU5FRUZGRUNUT1JfT0ZGU0VUXSA9IHNlbGYub2Zmc2V0CgogICAgZGVmIGdldF9lZmZlY3RpdmVfbGVuZ3RoKHNlbGYpOgogICAgICAgIGlmIHNlbGYuZWZmZWN0aXZlX2xlbmd0aCBpcyBOb25lOgogICAgICAgICAgICBzZWxmLmVmZmVjdGl2ZV9sZW5ndGggPSAgc2VsZi5zcGxpbmUuZ2V0X2xlbmd0aChzZWdtZW50PXNlbGYuc2VnbWVudF9pbmRleCkgKiAoMSAtIHNlbGYub2Zmc2V0X2VuZCAtIHNlbGYub2Zmc2V0X3N0YXJ0KQoKICAgIGRlZiBzZXRfdHJhbnNmb3JtYXRpb25fZGF0YShzZWxmKToKICAgICAgICBzZWxmLm9ialtjNGQuTUdTUExJTkVFRkZFQ1RPUl9QT1NJVElPTl9BQ1RJVkVdID0gc2VsZi5wb3NpdGlvbgogICAgICAgIGlmIHNlbGYucm90YXRpb246CiAgICAgICAgICAgIHNlbGYub2JqW2M0ZC5NR1NQTElORUVGRkVDVE9SX1JPVEFUSU9OX0FDVElWRV0gPSBUcnVlCiAgICAgICAgICAgIHNlbGYub2JqW2M0ZC5NR1NQTElORUVGRkVDVE9SX1JPVEFUSU9OXSA9IGM0ZC5WZWN0b3IoCiAgICAgICAgICAgICAgICAqc2VsZi5yb3RhdGlvbikKCiAgICBkZWYgc2V0X3VuaXF1ZV9kZXNjX2lkcyhzZWxmKToKICAgICAgICBzZWxmLmRlc2NfaWRzID0gewogICAgICAgICAgICAib2Zmc2V0X3N0YXJ0IjogYzRkLkRlc2NJRChjNGQuRGVzY0xldmVsKGM0ZC5NR1NQTElORUVGRkVDVE9SX1NUQVJULCBjNGQuRFRZUEVfUkVBTCwgMCkpLAogICAgICAgICAgICAib2Zmc2V0X2VuZCI6IGM0ZC5EZXNjSUQoYzRkLkRlc2NMZXZlbChjNGQuTUdTUExJTkVFRkZFQ1RPUl9FTkQsIGM0ZC5EVFlQRV9SRUFMLCAwKSksCiAgICAgICAgICAgICJyb3RhdGlvbl9oIjogYzRkLkRlc2NJRChjNGQuRGVzY0xldmVsKDEwMDAwMDAwLCA0MDAwMDcwMDMsIDQwMDAwMTAwMCkpLAogICAgICAgICAgICAicm90YXRpb25fcCI6IGM0ZC5EZXNjSUQoYzRkLkRlc2NMZXZlbCgxMDAwMDAwMSwgNDAwMDA3MDAzLCA0MDAwMDEwMDApKSwKICAgICAgICAgICAgInJvdGF0aW9uX2IiOiBjNGQuRGVzY0lEKGM0ZC5EZXNjTGV2ZWwoMTAwMDAwMDIsIDQwMDAwNzAwMywgNDAwMDAxMDAwKSksCiAgICAgICAgICAgICJzdHJlbmd0aCI6IGM0ZC5EZXNjSUQoYzRkLkRlc2NMZXZlbChjNGQuTUdTUExJTkVFRkZFQ1RPUl9TVFJFTkdUSCwgYzRkLkRUWVBFX1JFQUwsIDApKQogICAgICAgIH0KCmNsYXNzIFJhbmRvbUVmZmVjdG9yKEVmZmVjdG9yKToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kZT0icmFuZG9tIiwgKiprd2FyZ3MpOgogICAgICAgIHNlbGYubW9kZSA9IG1vZGUKICAgICAgICBzdXBlcigpLl9faW5pdF9fKCoqa3dhcmdzKQoKICAgIGRlZiBzcGVjaWZ5X29iamVjdChzZWxmKToKICAgICAgICBzZWxmLm9iaiA9IGM0ZC5CYXNlT2JqZWN0KDEwMTg2NDMpCgogICAgZGVmIHNldF9vYmplY3RfcHJvcGVydGllcyhzZWxmKToKICAgICAgICByYW5kb21fbW9kZXMgPSB7CiAgICAgICAgICAgICJyYW5kb20iOiAwLAogICAgICAgICAgICAiZ2F1c3NpYW4iOiAxLAogICAgICAgICAgICAibm9pc2UiOiAyLAogICAgICAgICAgICAidHVyYnVsZW5jZSI6IDMsCiAgICAgICAgICAgICJzb3J0ZWQiOiA0CiAgICAgICAgfQogICAgICAgIHNlbGYub2JqW2M0ZC5NR1NQTElORUVGRkVDVE9SX1RSQU5TRk9STU1PREVdID0gcmFuZG9tX21vZGVzW3NlbGYubW9kZV0KCiAgICBkZWYgc2V0X3VuaXF1ZV9kZXNjX2lkcyhzZWxmKToKICAgICAgICBzZWxmLmRlc2NfaWRzID0gewogICAgICAgICAgICAicG9zaXRpb25feCI6IGM0ZC5EZXNjSUQoYzRkLkRlc2NMZXZlbChjNGQuSURfTUdfQkFTRUVGRkVDVE9SX1BPU0lUSU9OLCBjNGQuRFRZUEVfVkVDVE9SLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGM0ZC5EZXNjTGV2ZWwoYzRkLlZFQ1RPUl9YLCBjNGQuRFRZUEVfUkVBTCwgMCkpLAogICAgICAgICAgICAicG9zaXRpb25feSI6IGM0ZC5EZXNjSUQoYzRkLkRlc2NMZXZlbChjNGQuSURfTUdfQkFTRUVGRkVDVE9SX1BPU0lUSU9OLCBjNGQuRFRZUEVfVkVDVE9SLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGM0ZC5EZXNjTGV2ZWwoYzRkLlZFQ1RPUl9ZLCBjNGQuRFRZUEVfUkVBTCwgMCkpLAogICAgICAgICAgICAicG9zaXRpb25feiI6IGM0ZC5EZXNjSUQoYzRkLkRlc2NMZXZlbChjNGQuSURfTUdfQkFTRUVGRkVDVE9SX1BPU0lUSU9OLCBjNGQuRFRZUEVfVkVDVE9SLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGM0ZC5EZXNjTGV2ZWwoYzRkLlZFQ1RPUl9aLCBjNGQuRFRZUEVfUkVBTCwgMCkpCiAgICAgICAgfQoKY2xhc3MgUGxhaW5FZmZlY3RvcihFZmZlY3Rvcik6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKICAgICAgICBzdXBlcigpLl9faW5pdF9fKCoqa3dhcmdzKQoKICAgIGRlZiBzcGVjaWZ5X29iamVjdChzZWxmKToKICAgICAgICBzZWxmLm9iaiA9IGM0ZC5CYXNlT2JqZWN0KDEwMjEzMzcpCgogICAgZGVmIHNldF9vYmplY3RfcHJvcGVydGllcyhzZWxmKToKICAgICAgICBwYXNzCgpjbGFzcyBUYXJnZXRFZmZlY3RvcihFZmZlY3Rvcik6CiAgICAKICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YXJnZXQsICoqa3dhcmdzKToKICAgICAgICBzZWxmLnRhcmdldCA9IHRhcmdldAogICAgICAgIHN1cGVyKCkuX19pbml0X18oKiprd2FyZ3MpCgogICAgZGVmIHNwZWNpZnlfb2JqZWN0KHNlbGYpOgogICAgICAgIHNlbGYub2JqID0gYzRkLkJhc2VPYmplY3QoMTAxODg4OSkKCiAgICBkZWYgc2V0X29iamVjdF9wcm9wZXJ0aWVzKHNlbGYpOgogICAgICAgIHNlbGYub2JqW2M0ZC5NR1RBUkdFVEVGRkVDVE9SX09CSkVDVF0gPSBzZWxmLnRhcmdldC5vYmoKCmNsYXNzIENvcnJlY3Rpb25EZWZvcm1lcihEZWZvcm1lcik6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKICAgICAgICBzdXBlcigpLl9faW5pdF9fKCoqa3dhcmdzKQoKICAgIGRlZiBzcGVjaWZ5X29iamVjdChzZWxmKToKICAgICAgICBzZWxmLm9iaiA9IGM0ZC5CYXNlT2JqZWN0KDEwMjQ1NDIpCgogICAgZGVmIHNldF9vYmplY3RfcHJvcGVydGllcyhzZWxmKToKICAgICAgICBwYXNzCgpjbGFzcyBTaHJpbmtXcmFwKERlZm9ybWVyKToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgdGFyZ2V0LCBtb2RlPSJ0YXJnZXRfYXhpcyIsIHN0cmVuZ3RoPTAuOSwgKiprd2FyZ3MpOgogICAgICAgIHNlbGYudGFyZ2V0ID0gdGFyZ2V0CiAgICAgICAgc2VsZi5tb2RlID0gbW9kZQogICAgICAgIHNlbGYuc3RyZW5ndGggPSBzdHJlbmd0aAogICAgICAgIHN1cGVyKCkuX19pbml0X18odGFyZ2V0PXRhcmdldCwgKiprd2FyZ3MpCgogICAgZGVmIHNwZWNpZnlfb2JqZWN0KHNlbGYpOgogICAgICAgIHNlbGYub2JqID0gYzRkLkJhc2VPYmplY3QoMTAxOTc3NCkKCiAgICBkZWYgc2V0X29iamVjdF9wcm9wZXJ0aWVzKHNlbGYpOgogICAgICAgIG1vZGVzID0geyJhbG9uZ19ub3JtYWxzIjogMCwgInRhcmdldF9heGlzIjogMSwgInNvdXJjZV9heGlzIjogMn0KICAgICAgICBzZWxmLm9ialtjNGQuU0hSSU5LV1JBUF9NT0RFXSA9IG1vZGVzW3NlbGYubW9kZV0KICAgICAgICBzZWxmLm9ialtjNGQuU0hSSU5LV1JBUF9UQVJHRVRPQkpFQ1RdID0gc2VsZi50YXJnZXQub2JqCiAgICAgICAgc2VsZi5vYmpbYzRkLlNIUklOS1dSQVBfU1RSRU5HVEhdID0gc2VsZi5zdHJlbmd0aAoKY2xhc3MgTGluZWFyRmllbGQoUHJvdG9PYmplY3QpOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsZW5ndGg9MTAwLCBkaXJlY3Rpb249IngrIiwgKiprd2FyZ3MpOgogICAgICAgIHNlbGYubGVuZ3RoID0gbGVuZ3RoCiAgICAgICAgc2VsZi5kaXJlY3Rpb24gPSBkaXJlY3Rpb24KICAgICAgICBzdXBlcigpLl9faW5pdF9fKCoqa3dhcmdzKQoKICAgIGRlZiBzcGVjaWZ5X29iamVjdChzZWxmKToKICAgICAgICBzZWxmLm9iaiA9IGM0ZC5CYXNlT2JqZWN0KGM0ZC5GbGluZWFyKQoKICAgIGRlZiBzZXRfb2JqZWN0X3Byb3BlcnRpZXMoc2VsZik6CiAgICAgICAgIyB5aW4gcHJvcGVydGllcwogICAgICAgIGRpcmVjdGlvbnMgPSB7IngrIjogMCwgIngtIjogMSwgInkrIjogMiwgInktIjogMywgInorIjogNCwgInotIjogNX0KICAgICAgICBjb250b3VyX21vZGVzID0ge05vbmU6IDAsICJxdWFkcmF0aWMiOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgInN0ZXAiOiAyLCAicXVhbnRpemUiOiAzLCAiY3VydmUiOiA0fQogICAgICAgIHNlbGYub2JqW2M0ZC5GSUVMRF9DT05UT1VSX01PREVdID0gY29udG91cl9tb2Rlc1siY3VydmUiXQogICAgICAgICMgeWFuZyBwcm9wZXJ0aWVzCiAgICAgICAgc2VsZi5vYmpbYzRkLkxJTkVBUl9TSVpFXSA9IHNlbGYubGVuZ3RoCiAgICAgICAgc2VsZi5vYmpbYzRkLkxJTkVBUl9ESVJFQ1RJT05dID0gZGlyZWN0aW9uc1tzZWxmLmRpcmVjdGlvbl0KCiAgICBkZWYgc2V0X3VuaXF1ZV9kZXNjX2lkcyhzZWxmKToKICAgICAgICBzZWxmLmRlc2NfaWRzID0gewogICAgICAgICAgICAibGVuZ3RoIjogYzRkLkRlc2NJRChjNGQuRGVzY0xldmVsKGM0ZC5MSU5FQVJfU0laRSwgYzRkLkRUWVBFX1JFQUwsIDApKQogICAgICAgIH0KCmNsYXNzIFNwaGVyaWNhbEZpZWxkKFByb3RvT2JqZWN0KToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgcmFkaXVzPTEwMCwgaW5uZXJfb2Zmc2V0PTEgLyAyLCAqKmt3YXJncyk6CiAgICAgICAgc2VsZi5yYWRpdXMgPSByYWRpdXMKICAgICAgICBzZWxmLmlubmVyX29mZnNldCA9IGlubmVyX29mZnNldAogICAgICAgIHN1cGVyKCkuX19pbml0X18oKiprd2FyZ3MpCgogICAgZGVmIHNwZWNpZnlfb2JqZWN0KHNlbGYpOgogICAgICAgIHNlbGYub2JqID0gYzRkLkJhc2VPYmplY3QoYzRkLkZzcGhlcmljYWwpCgogICAgZGVmIHNldF9vYmplY3RfcHJvcGVydGllcyhzZWxmKToKICAgICAgICBzZWxmLm9ialtjNGQuRklFTERfSU5ORVJfT0ZGU0VUXSA9IHNlbGYuaW5uZXJfb2Zmc2V0CiAgICAgICAgc2VsZi5vYmpbYzRkLkxJTkVBUl9TSVpFXSA9IHNlbGYucmFkaXVzCgpjbGFzcyBSYW5kb21GaWVsZChQcm90b09iamVjdCk6CgogICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKICAgICAgICBzdXBlcigpLl9faW5pdF9fKCoqa3dhcmdzKQoKICAgIGRlZiBzcGVjaWZ5X29iamVjdChzZWxmKToKICAgICAgICBzZWxmLm9iaiA9IGM0ZC5CYXNlT2JqZWN0KGM0ZC5GcmFuZG9tKQoKICAgIGRlZiBzZXRfb2JqZWN0X3Byb3BlcnRpZXMoc2VsZik6CiAgICAgICAgcGFzcwoKY2xhc3MgU3F1YXNoQW5kU3RyZXRjaChEZWZvcm1lcik6CgogICAgZGVmIHNwZWNpZnlfb2JqZWN0KHNlbGYpOgogICAgICAgIHNlbGYub2JqID0gYzRkLkJhc2VPYmplY3QoMTAyMTI4MCkKCiAgICBkZWYgc2V0X29iamVjdF9wcm9wZXJ0aWVzKHNlbGYpOgogICAgICAgICMgYmFzZWQgb24gdGhlIHZlcnRpY2FsIHJhZGl1cyBvZiB0aGUgdGFyZ2V0IHdlIHNldCB0aGUgYm91bmRhcmllcwogICAgICAgIGlmIGhhc2F0dHIoc2VsZi50YXJnZXQsICJkaWFtZXRlciIpOgogICAgICAgICAgICByYWRpdXMgPSBzZWxmLnRhcmdldC5kaWFtZXRlciAvIDIKICAgICAgICBlbHNlOgogICAgICAgICAgICByYWRpdXMgPSBzZWxmLnRhcmdldC5nZXRfcmFkaXVzKCkueQogICAgICAgIHNlbGYub2JqW2M0ZC5JRF9DQV9TUVVBU0hfT0JKRUNUX0hJR0hdID0gcmFkaXVzCiAgICAgICAgc2VsZi5vYmpbYzRkLklEX0NBX1NRVUFTSF9PQkpFQ1RfTE9XXSA9IC1yYWRpdXMKCiAgICBkZWYgc2V0X3VuaXF1ZV9kZXNjX2lkcyhzZWxmKToKICAgICAgICBzZWxmLmRlc2NfaWRzID0gewogICAgICAgICAgICAiZmFjdG9yIjogYzRkLkRlc2NJRChjNGQuRGVzY0xldmVsKGM0ZC5JRF9DQV9TUVVBU0hfT0JKRUNUX0ZBQ1RPUiwgYzRkLkRUWVBFX1JFQUwsIDApKSwKICAgICAgICAgICAgInRvcF9sZW5ndGgiOiBjNGQuRGVzY0lEKGM0ZC5EZXNjTGV2ZWwoYzRkLklEX0NBX1NRVUFTSF9PQkpFQ1RfSElHSCwgYzRkLkRUWVBFX1JFQUwsIDApKSwKICAgICAgICAgICAgImJvdHRvbV9sZW5ndGgiOiBjNGQuRGVzY0lEKGM0ZC5EZXNjTGV2ZWwoYzRkLklEX0NBX1NRVUFTSF9PQkpFQ1RfTE9XLCBjNGQuRFRZUEVfUkVBTCwgMCkpLAogICAgICAgIH0KCmNsYXNzIFNwaGVyaWZ5KERlZm9ybWVyKToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgdGFyZ2V0LCByYWRpdXM9MjAwLCBzdHJlbmd0aD0xLCAqKmt3YXJncyk6CiAgICAgICAgc2VsZi5yYWRpdXMgPSByYWRpdXMKICAgICAgICBzZWxmLnN0cmVuZ3RoID0gc3RyZW5ndGgKICAgICAgICBzdXBlcigpLl9faW5pdF9fKHRhcmdldD10YXJnZXQsICoqa3dhcmdzKQoKICAgIGRlZiBzcGVjaWZ5X29iamVjdChzZWxmKToKICAgICAgICBzZWxmLm9iaiA9IGM0ZC5CYXNlT2JqZWN0KGM0ZC5Pc3BoZXJpZnkpIAoKICAgIGRlZiBzZXRfb2JqZWN0X3Byb3BlcnRpZXMoc2VsZik6CiAgICAgICAgc2VsZi5vYmpbYzRkLlNQSEVSSUZZT0JKRUNUX1JBRElVU10gPSBzZWxmLnJhZGl1cwogICAgICAgIHNlbGYub2JqW2M0ZC5TUEhFUklGWU9CSkVDVF9TVFJFTkdUSF0gPSBzZWxmLnN0cmVuZ3RoCgogICAgZGVmIHNldF91bmlxdWVfZGVzY19pZHMoc2VsZik6CiAgICAgICAgc2VsZi5kZXNjX2lkcyA9IHsKICAgICAgICAgICAgInJhZGl1cyI6IGM0ZC5EZXNjSUQoYzRkLkRlc2NMZXZlbChjNGQuU1BIRVJJRllPQkpFQ1RfUkFESVVTLCBjNGQuRFRZUEVfUkVBTCwgMCkpLAogICAgICAgICAgICAic3RyZW5ndGgiOiBjNGQuRGVzY0lEKGM0ZC5EZXNjTGV2ZWwoYzRkLlNQSEVSSUZZT0JKRUNUX1NUUkVOR1RILCBjNGQuRFRZUEVfUkVBTCwgMCkpLAogICAgICAgIH0KCmNsYXNzIFdyYXAoRGVmb3JtZXIpOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YXJnZXQsIG1vZGU9InNwaGVyaWNhbCIsIGxvbmdpdHVkZV9zdGFydD1QSS8yLCBsb25naXR1ZGVfZW5kPTIqUEkrUEkvMiwgbGF0aXR1ZGVfc3RhcnQ9LVBJLzIsIGxhdGl0dWRlX2VuZD1QSS8yLCB3aWR0aD00MDAsIGhlaWdodD00MDAsIHJhZGl1cz0xMDAsIHRlbnNpb249MSwgKiprd2FyZ3MpOgogICAgICAgIHNlbGYubW9kZSA9IG1vZGUKICAgICAgICBzZWxmLmxvbmdpdHVkZV9zdGFydCA9IGxvbmdpdHVkZV9zdGFydAogICAgICAgIHNlbGYubG9uZ2l0dWRlX2VuZCA9IGxvbmdpdHVkZV9lbmQKICAgICAgICBzZWxmLmxhdGl0dWRlX3N0YXJ0ID0gbGF0aXR1ZGVfc3RhcnQKICAgICAgICBzZWxmLmxhdGl0dWRlX2VuZCA9IGxhdGl0dWRlX2VuZAogICAgICAgIHNlbGYud2lkdGggPSB3aWR0aAogICAgICAgIHNlbGYuaGVpZ2h0ID0gaGVpZ2h0CiAgICAgICAgc2VsZi5yYWRpdXMgPSByYWRpdXMKICAgICAgICBzZWxmLnRlbnNpb24gPSB0ZW5zaW9uCiAgICAgICAgc3VwZXIoKS5fX2luaXRfXyh0YXJnZXQ9dGFyZ2V0LCAqKmt3YXJncykKCiAgICBkZWYgc2V0X29iamVjdF9wcm9wZXJ0aWVzKHNlbGYpOgogICAgICAgIHdyYXBfbW9kZXMgPSB7InNwaGVyaWNhbCI6IDAsICJjeWxpbmRyaWNhbCI6IDF9CiAgICAgICAgc2VsZi5vYmpbYzRkLldSQVBPQkpFQ1RfVFlQRV0gPSB3cmFwX21vZGVzW3NlbGYubW9kZV0KICAgICAgICBzZWxmLm9ialtjNGQuV1JBUE9CSkVDVF9YU0FOR0xFXSA9IHNlbGYubG9uZ2l0dWRlX3N0YXJ0CiAgICAgICAgc2VsZi5vYmpbYzRkLldSQVBPQkpFQ1RfWEVBTkdMRV0gPSBzZWxmLmxvbmdpdHVkZV9lbmQKICAgICAgICBzZWxmLm9ialtjNGQuV1JBUE9CSkVDVF9ZU0FOR0xFXSA9IHNlbGYubGF0aXR1ZGVfc3RhcnQKICAgICAgICBzZWxmLm9ialtjNGQuV1JBUE9CSkVDVF9ZRUFOR0xFXSA9IHNlbGYubGF0aXR1ZGVfZW5kCiAgICAgICAgc2VsZi5vYmpbYzRkLldSQVBPQkpFQ1RfV0lEVEhdID0gc2VsZi53aWR0aAogICAgICAgIHNlbGYub2JqW2M0ZC5XUkFQT0JKRUNUX0hFSUdIVF0gPSBzZWxmLmhlaWdodAogICAgICAgIHNlbGYub2JqW2M0ZC5XUkFQT0JKRUNUX1JBRElVU10gPSBzZWxmLnJhZGl1cwogICAgICAgIHNlbGYub2JqW2M0ZC5XUkFQT0JKRUNUX1RFTlNJT05dID0gc2VsZi50ZW5zaW9uCgogICAgZGVmIHNwZWNpZnlfb2JqZWN0KHNlbGYpOgogICAgICAgIHNlbGYub2JqID0gYzRkLkJhc2VPYmplY3QoYzRkLk93cmFwKQoKICAgIGRlZiBzZXRfdW5pcXVlX2Rlc2NfaWRzKHNlbGYpOgogICAgICAgIHNlbGYuZGVzY19pZHMgPSB7CiAgICAgICAgICAgICJsb25naXR1ZGVfc3RhcnQiOiBjNGQuRGVzY0lEKGM0ZC5EZXNjTGV2ZWwoYzRkLldSQVBPQkpFQ1RfWFNBTkdMRSwgYzRkLkRUWVBFX1JFQUwsIDApKSwKICAgICAgICAgICAgImxvbmdpdHVkZV9lbmQiOiBjNGQuRGVzY0lEKGM0ZC5EZXNjTGV2ZWwoYzRkLldSQVBPQkpFQ1RfWEVBTkdMRSwgYzRkLkRUWVBFX1JFQUwsIDApKSwKICAgICAgICAgICAgImxhdGl0dWRlX3N0YXJ0IjogYzRkLkRlc2NJRChjNGQuRGVzY0xldmVsKGM0ZC5XUkFQT0JKRUNUX1lTQU5HTEUsIGM0ZC5EVFlQRV9SRUFMLCAwKSksCiAgICAgICAgICAgICJsYXRpdHVkZV9lbmQiOiBjNGQuRGVzY0lEKGM0ZC5EZXNjTGV2ZWwoYzRkLldSQVBPQkpFQ1RfWUVBTkdMRSwgYzRkLkRUWVBFX1JFQUwsIDApKSwKICAgICAgICAgICAgIndpZHRoIjogYzRkLkRlc2NJRChjNGQuRGVzY0xldmVsKGM0ZC5XUkFQT0JKRUNUX1dJRFRILCBjNGQuRFRZUEVfUkVBTCwgMCkpLAogICAgICAgICAgICAiaGVpZ2h0IjogYzRkLkRlc2NJRChjNGQuRGVzY0xldmVsKGM0ZC5XUkFQT0JKRUNUX0hFSUdIVCwgYzRkLkRUWVBFX1JFQUwsIDApKSwKICAgICAgICAgICAgInRlbnNpb24iOiBjNGQuRGVzY0lEKGM0ZC5EZXNjTGV2ZWwoYzRkLldSQVBPQkpFQ1RfVEVOU0lPTiwgYzRkLkRUWVBFX1JFQUwsIDApKSwKICAgICAgICB9",
4734  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAaAQAAAAAAABoBAAAAAAAAAAAAAAAA8L8"
4735  				],
4736  				[
4737  					41,
4738  					1,
4739  					"insert",
4740  					{
4741  						"characters": ","
4742  					},
4743  					"AQAAAL0EAAAAAAAAvgQAAAAAAAAAAAAA",
4744  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAC9BAAAAAAAAL0EAAAAAAAAAAAAAAAA8L8"
4745  				],
4746  				[
4747  					42,
4748  					1,
4749  					"insert",
4750  					{
4751  						"characters": " Lin"
4752  					},
4753  					"BAAAAL4EAAAAAAAAvwQAAAAAAAAAAAAAvwQAAAAAAADABAAAAAAAAAAAAADABAAAAAAAAMEEAAAAAAAAAAAAAMEEAAAAAAAAwgQAAAAAAAAAAAAA",
4754  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAC+BAAAAAAAAL4EAAAAAAAAAAAAAAAA8L8"
4755  				],
4756  				[
4757  					43,
4758  					1,
4759  					"insert_completion",
4760  					{
4761  						"completion": "LineObject",
4762  						"format": "snippet",
4763  						"keep_prefix": false,
4764  						"must_insert": false,
4765  						"trigger": "LineObject"
4766  					},
4767  					"AgAAAL8EAAAAAAAAvwQAAAAAAAADAAAATGluvwQAAAAAAADJBAAAAAAAAAAAAAA",
4768  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADCBAAAAAAAAMIEAAAAAAAAAAAAAAAA8L8"
4769  				],
4770  				[
4771  					65,
4772  					1,
4773  					"run_macro_file",
4774  					{
4775  						"file": "res://Packages/Default/Delete to Hard BOL.sublime-macro"
4776  					},
4777  					"AQAAAOEAAAAAAAAA4QAAAAAAAAA5AAAAZnJvbSBweWRlYXRpb24ub2JqZWN0cy5hYnN0cmFjdF9vYmplY3RzIGltcG9ydCBMaW5lT2JqZWN0",
4778  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAaAQAAAAAAABoBAAAAAAAA////////738"
4779  				],
4780  				[
4781  					66,
4782  					1,
4783  					"left_delete",
4784  					null,
4785  					"AQAAAOAAAAAAAAAA4AAAAAAAAAABAAAACg",
4786  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADhAAAAAAAAAOEAAAAAAAAAAAAAAAAA8L8"
4787  				],
4788  				[
4789  					69,
4790  					1,
4791  					"insert",
4792  					{
4793  						"characters": ","
4794  					},
4795  					"AQAAAEkAAAAAAAAASgAAAAAAAAAAAAAA",
4796  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABJAAAAAAAAAEkAAAAAAAAA////////738"
4797  				],
4798  				[
4799  					70,
4800  					1,
4801  					"insert",
4802  					{
4803  						"characters": " Line"
4804  					},
4805  					"BQAAAEoAAAAAAAAASwAAAAAAAAAAAAAASwAAAAAAAABMAAAAAAAAAAAAAABMAAAAAAAAAE0AAAAAAAAAAAAAAE0AAAAAAAAATgAAAAAAAAAAAAAATgAAAAAAAABPAAAAAAAAAAAAAAA",
4806  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABKAAAAAAAAAEoAAAAAAAAAAAAAAAAA8L8"
4807  				],
4808  				[
4809  					71,
4810  					1,
4811  					"insert_completion",
4812  					{
4813  						"completion": "LineObject",
4814  						"format": "text",
4815  						"keep_prefix": false,
4816  						"must_insert": false,
4817  						"trigger": "LineObject"
4818  					},
4819  					"AgAAAEsAAAAAAAAASwAAAAAAAAAEAAAATGluZUsAAAAAAAAAVQAAAAAAAAAAAAAA",
4820  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABPAAAAAAAAAE8AAAAAAAAAAAAAAAAA8L8"
4821  				],
4822  				[
4823  					73,
4824  					1,
4825  					"insert",
4826  					{
4827  						"characters": "#"
4828  					},
4829  					"AQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAA",
4830  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
4831  				],
4832  				[
4833  					74,
4834  					1,
4835  					"left_delete",
4836  					null,
4837  					"AQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAIw",
4838  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAA8L8"
4839  				],
4840  				[
4841  					80,
4842  					1,
4843  					"insert",
4844  					{
4845  						"characters": "#"
4846  					},
4847  					"AQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAA",
4848  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
4849  				],
4850  				[
4851  					81,
4852  					1,
4853  					"left_delete",
4854  					null,
4855  					"AQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAIw",
4856  					"BQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwvwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAA8L8"
4857  				]
4858  			]
4859  		},
4860  		{
4861  			"contents": "(base) davidrug@Davids-MBP-2 pydeation %                                                                                                               \n(base) davidrug@Davids-MBP-2 pydeation %                                                                                                               \n(base) davidrug@Davids-MBP-2 pydeation % ",
4862  			"settings":
4863  			{
4864  				"buffer_size": 345,
4865  				"line_ending": "Unix",
4866  				"name": "Login Shell",
4867  				"scratch": true
4868  			}
4869  		}
4870  	],
4871  	"build_system": "Packages/User/c4dpy.sublime-build",
4872  	"build_system_choices":
4873  	[
4874  		[
4875  			[
4876  				[
4877  					"Anaconda Python Builder",
4878  					""
4879  				],
4880  				[
4881  					"Packages/Python/Python.sublime-build",
4882  					""
4883  				],
4884  				[
4885  					"Packages/Python/Python.sublime-build",
4886  					"Syntax Check"
4887  				]
4888  			],
4889  			[
4890  				"Anaconda Python Builder",
4891  				""
4892  			]
4893  		],
4894  		[
4895  			[
4896  				[
4897  					"Packages/Python/Python.sublime-build",
4898  					""
4899  				],
4900  				[
4901  					"Packages/Python/Python.sublime-build",
4902  					"Syntax Check"
4903  				]
4904  			],
4905  			[
4906  				"Packages/Python/Python.sublime-build",
4907  				""
4908  			]
4909  		],
4910  		[
4911  			[
4912  				[
4913  					"Packages/User/c4dpy.sublime-build",
4914  					""
4915  				],
4916  				[
4917  					"Packages/User/c4dpy.sublime-build",
4918  					"c4dpy"
4919  				],
4920  				[
4921  					"Packages/User/c4dpy.sublime-build",
4922  					"CPython"
4923  				]
4924  			],
4925  			[
4926  				"Packages/User/c4dpy.sublime-build",
4927  				"CPython"
4928  			]
4929  		]
4930  	],
4931  	"build_varint": "",
4932  	"command_palette":
4933  	{
4934  		"height": 0.0,
4935  		"last_filter": "",
4936  		"selected_items":
4937  		[
4938  			[
4939  				"",
4940  				"Anaconda: Find object usage"
4941  			],
4942  			[
4943  				"anaconda",
4944  				"Anaconda: Rename object under cursor"
4945  			],
4946  			[
4947  				"co",
4948  				"Copilot: Check Status"
4949  			],
4950  			[
4951  				"co sign",
4952  				"Copilot: Sign In"
4953  			],
4954  			[
4955  				"copilo",
4956  				"Preferences: LSP-copilot Settings"
4957  			],
4958  			[
4959  				"packa",
4960  				"Package Control: List Packages"
4961  			],
4962  			[
4963  				"copilot",
4964  				"Copilot: Check Status"
4965  			],
4966  			[
4967  				"Copi",
4968  				"Copilot: Check Status"
4969  			],
4970  			[
4971  				"Cop",
4972  				"Copilot: Sign In"
4973  			],
4974  			[
4975  				"inst",
4976  				"Package Control: Install Package"
4977  			],
4978  			[
4979  				"install",
4980  				"Package Control: Install Package"
4981  			],
4982  			[
4983  				"Install pa",
4984  				"Package Control: Install Package"
4985  			],
4986  			[
4987  				"Install Package Control",
4988  				"Install Package Control"
4989  			]
4990  		],
4991  		"width": 0.0
4992  	},
4993  	"console":
4994  	{
4995  		"height": 163.0,
4996  		"history":
4997  		[
4998  			"import socket; socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect((\"localhost\", 49466))",
4999  			"import socket; socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect((\"localhost\", 51216))"
5000  		]
5001  	},
5002  	"distraction_free":
5003  	{
5004  		"menu_visible": true,
5005  		"show_minimap": false,
5006  		"show_open_files": false,
5007  		"show_tabs": false,
5008  		"side_bar_visible": false,
5009  		"status_bar_visible": false
5010  	},
5011  	"expanded_folders":
5012  	[
5013  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation",
5014  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/animation",
5015  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/assets",
5016  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/objects",
5017  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/library/scripts/pydeation-testing",
5018  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/library/scripts/DreamTalkProjects"
5019  	],
5020  	"file_history":
5021  	[
5022  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/objects/abstract_objects.py",
5023  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/objects/solid_objects.py",
5024  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/objects/line_objects.py",
5025  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/objects/custom_objects.py",
5026  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/objects/camera_objects.py",
5027  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/scene.py",
5028  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/imports.py",
5029  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/objects/effect_objects.py",
5030  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/library/scripts/pydeation-testing/testing.py",
5031  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/animation/abstract_animators.py",
5032  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/objects/helper_objects.py",
5033  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/objects/sketch_objects.py",
5034  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/library/scripts/DreamTalkProjects/ad4m.py",
5035  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/xpresso/xpressions.py",
5036  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/animation/animation.py",
5037  		"/Users/davidrug/Documents/Ataraxia/InterfaceGuy/CodingAdventures/DreamTalkProjects/ad4m.py",
5038  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/library/scripts/pydeation-PL-pitch/pitch.py",
5039  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/library/scripts/PyTalk-CustodianOfTheNoosphere/custodian_of_the_noosphere.py",
5040  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/DreamTalk.txt",
5041  		"/Users/davidrug/Library/Mobile Documents/com~apple~CloudDocs/Unclutter/UnclutterFiles/NussschalenBeauftragter.svg",
5042  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/materials.py",
5043  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/library/scripts/pytalk-interfaceguy-intro/interfaceguy_intro.py",
5044  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/constants.py",
5045  		"/Users/davidrug/Documents/InterfaceGuy/CodingAdventures/svg2key-cli/svg2keynote",
5046  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/assets/svg/right_eye.svg",
5047  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/assets/svg/wave.svg",
5048  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/objects/__init__.py",
5049  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/xpresso/userdata.py",
5050  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/xpresso/xpresso.py",
5051  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/objects/action_objects.py",
5052  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/animation/fill_animators.py",
5053  		"/Users/davidrug/Library/Mobile Documents/com~apple~CloudDocs/Unclutter/Unclutter Files/fix_svg.py",
5054  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/assets/svg/man.svg",
5055  		"/Users/davidrug/Library/Mobile Documents/com~apple~CloudDocs/Unclutter/Unclutter Files/run_clipboard.py",
5056  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/utils.py",
5057  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/tags.py",
5058  		"/Users/davidrug/Documents/Python/mac_adress_changer.py",
5059  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/animation/transition_animators.py",
5060  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/objects/light_objects.py",
5061  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/animation/composed_animators.py",
5062  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/animation/object_animators.py",
5063  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/animation/sketch_animators.py",
5064  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/objects/svg_objects.py",
5065  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/document.py",
5066  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation/pydeation.sublime-project",
5067  		"/Users/davidrug/Documents/Python/Projects/pydeation-horizon-border/README.md",
5068  		"/Users/davidrug/Documents/Python/Projects/pydeation-horizon-border/horizon_border.py",
5069  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/library/scripts/pydeation-PL-pitch/README.md",
5070  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/library/scripts/pydeation-testing/.gitignore",
5071  		"/Users/davidrug/Library/Application Support/Sublime Text/Packages/User/Anaconda.sublime-settings",
5072  		"/Users/davidrug/Library/Application Support/Sublime Text/Packages/Anaconda/Anaconda.sublime-settings",
5073  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/library/scripts/pydeation-testing/testing.py",
5074  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeation/objects/abstract_objects.py",
5075  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeation/scene.py",
5076  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeation/constants.py",
5077  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeation/xpresso/xpresso.py",
5078  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeation/xpresso/userdata.py",
5079  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeation/animation/sketch_animators.py",
5080  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeation/animation/animation.py",
5081  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeation/xpresso/xpressions.py",
5082  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeation/objects/line_objects.py",
5083  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeation/animation/fill_animators.py",
5084  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeation/animation/abstract_animators.py",
5085  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeation/animation/object_animators.py",
5086  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeation/tags.py",
5087  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeation/imports.py",
5088  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/library/scripts/pydeation/objects/solid_objects.py",
5089  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/library/scripts/pydeation/imports.py",
5090  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/library/scripts/pydeation/xpresso/xpresso.py",
5091  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/library/scripts/pydeation/xpresso/xpressions.py",
5092  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeation/xpresso/test.py",
5093  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeation/xpressions/userdata.py",
5094  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeation/xpressions.py",
5095  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeation/pydeationV2.sublime-project",
5096  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeation/pydeation.sublime-project",
5097  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/library/scripts/PydeationProjects/diverse/InterfaceGuy/testProject/testProjectV2.py",
5098  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeation/materials.py",
5099  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeation/objects/helper_objects.py",
5100  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeation/objects/solid_objects.py",
5101  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeation/animation/composed_animators.py",
5102  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeation/objects/svg_objects.py",
5103  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/library/scripts/PydeationProjects/diverse/InterfaceGuy/memetics/memetics.py",
5104  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/library/scripts/PydeationProjects/diverse/InterfaceGuy/testProject/closeDocs.py",
5105  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/library/scripts/PydeationProjects/diverse/InterfaceGuy/fourier_transform/fourier_transform.py",
5106  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/library/scripts/PydeationProjects/diverse/InterfaceGuy/testProject/testing.py",
5107  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeation/document.py",
5108  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/library/scripts/PydeationProjects/pitch/InterfaceGuy/pitch/pitch.py",
5109  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeationlib/scene/scene.py",
5110  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeationlib/animation/animator.py",
5111  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeationlib/object/mograph.py",
5112  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeationlib/constants.py",
5113  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/library/scripts/PydeationProjects/diverse/InterfaceGuy/testProject/testProject.py",
5114  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeationlib/camera/camera.py",
5115  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeationlib/object/vector_graphics.py",
5116  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeationlib/object/object.py",
5117  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeationlib/assets/svg/tree.svg",
5118  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeationlib/assets/svg/david.svg",
5119  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeationlib/metadata.py",
5120  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeationlib/object/custom_objects.py",
5121  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/library/scripts/PydeationProjects/pitch/InterfaceGuy/stem/stem.py",
5122  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/library/scripts/PydeationProjects/pitch/InterfaceGuy/seed/seed.py",
5123  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeationlib/LICENSE",
5124  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/library/scripts/PydeationProjects/dialectic/DanielSchmachtenberger/left-right/left-right.py",
5125  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/library/scripts/PydeationProjects/diverse/InterfaceGuy/branching/branching.py",
5126  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/library/scripts/PydeationProjects/diverse/InterfaceGuy/dialectical_thinking/dialectical_thinking.py",
5127  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/library/scripts/PydeationProjects/diverse/InterfaceGuy/intro/intro.py",
5128  		"/Users/davidrug/Library/Mobile Documents/com~apple~CloudDocs/Unclutter/Unclutter Files/Ohne Titel 6.svg",
5129  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeationlib/project.py",
5130  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeationlib/assets/svg/gear_big.svg",
5131  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/library/scripts/PydeationProjects/diverse/InterfaceGuy/dialectic_transitions/dialectic.py",
5132  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/library/scripts/PydeationProjects/clips/DanielSchmachtenberger/NavigatingReality/navigating_reality.py",
5133  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeationlib/assets/svg/individual.svg",
5134  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/library/scripts/PydeationProjects/dialectic/DanielSchmachtenberger/being-becoming/being-becoming.py",
5135  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeationlib/assets/svg/emu.svg",
5136  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/library/scripts/PydeationProjects/dialectic/DanielSchmachtenberger/conservative-progressive/conservative-progressive.py",
5137  		"/Users/davidrug/Documents/Python/Projects/pydeation/pydeation.sublime-project",
5138  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/library/scripts/PydeationProjects/diverse/InterfaceGuy/dialectical_thinking/dialectical_thinking",
5139  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/library/scripts/PydeationProjects/diverse/InterfaceGuy/dialectic/dialectic.py",
5140  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R24_36E19156/python39/libs/pydeationlib/scene/scene.py",
5141  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R24_36E19156/library/scripts/PydeationProjects/diverse/InterfaceGuy/logo/logo.py",
5142  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R24_36E19156/python39/libs/pydeationlib/object/custom_objects.py",
5143  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeationlib/assets/2D/social_system.jpeg",
5144  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeationlib/assets/2D/vector_graphics_pydeation.key",
5145  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeationlib/assets/2D/test.svg",
5146  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R25_EBA43BEE/python39/libs/pydeationlib/assets/2D/individual.jpeg",
5147  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R24_36E19156/python39/libs/pydeationlib/object/object.py",
5148  		"/Users/davidrug/Library/Mobile Documents/com~apple~CloudDocs/Unclutter/Unclutter Files/test.svg",
5149  		"/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R24_36E19156/library/scripts/PydeationProjects/diverse/InterfaceGuy/testProject/testProject.py"
5150  	],
5151  	"find":
5152  	{
5153  		"height": 24.0
5154  	},
5155  	"find_in_files":
5156  	{
5157  		"height": 98.0,
5158  		"where_history":
5159  		[
5160  			"",
5161  			"<current file>",
5162  			""
5163  		]
5164  	},
5165  	"find_state":
5166  	{
5167  		"case_sensitive": false,
5168  		"find_history":
5169  		[
5170  			"[c4d.OUTLINEMAT_FILTER_STROKES]",
5171  			"solid_objects",
5172  			"helper_objects",
5173  			"VisibleObject",
5174  			"easing",
5175  			"sketch_opacity",
5176  			"movement",
5177  			"mospline_correction",
5178  			"helper_objects",
5179  			"effect_objects",
5180  			"GetActiveDocument",
5181  			"effect_objects",
5182  			"color",
5183  			"WHITE",
5184  			"color",
5185  			"specify_sketch_parameters",
5186  			"outline",
5187  			"honeycomb_clone_step_size_width",
5188  			"honeycomb_clone_step_size_height",
5189  			"honeycomb_clone_step_size_width",
5190  			"clone_step_size_height",
5191  			"clone_step_size_width",
5192  			"count_height",
5193  			"count_width",
5194  			"step_size",
5195  			"mospline",
5196  			"600000021",
5197  			"add_clones",
5198  			"custom_objects",
5199  			".height",
5200  			"height",
5201  			"self.width",
5202  			"wrapper_completion_parameter",
5203  			"EquilateralTriangle",
5204  			"PRIM_NSIDE_POINT_COUNT",
5205  			"opacity_parameter",
5206  			"class",
5207  			" - PI",
5208  			"front",
5209  			"True",
5210  			"radius",
5211  			"name",
5212  			"100",
5213  			"200",
5214  			"PI",
5215  			"self.plane",
5216  			"Square",
5217  			"200",
5218  			"25",
5219  			"downward_spiral",
5220  			"26",
5221  			"24",
5222  			"set_resolution",
5223  			"class",
5224  			"ThicknessParameter",
5225  			"thickness_parameter",
5226  			"fold_parameter",
5227  			"self.fold",
5228  			"fission",
5229  			"Fission",
5230  			"fission_action_parameter",
5231  			"start_angle",
5232  			"end_radius",
5233  			"class",
5234  			"):\n    \"\"\"turns a c4d spline into a hidden pydeation spline\"\"\"\n\n    def __init__(self, input_spline, spline_type=\"bezier\", **kwargs):\n        self.input_spline = self.get_spline(input_spline)\n        self.spline_type = spline_type\n        super().__init__(**kwargs)\n\n    def get_spline(self, input_spline):\n        # turns any primitive spline into a single editable spline\n        if type(input_spline) is not c4d.SplineObject:\n            pass\n        return input_spline\n\n    def specify_object(self):\n        self.obj = self.input_spline.GetClone()\n\n    def set_object_properties(self):\n        spline_types = {\n            \"linear\": 0,\n            \"cubic\": 1,\n            \"akima\": 2,\n            \"b-spline\": 3,\n            \"bezier\": 4\n        }\n        # set interpolation\n        self.obj[c4d.SPLINEOBJECT_TYPE] = spline_types[self.spline_type]",
5235  			"class ",
5236  			"class",
5237  			"morph",
5238  			"FILLER_TRANSPARENCY",
5239  			"[c4d.OUTLINEMAT_THICKNESS]",
5240  			"set_resolution",
5241  			"25",
5242  			"22",
5243  			"24",
5244  			"22",
5245  			"23",
5246  			"25",
5247  			"UpwardSpiral",
5248  			"upward_spiral",
5249  			"trinity",
5250  			"upward_spiral",
5251  			"200",
5252  			"move_orbit",
5253  			"2/3",
5254  			"draw_parameter",
5255  			"right_semi_circle",
5256  			"upward",
5257  			"trinity",
5258  			"0",
5259  			"35",
5260  			"mospline",
5261  			"MoSpline",
5262  			"mospline",
5263  			"path",
5264  			"False",
5265  			"matrices",
5266  			"start_object_has_border",
5267  			"rectangle",
5268  			"right_semi_circle",
5269  			"left_semi_circle",
5270  			"right_semi_circle",
5271  			"symbol",
5272  			"Node",
5273  			"Spiral",
5274  			"spline_ini",
5275  			"object_ini",
5276  			"wave",
5277  			"interface",
5278  			"parallel",
5279  			"draw_parameter",
5280  			"WHITE",
5281  			"aang_eyes",
5282  			"(0, 2/3)",
5283  			"self",
5284  			"circle",
5285  			"wave",
5286  			"20",
5287  			"8",
5288  			"right_eye",
5289  			"1",
5290  			"custome_objects",
5291  			"100",
5292  			"left_eye",
5293  			"from",
5294  			"Membrane",
5295  			"from",
5296  			"Membrane",
5297  			"action_parameter"
5298  		],
5299  		"highlight": true,
5300  		"in_selection": false,
5301  		"preserve_case": false,
5302  		"regex": false,
5303  		"replace_history":
5304  		[
5305  			"Triangle",
5306  			"ScalarAnimation",
5307  			"BoolAnimation",
5308  			"animation",
5309  			"__init__",
5310  			"",
5311  			"self",
5312  			"director",
5313  			"Director",
5314  			".sketch_objects",
5315  			"UOptions",
5316  			"XIdentity",
5317  			".xpressions",
5318  			"interpolation",
5319  			"desc_id",
5320  			" ",
5321  			"polar2cartesian"
5322  		],
5323  		"reverse": false,
5324  		"scrollbar_highlights": true,
5325  		"show_context": true,
5326  		"use_buffer2": true,
5327  		"use_gitignore": true,
5328  		"whole_word": false,
5329  		"wrap": true
5330  	},
5331  	"groups":
5332  	[
5333  		{
5334  			"sheets":
5335  			[
5336  				{
5337  					"buffer": 0,
5338  					"file": "objects/sketch_objects.py",
5339  					"semi_transient": false,
5340  					"settings":
5341  					{
5342  						"buffer_size": 6267,
5343  						"regions":
5344  						{
5345  						},
5346  						"selection":
5347  						[
5348  							[
5349  								906,
5350  								906
5351  							]
5352  						],
5353  						"settings":
5354  						{
5355  							"auto_complete_triggers":
5356  							[
5357  								{
5358  									"characters": ".",
5359  									"selector": "source.python - string - comment - constant.numeric"
5360  								}
5361  							],
5362  							"bracket_highlighter.busy": false,
5363  							"bracket_highlighter.locations":
5364  							{
5365  								"close":
5366  								{
5367  								},
5368  								"icon":
5369  								{
5370  								},
5371  								"open":
5372  								{
5373  								},
5374  								"unmatched":
5375  								{
5376  								}
5377  							},
5378  							"bracket_highlighter.regions":
5379  							[
5380  								"bh_angle",
5381  								"bh_angle_center",
5382  								"bh_angle_open",
5383  								"bh_angle_close",
5384  								"bh_angle_content",
5385  								"bh_square",
5386  								"bh_square_center",
5387  								"bh_square_open",
5388  								"bh_square_close",
5389  								"bh_square_content",
5390  								"bh_unmatched",
5391  								"bh_unmatched_center",
5392  								"bh_unmatched_open",
5393  								"bh_unmatched_close",
5394  								"bh_unmatched_content",
5395  								"bh_single_quote",
5396  								"bh_single_quote_center",
5397  								"bh_single_quote_open",
5398  								"bh_single_quote_close",
5399  								"bh_single_quote_content",
5400  								"bh_c_define",
5401  								"bh_c_define_center",
5402  								"bh_c_define_open",
5403  								"bh_c_define_close",
5404  								"bh_c_define_content",
5405  								"bh_tag",
5406  								"bh_tag_center",
5407  								"bh_tag_open",
5408  								"bh_tag_close",
5409  								"bh_tag_content",
5410  								"bh_double_quote",
5411  								"bh_double_quote_center",
5412  								"bh_double_quote_open",
5413  								"bh_double_quote_close",
5414  								"bh_double_quote_content",
5415  								"bh_round",
5416  								"bh_round_center",
5417  								"bh_round_open",
5418  								"bh_round_close",
5419  								"bh_round_content",
5420  								"bh_curly",
5421  								"bh_curly_center",
5422  								"bh_curly_open",
5423  								"bh_curly_close",
5424  								"bh_curly_content",
5425  								"bh_regex",
5426  								"bh_regex_center",
5427  								"bh_regex_open",
5428  								"bh_regex_close",
5429  								"bh_regex_content",
5430  								"bh_default",
5431  								"bh_default_center",
5432  								"bh_default_open",
5433  								"bh_default_close",
5434  								"bh_default_content"
5435  							],
5436  							"copilot.completion._is_modified": false,
5437  							"copilot.completion._is_saving": false,
5438  							"copilot.completion.completion_index": 0,
5439  							"copilot.completion.completion_style": "popup",
5440  							"copilot.completion.completions":
5441  							[
5442  								{
5443  									"displayText": "f\"membrane: {self.membrane.obj}\")",
5444  									"docVersion": 235,
5445  									"point": 1269,
5446  									"position":
5447  									{
5448  										"character": 14,
5449  										"line": 32
5450  									},
5451  									"range":
5452  									{
5453  										"end":
5454  										{
5455  											"character": 15,
5456  											"line": 32
5457  										},
5458  										"start":
5459  										{
5460  											"character": 0,
5461  											"line": 32
5462  										}
5463  									},
5464  									"region":
5465  									[
5466  										1255,
5467  										1270
5468  									],
5469  									"text": "        print(f\"membrane: {self.membrane.obj}\")",
5470  									"uuid": "e40a0073-f009-44ab-90c2-0eb030ff3372"
5471  								},
5472  								{
5473  									"displayText": "self.membrane.obj.GetUp().GetName())",
5474  									"docVersion": 235,
5475  									"point": 1269,
5476  									"position":
5477  									{
5478  										"character": 14,
5479  										"line": 32
5480  									},
5481  									"range":
5482  									{
5483  										"end":
5484  										{
5485  											"character": 15,
5486  											"line": 32
5487  										},
5488  										"start":
5489  										{
5490  											"character": 0,
5491  											"line": 32
5492  										}
5493  									},
5494  									"region":
5495  									[
5496  										1255,
5497  										1270
5498  									],
5499  									"text": "        print(self.membrane.obj.GetUp().GetName())",
5500  									"uuid": "df888b6d-4ec4-42c8-9a72-235d4d79b805"
5501  								}
5502  							],
5503  							"copilot.completion.is_visible": false,
5504  							"copilot.completion.is_visible_panel_completions": false,
5505  							"copilot.completion.is_waiting_completion": false,
5506  							"copilot.completion.is_waiting_panel_completions": false,
5507  							"copilot.completion.original_layout": null,
5508  							"lsp_active": true,
5509  							"lsp_uri": "file:///Users/davidrug/Library/Preferences/Maxon/Maxon%20Cinema%204D%20R26_8986B2D7/python39/libs/pydeation/objects/sketch_objects.py",
5510  							"syntax": "Packages/Python/Python.sublime-syntax",
5511  							"tab_size": 4,
5512  							"translate_tabs_to_spaces": true
5513  						},
5514  						"translation.x": 0.0,
5515  						"translation.y": 0.0,
5516  						"zoom_level": 1.0
5517  					},
5518  					"stack_index": 3,
5519  					"stack_multiselect": false,
5520  					"type": "text"
5521  				},
5522  				{
5523  					"buffer": 1,
5524  					"file": "objects/abstract_objects.py",
5525  					"semi_transient": false,
5526  					"settings":
5527  					{
5528  						"buffer_size": 35430,
5529  						"regions":
5530  						{
5531  						},
5532  						"selection":
5533  						[
5534  							[
5535  								584,
5536  								584
5537  							]
5538  						],
5539  						"settings":
5540  						{
5541  							"auto_complete_triggers":
5542  							[
5543  								{
5544  									"characters": ".",
5545  									"selector": "source.python - string - comment - constant.numeric"
5546  								}
5547  							],
5548  							"bracket_highlighter.busy": false,
5549  							"bracket_highlighter.locations":
5550  							{
5551  								"close":
5552  								{
5553  								},
5554  								"icon":
5555  								{
5556  								},
5557  								"open":
5558  								{
5559  								},
5560  								"unmatched":
5561  								{
5562  								}
5563  							},
5564  							"bracket_highlighter.regions":
5565  							[
5566  								"bh_angle",
5567  								"bh_angle_center",
5568  								"bh_angle_open",
5569  								"bh_angle_close",
5570  								"bh_angle_content",
5571  								"bh_single_quote",
5572  								"bh_single_quote_center",
5573  								"bh_single_quote_open",
5574  								"bh_single_quote_close",
5575  								"bh_single_quote_content",
5576  								"bh_tag",
5577  								"bh_tag_center",
5578  								"bh_tag_open",
5579  								"bh_tag_close",
5580  								"bh_tag_content",
5581  								"bh_default",
5582  								"bh_default_center",
5583  								"bh_default_open",
5584  								"bh_default_close",
5585  								"bh_default_content",
5586  								"bh_unmatched",
5587  								"bh_unmatched_center",
5588  								"bh_unmatched_open",
5589  								"bh_unmatched_close",
5590  								"bh_unmatched_content",
5591  								"bh_regex",
5592  								"bh_regex_center",
5593  								"bh_regex_open",
5594  								"bh_regex_close",
5595  								"bh_regex_content",
5596  								"bh_double_quote",
5597  								"bh_double_quote_center",
5598  								"bh_double_quote_open",
5599  								"bh_double_quote_close",
5600  								"bh_double_quote_content",
5601  								"bh_square",
5602  								"bh_square_center",
5603  								"bh_square_open",
5604  								"bh_square_close",
5605  								"bh_square_content",
5606  								"bh_c_define",
5607  								"bh_c_define_center",
5608  								"bh_c_define_open",
5609  								"bh_c_define_close",
5610  								"bh_c_define_content",
5611  								"bh_curly",
5612  								"bh_curly_center",
5613  								"bh_curly_open",
5614  								"bh_curly_close",
5615  								"bh_curly_content",
5616  								"bh_round",
5617  								"bh_round_center",
5618  								"bh_round_open",
5619  								"bh_round_close",
5620  								"bh_round_content"
5621  							],
5622  							"copilot.completion._is_modified": false,
5623  							"copilot.completion._is_saving": false,
5624  							"copilot.completion.completion_index": 0,
5625  							"copilot.completion.completion_style": "popup",
5626  							"copilot.completion.completions":
5627  							[
5628  								{
5629  									"displayText": "import pydeation.objects.helper_objects as helper_objects",
5630  									"docVersion": 165,
5631  									"point": 584,
5632  									"position":
5633  									{
5634  										"character": 0,
5635  										"line": 10
5636  									},
5637  									"range":
5638  									{
5639  										"end":
5640  										{
5641  											"character": 0,
5642  											"line": 10
5643  										},
5644  										"start":
5645  										{
5646  											"character": 0,
5647  											"line": 10
5648  										}
5649  									},
5650  									"region":
5651  									[
5652  										584,
5653  										584
5654  									],
5655  									"text": "import pydeation.objects.helper_objects as helper_objects",
5656  									"uuid": "1ed50cae-804b-4679-be23-21a9c591e97d"
5657  								}
5658  							],
5659  							"copilot.completion.is_visible": false,
5660  							"copilot.completion.is_visible_panel_completions": false,
5661  							"copilot.completion.is_waiting_completion": false,
5662  							"copilot.completion.is_waiting_panel_completions": false,
5663  							"copilot.completion.original_layout": null,
5664  							"lsp_active": true,
5665  							"lsp_uri": "file:///Users/davidrug/Library/Preferences/Maxon/Maxon%20Cinema%204D%20R26_8986B2D7/python39/libs/pydeation/objects/abstract_objects.py",
5666  							"syntax": "Packages/Python/Python.sublime-syntax",
5667  							"tab_size": 4,
5668  							"translate_tabs_to_spaces": true
5669  						},
5670  						"translation.x": 0.0,
5671  						"translation.y": 0.0,
5672  						"zoom_level": 1.0
5673  					},
5674  					"stack_index": 1,
5675  					"stack_multiselect": false,
5676  					"type": "text"
5677  				},
5678  				{
5679  					"buffer": 2,
5680  					"file": "xpresso/xpressions.py",
5681  					"semi_transient": false,
5682  					"settings":
5683  					{
5684  						"buffer_size": 66772,
5685  						"regions":
5686  						{
5687  						},
5688  						"selection":
5689  						[
5690  							[
5691  								48573,
5692  								48573
5693  							]
5694  						],
5695  						"settings":
5696  						{
5697  							"auto_complete_triggers":
5698  							[
5699  								{
5700  									"characters": ".",
5701  									"selector": "source.python - string - comment - constant.numeric"
5702  								}
5703  							],
5704  							"bracket_highlighter.busy": false,
5705  							"bracket_highlighter.locations":
5706  							{
5707  								"close":
5708  								{
5709  									"1":
5710  									[
5711  										48574,
5712  										48575
5713  									]
5714  								},
5715  								"icon":
5716  								{
5717  									"1":
5718  									[
5719  										"Packages/BracketHighlighter/icons/round_bracket.png",
5720  										"region.yellowish"
5721  									]
5722  								},
5723  								"open":
5724  								{
5725  									"1":
5726  									[
5727  										48511,
5728  										48512
5729  									]
5730  								},
5731  								"unmatched":
5732  								{
5733  								}
5734  							},
5735  							"bracket_highlighter.regions":
5736  							[
5737  								"bh_angle",
5738  								"bh_angle_center",
5739  								"bh_angle_open",
5740  								"bh_angle_close",
5741  								"bh_angle_content",
5742  								"bh_single_quote",
5743  								"bh_single_quote_center",
5744  								"bh_single_quote_open",
5745  								"bh_single_quote_close",
5746  								"bh_single_quote_content",
5747  								"bh_tag",
5748  								"bh_tag_center",
5749  								"bh_tag_open",
5750  								"bh_tag_close",
5751  								"bh_tag_content",
5752  								"bh_default",
5753  								"bh_default_center",
5754  								"bh_default_open",
5755  								"bh_default_close",
5756  								"bh_default_content",
5757  								"bh_unmatched",
5758  								"bh_unmatched_center",
5759  								"bh_unmatched_open",
5760  								"bh_unmatched_close",
5761  								"bh_unmatched_content",
5762  								"bh_regex",
5763  								"bh_regex_center",
5764  								"bh_regex_open",
5765  								"bh_regex_close",
5766  								"bh_regex_content",
5767  								"bh_double_quote",
5768  								"bh_double_quote_center",
5769  								"bh_double_quote_open",
5770  								"bh_double_quote_close",
5771  								"bh_double_quote_content",
5772  								"bh_square",
5773  								"bh_square_center",
5774  								"bh_square_open",
5775  								"bh_square_close",
5776  								"bh_square_content",
5777  								"bh_c_define",
5778  								"bh_c_define_center",
5779  								"bh_c_define_open",
5780  								"bh_c_define_close",
5781  								"bh_c_define_content",
5782  								"bh_curly",
5783  								"bh_curly_center",
5784  								"bh_curly_open",
5785  								"bh_curly_close",
5786  								"bh_curly_content",
5787  								"bh_round",
5788  								"bh_round_center",
5789  								"bh_round_open",
5790  								"bh_round_close",
5791  								"bh_round_content"
5792  							],
5793  							"copilot.completion._is_modified": false,
5794  							"copilot.completion.is_visible": false,
5795  							"copilot.completion.is_visible_panel_completions": false,
5796  							"copilot.completion.is_waiting_completion": false,
5797  							"copilot.completion.is_waiting_panel_completions": false,
5798  							"copilot.completion.original_layout": null,
5799  							"lsp_active": true,
5800  							"lsp_uri": "file:///Users/davidrug/Library/Preferences/Maxon/Maxon%20Cinema%204D%20R26_8986B2D7/python39/libs/pydeation/xpresso/xpressions.py",
5801  							"syntax": "Packages/Python/Python.sublime-syntax",
5802  							"tab_size": 4,
5803  							"translate_tabs_to_spaces": true
5804  						},
5805  						"translation.x": 0.0,
5806  						"translation.y": 16541.0,
5807  						"zoom_level": 1.0
5808  					},
5809  					"stack_index": 7,
5810  					"stack_multiselect": false,
5811  					"type": "text"
5812  				},
5813  				{
5814  					"buffer": 3,
5815  					"file": "materials.py",
5816  					"selected": true,
5817  					"semi_transient": false,
5818  					"settings":
5819  					{
5820  						"buffer_size": 4352,
5821  						"regions":
5822  						{
5823  						},
5824  						"selection":
5825  						[
5826  							[
5827  								2072,
5828  								2072
5829  							]
5830  						],
5831  						"settings":
5832  						{
5833  							"auto_complete_triggers":
5834  							[
5835  								{
5836  									"characters": ".",
5837  									"selector": "source.python - string - comment - constant.numeric"
5838  								}
5839  							],
5840  							"bracket_highlighter.busy": false,
5841  							"bracket_highlighter.locations":
5842  							{
5843  								"close":
5844  								{
5845  								},
5846  								"icon":
5847  								{
5848  								},
5849  								"open":
5850  								{
5851  								},
5852  								"unmatched":
5853  								{
5854  								}
5855  							},
5856  							"bracket_highlighter.regions":
5857  							[
5858  								"bh_angle",
5859  								"bh_angle_center",
5860  								"bh_angle_open",
5861  								"bh_angle_close",
5862  								"bh_angle_content",
5863  								"bh_single_quote",
5864  								"bh_single_quote_center",
5865  								"bh_single_quote_open",
5866  								"bh_single_quote_close",
5867  								"bh_single_quote_content",
5868  								"bh_tag",
5869  								"bh_tag_center",
5870  								"bh_tag_open",
5871  								"bh_tag_close",
5872  								"bh_tag_content",
5873  								"bh_default",
5874  								"bh_default_center",
5875  								"bh_default_open",
5876  								"bh_default_close",
5877  								"bh_default_content",
5878  								"bh_unmatched",
5879  								"bh_unmatched_center",
5880  								"bh_unmatched_open",
5881  								"bh_unmatched_close",
5882  								"bh_unmatched_content",
5883  								"bh_regex",
5884  								"bh_regex_center",
5885  								"bh_regex_open",
5886  								"bh_regex_close",
5887  								"bh_regex_content",
5888  								"bh_double_quote",
5889  								"bh_double_quote_center",
5890  								"bh_double_quote_open",
5891  								"bh_double_quote_close",
5892  								"bh_double_quote_content",
5893  								"bh_square",
5894  								"bh_square_center",
5895  								"bh_square_open",
5896  								"bh_square_close",
5897  								"bh_square_content",
5898  								"bh_c_define",
5899  								"bh_c_define_center",
5900  								"bh_c_define_open",
5901  								"bh_c_define_close",
5902  								"bh_c_define_content",
5903  								"bh_curly",
5904  								"bh_curly_center",
5905  								"bh_curly_open",
5906  								"bh_curly_close",
5907  								"bh_curly_content",
5908  								"bh_round",
5909  								"bh_round_center",
5910  								"bh_round_open",
5911  								"bh_round_close",
5912  								"bh_round_content"
5913  							],
5914  							"copilot.completion._is_modified": false,
5915  							"copilot.completion._is_saving": false,
5916  							"copilot.completion.completion_index": 0,
5917  							"copilot.completion.completion_style": "popup",
5918  							"copilot.completion.completions":
5919  							[
5920  								{
5921  									"displayText": "# filter strokes",
5922  									"docVersion": 30,
5923  									"point": 2072,
5924  									"position":
5925  									{
5926  										"character": 56,
5927  										"line": 63
5928  									},
5929  									"range":
5930  									{
5931  										"end":
5932  										{
5933  											"character": 56,
5934  											"line": 63
5935  										},
5936  										"start":
5937  										{
5938  											"character": 0,
5939  											"line": 63
5940  										}
5941  									},
5942  									"region":
5943  									[
5944  										2016,
5945  										2072
5946  									],
5947  									"text": "        self.obj[c4d.OUTLINEMAT_FILTER_STROKES] = False # filter strokes",
5948  									"uuid": "cf2b0e1f-1d91-4bed-990e-90334f195df9"
5949  								}
5950  							],
5951  							"copilot.completion.is_visible": false,
5952  							"copilot.completion.is_visible_panel_completions": false,
5953  							"copilot.completion.is_waiting_completion": false,
5954  							"copilot.completion.is_waiting_panel_completions": false,
5955  							"copilot.completion.original_layout": null,
5956  							"lsp_active": true,
5957  							"lsp_uri": "file:///Users/davidrug/Library/Preferences/Maxon/Maxon%20Cinema%204D%20R26_8986B2D7/python39/libs/pydeation/materials.py",
5958  							"syntax": "Packages/Python/Python.sublime-syntax",
5959  							"tab_size": 4,
5960  							"translate_tabs_to_spaces": true
5961  						},
5962  						"translation.x": 0.0,
5963  						"translation.y": 421.0,
5964  						"zoom_level": 1.0
5965  					},
5966  					"stack_index": 0,
5967  					"stack_multiselect": false,
5968  					"type": "text"
5969  				},
5970  				{
5971  					"buffer": 4,
5972  					"file": "objects/solid_objects.py",
5973  					"semi_transient": false,
5974  					"settings":
5975  					{
5976  						"buffer_size": 7107,
5977  						"regions":
5978  						{
5979  						},
5980  						"selection":
5981  						[
5982  							[
5983  								5776,
5984  								5776
5985  							]
5986  						],
5987  						"settings":
5988  						{
5989  							"auto_complete_triggers":
5990  							[
5991  								{
5992  									"characters": ".",
5993  									"selector": "source.python - string - comment - constant.numeric"
5994  								}
5995  							],
5996  							"bracket_highlighter.busy": false,
5997  							"bracket_highlighter.locations":
5998  							{
5999  								"close":
6000  								{
6001  								},
6002  								"icon":
6003  								{
6004  								},
6005  								"open":
6006  								{
6007  								},
6008  								"unmatched":
6009  								{
6010  								}
6011  							},
6012  							"bracket_highlighter.regions":
6013  							[
6014  								"bh_angle",
6015  								"bh_angle_center",
6016  								"bh_angle_open",
6017  								"bh_angle_close",
6018  								"bh_angle_content",
6019  								"bh_square",
6020  								"bh_square_center",
6021  								"bh_square_open",
6022  								"bh_square_close",
6023  								"bh_square_content",
6024  								"bh_unmatched",
6025  								"bh_unmatched_center",
6026  								"bh_unmatched_open",
6027  								"bh_unmatched_close",
6028  								"bh_unmatched_content",
6029  								"bh_single_quote",
6030  								"bh_single_quote_center",
6031  								"bh_single_quote_open",
6032  								"bh_single_quote_close",
6033  								"bh_single_quote_content",
6034  								"bh_c_define",
6035  								"bh_c_define_center",
6036  								"bh_c_define_open",
6037  								"bh_c_define_close",
6038  								"bh_c_define_content",
6039  								"bh_tag",
6040  								"bh_tag_center",
6041  								"bh_tag_open",
6042  								"bh_tag_close",
6043  								"bh_tag_content",
6044  								"bh_double_quote",
6045  								"bh_double_quote_center",
6046  								"bh_double_quote_open",
6047  								"bh_double_quote_close",
6048  								"bh_double_quote_content",
6049  								"bh_round",
6050  								"bh_round_center",
6051  								"bh_round_open",
6052  								"bh_round_close",
6053  								"bh_round_content",
6054  								"bh_curly",
6055  								"bh_curly_center",
6056  								"bh_curly_open",
6057  								"bh_curly_close",
6058  								"bh_curly_content",
6059  								"bh_regex",
6060  								"bh_regex_center",
6061  								"bh_regex_open",
6062  								"bh_regex_close",
6063  								"bh_regex_content",
6064  								"bh_default",
6065  								"bh_default_center",
6066  								"bh_default_open",
6067  								"bh_default_close",
6068  								"bh_default_content"
6069  							],
6070  							"copilot.completion._is_modified": false,
6071  							"copilot.completion._is_saving": false,
6072  							"copilot.completion.completion_index": 0,
6073  							"copilot.completion.completion_style": "popup",
6074  							"copilot.completion.completions":
6075  							[
6076  								{
6077  									"displayText": "eight = self.depth = self.size",
6078  									"docVersion": 59,
6079  									"point": 5747,
6080  									"position":
6081  									{
6082  										"character": 32,
6083  										"line": 188
6084  									},
6085  									"range":
6086  									{
6087  										"end":
6088  										{
6089  											"character": 32,
6090  											"line": 188
6091  										},
6092  										"start":
6093  										{
6094  											"character": 0,
6095  											"line": 188
6096  										}
6097  									},
6098  									"region":
6099  									[
6100  										5715,
6101  										5747
6102  									],
6103  									"text": "            self..width = self.height = self.depth = self.size",
6104  									"uuid": "e2d677b7-5707-4abf-9826-179072fbc527"
6105  								}
6106  							],
6107  							"copilot.completion.is_visible": false,
6108  							"copilot.completion.is_visible_panel_completions": false,
6109  							"copilot.completion.is_waiting_completion": false,
6110  							"copilot.completion.is_waiting_panel_completions": false,
6111  							"copilot.completion.original_layout": null,
6112  							"lsp_active": true,
6113  							"lsp_uri": "file:///Users/davidrug/Library/Preferences/Maxon/Maxon%20Cinema%204D%20R26_8986B2D7/python39/libs/pydeation/objects/solid_objects.py",
6114  							"syntax": "Packages/Python/Python.sublime-syntax",
6115  							"tab_size": 4,
6116  							"translate_tabs_to_spaces": true
6117  						},
6118  						"translation.x": 0.0,
6119  						"translation.y": 0.0,
6120  						"zoom_level": 1.0
6121  					},
6122  					"stack_index": 5,
6123  					"stack_multiselect": false,
6124  					"type": "text"
6125  				},
6126  				{
6127  					"buffer": 5,
6128  					"file": "objects/custom_objects.py",
6129  					"semi_transient": false,
6130  					"settings":
6131  					{
6132  						"buffer_size": 87954,
6133  						"regions":
6134  						{
6135  						},
6136  						"selection":
6137  						[
6138  							[
6139  								4562,
6140  								4562
6141  							]
6142  						],
6143  						"settings":
6144  						{
6145  							"auto_complete_triggers":
6146  							[
6147  								{
6148  									"characters": ".",
6149  									"selector": "source.python - string - comment - constant.numeric"
6150  								}
6151  							],
6152  							"bracket_highlighter.busy": false,
6153  							"bracket_highlighter.locations":
6154  							{
6155  								"close":
6156  								{
6157  									"1":
6158  									[
6159  										4622,
6160  										4623
6161  									]
6162  								},
6163  								"icon":
6164  								{
6165  									"1":
6166  									[
6167  										"Packages/BracketHighlighter/icons/round_bracket.png",
6168  										"region.yellowish"
6169  									]
6170  								},
6171  								"open":
6172  								{
6173  									"1":
6174  									[
6175  										4561,
6176  										4562
6177  									]
6178  								},
6179  								"unmatched":
6180  								{
6181  								}
6182  							},
6183  							"bracket_highlighter.regions":
6184  							[
6185  								"bh_angle",
6186  								"bh_angle_center",
6187  								"bh_angle_open",
6188  								"bh_angle_close",
6189  								"bh_angle_content",
6190  								"bh_single_quote",
6191  								"bh_single_quote_center",
6192  								"bh_single_quote_open",
6193  								"bh_single_quote_close",
6194  								"bh_single_quote_content",
6195  								"bh_tag",
6196  								"bh_tag_center",
6197  								"bh_tag_open",
6198  								"bh_tag_close",
6199  								"bh_tag_content",
6200  								"bh_default",
6201  								"bh_default_center",
6202  								"bh_default_open",
6203  								"bh_default_close",
6204  								"bh_default_content",
6205  								"bh_unmatched",
6206  								"bh_unmatched_center",
6207  								"bh_unmatched_open",
6208  								"bh_unmatched_close",
6209  								"bh_unmatched_content",
6210  								"bh_regex",
6211  								"bh_regex_center",
6212  								"bh_regex_open",
6213  								"bh_regex_close",
6214  								"bh_regex_content",
6215  								"bh_double_quote",
6216  								"bh_double_quote_center",
6217  								"bh_double_quote_open",
6218  								"bh_double_quote_close",
6219  								"bh_double_quote_content",
6220  								"bh_square",
6221  								"bh_square_center",
6222  								"bh_square_open",
6223  								"bh_square_close",
6224  								"bh_square_content",
6225  								"bh_c_define",
6226  								"bh_c_define_center",
6227  								"bh_c_define_open",
6228  								"bh_c_define_close",
6229  								"bh_c_define_content",
6230  								"bh_curly",
6231  								"bh_curly_center",
6232  								"bh_curly_open",
6233  								"bh_curly_close",
6234  								"bh_curly_content",
6235  								"bh_round",
6236  								"bh_round_center",
6237  								"bh_round_open",
6238  								"bh_round_close",
6239  								"bh_round_content"
6240  							],
6241  							"copilot.completion._is_modified": false,
6242  							"copilot.completion._is_saving": false,
6243  							"copilot.completion.completion_index": 0,
6244  							"copilot.completion.completion_style": "popup",
6245  							"copilot.completion.completions":
6246  							[
6247  								{
6248  									"displayText": ")",
6249  									"docVersion": 85,
6250  									"point": 37611,
6251  									"position":
6252  									{
6253  										"character": 66,
6254  										"line": 695
6255  									},
6256  									"range":
6257  									{
6258  										"end":
6259  										{
6260  											"character": 67,
6261  											"line": 695
6262  										},
6263  										"start":
6264  										{
6265  											"character": 0,
6266  											"line": 695
6267  										}
6268  									},
6269  									"region":
6270  									[
6271  										37545,
6272  										37612
6273  									],
6274  									"text": "                             tracing_mode=\"objects\", name=\"Tracer\")",
6275  									"uuid": "11a6bb29-a7c1-4e00-82d2-f2d921d44651"
6276  								}
6277  							],
6278  							"copilot.completion.is_visible": false,
6279  							"copilot.completion.is_visible_panel_completions": false,
6280  							"copilot.completion.is_waiting_completion": false,
6281  							"copilot.completion.is_waiting_panel_completions": false,
6282  							"copilot.completion.original_layout": null,
6283  							"lsp_active": true,
6284  							"lsp_uri": "file:///Users/davidrug/Library/Preferences/Maxon/Maxon%20Cinema%204D%20R26_8986B2D7/python39/libs/pydeation/objects/custom_objects.py",
6285  							"syntax": "Packages/Python/Python.sublime-syntax",
6286  							"tab_size": 4,
6287  							"translate_tabs_to_spaces": true
6288  						},
6289  						"translation.x": 0.0,
6290  						"translation.y": 0.0,
6291  						"zoom_level": 1.0
6292  					},
6293  					"stack_index": 2,
6294  					"stack_multiselect": false,
6295  					"type": "text"
6296  				},
6297  				{
6298  					"buffer": 6,
6299  					"file": "constants.py",
6300  					"semi_transient": false,
6301  					"settings":
6302  					{
6303  						"buffer_size": 3485,
6304  						"regions":
6305  						{
6306  						},
6307  						"selection":
6308  						[
6309  							[
6310  								412,
6311  								412
6312  							]
6313  						],
6314  						"settings":
6315  						{
6316  							"auto_complete_triggers":
6317  							[
6318  								{
6319  									"characters": ".",
6320  									"selector": "source.python - string - comment - constant.numeric"
6321  								}
6322  							],
6323  							"bracket_highlighter.busy": false,
6324  							"bracket_highlighter.locations":
6325  							{
6326  								"close":
6327  								{
6328  								},
6329  								"icon":
6330  								{
6331  								},
6332  								"open":
6333  								{
6334  								},
6335  								"unmatched":
6336  								{
6337  								}
6338  							},
6339  							"bracket_highlighter.regions":
6340  							[
6341  								"bh_angle",
6342  								"bh_angle_center",
6343  								"bh_angle_open",
6344  								"bh_angle_close",
6345  								"bh_angle_content",
6346  								"bh_single_quote",
6347  								"bh_single_quote_center",
6348  								"bh_single_quote_open",
6349  								"bh_single_quote_close",
6350  								"bh_single_quote_content",
6351  								"bh_tag",
6352  								"bh_tag_center",
6353  								"bh_tag_open",
6354  								"bh_tag_close",
6355  								"bh_tag_content",
6356  								"bh_default",
6357  								"bh_default_center",
6358  								"bh_default_open",
6359  								"bh_default_close",
6360  								"bh_default_content",
6361  								"bh_unmatched",
6362  								"bh_unmatched_center",
6363  								"bh_unmatched_open",
6364  								"bh_unmatched_close",
6365  								"bh_unmatched_content",
6366  								"bh_regex",
6367  								"bh_regex_center",
6368  								"bh_regex_open",
6369  								"bh_regex_close",
6370  								"bh_regex_content",
6371  								"bh_double_quote",
6372  								"bh_double_quote_center",
6373  								"bh_double_quote_open",
6374  								"bh_double_quote_close",
6375  								"bh_double_quote_content",
6376  								"bh_square",
6377  								"bh_square_center",
6378  								"bh_square_open",
6379  								"bh_square_close",
6380  								"bh_square_content",
6381  								"bh_c_define",
6382  								"bh_c_define_center",
6383  								"bh_c_define_open",
6384  								"bh_c_define_close",
6385  								"bh_c_define_content",
6386  								"bh_curly",
6387  								"bh_curly_center",
6388  								"bh_curly_open",
6389  								"bh_curly_close",
6390  								"bh_curly_content",
6391  								"bh_round",
6392  								"bh_round_center",
6393  								"bh_round_open",
6394  								"bh_round_close",
6395  								"bh_round_content"
6396  							],
6397  							"copilot.completion._is_modified": false,
6398  							"copilot.completion._is_saving": false,
6399  							"copilot.completion.is_visible": false,
6400  							"copilot.completion.is_visible_panel_completions": false,
6401  							"copilot.completion.is_waiting_completion": false,
6402  							"copilot.completion.is_waiting_panel_completions": false,
6403  							"copilot.completion.original_layout": null,
6404  							"lsp_active": true,
6405  							"lsp_uri": "file:///Users/davidrug/Library/Preferences/Maxon/Maxon%20Cinema%204D%20R26_8986B2D7/python39/libs/pydeation/constants.py",
6406  							"syntax": "Packages/Python/Python.sublime-syntax",
6407  							"tab_size": 4,
6408  							"translate_tabs_to_spaces": true
6409  						},
6410  						"translation.x": 0.0,
6411  						"translation.y": 0.0,
6412  						"zoom_level": 1.0
6413  					},
6414  					"stack_index": 8,
6415  					"stack_multiselect": false,
6416  					"type": "text"
6417  				},
6418  				{
6419  					"buffer": 7,
6420  					"file": "objects/line_objects.py",
6421  					"semi_transient": false,
6422  					"settings":
6423  					{
6424  						"buffer_size": 15953,
6425  						"regions":
6426  						{
6427  						},
6428  						"selection":
6429  						[
6430  							[
6431  								2992,
6432  								2992
6433  							]
6434  						],
6435  						"settings":
6436  						{
6437  							"auto_complete_triggers":
6438  							[
6439  								{
6440  									"characters": ".",
6441  									"selector": "source.python - string - comment - constant.numeric"
6442  								}
6443  							],
6444  							"bracket_highlighter.busy": false,
6445  							"bracket_highlighter.locations":
6446  							{
6447  								"close":
6448  								{
6449  									"1":
6450  									[
6451  										3019,
6452  										3020
6453  									]
6454  								},
6455  								"icon":
6456  								{
6457  									"1":
6458  									[
6459  										"Packages/BracketHighlighter/icons/round_bracket.png",
6460  										"region.yellowish"
6461  									]
6462  								},
6463  								"open":
6464  								{
6465  									"1":
6466  									[
6467  										2985,
6468  										2986
6469  									]
6470  								},
6471  								"unmatched":
6472  								{
6473  								}
6474  							},
6475  							"bracket_highlighter.regions":
6476  							[
6477  								"bh_angle",
6478  								"bh_angle_center",
6479  								"bh_angle_open",
6480  								"bh_angle_close",
6481  								"bh_angle_content",
6482  								"bh_square",
6483  								"bh_square_center",
6484  								"bh_square_open",
6485  								"bh_square_close",
6486  								"bh_square_content",
6487  								"bh_unmatched",
6488  								"bh_unmatched_center",
6489  								"bh_unmatched_open",
6490  								"bh_unmatched_close",
6491  								"bh_unmatched_content",
6492  								"bh_single_quote",
6493  								"bh_single_quote_center",
6494  								"bh_single_quote_open",
6495  								"bh_single_quote_close",
6496  								"bh_single_quote_content",
6497  								"bh_c_define",
6498  								"bh_c_define_center",
6499  								"bh_c_define_open",
6500  								"bh_c_define_close",
6501  								"bh_c_define_content",
6502  								"bh_tag",
6503  								"bh_tag_center",
6504  								"bh_tag_open",
6505  								"bh_tag_close",
6506  								"bh_tag_content",
6507  								"bh_double_quote",
6508  								"bh_double_quote_center",
6509  								"bh_double_quote_open",
6510  								"bh_double_quote_close",
6511  								"bh_double_quote_content",
6512  								"bh_round",
6513  								"bh_round_center",
6514  								"bh_round_open",
6515  								"bh_round_close",
6516  								"bh_round_content",
6517  								"bh_curly",
6518  								"bh_curly_center",
6519  								"bh_curly_open",
6520  								"bh_curly_close",
6521  								"bh_curly_content",
6522  								"bh_regex",
6523  								"bh_regex_center",
6524  								"bh_regex_open",
6525  								"bh_regex_close",
6526  								"bh_regex_content",
6527  								"bh_default",
6528  								"bh_default_center",
6529  								"bh_default_open",
6530  								"bh_default_close",
6531  								"bh_default_content"
6532  							],
6533  							"copilot.completion._is_modified": false,
6534  							"copilot.completion._is_saving": false,
6535  							"copilot.completion.completion_index": 0,
6536  							"copilot.completion.completion_style": "popup",
6537  							"copilot.completion.completions":
6538  							[
6539  								{
6540  									"displayText": "ize = size",
6541  									"docVersion": 79,
6542  									"point": 2950,
6543  									"position":
6544  									{
6545  										"character": 14,
6546  										"line": 81
6547  									},
6548  									"range":
6549  									{
6550  										"end":
6551  										{
6552  											"character": 14,
6553  											"line": 81
6554  										},
6555  										"start":
6556  										{
6557  											"character": 0,
6558  											"line": 81
6559  										}
6560  									},
6561  									"region":
6562  									[
6563  										2936,
6564  										2950
6565  									],
6566  									"text": "        self.size = size",
6567  									"uuid": "2c256ad2-0557-445e-9509-cf1a2ab3d6a9"
6568  								}
6569  							],
6570  							"copilot.completion.is_visible": false,
6571  							"copilot.completion.is_visible_panel_completions": false,
6572  							"copilot.completion.is_waiting_completion": false,
6573  							"copilot.completion.is_waiting_panel_completions": false,
6574  							"copilot.completion.original_layout": null,
6575  							"lsp_active": true,
6576  							"lsp_uri": "file:///Users/davidrug/Library/Preferences/Maxon/Maxon%20Cinema%204D%20R26_8986B2D7/python39/libs/pydeation/objects/line_objects.py",
6577  							"syntax": "Packages/Python/Python.sublime-syntax",
6578  							"tab_size": 4,
6579  							"translate_tabs_to_spaces": true
6580  						},
6581  						"translation.x": 0.0,
6582  						"translation.y": 70.0,
6583  						"zoom_level": 1.0
6584  					},
6585  					"stack_index": 6,
6586  					"stack_multiselect": false,
6587  					"type": "text"
6588  				},
6589  				{
6590  					"buffer": 8,
6591  					"file": "tags.py",
6592  					"semi_transient": false,
6593  					"settings":
6594  					{
6595  						"buffer_size": 4670,
6596  						"regions":
6597  						{
6598  						},
6599  						"selection":
6600  						[
6601  							[
6602  								0,
6603  								0
6604  							]
6605  						],
6606  						"settings":
6607  						{
6608  							"auto_complete_triggers":
6609  							[
6610  								{
6611  									"characters": ".",
6612  									"selector": "source.python - string - comment - constant.numeric"
6613  								}
6614  							],
6615  							"bracket_highlighter.busy": false,
6616  							"bracket_highlighter.locations":
6617  							{
6618  								"close":
6619  								{
6620  								},
6621  								"icon":
6622  								{
6623  								},
6624  								"open":
6625  								{
6626  								},
6627  								"unmatched":
6628  								{
6629  								}
6630  							},
6631  							"bracket_highlighter.regions":
6632  							[
6633  								"bh_angle",
6634  								"bh_angle_center",
6635  								"bh_angle_open",
6636  								"bh_angle_close",
6637  								"bh_angle_content",
6638  								"bh_single_quote",
6639  								"bh_single_quote_center",
6640  								"bh_single_quote_open",
6641  								"bh_single_quote_close",
6642  								"bh_single_quote_content",
6643  								"bh_tag",
6644  								"bh_tag_center",
6645  								"bh_tag_open",
6646  								"bh_tag_close",
6647  								"bh_tag_content",
6648  								"bh_default",
6649  								"bh_default_center",
6650  								"bh_default_open",
6651  								"bh_default_close",
6652  								"bh_default_content",
6653  								"bh_unmatched",
6654  								"bh_unmatched_center",
6655  								"bh_unmatched_open",
6656  								"bh_unmatched_close",
6657  								"bh_unmatched_content",
6658  								"bh_regex",
6659  								"bh_regex_center",
6660  								"bh_regex_open",
6661  								"bh_regex_close",
6662  								"bh_regex_content",
6663  								"bh_double_quote",
6664  								"bh_double_quote_center",
6665  								"bh_double_quote_open",
6666  								"bh_double_quote_close",
6667  								"bh_double_quote_content",
6668  								"bh_square",
6669  								"bh_square_center",
6670  								"bh_square_open",
6671  								"bh_square_close",
6672  								"bh_square_content",
6673  								"bh_c_define",
6674  								"bh_c_define_center",
6675  								"bh_c_define_open",
6676  								"bh_c_define_close",
6677  								"bh_c_define_content",
6678  								"bh_curly",
6679  								"bh_curly_center",
6680  								"bh_curly_open",
6681  								"bh_curly_close",
6682  								"bh_curly_content",
6683  								"bh_round",
6684  								"bh_round_center",
6685  								"bh_round_open",
6686  								"bh_round_close",
6687  								"bh_round_content"
6688  							],
6689  							"copilot.completion._is_modified": false,
6690  							"copilot.completion._is_saving": false,
6691  							"copilot.completion.completion_index": 0,
6692  							"copilot.completion.completion_style": "popup",
6693  							"copilot.completion.completions":
6694  							[
6695  								{
6696  									"displayText": "elf.obj[c4d.OUTLINEMAT_LINE_OUTLINE] = self.outline",
6697  									"docVersion": 171,
6698  									"point": 2228,
6699  									"position":
6700  									{
6701  										"character": 9,
6702  										"line": 81
6703  									},
6704  									"range":
6705  									{
6706  										"end":
6707  										{
6708  											"character": 9,
6709  											"line": 81
6710  										},
6711  										"start":
6712  										{
6713  											"character": 0,
6714  											"line": 81
6715  										}
6716  									},
6717  									"region":
6718  									[
6719  										2219,
6720  										2228
6721  									],
6722  									"text": "        self.obj[c4d.OUTLINEMAT_LINE_OUTLINE] = self.outline",
6723  									"uuid": "002809fc-f683-4177-a1e3-568a87c98389"
6724  								}
6725  							],
6726  							"copilot.completion.is_visible": false,
6727  							"copilot.completion.is_visible_panel_completions": false,
6728  							"copilot.completion.is_waiting_completion": false,
6729  							"copilot.completion.is_waiting_panel_completions": false,
6730  							"copilot.completion.original_layout": null,
6731  							"lsp_active": true,
6732  							"lsp_uri": "file:///Users/davidrug/Library/Preferences/Maxon/Maxon%20Cinema%204D%20R26_8986B2D7/python39/libs/pydeation/tags.py",
6733  							"syntax": "Packages/Python/Python.sublime-syntax",
6734  							"tab_size": 4,
6735  							"translate_tabs_to_spaces": true
6736  						},
6737  						"translation.x": 0.0,
6738  						"translation.y": 208.0,
6739  						"zoom_level": 1.0
6740  					},
6741  					"stack_index": 9,
6742  					"stack_multiselect": false,
6743  					"type": "text"
6744  				},
6745  				{
6746  					"buffer": 9,
6747  					"file": "objects/helper_objects.py",
6748  					"semi_transient": false,
6749  					"settings":
6750  					{
6751  						"buffer_size": 24682,
6752  						"regions":
6753  						{
6754  						},
6755  						"selection":
6756  						[
6757  							[
6758  								85,
6759  								85
6760  							]
6761  						],
6762  						"settings":
6763  						{
6764  							"auto_complete_triggers":
6765  							[
6766  								{
6767  									"characters": ".",
6768  									"selector": "source.python - string - comment - constant.numeric"
6769  								}
6770  							],
6771  							"bracket_highlighter.busy": false,
6772  							"bracket_highlighter.locations":
6773  							{
6774  								"close":
6775  								{
6776  								},
6777  								"icon":
6778  								{
6779  								},
6780  								"open":
6781  								{
6782  								},
6783  								"unmatched":
6784  								{
6785  								}
6786  							},
6787  							"bracket_highlighter.regions":
6788  							[
6789  								"bh_angle",
6790  								"bh_angle_center",
6791  								"bh_angle_open",
6792  								"bh_angle_close",
6793  								"bh_angle_content",
6794  								"bh_single_quote",
6795  								"bh_single_quote_center",
6796  								"bh_single_quote_open",
6797  								"bh_single_quote_close",
6798  								"bh_single_quote_content",
6799  								"bh_tag",
6800  								"bh_tag_center",
6801  								"bh_tag_open",
6802  								"bh_tag_close",
6803  								"bh_tag_content",
6804  								"bh_default",
6805  								"bh_default_center",
6806  								"bh_default_open",
6807  								"bh_default_close",
6808  								"bh_default_content",
6809  								"bh_unmatched",
6810  								"bh_unmatched_center",
6811  								"bh_unmatched_open",
6812  								"bh_unmatched_close",
6813  								"bh_unmatched_content",
6814  								"bh_regex",
6815  								"bh_regex_center",
6816  								"bh_regex_open",
6817  								"bh_regex_close",
6818  								"bh_regex_content",
6819  								"bh_double_quote",
6820  								"bh_double_quote_center",
6821  								"bh_double_quote_open",
6822  								"bh_double_quote_close",
6823  								"bh_double_quote_content",
6824  								"bh_square",
6825  								"bh_square_center",
6826  								"bh_square_open",
6827  								"bh_square_close",
6828  								"bh_square_content",
6829  								"bh_c_define",
6830  								"bh_c_define_center",
6831  								"bh_c_define_open",
6832  								"bh_c_define_close",
6833  								"bh_c_define_content",
6834  								"bh_curly",
6835  								"bh_curly_center",
6836  								"bh_curly_open",
6837  								"bh_curly_close",
6838  								"bh_curly_content",
6839  								"bh_round",
6840  								"bh_round_center",
6841  								"bh_round_open",
6842  								"bh_round_close",
6843  								"bh_round_content"
6844  							],
6845  							"copilot.completion._is_modified": false,
6846  							"copilot.completion._is_saving": false,
6847  							"copilot.completion.completion_index": 0,
6848  							"copilot.completion.completion_style": "popup",
6849  							"copilot.completion.completions":
6850  							[
6851  								{
6852  									"displayText": ", LineObject",
6853  									"docVersion": 40,
6854  									"point": 73,
6855  									"position":
6856  									{
6857  										"character": 73,
6858  										"line": 0
6859  									},
6860  									"range":
6861  									{
6862  										"end":
6863  										{
6864  											"character": 73,
6865  											"line": 0
6866  										},
6867  										"start":
6868  										{
6869  											"character": 0,
6870  											"line": 0
6871  										}
6872  									},
6873  									"region":
6874  									[
6875  										0,
6876  										73
6877  									],
6878  									"text": "from pydeation.objects.abstract_objects import ProtoObject, VisibleObject, LineObject",
6879  									"uuid": "dbfbe7fc-885e-43ce-91bc-5784fd41990f"
6880  								}
6881  							],
6882  							"copilot.completion.is_visible": false,
6883  							"copilot.completion.is_visible_panel_completions": false,
6884  							"copilot.completion.is_waiting_completion": false,
6885  							"copilot.completion.is_waiting_panel_completions": false,
6886  							"copilot.completion.original_layout": null,
6887  							"lsp_active": true,
6888  							"lsp_uri": "file:///Users/davidrug/Library/Preferences/Maxon/Maxon%20Cinema%204D%20R26_8986B2D7/python39/libs/pydeation/objects/helper_objects.py",
6889  							"syntax": "Packages/Python/Python.sublime-syntax",
6890  							"tab_size": 4,
6891  							"translate_tabs_to_spaces": true
6892  						},
6893  						"translation.x": 0.0,
6894  						"translation.y": 0.0,
6895  						"zoom_level": 1.0
6896  					},
6897  					"stack_index": 4,
6898  					"stack_multiselect": false,
6899  					"type": "text"
6900  				}
6901  			]
6902  		},
6903  		{
6904  			"sheets":
6905  			[
6906  				{
6907  					"buffer": 10,
6908  					"selected": true,
6909  					"semi_transient": false,
6910  					"settings":
6911  					{
6912  						"buffer_size": 345,
6913  						"regions":
6914  						{
6915  						},
6916  						"selection":
6917  						[
6918  							[
6919  								345,
6920  								345
6921  							]
6922  						],
6923  						"settings":
6924  						{
6925  							"__vi_external_disable": true,
6926  							"auto_complete": false,
6927  							"auto_complete_commit_on_tab": false,
6928  							"auto_complete_triggers":
6929  							[
6930  								{
6931  									"characters": ".",
6932  									"selector": "source.python - string - comment - constant.numeric"
6933  								}
6934  							],
6935  							"bracket_highlighter.busy": false,
6936  							"bracket_highlighter.clone_locations":
6937  							{
6938  							},
6939  							"bracket_highlighter.ignore": true,
6940  							"color_scheme": "Terminus.hidden-color-scheme",
6941  							"copilot.completion._is_modified": false,
6942  							"copilot.completion.is_visible": false,
6943  							"copilot.completion.is_visible_panel_completions": false,
6944  							"copilot.completion.is_waiting_completion": false,
6945  							"copilot.completion.is_waiting_panel_completions": false,
6946  							"copilot.completion.original_layout": null,
6947  							"default_dir": "/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/library/scripts/pydeation-testing",
6948  							"draw_centered": false,
6949  							"draw_indent_guides": false,
6950  							"draw_unicode_white_space": false,
6951  							"draw_white_space": "none",
6952  							"gutter": false,
6953  							"highlight_line": false,
6954  							"is_widget": true,
6955  							"lsp_uri": "buffer://sublime/160",
6956  							"result_base_dir": "/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation",
6957  							"result_file_regex": null,
6958  							"result_line_regex": null,
6959  							"rulers":
6960  							[
6961  								500
6962  							],
6963  							"scroll_past_end": true,
6964  							"syntax": "Packages/Text/Plain text.tmLanguage",
6965  							"terminus.highlight_counter": 2,
6966  							"terminus_view": true,
6967  							"terminus_view.args":
6968  							{
6969  								"auto_close": true,
6970  								"cancellable": false,
6971  								"cmd":
6972  								[
6973  									"/bin/zsh",
6974  									"-i",
6975  									"-l"
6976  								],
6977  								"cwd": "/Users/davidrug/Library/Preferences/Maxon/Maxon Cinema 4D R26_8986B2D7/python39/libs/pydeation",
6978  								"default_title": "Login Shell",
6979  								"env":
6980  								{
6981  									"LANG": "en_US.UTF-8",
6982  									"TERM": "linux",
6983  									"TERMINUS_SUBLIME": "1",
6984  									"TERM_PROGRAM": "Terminus-Sublime"
6985  								},
6986  								"file_regex": null,
6987  								"line_regex": null,
6988  								"panel_name": "Terminus",
6989  								"show_in_panel": null,
6990  								"tag": null,
6991  								"timeit": false,
6992  								"title": null
6993  							},
6994  							"terminus_view.cancellable": false,
6995  							"terminus_view.key.ctrl+k": true,
6996  							"terminus_view.key.ctrl+p": true,
6997  							"terminus_view.natural_keyboard": true,
6998  							"terminus_view.tag": null,
6999  							"terminus_view.viewport_y": 30.0,
7000  							"word_wrap": false
7001  						},
7002  						"translation.x": 0.0,
7003  						"translation.y": 0.0,
7004  						"zoom_level": 1.0
7005  					},
7006  					"stack_index": 0,
7007  					"stack_multiselect": false,
7008  					"type": "text"
7009  				}
7010  			]
7011  		}
7012  	],
7013  	"incremental_find":
7014  	{
7015  		"height": 24.0
7016  	},
7017  	"input":
7018  	{
7019  		"height": 36.0
7020  	},
7021  	"layout":
7022  	{
7023  		"cells":
7024  		[
7025  			[
7026  				0,
7027  				0,
7028  				1,
7029  				1
7030  			],
7031  			[
7032  				0,
7033  				1,
7034  				1,
7035  				2
7036  			]
7037  		],
7038  		"cols":
7039  		[
7040  			0.0,
7041  			1.0
7042  		],
7043  		"rows":
7044  		[
7045  			0.0,
7046  			0.756513238082,
7047  			1.0
7048  		]
7049  	},
7050  	"menu_visible": true,
7051  	"output.LSP Log Panel":
7052  	{
7053  		"height": 0.0
7054  	},
7055  	"output.diagnostics":
7056  	{
7057  		"height": 0.0
7058  	},
7059  	"output.exec":
7060  	{
7061  		"height": 170.0
7062  	},
7063  	"output.find_results":
7064  	{
7065  		"height": 0.0
7066  	},
7067  	"output.mdpopups":
7068  	{
7069  		"height": 0.0
7070  	},
7071  	"output.mdpopups-dummy":
7072  	{
7073  		"height": 0.0
7074  	},
7075  	"output.unsaved_changes":
7076  	{
7077  		"height": 109.0
7078  	},
7079  	"pinned_build_system": "c4d",
7080  	"project": "pydeation.sublime-project",
7081  	"replace":
7082  	{
7083  		"height": 44.0
7084  	},
7085  	"save_all_on_build": true,
7086  	"select_file":
7087  	{
7088  		"height": 0.0,
7089  		"last_filter": "",
7090  		"selected_items":
7091  		[
7092  		],
7093  		"width": 0.0
7094  	},
7095  	"select_project":
7096  	{
7097  		"height": 500.0,
7098  		"last_filter": "",
7099  		"selected_items":
7100  		[
7101  			[
7102  				"",
7103  				"~/Documents/Python/Projects/pydeation/pydeation.sublime-project"
7104  			]
7105  		],
7106  		"width": 380.0
7107  	},
7108  	"select_symbol":
7109  	{
7110  		"height": 0.0,
7111  		"last_filter": "",
7112  		"selected_items":
7113  		[
7114  		],
7115  		"width": 0.0
7116  	},
7117  	"selected_group": 0,
7118  	"settings":
7119  	{
7120  	},
7121  	"show_minimap": true,
7122  	"show_open_files": true,
7123  	"show_tabs": true,
7124  	"side_bar_visible": true,
7125  	"side_bar_width": 268.0,
7126  	"status_bar_visible": true,
7127  	"template_settings":
7128  	{
7129  	}
7130  }