diff --git a/bricks/dart_frog_prod_server/__brick__/build/{{#addDockerfile}}Dockerfile{{/addDockerfile}} b/bricks/dart_frog_prod_server/__brick__/build/{{#addDockerfile}}Dockerfile{{/addDockerfile}} index 419aae58a..003367138 100644 --- a/bricks/dart_frog_prod_server/__brick__/build/{{#addDockerfile}}Dockerfile{{/addDockerfile}} +++ b/bricks/dart_frog_prod_server/__brick__/build/{{#addDockerfile}}Dockerfile{{/addDockerfile}} @@ -19,6 +19,7 @@ COPY ./pubspec_overrides.yaml ./pubspec_overrides.yaml {{/hasExternalDependencies}} # Resolve app dependencies. COPY pubspec.* ./ +COPY pubspec_overrides.yaml* ./ RUN dart pub get # Copy app source code and AOT compile it. diff --git a/bricks/dart_frog_prod_server/hooks/lib/dart_frog_prod_server_hooks.dart b/bricks/dart_frog_prod_server/hooks/lib/dart_frog_prod_server_hooks.dart index 8a36f3de3..3fe46487e 100644 --- a/bricks/dart_frog_prod_server/hooks/lib/dart_frog_prod_server_hooks.dart +++ b/bricks/dart_frog_prod_server/hooks/lib/dart_frog_prod_server_hooks.dart @@ -1,6 +1,8 @@ export 'src/create_bundle.dart'; export 'src/create_external_packages_folder.dart'; export 'src/dart_pub_get.dart'; +export 'src/disable_workspace_resolution.dart'; export 'src/exit_overrides.dart'; export 'src/get_internal_path_dependencies.dart'; export 'src/get_pubspec_lock.dart'; +export 'src/uses_workspace_resolution.dart'; diff --git a/bricks/dart_frog_prod_server/hooks/lib/src/create_external_packages_folder.dart b/bricks/dart_frog_prod_server/hooks/lib/src/create_external_packages_folder.dart index 21221adde..6bf3bec91 100644 --- a/bricks/dart_frog_prod_server/hooks/lib/src/create_external_packages_folder.dart +++ b/bricks/dart_frog_prod_server/hooks/lib/src/create_external_packages_folder.dart @@ -22,9 +22,7 @@ Future> createExternalPackagesFolder({ .map( (dependency) { final pathDescription = dependency.pathDescription; - if (pathDescription == null) { - return null; - } + if (pathDescription == null) return null; final isExternal = !pathResolver.isWithin('', pathDescription.path); if (!isExternal) return null; @@ -38,9 +36,7 @@ Future> createExternalPackagesFolder({ .whereType<_ExternalPathDependency>() .toList(); - if (externalPathDependencies.isEmpty) { - return []; - } + if (externalPathDependencies.isEmpty) return []; final packagesDirectory = Directory( pathResolver.join( @@ -51,34 +47,38 @@ Future> createExternalPackagesFolder({ final copiedExternalPathDependencies = await Future.wait( externalPathDependencies.map( - (externalPathDependency) => externalPathDependency.copyTo( - copyPath: copyPath, - targetDirectory: Directory( - pathResolver.join( - packagesDirectory.path, - externalPathDependency.name, + (externalPathDependency) async { + final copy = await externalPathDependency.copyTo( + copyPath: copyPath, + targetDirectory: Directory( + pathResolver.join( + packagesDirectory.path, + externalPathDependency.name, + ), ), - ), - ), + ); + overrideResolutionInPubspecOverrides(copy.path); + return copy; + }, ), ); - await File( - pathResolver.join( - buildDirectory.path, - 'pubspec_overrides.yaml', - ), - ).writeAsString(''' + File( + pathResolver.join(buildDirectory.path, 'pubspec_overrides.yaml'), + ).writeAsStringSync( + ''' +resolution: null dependency_overrides: ${copiedExternalPathDependencies.map( - (dependency) { - final name = dependency.name; - final path = - pathResolver.relative(dependency.path, from: buildDirectory.path); - return ' $name:\n path: $path'; - }, - ).join('\n')} -'''); + (dependency) { + final name = dependency.name; + final path = + pathResolver.relative(dependency.path, from: buildDirectory.path); + return ' $name:\n path: $path'; + }, + ).join('\n')} +''', + ); return copiedExternalPathDependencies .map((dependency) => dependency.path) diff --git a/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart b/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart new file mode 100644 index 000000000..1236fe23e --- /dev/null +++ b/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart @@ -0,0 +1,50 @@ +import 'dart:io'; +import 'package:mason/mason.dart'; +import 'package:path/path.dart' as path; +import 'package:yaml/yaml.dart'; +import 'package:yaml_edit/yaml_edit.dart'; + +/// A void callback function (e.g. `void Function()`). +typedef VoidCallback = void Function(); + +/// Opts out of dart workspaces until we can generate per package lockfiles. +/// https://github.com/dart-lang/pub/issues/4594 +VoidCallback disableWorkspaceResolution( + HookContext context, { + required String projectDirectory, + required void Function(int exitCode) exit, +}) { + try { + return overrideResolutionInPubspecOverrides(projectDirectory); + } on Exception catch (e) { + context.logger.err('$e'); + exit(1); + return () {}; // no-op + } +} + +VoidCallback overrideResolutionInPubspecOverrides(String projectDirectory) { + final pubspecOverridesFile = File( + path.join(projectDirectory, 'pubspec_overrides.yaml'), + ); + + if (!pubspecOverridesFile.existsSync()) { + pubspecOverridesFile.writeAsStringSync('resolution: null'); + return pubspecOverridesFile.deleteSync; + } + + final contents = pubspecOverridesFile.readAsStringSync(); + final pubspecOverrides = loadYaml(contents) as YamlMap?; + + if (pubspecOverrides == null) { + pubspecOverridesFile.writeAsStringSync('resolution: null'); + return () => pubspecOverridesFile.writeAsStringSync(contents); + } + + if (pubspecOverrides['resolution'] == 'null') return () {}; // no-op + + final editor = YamlEditor(contents)..update(['resolution'], null); + pubspecOverridesFile.writeAsStringSync(editor.toString()); + + return () => pubspecOverridesFile.writeAsStringSync(contents); +} diff --git a/bricks/dart_frog_prod_server/hooks/lib/src/uses_workspace_resolution.dart b/bricks/dart_frog_prod_server/hooks/lib/src/uses_workspace_resolution.dart new file mode 100644 index 000000000..d6394ef7a --- /dev/null +++ b/bricks/dart_frog_prod_server/hooks/lib/src/uses_workspace_resolution.dart @@ -0,0 +1,30 @@ +import 'dart:io'; +import 'package:mason/mason.dart'; +import 'package:path/path.dart' as path; +import 'package:yaml/yaml.dart'; + +/// Determines whether the project in the provided [workingDirectory] +/// is configured to use `resolution: workspace`. +bool usesWorkspaceResolution( + HookContext context, { + required String workingDirectory, + required void Function(int exitCode) exit, +}) { + final pubspecFile = File(path.join(workingDirectory, 'pubspec.yaml')); + if (!pubspecFile.existsSync()) return false; + + final YamlMap pubspec; + try { + final yaml = loadYaml(pubspecFile.readAsStringSync()); + if (yaml is! YamlMap) { + throw Exception('Unable to parse ${pubspecFile.path}'); + } + pubspec = yaml; + } on Exception catch (e) { + context.logger.err('$e'); + exit(1); + return false; + } + + return pubspec['resolution'] == 'workspace'; +} diff --git a/bricks/dart_frog_prod_server/hooks/pre_gen.dart b/bricks/dart_frog_prod_server/hooks/pre_gen.dart index 9d257d741..e3f50c410 100644 --- a/bricks/dart_frog_prod_server/hooks/pre_gen.dart +++ b/bricks/dart_frog_prod_server/hooks/pre_gen.dart @@ -23,6 +23,23 @@ Future preGen( Future Function(String from, String to) copyPath = io_expanded.copyPath, }) async { final projectDirectory = directory ?? io.Directory.current; + final usesWorkspaces = usesWorkspaceResolution( + context, + workingDirectory: projectDirectory.path, + exit: exit, + ); + + VoidCallback? restoreWorkspaceResolution; + + if (usesWorkspaces) { + // Disable workspace resolution until we can generate per-package lockfiles. + // https://github.com/dart-lang/pub/issues/4594 + restoreWorkspaceResolution = disableWorkspaceResolution( + context, + projectDirectory: projectDirectory.path, + exit: exit, + ); + } // We need to make sure that the pubspec.lock file is up to date await dartPubGet( @@ -43,6 +60,8 @@ Future preGen( exit: exit, ); + restoreWorkspaceResolution?.call(); + final RouteConfiguration configuration; try { configuration = buildConfiguration(projectDirectory); @@ -62,9 +81,7 @@ Future preGen( '''Route conflict detected. ${lightCyan.wrap(originalFilePath)} and ${lightCyan.wrap(conflictingFilePath)} both resolve to ${lightCyan.wrap(conflictingEndpoint)}.''', ); }, - onViolationEnd: () { - exit(1); - }, + onViolationEnd: () => exit(1), ); reportRogueRoutes( @@ -74,9 +91,7 @@ Future preGen( '''Rogue route detected.${defaultForeground.wrap(' ')}Rename ${lightCyan.wrap(filePath)} to ${lightCyan.wrap(idealPath)}.''', ); }, - onViolationEnd: () { - exit(1); - }, + onViolationEnd: () => exit(1), ); final customDockerFile = io.File( diff --git a/bricks/dart_frog_prod_server/hooks/pubspec.yaml b/bricks/dart_frog_prod_server/hooks/pubspec.yaml index 2e4c17ae8..a3aeeacc1 100644 --- a/bricks/dart_frog_prod_server/hooks/pubspec.yaml +++ b/bricks/dart_frog_prod_server/hooks/pubspec.yaml @@ -11,6 +11,7 @@ dependencies: mason: ^0.1.0 path: ^1.8.1 yaml: ^3.1.2 + yaml_edit: ^2.2.2 dev_dependencies: mocktail: ^1.0.0 diff --git a/bricks/dart_frog_prod_server/hooks/test/post_gen_test.dart b/bricks/dart_frog_prod_server/hooks/test/post_gen_test.dart index d1a44979c..714556989 100644 --- a/bricks/dart_frog_prod_server/hooks/test/post_gen_test.dart +++ b/bricks/dart_frog_prod_server/hooks/test/post_gen_test.dart @@ -54,7 +54,6 @@ void main() { expect( ExitOverrides.runZoned( () => post_gen.run(_FakeHookContext(logger: logger)), - exit: (_) {}, ), completes, ); diff --git a/bricks/dart_frog_prod_server/hooks/test/pre_gen_test.dart b/bricks/dart_frog_prod_server/hooks/test/pre_gen_test.dart index 3b3e449c8..5ae6e8dee 100644 --- a/bricks/dart_frog_prod_server/hooks/test/pre_gen_test.dart +++ b/bricks/dart_frog_prod_server/hooks/test/pre_gen_test.dart @@ -10,6 +10,7 @@ import 'package:test/test.dart'; import '../pre_gen.dart' as pre_gen; import 'pubspec_locks.dart'; +import 'pubspecs.dart'; class _FakeHookContext extends Fake implements HookContext { _FakeHookContext({Logger? logger}) : _logger = logger ?? _MockLogger(); @@ -161,49 +162,84 @@ void main() { expect(exitCalls, equals([1])); }); - test( - 'works with external dependencies', - () async { - const configuration = RouteConfiguration( - middleware: [], - directories: [], - routes: [], - rogueRoutes: [], - endpoints: {}, - ); + test('works with workspaces', () async { + const configuration = RouteConfiguration( + middleware: [], + directories: [], + routes: [], + rogueRoutes: [], + endpoints: {}, + ); - final directory = Directory.systemTemp.createTempSync(); - File(path.join(directory.path, 'pubspec.yaml')).writeAsStringSync( - ''' -name: example -version: 0.1.0 -environment: - sdk: ^2.17.0 -dependencies: - mason: any - foo: - path: ../../foo -dev_dependencies: - test: any -''', - ); - File(path.join(directory.path, 'pubspec.lock')).writeAsStringSync( - fooPath, - ); - final exitCalls = []; - await pre_gen.preGen( - context, - buildConfiguration: (_) => configuration, - exit: exitCalls.add, - directory: directory, - runProcess: successRunProcess, - copyPath: (_, __) async {}, - ); + final directory = Directory.systemTemp.createTempSync(); + File( + path.join(directory.path, 'pubspec.yaml'), + ).writeAsStringSync(workspaceRoot); + final server = Directory( + path.join(directory.path, 'server'), + )..createSync(); + File( + path.join(server.path, 'pubspec.yaml'), + ).writeAsStringSync(workspaceChild); + File( + path.join(server.path, 'pubspec.lock'), + ).writeAsStringSync(''' +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + sha256: da0d9209ca76bde579f2da330aeb9df62b6319c834fa7baae052021b0462401f + url: "https://pub.dev" + source: hosted + version: "85.0.0" +'''); + final exitCalls = []; + await pre_gen.preGen( + context, + buildConfiguration: (_) => configuration, + exit: exitCalls.add, + directory: server, + runProcess: successRunProcess, + copyPath: (_, __) async {}, + ); - expect(exitCalls, isEmpty); - directory.delete(recursive: true).ignore(); - }, - ); + expect(exitCalls, isEmpty); + directory.delete(recursive: true).ignore(); + }); + + test('works with external dependencies', () async { + const configuration = RouteConfiguration( + middleware: [], + directories: [], + routes: [], + rogueRoutes: [], + endpoints: {}, + ); + + final directory = Directory.systemTemp.createTempSync(); + File( + path.join(directory.path, 'pubspec.lock'), + ).writeAsStringSync(fooPath); + final exitCalls = []; + await pre_gen.preGen( + context, + buildConfiguration: (_) => configuration, + exit: exitCalls.add, + directory: directory, + runProcess: successRunProcess, + copyPath: (from, to) async { + File( + path.join(to, 'pubspec_overrides.yaml'), + ).createSync(recursive: true); + }, + ); + + expect(exitCalls, isEmpty); + directory.delete(recursive: true).ignore(); + }); test('retains invokeCustomEntrypoint (true)', () async { const configuration = RouteConfiguration( diff --git a/bricks/dart_frog_prod_server/hooks/test/pubspecs.dart b/bricks/dart_frog_prod_server/hooks/test/pubspecs.dart new file mode 100644 index 000000000..5dca910f7 --- /dev/null +++ b/bricks/dart_frog_prod_server/hooks/test/pubspecs.dart @@ -0,0 +1,20 @@ +/// An artificially crafted `pubspec.yaml` file with: +/// +/// * A direct main path dependency that is a child of the project directory. +/// * Dart workspaces enabled +const workspaceRoot = ''' +name: _ +dependencies: + server: + path: packages/server +workspace: + - packages/server +'''; + +/// An artificially crafted `pubspec.yaml` file with: +/// +/// * Dart workspaces enabled +const workspaceChild = ''' +name: server +resolution: workspace +'''; diff --git a/bricks/dart_frog_prod_server/hooks/test/src/create_external_packages_folder_test.dart b/bricks/dart_frog_prod_server/hooks/test/src/create_external_packages_folder_test.dart index 6cb836d5f..dd14e05ad 100644 --- a/bricks/dart_frog_prod_server/hooks/test/src/create_external_packages_folder_test.dart +++ b/bricks/dart_frog_prod_server/hooks/test/src/create_external_packages_folder_test.dart @@ -8,73 +8,72 @@ import '../pubspec_locks.dart'; void main() { group('createExternalPackagesFolder', () { - test( - 'bundles external dependencies with external dependencies', - () async { - final projectDirectory = Directory.systemTemp.createTempSync(); - File(path.join(projectDirectory.path, 'pubspec.lock')) - .writeAsStringSync(fooPath); - final copyCalls = []; + test('bundles external dependencies with external dependencies', () async { + final projectDirectory = Directory.systemTemp.createTempSync(); + File(path.join(projectDirectory.path, 'pubspec.lock')) + .writeAsStringSync(fooPath); + final copyCalls = []; - await createExternalPackagesFolder( - projectDirectory: projectDirectory, - buildDirectory: Directory(path.join(projectDirectory.path, 'build')), - copyPath: (from, to) { - copyCalls.add('$from -> $to'); - return Future.value(); - }, - ); + await createExternalPackagesFolder( + projectDirectory: projectDirectory, + buildDirectory: Directory(path.join(projectDirectory.path, 'build')), + copyPath: (from, to) async { + copyCalls.add('$from -> $to'); + File( + path.join(to, 'pubspec_overrides.yaml'), + ).createSync(recursive: true); + }, + ); - final fooPackageDirectory = - path.join(projectDirectory.path, '../../foo'); - final fooPackageDirectoryTarget = path.join( - projectDirectory.path, - 'build', - '.dart_frog_path_dependencies', - 'foo', - ); + final fooPackageDirectory = path.join(projectDirectory.path, '../../foo'); + final fooPackageDirectoryTarget = path.join( + projectDirectory.path, + 'build', + '.dart_frog_path_dependencies', + 'foo', + ); - final secondFooPackageDirectory = - path.join(projectDirectory.path, '../../foo2'); - final secondFooPackageDirectoryTarget = path.join( - projectDirectory.path, - 'build', - '.dart_frog_path_dependencies', - 'second_foo', - ); - expect(copyCalls, [ - '$fooPackageDirectory -> $fooPackageDirectoryTarget', - '$secondFooPackageDirectory -> $secondFooPackageDirectoryTarget', - ]); - }, - ); + final secondFooPackageDirectory = path.join( + projectDirectory.path, + '../../foo2', + ); + final secondFooPackageDirectoryTarget = path.join( + projectDirectory.path, + 'build', + '.dart_frog_path_dependencies', + 'second_foo', + ); + expect(copyCalls, [ + '$fooPackageDirectory -> $fooPackageDirectoryTarget', + '$secondFooPackageDirectory -> $secondFooPackageDirectoryTarget', + ]); + }); - test( - "don't bundle internal path dependencies", - () async { - final projectDirectory = Directory.systemTemp.createTempSync(); - File(path.join(projectDirectory.path, 'pubspec.lock')) - .writeAsStringSync(fooPathWithInternalDependency); - final copyCalls = []; + test("doesn't bundle internal path dependencies", () async { + final projectDirectory = Directory.systemTemp.createTempSync(); + File(path.join(projectDirectory.path, 'pubspec.lock')) + .writeAsStringSync(fooPathWithInternalDependency); + final copyCalls = []; - await createExternalPackagesFolder( - projectDirectory: projectDirectory, - buildDirectory: Directory(path.join(projectDirectory.path, 'build')), - copyPath: (from, to) { - copyCalls.add('$from -> $to'); - return Future.value(); - }, - ); + await createExternalPackagesFolder( + projectDirectory: projectDirectory, + buildDirectory: Directory(path.join(projectDirectory.path, 'build')), + copyPath: (from, to) async { + copyCalls.add('$from -> $to'); + File( + path.join(to, 'pubspec_overrides.yaml'), + ).createSync(recursive: true); + }, + ); - final from = path.join(projectDirectory.path, '../../foo'); - final to = path.join( - projectDirectory.path, - 'build', - '.dart_frog_path_dependencies', - 'foo', - ); - expect(copyCalls, ['$from -> $to']); - }, - ); + final from = path.join(projectDirectory.path, '../../foo'); + final to = path.join( + projectDirectory.path, + 'build', + '.dart_frog_path_dependencies', + 'foo', + ); + expect(copyCalls, ['$from -> $to']); + }); }); } diff --git a/bricks/dart_frog_prod_server/hooks/test/src/disable_workspace_resolution_test.dart b/bricks/dart_frog_prod_server/hooks/test/src/disable_workspace_resolution_test.dart new file mode 100644 index 000000000..de811941c --- /dev/null +++ b/bricks/dart_frog_prod_server/hooks/test/src/disable_workspace_resolution_test.dart @@ -0,0 +1,104 @@ +import 'dart:io'; + +import 'package:dart_frog_prod_server_hooks/dart_frog_prod_server_hooks.dart'; +import 'package:mason/mason.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:path/path.dart' as path; +import 'package:test/test.dart'; + +class _MockHookContext extends Mock implements HookContext {} + +class _MockLogger extends Mock implements Logger {} + +void main() { + group('disableWorkspaceResolution', () { + late List exitCalls; + late HookContext context; + late Logger logger; + late Directory projectDirectory; + + setUp(() { + exitCalls = []; + context = _MockHookContext(); + logger = _MockLogger(); + projectDirectory = Directory.systemTemp.createTempSync('project'); + + when(() => context.logger).thenReturn(logger); + + addTearDown(() => projectDirectory.delete().ignore()); + }); + + group('when pubspec_overrides.yaml does not exist', () { + test('adds resolution: null', () { + disableWorkspaceResolution( + context, + projectDirectory: projectDirectory.path, + exit: exitCalls.add, + ); + final contents = projectDirectory.listSync(); + expect(contents, hasLength(1)); + final pubspecOverrides = contents.first as File; + expect( + pubspecOverrides.readAsStringSync(), + equals('resolution: null'), + ); + }); + }); + + group('when pubspec_overrides.yaml exists', () { + const originalPubspecOverridesContent = ''' +dependency_overrides: + foo: + path: ./path/to/foo'''; + + setUp(() { + File( + path.join(projectDirectory.path, 'pubspec_overrides.yaml'), + ).writeAsStringSync(originalPubspecOverridesContent); + }); + + test('adds resolution: null', () { + disableWorkspaceResolution( + context, + projectDirectory: projectDirectory.path, + exit: exitCalls.add, + ); + final contents = projectDirectory.listSync(); + expect(contents, hasLength(1)); + final pubspecOverrides = contents.first as File; + expect( + pubspecOverrides.readAsStringSync(), + equals( + ''' +$originalPubspecOverridesContent +resolution: null +''', + ), + ); + }); + }); + + group('when unable to read pubspec_overrides', () { + setUp(() { + final pubspecOverrides = File( + path.join(projectDirectory.path, 'pubspec_overrides.yaml'), + )..createSync(); + Process.runSync('chmod', ['000', pubspecOverrides.path]); + }); + + test('exits with error', () { + disableWorkspaceResolution( + context, + projectDirectory: projectDirectory.path, + exit: exitCalls.add, + ); + final contents = projectDirectory.listSync(); + expect(contents, hasLength(1)); + expect(exitCalls, equals([1])); + verify( + () => logger.err(any(that: contains('Permission denied'))), + ).called(1); + }); + }); + }); +} diff --git a/bricks/dart_frog_prod_server/hooks/test/src/pubspec_lock/pubspec_lock_test.dart b/bricks/dart_frog_prod_server/hooks/test/src/pubspec_lock/pubspec_lock_test.dart index 47a9c80f4..88bf64da9 100644 --- a/bricks/dart_frog_prod_server/hooks/test/src/pubspec_lock/pubspec_lock_test.dart +++ b/bricks/dart_frog_prod_server/hooks/test/src/pubspec_lock/pubspec_lock_test.dart @@ -307,12 +307,10 @@ packages: not_dependency: "bad" sdks: dart: ">=3.1.0 <4.0.0" - '''; /// A valid pubspec lock file with no packages. const _emptyPubspecLockContent = ''' sdks: dart: ">=3.1.0 <4.0.0" - '''; diff --git a/bricks/dart_frog_prod_server/hooks/test/src/uses_workspace_resolution_test.dart b/bricks/dart_frog_prod_server/hooks/test/src/uses_workspace_resolution_test.dart new file mode 100644 index 000000000..15fc3754e --- /dev/null +++ b/bricks/dart_frog_prod_server/hooks/test/src/uses_workspace_resolution_test.dart @@ -0,0 +1,122 @@ +import 'dart:io'; + +import 'package:dart_frog_prod_server_hooks/dart_frog_prod_server_hooks.dart'; +import 'package:mason/mason.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:path/path.dart' as path; +import 'package:test/test.dart'; + +class _MockHookContext extends Mock implements HookContext {} + +class _MockLogger extends Mock implements Logger {} + +void main() { + group('usesWorkspaceResolution', () { + late List exitCalls; + late HookContext context; + late Logger logger; + late Directory buildDirectory; + late Directory workingDirectory; + + setUp(() { + exitCalls = []; + context = _MockHookContext(); + logger = _MockLogger(); + buildDirectory = Directory.systemTemp.createTempSync('build'); + workingDirectory = Directory.systemTemp.createTempSync('working'); + + when(() => context.logger).thenReturn(logger); + + addTearDown(() { + buildDirectory.delete().ignore(); + workingDirectory.delete().ignore(); + }); + }); + + group('when pubspec.yaml does not exist', () { + test('returns false', () { + expect( + usesWorkspaceResolution( + context, + workingDirectory: workingDirectory.path, + exit: exitCalls.add, + ), + isFalse, + ); + }); + }); + + group('when pubspec.yaml is malformed', () { + late File pubspecFile; + setUp(() { + pubspecFile = File( + path.join(workingDirectory.path, 'pubspec.yaml'), + )..writeAsStringSync('invalid pubspec.yaml'); + }); + + test('returns false', () { + expect( + usesWorkspaceResolution( + context, + workingDirectory: workingDirectory.path, + exit: exitCalls.add, + ), + isFalse, + ); + expect(exitCalls, equals([1])); + verify( + () => logger.err( + any(that: contains('Unable to parse ${pubspecFile.path}')), + ), + ); + }); + }); + + group('when pubspec.yaml is valid with no resolution', () { + setUp(() { + File( + path.join(workingDirectory.path, 'pubspec.yaml'), + ).writeAsStringSync(''' +name: _ +'''); + }); + + test('returns false', () { + expect( + usesWorkspaceResolution( + context, + workingDirectory: workingDirectory.path, + exit: exitCalls.add, + ), + isFalse, + ); + expect(exitCalls, isEmpty); + verifyNever(() => logger.err(any())); + }); + }); + + group('when pubspec.yaml is valid with resolution workspace', () { + setUp(() { + File( + path.join(workingDirectory.path, 'pubspec.yaml'), + ).writeAsStringSync(''' +name: _ +resolution: workspace +'''); + }); + + test('returns true', () { + expect( + usesWorkspaceResolution( + context, + workingDirectory: workingDirectory.path, + exit: exitCalls.add, + ), + isTrue, + ); + expect(exitCalls, isEmpty); + verifyNever(() => logger.err(any())); + }); + }); + }); +} diff --git a/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart b/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart index 14ab90541..d621f622d 100644 --- a/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart +++ b/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart @@ -20,15 +20,165 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/{{#addDockerfile}}Dockerfile{{/addDockerfile}}", "data": - "IyBPZmZpY2lhbCBEYXJ0IGltYWdlOiBodHRwczovL2h1Yi5kb2NrZXIuY29tL18vZGFydAojIFNwZWNpZnkgdGhlIERhcnQgU0RLIGJhc2UgaW1hZ2UgdmVyc2lvbiB1c2luZyBkYXJ0Ojx2ZXJzaW9uPiAoZXg6IGRhcnQ6Mi4xNykKRlJPTSBkYXJ0Ont7ZGFydFZlcnNpb259fSBBUyBidWlsZAoKV09SS0RJUiAvYXBwCnt7I2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzfX0KCiMgQ29weSBleHRlcm5hbCBkZXBlbmRlbmNpZXMKQ09QWSAuLy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMgIC4vLmRhcnRfZnJvZ19wYXRoX2RlcGVuZGVuY2llcwpDT1BZIC4vcHVic3BlY19vdmVycmlkZXMueWFtbCAuL3B1YnNwZWNfb3ZlcnJpZGVzLnlhbWwKe3svaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXN9fQojIENvcHkgRGVwZW5kZW5jaWVzCnt7I3BhdGhEZXBlbmRlbmNpZXN9fUNPUFkge3t7Ln19fSAuL3t7ey59fX0Ke3svcGF0aERlcGVuZGVuY2llc319Cnt7Xmhhc0V4dGVybmFsRGVwZW5kZW5jaWVzfX0KIyBJbnN0YWxsIERlcGVuZGVuY2llcwp7eyNwYXRoRGVwZW5kZW5jaWVzfX1SVU4gZGFydCBwdWIgZ2V0IC1DIHt7ey59fX0Ke3svcGF0aERlcGVuZGVuY2llc319Cnt7L2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzfX0KIyBSZXNvbHZlIGFwcCBkZXBlbmRlbmNpZXMuCkNPUFkgcHVic3BlYy4qIC4vClJVTiBkYXJ0IHB1YiBnZXQKCiMgQ29weSBhcHAgc291cmNlIGNvZGUgYW5kIEFPVCBjb21waWxlIGl0LgpDT1BZIC4gLgojIEVuc3VyZSBwYWNrYWdlcyBhcmUgc3RpbGwgdXAtdG8tZGF0ZSBpZiBhbnl0aGluZyBoYXMgY2hhbmdlZApSVU4gZGFydCBwdWIgZ2V0IC0tb2ZmbGluZQpSVU4gZGFydCBjb21waWxlIGV4ZSBiaW4vc2VydmVyLmRhcnQgLW8gYmluL3NlcnZlcgoKIyBCdWlsZCBtaW5pbWFsIHNlcnZpbmcgaW1hZ2UgZnJvbSBBT1QtY29tcGlsZWQgYC9zZXJ2ZXJgIGFuZCByZXF1aXJlZCBzeXN0ZW0KIyBsaWJyYXJpZXMgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZXMgc3RvcmVkIGluIGAvcnVudGltZS9gIGZyb20gdGhlIGJ1aWxkIHN0YWdlLgpGUk9NIHNjcmF0Y2gKQ09QWSAtLWZyb209YnVpbGQgL3J1bnRpbWUvIC8KQ09QWSAtLWZyb209YnVpbGQgL2FwcC9iaW4vc2VydmVyIC9hcHAvYmluLwp7eyNzZXJ2ZVN0YXRpY0ZpbGVzfX1DT1BZIC0tZnJvbT1idWlsZCAvYXBwL3B1YmxpYyAvcHVibGljL3t7L3NlcnZlU3RhdGljRmlsZXN9fQoKIyBTdGFydCBzZXJ2ZXIuCkNNRCBbIi9hcHAvYmluL3NlcnZlciJdCg==", + "IyBPZmZpY2lhbCBEYXJ0IGltYWdlOiBodHRwczovL2h1Yi5kb2NrZXIuY29tL18vZGFydAojIFNwZWNpZnkgdGhlIERhcnQgU0RLIGJhc2UgaW1hZ2UgdmVyc2lvbiB1c2luZyBkYXJ0Ojx2ZXJzaW9uPiAoZXg6IGRhcnQ6Mi4xNykKRlJPTSBkYXJ0Ont7ZGFydFZlcnNpb259fSBBUyBidWlsZAoKV09SS0RJUiAvYXBwCnt7I2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzfX0KCiMgQ29weSBleHRlcm5hbCBkZXBlbmRlbmNpZXMKQ09QWSAuLy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMgIC4vLmRhcnRfZnJvZ19wYXRoX2RlcGVuZGVuY2llcwpDT1BZIC4vcHVic3BlY19vdmVycmlkZXMueWFtbCAuL3B1YnNwZWNfb3ZlcnJpZGVzLnlhbWwKe3svaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXN9fQojIENvcHkgRGVwZW5kZW5jaWVzCnt7I3BhdGhEZXBlbmRlbmNpZXN9fUNPUFkge3t7Ln19fSAuL3t7ey59fX0Ke3svcGF0aERlcGVuZGVuY2llc319Cnt7Xmhhc0V4dGVybmFsRGVwZW5kZW5jaWVzfX0KIyBJbnN0YWxsIERlcGVuZGVuY2llcwp7eyNwYXRoRGVwZW5kZW5jaWVzfX1SVU4gZGFydCBwdWIgZ2V0IC1DIHt7ey59fX0Ke3svcGF0aERlcGVuZGVuY2llc319Cnt7L2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzfX0KIyBSZXNvbHZlIGFwcCBkZXBlbmRlbmNpZXMuCkNPUFkgcHVic3BlYy4qIC4vCkNPUFkgcHVic3BlY19vdmVycmlkZXMueWFtbCogLi8KUlVOIGRhcnQgcHViIGdldAoKIyBDb3B5IGFwcCBzb3VyY2UgY29kZSBhbmQgQU9UIGNvbXBpbGUgaXQuCkNPUFkgLiAuCiMgRW5zdXJlIHBhY2thZ2VzIGFyZSBzdGlsbCB1cC10by1kYXRlIGlmIGFueXRoaW5nIGhhcyBjaGFuZ2VkClJVTiBkYXJ0IHB1YiBnZXQgLS1vZmZsaW5lClJVTiBkYXJ0IGNvbXBpbGUgZXhlIGJpbi9zZXJ2ZXIuZGFydCAtbyBiaW4vc2VydmVyCgojIEJ1aWxkIG1pbmltYWwgc2VydmluZyBpbWFnZSBmcm9tIEFPVC1jb21waWxlZCBgL3NlcnZlcmAgYW5kIHJlcXVpcmVkIHN5c3RlbQojIGxpYnJhcmllcyBhbmQgY29uZmlndXJhdGlvbiBmaWxlcyBzdG9yZWQgaW4gYC9ydW50aW1lL2AgZnJvbSB0aGUgYnVpbGQgc3RhZ2UuCkZST00gc2NyYXRjaApDT1BZIC0tZnJvbT1idWlsZCAvcnVudGltZS8gLwpDT1BZIC0tZnJvbT1idWlsZCAvYXBwL2Jpbi9zZXJ2ZXIgL2FwcC9iaW4vCnt7I3NlcnZlU3RhdGljRmlsZXN9fUNPUFkgLS1mcm9tPWJ1aWxkIC9hcHAvcHVibGljIC9wdWJsaWMve3svc2VydmVTdGF0aWNGaWxlc319CgojIFN0YXJ0IHNlcnZlci4KQ01EIFsiL2FwcC9iaW4vc2VydmVyIl0K", "type": "text" } ], "hooks": [ + { + "path": "build/lib/dart_frog_prod_server_hooks.dart", + "data": + "ZXhwb3J0ICdzcmMvY3JlYXRlX2J1bmRsZS5kYXJ0JzsKZXhwb3J0ICdzcmMvY3JlYXRlX2V4dGVybmFsX3BhY2thZ2VzX2ZvbGRlci5kYXJ0JzsKZXhwb3J0ICdzcmMvZGFydF9wdWJfZ2V0LmRhcnQnOwpleHBvcnQgJ3NyYy9kaXNhYmxlX3dvcmtzcGFjZV9yZXNvbHV0aW9uLmRhcnQnOwpleHBvcnQgJ3NyYy9leGl0X292ZXJyaWRlcy5kYXJ0JzsKZXhwb3J0ICdzcmMvZ2V0X2ludGVybmFsX3BhdGhfZGVwZW5kZW5jaWVzLmRhcnQnOwpleHBvcnQgJ3NyYy9nZXRfcHVic3BlY19sb2NrLmRhcnQnOwpleHBvcnQgJ3NyYy91c2VzX3dvcmtzcGFjZV9yZXNvbHV0aW9uLmRhcnQnOwo=", + "type": "text" + }, + { + "path": "build/lib/src/create_bundle.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTppby9pby5kYXJ0JyBzaG93IGNvcHlQYXRoOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKCkZ1dHVyZTx2b2lkPiBjcmVhdGVCdW5kbGUoewogIHJlcXVpcmVkIEhvb2tDb250ZXh0IGNvbnRleHQsCiAgcmVxdWlyZWQgaW8uRGlyZWN0b3J5IHByb2plY3REaXJlY3RvcnksCiAgcmVxdWlyZWQgaW8uRGlyZWN0b3J5IGJ1aWxkRGlyZWN0b3J5LAogIHJlcXVpcmVkIHZvaWQgRnVuY3Rpb24oaW50IGV4aXRDb2RlKSBleGl0LAp9KSBhc3luYyB7CiAgZmluYWwgZGFydEZyb2dEaXJlY3RvcnlQYXRoID0gcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJy5kYXJ0X2Zyb2cnKTsKICBmaW5hbCBkYXJ0RnJvZ0RpcmVjdG9yeSA9IGlvLkRpcmVjdG9yeShkYXJ0RnJvZ0RpcmVjdG9yeVBhdGgpOwogIGZpbmFsIGJ1bmRsaW5nUHJvZ3Jlc3MgPSBjb250ZXh0LmxvZ2dlci5wcm9ncmVzcygnQnVuZGxpbmcgc291cmNlcycpOwogIGZpbmFsIHRlbXBEaXJlY3RvcnkgPSBhd2FpdCBpby5EaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wKCk7CgogIGlmIChidWlsZERpcmVjdG9yeS5leGlzdHNTeW5jKCkpIHsKICAgIGF3YWl0IGJ1aWxkRGlyZWN0b3J5LmRlbGV0ZShyZWN1cnNpdmU6IHRydWUpOwogIH0KCiAgaWYgKGRhcnRGcm9nRGlyZWN0b3J5LmV4aXN0c1N5bmMoKSkgewogICAgYXdhaXQgZGFydEZyb2dEaXJlY3RvcnkuZGVsZXRlKHJlY3Vyc2l2ZTogdHJ1ZSk7CiAgfQoKICB0cnkgewogICAgYXdhaXQgY29weVBhdGgoCiAgICAgIHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgJyR7dGVtcERpcmVjdG9yeS5wYXRofSR7cGF0aC5zZXBhcmF0b3J9JywKICAgICk7CiAgICBidW5kbGluZ1Byb2dyZXNzLmNvbXBsZXRlKCk7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGVycm9yKSB7CiAgICBidW5kbGluZ1Byb2dyZXNzLmZhaWwoKTsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGVycm9yJyk7CiAgICByZXR1cm4gZXhpdCgxKTsKICB9CiAgYXdhaXQgY29weVBhdGgodGVtcERpcmVjdG9yeS5wYXRoLCBidWlsZERpcmVjdG9yeS5wYXRoKTsKfQo=", + "type": "text" + }, + { + "path": "build/lib/src/create_external_packages_folder.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW87CmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKCi8vLyBTaWduYXR1cmUgb2YgW2lvLmNvcHlQYXRoXS4KdHlwZWRlZiBDb3B5UGF0aCA9IEZ1dHVyZTx2b2lkPiBGdW5jdGlvbihTdHJpbmcgZnJvbSwgU3RyaW5nIHRvKTsKCkZ1dHVyZTxMaXN0PFN0cmluZz4+IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoewogIHJlcXVpcmVkIERpcmVjdG9yeSBwcm9qZWN0RGlyZWN0b3J5LAogIHJlcXVpcmVkIERpcmVjdG9yeSBidWlsZERpcmVjdG9yeSwKICBDb3B5UGF0aCBjb3B5UGF0aCA9IGlvLmNvcHlQYXRoLAp9KSBhc3luYyB7CiAgZmluYWwgcGF0aFJlc29sdmVyID0gcGF0aC5jb250ZXh0OwogIGZpbmFsIHB1YnNwZWNMb2NrID0gYXdhaXQgZ2V0UHVic3BlY0xvY2soCiAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBwYXRoQ29udGV4dDogcGF0aC5jb250ZXh0LAogICk7CgogIGZpbmFsIGV4dGVybmFsUGF0aERlcGVuZGVuY2llcyA9IHB1YnNwZWNMb2NrLnBhY2thZ2VzCiAgICAgIC5tYXAoCiAgICAgICAgKGRlcGVuZGVuY3kpIHsKICAgICAgICAgIGZpbmFsIHBhdGhEZXNjcmlwdGlvbiA9IGRlcGVuZGVuY3kucGF0aERlc2NyaXB0aW9uOwogICAgICAgICAgaWYgKHBhdGhEZXNjcmlwdGlvbiA9PSBudWxsKSByZXR1cm4gbnVsbDsKCiAgICAgICAgICBmaW5hbCBpc0V4dGVybmFsID0gIXBhdGhSZXNvbHZlci5pc1dpdGhpbignJywgcGF0aERlc2NyaXB0aW9uLnBhdGgpOwogICAgICAgICAgaWYgKCFpc0V4dGVybmFsKSByZXR1cm4gbnVsbDsKCiAgICAgICAgICByZXR1cm4gX0V4dGVybmFsUGF0aERlcGVuZGVuY3koCiAgICAgICAgICAgIG5hbWU6IGRlcGVuZGVuY3kubmFtZSwKICAgICAgICAgICAgcGF0aDogcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgcGF0aERlc2NyaXB0aW9uLnBhdGgpLAogICAgICAgICAgKTsKICAgICAgICB9LAogICAgICApCiAgICAgIC53aGVyZVR5cGU8X0V4dGVybmFsUGF0aERlcGVuZGVuY3k+KCkKICAgICAgLnRvTGlzdCgpOwoKICBpZiAoZXh0ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLmlzRW1wdHkpIHJldHVybiBbXTsKCiAgZmluYWwgcGFja2FnZXNEaXJlY3RvcnkgPSBEaXJlY3RvcnkoCiAgICBwYXRoUmVzb2x2ZXIuam9pbigKICAgICAgYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgKSwKICApLi5jcmVhdGVTeW5jKHJlY3Vyc2l2ZTogdHJ1ZSk7CgogIGZpbmFsIGNvcGllZEV4dGVybmFsUGF0aERlcGVuZGVuY2llcyA9IGF3YWl0IEZ1dHVyZS53YWl0KAogICAgZXh0ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLm1hcCgKICAgICAgKGV4dGVybmFsUGF0aERlcGVuZGVuY3kpIGFzeW5jIHsKICAgICAgICBmaW5hbCBjb3B5ID0gYXdhaXQgZXh0ZXJuYWxQYXRoRGVwZW5kZW5jeS5jb3B5VG8oCiAgICAgICAgICBjb3B5UGF0aDogY29weVBhdGgsCiAgICAgICAgICB0YXJnZXREaXJlY3Rvcnk6IERpcmVjdG9yeSgKICAgICAgICAgICAgcGF0aFJlc29sdmVyLmpvaW4oCiAgICAgICAgICAgICAgcGFja2FnZXNEaXJlY3RvcnkucGF0aCwKICAgICAgICAgICAgICBleHRlcm5hbFBhdGhEZXBlbmRlbmN5Lm5hbWUsCiAgICAgICAgICAgICksCiAgICAgICAgICApLAogICAgICAgICk7CiAgICAgICAgb3ZlcnJpZGVSZXNvbHV0aW9uSW5QdWJzcGVjT3ZlcnJpZGVzKGNvcHkucGF0aCk7CiAgICAgICAgcmV0dXJuIGNvcHk7CiAgICAgIH0sCiAgICApLAogICk7CgogIEZpbGUoCiAgICBwYXRoUmVzb2x2ZXIuam9pbihidWlsZERpcmVjdG9yeS5wYXRoLCAncHVic3BlY19vdmVycmlkZXMueWFtbCcpLAogICkud3JpdGVBc1N0cmluZ1N5bmMoCiAgICAnJycKcmVzb2x1dGlvbjogbnVsbApkZXBlbmRlbmN5X292ZXJyaWRlczoKJHtjb3BpZWRFeHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMubWFwKAogICAgICAoZGVwZW5kZW5jeSkgewogICAgICAgIGZpbmFsIG5hbWUgPSBkZXBlbmRlbmN5Lm5hbWU7CiAgICAgICAgZmluYWwgcGF0aCA9CiAgICAgICAgICAgIHBhdGhSZXNvbHZlci5yZWxhdGl2ZShkZXBlbmRlbmN5LnBhdGgsIGZyb206IGJ1aWxkRGlyZWN0b3J5LnBhdGgpOwogICAgICAgIHJldHVybiAnICAkbmFtZTpcbiAgICBwYXRoOiAkcGF0aCc7CiAgICAgIH0sCiAgICApLmpvaW4oJ1xuJyl9CicnJywKICApOwoKICByZXR1cm4gY29waWVkRXh0ZXJuYWxQYXRoRGVwZW5kZW5jaWVzCiAgICAgIC5tYXAoKGRlcGVuZGVuY3kpID0+IGRlcGVuZGVuY3kucGF0aCkKICAgICAgLnRvTGlzdCgpOwp9CgovLy8ge0B0ZW1wbGF0ZSBleHRlcm5hbF9wYXRoX2RlcGVuZGVuY3l9Ci8vLyBBIHBhdGggZGVwZW5kZW5jeSB0aGF0IGlzIG5vdCB3aXRoaW4gdGhlIGJ1bmRsZWQgRGFydCBGcm9nIHByb2plY3QKLy8vIGRpcmVjdG9yeS4KLy8vCi8vLyBGb3IgZXhhbXBsZToKLy8vIGBgYHlhbWwKLy8vIG5hbWU6IG15X2RhcnRfZnJvZ19wcm9qZWN0Ci8vLyBkZXBlbmRlbmNpZXM6Ci8vLyAgIG15X3BhY2thZ2U6Ci8vLyAgICAgcGF0aDogLi4vbXlfcGFja2FnZQovLy8gYGBgCi8vLyB7QGVuZHRlbXBsYXRlfQpjbGFzcyBfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeSB7CiAgLy8vIHtAbWFjcm8gZXh0ZXJuYWxfcGF0aF9kZXBlbmRlbmN5fQogIGNvbnN0IF9FeHRlcm5hbFBhdGhEZXBlbmRlbmN5KHsKICAgIHJlcXVpcmVkIHRoaXMubmFtZSwKICAgIHJlcXVpcmVkIHRoaXMucGF0aCwKICB9KTsKCiAgLy8vIFRoZSBuYW1lIG9mIHRoZSBwYWNrYWdlLgogIGZpbmFsIFN0cmluZyBuYW1lOwoKICAvLy8gVGhlIGFic29sdXRlIHBhdGggdG8gdGhlIHBhY2thZ2UuCiAgZmluYWwgU3RyaW5nIHBhdGg7CgogIC8vLyBDb3BpZXMgdGhlIFtfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeV0gdG8gW3RhcmdldERpcmVjdG9yeV0uCiAgRnV0dXJlPF9FeHRlcm5hbFBhdGhEZXBlbmRlbmN5PiBjb3B5VG8oewogICAgcmVxdWlyZWQgRGlyZWN0b3J5IHRhcmdldERpcmVjdG9yeSwKICAgIENvcHlQYXRoIGNvcHlQYXRoID0gaW8uY29weVBhdGgsCiAgfSkgYXN5bmMgewogICAgYXdhaXQgY29weVBhdGgocGF0aCwgdGFyZ2V0RGlyZWN0b3J5LnBhdGgpOwogICAgcmV0dXJuIF9FeHRlcm5hbFBhdGhEZXBlbmRlbmN5KG5hbWU6IG5hbWUsIHBhdGg6IHRhcmdldERpcmVjdG9yeS5wYXRoKTsKICB9Cn0K", + "type": "text" + }, + { + "path": "build/lib/src/dart_pub_get.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JzsKCnR5cGVkZWYgUHJvY2Vzc1J1bm5lciA9IEZ1dHVyZTxpby5Qcm9jZXNzUmVzdWx0PiBGdW5jdGlvbigKICBTdHJpbmcgZXhlY3V0YWJsZSwKICBMaXN0PFN0cmluZz4gYXJndW1lbnRzLCB7CiAgU3RyaW5nIHdvcmtpbmdEaXJlY3RvcnksCiAgYm9vbCBydW5JblNoZWxsLAp9KTsKCkZ1dHVyZTx2b2lkPiBkYXJ0UHViR2V0KAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICByZXF1aXJlZCBTdHJpbmcgd29ya2luZ0RpcmVjdG9yeSwKICByZXF1aXJlZCBQcm9jZXNzUnVubmVyIHJ1blByb2Nlc3MsCiAgcmVxdWlyZWQgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQsCn0pIGFzeW5jIHsKICBmaW5hbCBwcm9ncmVzcyA9IGNvbnRleHQubG9nZ2VyLnByb2dyZXNzKCdJbnN0YWxsaW5nIGRlcGVuZGVuY2llcycpOwogIHRyeSB7CiAgICBmaW5hbCByZXN1bHQgPSBhd2FpdCBydW5Qcm9jZXNzKAogICAgICAnZGFydCcsCiAgICAgIFsncHViJywgJ2dldCddLAogICAgICB3b3JraW5nRGlyZWN0b3J5OiB3b3JraW5nRGlyZWN0b3J5LAogICAgICBydW5JblNoZWxsOiB0cnVlLAogICAgKTsKICAgIHByb2dyZXNzLmNvbXBsZXRlKCk7CgogICAgaWYgKHJlc3VsdC5leGl0Q29kZSAhPSAwKSB7CiAgICAgIGNvbnRleHQubG9nZ2VyLmVycignJHtyZXN1bHQuc3RkZXJyfScpOwogICAgICByZXR1cm4gZXhpdChyZXN1bHQuZXhpdENvZGUpOwogICAgfQogIH0gb24gaW8uUHJvY2Vzc0V4Y2VwdGlvbiBjYXRjaCAoZXJyb3IpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycihlcnJvci5tZXNzYWdlKTsKICAgIHJldHVybiBleGl0KGVycm9yLmVycm9yQ29kZSk7CiAgfQp9Cg==", + "type": "text" + }, + { + "path": "build/lib/src/disable_workspace_resolution.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp5YW1sL3lhbWwuZGFydCc7CmltcG9ydCAncGFja2FnZTp5YW1sX2VkaXQveWFtbF9lZGl0LmRhcnQnOwoKLy8vIEEgdm9pZCBjYWxsYmFjayBmdW5jdGlvbiAoZS5nLiBgdm9pZCBGdW5jdGlvbigpYCkuCnR5cGVkZWYgVm9pZENhbGxiYWNrID0gdm9pZCBGdW5jdGlvbigpOwoKdm9pZCBfbm9vcCgpIHt9CgovLy8gT3B0cyBvdXQgb2YgZGFydCB3b3Jrc3BhY2VzIHVudGlsIHdlIGNhbiBnZW5lcmF0ZSBwZXIgcGFja2FnZSBsb2NrZmlsZXMuCi8vLyBodHRwczovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3B1Yi9pc3N1ZXMvNDU5NApWb2lkQ2FsbGJhY2sgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIHJlcXVpcmVkIFN0cmluZyBwcm9qZWN0RGlyZWN0b3J5LAogIHJlcXVpcmVkIHZvaWQgRnVuY3Rpb24oaW50IGV4aXRDb2RlKSBleGl0LAp9KSB7CiAgdHJ5IHsKICAgIHJldHVybiBvdmVycmlkZVJlc29sdXRpb25JblB1YnNwZWNPdmVycmlkZXMocHJvamVjdERpcmVjdG9yeSk7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGUpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGUnKTsKICAgIGV4aXQoMSk7CiAgICByZXR1cm4gX25vb3A7CiAgfQp9Cgp2b2lkIEZ1bmN0aW9uKCkgb3ZlcnJpZGVSZXNvbHV0aW9uSW5QdWJzcGVjT3ZlcnJpZGVzKFN0cmluZyBwcm9qZWN0RGlyZWN0b3J5KSB7CiAgZmluYWwgcHVic3BlY092ZXJyaWRlc0ZpbGUgPSBGaWxlKAogICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnksICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgKTsKCiAgaWYgKCFwdWJzcGVjT3ZlcnJpZGVzRmlsZS5leGlzdHNTeW5jKCkpIHsKICAgIHB1YnNwZWNPdmVycmlkZXNGaWxlLndyaXRlQXNTdHJpbmdTeW5jKCdyZXNvbHV0aW9uOiBudWxsJyk7CiAgICByZXR1cm4gcHVic3BlY092ZXJyaWRlc0ZpbGUuZGVsZXRlU3luYzsKICB9CgogIGZpbmFsIGNvbnRlbnRzID0gcHVic3BlY092ZXJyaWRlc0ZpbGUucmVhZEFzU3RyaW5nU3luYygpOwogIGZpbmFsIHB1YnNwZWNPdmVycmlkZXMgPSBsb2FkWWFtbChjb250ZW50cykgYXMgWWFtbE1hcD87CgogIGlmIChwdWJzcGVjT3ZlcnJpZGVzID09IG51bGwpIHsKICAgIHB1YnNwZWNPdmVycmlkZXNGaWxlLndyaXRlQXNTdHJpbmdTeW5jKCdyZXNvbHV0aW9uOiBudWxsJyk7CiAgICByZXR1cm4gKCkgPT4gcHVic3BlY092ZXJyaWRlc0ZpbGUud3JpdGVBc1N0cmluZ1N5bmMoY29udGVudHMpOwogIH0KCiAgaWYgKHB1YnNwZWNPdmVycmlkZXNbJ3Jlc29sdXRpb24nXSA9PSAnbnVsbCcpIHJldHVybiBfbm9vcDsKCiAgZmluYWwgZWRpdG9yID0gWWFtbEVkaXRvcihjb250ZW50cykuLnVwZGF0ZShbJ3Jlc29sdXRpb24nXSwgbnVsbCk7CiAgcHVic3BlY092ZXJyaWRlc0ZpbGUud3JpdGVBc1N0cmluZ1N5bmMoZWRpdG9yLnRvU3RyaW5nKCkpOwoKICByZXR1cm4gKCkgPT4gcHVic3BlY092ZXJyaWRlc0ZpbGUud3JpdGVBc1N0cmluZ1N5bmMoY29udGVudHMpOwp9Cg==", + "type": "text" + }, + { + "path": "build/lib/src/exit_overrides.dart", + "data": + "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmNvbnN0IF9hc3luY1J1blpvbmVkID0gcnVuWm9uZWQ7Cgp2b2lkIGRlZmF1bHRFeGl0KGludCBjb2RlKSA9PiBFeGl0T3ZlcnJpZGVzLmN1cnJlbnQ/LmV4aXQgPz8gaW8uZXhpdDsKCmFic3RyYWN0IGNsYXNzIEV4aXRPdmVycmlkZXMgewogIHN0YXRpYyBmaW5hbCBfdG9rZW4gPSBPYmplY3QoKTsKCiAgc3RhdGljIEV4aXRPdmVycmlkZXM/IGdldCBjdXJyZW50IHsKICAgIHJldHVybiBab25lLmN1cnJlbnRbX3Rva2VuXSBhcyBFeGl0T3ZlcnJpZGVzPzsKICB9CgogIHN0YXRpYyBSIHJ1blpvbmVkPFI+KFIgRnVuY3Rpb24oKSBib2R5LCB7dm9pZCBGdW5jdGlvbihpbnQpPyBleGl0fSkgewogICAgZmluYWwgb3ZlcnJpZGVzID0gX0V4aXRPdmVycmlkZXNTY29wZShleGl0KTsKICAgIHJldHVybiBfYXN5bmNSdW5ab25lZChib2R5LCB6b25lVmFsdWVzOiB7X3Rva2VuOiBvdmVycmlkZXN9KTsKICB9CgogIHZvaWQgRnVuY3Rpb24oaW50IGV4aXRDb2RlKSBnZXQgZXhpdCA9PiBpby5leGl0Owp9CgpjbGFzcyBfRXhpdE92ZXJyaWRlc1Njb3BlIGV4dGVuZHMgRXhpdE92ZXJyaWRlcyB7CiAgX0V4aXRPdmVycmlkZXNTY29wZSh0aGlzLl9leGl0KTsKCiAgZmluYWwgRXhpdE92ZXJyaWRlcz8gX3ByZXZpb3VzID0gRXhpdE92ZXJyaWRlcy5jdXJyZW50OwogIGZpbmFsIHZvaWQgRnVuY3Rpb24oaW50IGV4aXRDb2RlKT8gX2V4aXQ7CgogIEBvdmVycmlkZQogIHZvaWQgRnVuY3Rpb24oaW50IGV4aXRDb2RlKSBnZXQgZXhpdCB7CiAgICByZXR1cm4gX2V4aXQgPz8gX3ByZXZpb3VzPy5leGl0ID8/IHN1cGVyLmV4aXQ7CiAgfQp9Cg==", + "type": "text" + }, + { + "path": "build/lib/src/get_internal_path_dependencies.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CgpGdXR1cmU8TGlzdDxTdHJpbmc+PiBnZXRJbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMoaW8uRGlyZWN0b3J5IGRpcmVjdG9yeSkgYXN5bmMgewogIGZpbmFsIHB1YnNwZWNMb2NrID0gYXdhaXQgZ2V0UHVic3BlY0xvY2soZGlyZWN0b3J5LnBhdGgpOwoKICBmaW5hbCBpbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMgPSBwdWJzcGVjTG9jay5wYWNrYWdlcy53aGVyZSgKICAgIChkZXBlbmRlbmN5KSB7CiAgICAgIGZpbmFsIHBhdGhEZXNjcmlwdGlvbiA9IGRlcGVuZGVuY3kucGF0aERlc2NyaXB0aW9uOwogICAgICBpZiAocGF0aERlc2NyaXB0aW9uID09IG51bGwpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KCiAgICAgIHJldHVybiBwYXRoLmlzV2l0aGluKCcnLCBwYXRoRGVzY3JpcHRpb24ucGF0aCk7CiAgICB9LAogICk7CgogIHJldHVybiBpbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMKICAgICAgLm1hcCgoZGVwZW5kZW5jeSkgPT4gZGVwZW5kZW5jeS5wYXRoRGVzY3JpcHRpb24hLnBhdGgpCiAgICAgIC50b0xpc3QoKTsKfQo=", + "type": "text" + }, + { + "path": "build/lib/src/get_pubspec_lock.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3Mvc3JjL3B1YnNwZWNfbG9jay9wdWJzcGVjX2xvY2suZGFydCc7CmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKCkZ1dHVyZTxQdWJzcGVjTG9jaz4gZ2V0UHVic3BlY0xvY2soCiAgU3RyaW5nIHdvcmtpbmdEaXJlY3RvcnksIHsKICBwYXRoLkNvbnRleHQ/IHBhdGhDb250ZXh0LAp9KSBhc3luYyB7CiAgZmluYWwgcGF0aFJlc29sdmVyID0gcGF0aENvbnRleHQgPz8gcGF0aC5jb250ZXh0OwogIGZpbmFsIHB1YnNwZWNMb2NrRmlsZSA9IEZpbGUoCiAgICB3b3JraW5nRGlyZWN0b3J5LmlzRW1wdHkKICAgICAgICA/ICdwdWJzcGVjLmxvY2snCiAgICAgICAgOiBwYXRoUmVzb2x2ZXIuam9pbih3b3JraW5nRGlyZWN0b3J5LCAncHVic3BlYy5sb2NrJyksCiAgKTsKCiAgZmluYWwgY29udGVudCA9IGF3YWl0IHB1YnNwZWNMb2NrRmlsZS5yZWFkQXNTdHJpbmcoKTsKICByZXR1cm4gUHVic3BlY0xvY2suZnJvbVN0cmluZyhjb250ZW50KTsKfQo=", + "type": "text" + }, + { + "path": "build/lib/src/pubspec_lock/pubspec_lock.dart", + "data": + "aW1wb3J0ICdkYXJ0OmNvbGxlY3Rpb24nOwoKaW1wb3J0ICdwYWNrYWdlOmVxdWF0YWJsZS9lcXVhdGFibGUuZGFydCc7CmltcG9ydCAncGFja2FnZTp5YW1sL3lhbWwuZGFydCc7CgovLy8ge0B0ZW1wbGF0ZSBwdWJzcGVjX2xvY2tfcGFyc2VfZXhjZXB0aW9ufQovLy8gVGhyb3duIHdoZW4gYSBbUHVic3BlY0xvY2tdIGZhaWxzIHRvIHBhcnNlLgovLy8ge0BlbmR0ZW1wbGF0ZX0KY2xhc3MgUHVic3BlY0xvY2tQYXJzZUV4Y2VwdGlvbiBpbXBsZW1lbnRzIEV4Y2VwdGlvbiB7CiAgLy8vIHtAbWFjcm8gcHVic3BlY19sb2NrX3BhcnNlX2V4Y2VwdGlvbn0KICBjb25zdCBQdWJzcGVjTG9ja1BhcnNlRXhjZXB0aW9uKCk7Cn0KCi8vLyBBIHJlcHJlc2VudGF0aW9uIG9mIGEgcHVic3BlYy5sb2NrIGZpbGUuCmNsYXNzIFB1YnNwZWNMb2NrIHsKICBjb25zdCBQdWJzcGVjTG9jay5fKHsKICAgIHJlcXVpcmVkIHRoaXMucGFja2FnZXMsCiAgfSk7CgogIC8vLyBQYXJzZXMgYSBbUHVic3BlY0xvY2tdIGZyb20gYSBzdHJpbmcuCiAgLy8vCiAgLy8vIElmIG5vIHBhY2thZ2VzIGFyZSBmb3VuZCwgYW4gZW1wdHkgW1B1YnNwZWNMb2NrXSBpcyByZXR1cm5lZC4gVGhvc2UKICAvLy8gcGFja2FnZXMgZW50cmllcyB0aGF0IGNhbm5vdCBiZSBwYXJzZWQgYXJlIGlnbm9yZWQuCiAgLy8vCiAgLy8vIEl0IHRocm93cyBhIFtQdWJzcGVjTG9ja1BhcnNlRXhjZXB0aW9uXSBpZiB0aGUgc3RyaW5nIGNhbm5vdCBiZSBwYXJzZWQKICAvLy8gYXMgYSBbWWFtbE1hcF0uCiAgZmFjdG9yeSBQdWJzcGVjTG9jay5mcm9tU3RyaW5nKFN0cmluZyBjb250ZW50KSB7CiAgICBsYXRlIGZpbmFsIFlhbWxNYXAgeWFtbDsKICAgIHRyeSB7CiAgICAgIHlhbWwgPSBsb2FkWWFtbChjb250ZW50KSBhcyBZYW1sTWFwOwogICAgICAvLyBpZ25vcmluZyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQogICAgICAvLyBpZ25vcmU6IGF2b2lkX2NhdGNoZXNfd2l0aG91dF9vbl9jbGF1c2VzCiAgICB9IGNhdGNoIChfKSB7CiAgICAgIHRocm93IGNvbnN0IFB1YnNwZWNMb2NrUGFyc2VFeGNlcHRpb24oKTsKICAgIH0KCiAgICBpZiAoIXlhbWwuY29udGFpbnNLZXkoJ3BhY2thZ2VzJykpIHsKICAgICAgcmV0dXJuIFB1YnNwZWNMb2NrLmVtcHR5OwogICAgfQoKICAgIGZpbmFsIHBhY2thZ2VzID0geWFtbFsncGFja2FnZXMnXSBhcyBZYW1sTWFwOwoKICAgIGZpbmFsIHBhcnNlZFBhY2thZ2VzID0gPFB1YnNwZWNMb2NrUGFja2FnZT5bXTsKICAgIGZvciAoZmluYWwgZW50cnkgaW4gcGFja2FnZXMuZW50cmllcykgewogICAgICB0cnkgewogICAgICAgIGZpbmFsIHBhY2thZ2UgPSBQdWJzcGVjTG9ja1BhY2thZ2UuZnJvbVlhbWxNYXAoCiAgICAgICAgICBuYW1lOiBlbnRyeS5rZXkgYXMgU3RyaW5nLAogICAgICAgICAgZGF0YTogZW50cnkudmFsdWUgYXMgWWFtbE1hcCwKICAgICAgICApOwogICAgICAgIHBhcnNlZFBhY2thZ2VzLmFkZChwYWNrYWdlKTsKICAgICAgICAvLyBpZ25vcmluZyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQogICAgICAgIC8vIGlnbm9yZTogYXZvaWRfY2F0Y2hlc193aXRob3V0X29uX2NsYXVzZXMKICAgICAgfSBjYXRjaCAoXykgewogICAgICAgIC8vIElnbm9yZSB0aG9zZSBwYWNrYWdlcyB0aGF0IGZvciBzb21lIHJlYXNvbiBjYW5ub3QgYmUgcGFyc2VkLgogICAgICB9CiAgICB9CgogICAgcmV0dXJuIFB1YnNwZWNMb2NrLl8oCiAgICAgIHBhY2thZ2VzOiBVbm1vZGlmaWFibGVMaXN0VmlldyhwYXJzZWRQYWNrYWdlcyksCiAgICApOwogIH0KCiAgLy8vIEFuIGVtcHR5IFtQdWJzcGVjTG9ja10uCiAgc3RhdGljIFB1YnNwZWNMb2NrIGVtcHR5ID0gUHVic3BlY0xvY2suXygKICAgIHBhY2thZ2VzOiBVbm1vZGlmaWFibGVMaXN0VmlldyhbXSksCiAgKTsKCiAgLy8vIEFsbCB0aGUgZGVwZW5kZW5jaWVzIGluIHRoZSBwdWJzcGVjLmxvY2sgZmlsZS4KICBmaW5hbCBVbm1vZGlmaWFibGVMaXN0VmlldzxQdWJzcGVjTG9ja1BhY2thZ2U+IHBhY2thZ2VzOwp9CgovLy8ge0B0ZW1wbGF0ZSBwdWJzcGVjX2xvY2tfZGVwZW5kZW5jeX0KLy8vIEEgcmVwcmVzZW50YXRpb24gb2YgYSBkZXBlbmRlbmN5IGluIGEgcHVic3BlYy5sb2NrIGZpbGUuCi8vLyB7QGVuZHRlbXBsYXRlfQpjbGFzcyBQdWJzcGVjTG9ja1BhY2thZ2UgZXh0ZW5kcyBFcXVhdGFibGUgewogIC8vLyB7QG1hY3JvIHB1YnNwZWNfbG9ja19kZXBlbmRlbmN5fQogIGNvbnN0IFB1YnNwZWNMb2NrUGFja2FnZSh7CiAgICByZXF1aXJlZCB0aGlzLm5hbWUsCiAgICByZXF1aXJlZCB0aGlzLnR5cGUsCiAgICB0aGlzLnBhdGhEZXNjcmlwdGlvbiwKICB9KTsKCiAgLy8vIFBhcnNlcyBhIFtQdWJzcGVjTG9ja1BhY2thZ2VdIGZyb20gYSBbWWFtbE1hcF0uCiAgZmFjdG9yeSBQdWJzcGVjTG9ja1BhY2thZ2UuZnJvbVlhbWxNYXAoewogICAgcmVxdWlyZWQgU3RyaW5nIG5hbWUsCiAgICByZXF1aXJlZCBZYW1sTWFwIGRhdGEsCiAgfSkgewogICAgZmluYWwgZGVwZW5kZW5jeSA9IGRhdGFbJ2RlcGVuZGVuY3knXSBhcyBTdHJpbmc7CiAgICBmaW5hbCBkZXBlbmRlbmN5VHlwZSA9IFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlLnBhcnNlKGRlcGVuZGVuY3kpOwoKICAgIGZpbmFsIGRlc2NyaXB0aW9uID0gZGF0YVsnZGVzY3JpcHRpb24nXSBhcyBZYW1sTWFwPzsKICAgIGZpbmFsIHBhdGhEZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uICE9IG51bGwKICAgICAgICA/IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uLnRyeVBhcnNlKGRlc2NyaXB0aW9uKQogICAgICAgIDogbnVsbDsKCiAgICByZXR1cm4gUHVic3BlY0xvY2tQYWNrYWdlKAogICAgICBuYW1lOiBuYW1lLAogICAgICB0eXBlOiBkZXBlbmRlbmN5VHlwZSwKICAgICAgcGF0aERlc2NyaXB0aW9uOiBwYXRoRGVzY3JpcHRpb24sCiAgICApOwogIH0KCiAgLy8vIFRoZSBuYW1lIG9mIHRoZSBkZXBlbmRlbmN5LgogIGZpbmFsIFN0cmluZyBuYW1lOwoKICAvLy8ge0BtYWNybyBwdWJzcGVjX2xvY2tfZGVwZW5kZW5jeV90eXBlfQogIGZpbmFsIFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlIHR5cGU7CgogIC8vLyB7QG1hY3JvIHB1YnNwZWNfcGFja2FnZV9wYXRoX2Rlc2NyaXB0aW9ufQogIGZpbmFsIFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uPyBwYXRoRGVzY3JpcHRpb247CgogIEBvdmVycmlkZQogIExpc3Q8T2JqZWN0Pz4gZ2V0IHByb3BzID0+IFtuYW1lLCB0eXBlLCBwYXRoRGVzY3JpcHRpb25dOwp9CgovLy8ge0B0ZW1wbGF0ZSBwdWJzcGVjX2xvY2tfZGVwZW5kZW5jeV90eXBlfQovLy8gVGhlIHR5cGUgb2YgYSBbUHVic3BlY0xvY2tQYWNrYWdlXS4KLy8vIHtAZW5kdGVtcGxhdGV9CmVudW0gUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUgewogIC8vLyBBbm90aGVyIHBhY2thZ2UgdGhhdCB5b3VyIHBhY2thZ2UgbmVlZHMgdG8gd29yay4KICAvLy8KICAvLy8gU2VlIGFsc286CiAgLy8vCiAgLy8vICogW0RhcnQncyBkZXBlbmRlbmN5IGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZGFydC5kZXYvdG9vbHMvcHViL2RlcGVuZGVuY2llcykKICBkaXJlY3RNYWluLl8oJ2RpcmVjdCBtYWluJyksCgogIC8vLyBBbm90aGVyIHBhY2thZ2UgdGhhdCB5b3VyIHBhY2thZ2UgbmVlZHMgZHVyaW5nIGRldmVsb3BtZW50LgogIC8vLwogIC8vLyBTZWUgYWxzbzoKICAvLy8KICAvLy8gKiBbRGFydCdzIGRldmVsb3BlciBkZXBlbmRlbmN5IGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZGFydC5kZXYvdG9vbHMvcHViL2RlcGVuZGVuY2llcyNkZXYtZGVwZW5kZW5jaWVzKQogIGRpcmVjdERldi5fKCdkaXJlY3QgZGV2JyksCgogIC8vLyBBIGRlcGVuZGVuY3kgdGhhdCB5b3VyIHBhY2thZ2UgaW5kaXJlY3RseSB1c2VzIGJlY2F1c2Ugb25lIG9mIGl0cwogIC8vLyBkZXBlbmRlbmNpZXMgcmVxdWlyZXMgaXQuCiAgLy8vCiAgLy8vIFNlZSBhbHNvOgogIC8vLwogIC8vLyAqIFtEYXJ0J3MgdHJhbnNpdGl2ZSBkZXBlbmRlbmN5IGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZGFydC5kZXYvdG9vbHMvcHViL2dsb3NzYXJ5I3RyYW5zaXRpdmUtKQogIHRyYW5zaXRpdmUuXygndHJhbnNpdGl2ZScpLAoKICAvLy8gIEEgZGVwZW5kZW5jeSB0aGF0IHlvdXIgcGFja2FnZSBvdmVycmlkZXMgdGhhdCBpcyBub3QgYWxyZWFkeSBhCiAgLy8vIGBkaXJlY3QgbWFpbmAgb3IgYGRpcmVjdCBkZXZgIGRlcGVuZGVuY3kuCiAgLy8vCiAgLy8vIFNlZSBhbHNvOgogIC8vLwogIC8vLyAqIFtEYXJ0J3MgZGVwZW5kZW5jeSBvdmVycmlkZSBkb2N1bWVudGF0aW9uXShodHRwczovL2RhcnQuZGV2L3Rvb2xzL3B1Yi9kZXBlbmRlbmNpZXMjZGVwZW5kZW5jeS1vdmVycmlkZXMpCiAgZGlyZWN0T3ZlcnJpZGRlbi5fKCdkaXJlY3Qgb3ZlcnJpZGRlbicpOwoKICBjb25zdCBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5fKHRoaXMudmFsdWUpOwoKICAvLy8gUGFyc2VzIGEgW1B1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlXSBmcm9tIGEgc3RyaW5nLgogIC8vLwogIC8vLyBUaHJvd3MgYW4gW0FyZ3VtZW50RXJyb3JdIGlmIHRoZSBzdHJpbmcgaXMgbm90IGEgdmFsaWQgZGVwZW5kZW5jeSB0eXBlLgogIGZhY3RvcnkgUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUucGFyc2UoU3RyaW5nIHZhbHVlKSB7CiAgICBpZiAoX3ZhbHVlTWFwLmNvbnRhaW5zS2V5KHZhbHVlKSkgewogICAgICByZXR1cm4gX3ZhbHVlTWFwW3ZhbHVlXSE7CiAgICB9CgogICAgdGhyb3cgQXJndW1lbnRFcnJvci52YWx1ZSgKICAgICAgdmFsdWUsCiAgICAgICd2YWx1ZScsCiAgICAgICdJbnZhbGlkIFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlIHZhbHVlLicsCiAgICApOwogIH0KCiAgc3RhdGljIE1hcDxTdHJpbmcsIFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlPiBfdmFsdWVNYXAgPSB7CiAgICBmb3IgKGZpbmFsIHR5cGUgaW4gUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUudmFsdWVzKQogICAgICB0eXBlLnZhbHVlOiB0eXBlLAogIH07CgogIC8vLyBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBbUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGVdCiAgLy8vIGFzIGl0IGFwcGVhcnMgaW4gYSBwdWJzcGVjLmxvY2sgZmlsZS4KICBmaW5hbCBTdHJpbmcgdmFsdWU7Cn0KCi8vLyB7QHRlbXBsYXRlIHB1YnNwZWNfcGFja2FnZV9wYXRoX2Rlc2NyaXB0aW9ufQovLy8gVGhlIGRlc2NyaXB0aW9uIG9mIGEgcGF0aCBkZXBlbmRlbmN5IGluIGEgcHVic3BlYy5sb2NrIGZpbGUuCi8vLwovLy8gRm9yIGV4YW1wbGUsIGluOgovLy8gYGBgeWFtbAovLy8gbXlfcGFja2FnZToKLy8vICAgZGVwZW5kZW5jeTogImRpcmVjdCBtYWluIgovLy8gICBkZXNjcmlwdGlvbjoKLy8vICAgICBwYXRoOiAicGFja2FnZXMvbXlfcGFja2FnZSIKLy8vICAgICByZWxhdGl2ZTogdHJ1ZQovLy8gICBzb3VyY2U6IHBhdGgKLy8vICAgdmVyc2lvbjogIjEuMC4wKzEiCi8vLyBgYGAKLy8vCi8vLyBUaGUgZGVzY3JpcHRpb24gaXM6Ci8vLyBgYGB5YW1sCi8vLyBwYXRoOiAicGFja2FnZXMvbXlfcGFja2FnZSIKLy8vIHJlbGF0aXZlOiB0cnVlCi8vLyBgYGAKLy8vCi8vLyBTZWUgYWxzbzoKLy8vCi8vLyAqIFtQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbi50cnlQYXJzZV0sIHdoaWNoIGF0dGVtcHRzIHRvIHBhcnNlcyBhCi8vLyBbWWFtbE1hcF0gaW50byBhIFtQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbl0uCi8vLyB7QGVuZHRlbXBsYXRlfQpjbGFzcyBQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbiBleHRlbmRzIEVxdWF0YWJsZSB7CiAgY29uc3QgUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oewogICAgcmVxdWlyZWQgdGhpcy5wYXRoLAogICAgcmVxdWlyZWQgdGhpcy5yZWxhdGl2ZSwKICB9KTsKCiAgLy8vIEF0dGVtcHRzIHRvIHBhcnNlIGEgW1lhbWxNYXBdIGludG8gYSBbUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb25dLgogIC8vLwogIC8vLyBSZXR1cm5zIGBudWxsYCBpZiB0aGUgW1lhbWxNYXBdIGRvZXMgbm90IGNvbnRhaW4gdGhlIHJlcXVpcmVkIGRhdGEKICAvLy8gdG8gY3JlYXRlIGEgW1B1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uXS4KICBzdGF0aWMgUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24/IHRyeVBhcnNlKFlhbWxNYXAgZGF0YSkgewogICAgaWYgKCghZGF0YS5jb250YWluc0tleSgncGF0aCcpIHx8IGRhdGFbJ3BhdGgnXSBpcyEgU3RyaW5nKSB8fAogICAgICAgICghZGF0YS5jb250YWluc0tleSgncmVsYXRpdmUnKSB8fCBkYXRhWydyZWxhdGl2ZSddIGlzISBib29sKSkgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBmaW5hbCBwYXRoID0gZGF0YVsncGF0aCddIGFzIFN0cmluZzsKICAgIGZpbmFsIHJlbGF0aXZlID0gZGF0YVsncmVsYXRpdmUnXSBhcyBib29sOwoKICAgIHJldHVybiBQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbigKICAgICAgcGF0aDogcGF0aCwKICAgICAgcmVsYXRpdmU6IHJlbGF0aXZlLAogICAgKTsKICB9CgogIGZpbmFsIFN0cmluZyBwYXRoOwogIGZpbmFsIGJvb2wgcmVsYXRpdmU7CgogIEBvdmVycmlkZQogIExpc3Q8T2JqZWN0Pz4gZ2V0IHByb3BzID0+IFtwYXRoLCByZWxhdGl2ZV07Cn0K", + "type": "text" + }, + { + "path": "build/lib/src/uses_workspace_resolution.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp5YW1sL3lhbWwuZGFydCc7CgovLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBwcm9qZWN0IGluIHRoZSBwcm92aWRlZCBbd29ya2luZ0RpcmVjdG9yeV0KLy8vIGlzIGNvbmZpZ3VyZWQgdG8gdXNlIGByZXNvbHV0aW9uOiB3b3Jrc3BhY2VgLgpib29sIHVzZXNXb3Jrc3BhY2VSZXNvbHV0aW9uKAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICByZXF1aXJlZCBTdHJpbmcgd29ya2luZ0RpcmVjdG9yeSwKICByZXF1aXJlZCB2b2lkIEZ1bmN0aW9uKGludCBleGl0Q29kZSkgZXhpdCwKfSkgewogIGZpbmFsIHB1YnNwZWNGaWxlID0gRmlsZShwYXRoLmpvaW4od29ya2luZ0RpcmVjdG9yeSwgJ3B1YnNwZWMueWFtbCcpKTsKICBpZiAoIXB1YnNwZWNGaWxlLmV4aXN0c1N5bmMoKSkgcmV0dXJuIGZhbHNlOwoKICBmaW5hbCBZYW1sTWFwIHB1YnNwZWM7CiAgdHJ5IHsKICAgIGZpbmFsIHlhbWwgPSBsb2FkWWFtbChwdWJzcGVjRmlsZS5yZWFkQXNTdHJpbmdTeW5jKCkpOwogICAgaWYgKHlhbWwgaXMhIFlhbWxNYXApIHsKICAgICAgdGhyb3cgRXhjZXB0aW9uKCdVbmFibGUgdG8gcGFyc2UgJHtwdWJzcGVjRmlsZS5wYXRofScpOwogICAgfQogICAgcHVic3BlYyA9IHlhbWw7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGUpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGUnKTsKICAgIGV4aXQoMSk7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKICByZXR1cm4gcHVic3BlY1sncmVzb2x1dGlvbiddID09ICd3b3Jrc3BhY2UnOwp9Cg==", + "type": "text" + }, + { + "path": "build/post_gen.dart", + "data": + "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcgc2hvdyBIb29rQ29udGV4dCwgbGlnaHRDeWFuOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CgpGdXR1cmU8dm9pZD4gcnVuKEhvb2tDb250ZXh0IGNvbnRleHQpID0+IHBvc3RHZW4oY29udGV4dCk7CgpGdXR1cmU8dm9pZD4gcG9zdEdlbigKICBIb29rQ29udGV4dCBjb250ZXh0LCB7CiAgaW8uRGlyZWN0b3J5PyBkaXJlY3RvcnksCiAgUHJvY2Vzc1J1bm5lciBydW5Qcm9jZXNzID0gaW8uUHJvY2Vzcy5ydW4sCiAgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQgPSBkZWZhdWx0RXhpdCwKfSkgYXN5bmMgewogIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBkaXJlY3RvcnkgPz8gaW8uRGlyZWN0b3J5LmN1cnJlbnQ7CiAgZmluYWwgYnVpbGREaXJlY3RvcnlQYXRoID0gcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJyk7CgogIGF3YWl0IGRhcnRQdWJHZXQoCiAgICBjb250ZXh0LAogICAgd29ya2luZ0RpcmVjdG9yeTogYnVpbGREaXJlY3RvcnlQYXRoLAogICAgcnVuUHJvY2VzczogcnVuUHJvY2VzcywKICAgIGV4aXQ6IGV4aXQsCiAgKTsKCiAgZmluYWwgcmVsYXRpdmVCdWlsZFBhdGggPSBwYXRoLnJlbGF0aXZlKGJ1aWxkRGlyZWN0b3J5UGF0aCk7CiAgY29udGV4dC5sb2dnZXIKICAgIC4uaW5mbygnJykKICAgIC4uc3VjY2VzcygnQ3JlYXRlZCBhIHByb2R1Y3Rpb24gYnVpbGQhJykKICAgIC4uaW5mbygnJykKICAgIC4uaW5mbygnU3RhcnQgdGhlIHByb2R1Y3Rpb24gc2VydmVyIGJ5IHJ1bm5pbmc6JykKICAgIC4uaW5mbygnJykKICAgIC4uaW5mbygKICAgICAgJycnJHtsaWdodEN5YW4ud3JhcCgnZGFydCAke3BhdGguam9pbihyZWxhdGl2ZUJ1aWxkUGF0aCwgJ2JpbicsICdzZXJ2ZXIuZGFydCcpfScpfScnJywKICAgICk7Cn0K", + "type": "text" + }, + { + "path": "build/pre_gen.dart", + "data": + "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW9fZXhwYW5kZWQ7CmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JwogICAgc2hvdyBIb29rQ29udGV4dCwgZGVmYXVsdEZvcmVncm91bmQsIGxpZ2h0Q3lhbjsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwoKdHlwZWRlZiBSb3V0ZUNvbmZpZ3VyYXRpb25CdWlsZGVyID0gUm91dGVDb25maWd1cmF0aW9uIEZ1bmN0aW9uKAogIGlvLkRpcmVjdG9yeSBkaXJlY3RvcnksCik7CgpGdXR1cmU8dm9pZD4gcnVuKEhvb2tDb250ZXh0IGNvbnRleHQpID0+IHByZUdlbihjb250ZXh0KTsKCkZ1dHVyZTx2b2lkPiBwcmVHZW4oCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIGlvLkRpcmVjdG9yeT8gZGlyZWN0b3J5LAogIFByb2Nlc3NSdW5uZXIgcnVuUHJvY2VzcyA9IGlvLlByb2Nlc3MucnVuLAogIFJvdXRlQ29uZmlndXJhdGlvbkJ1aWxkZXIgYnVpbGRDb25maWd1cmF0aW9uID0gYnVpbGRSb3V0ZUNvbmZpZ3VyYXRpb24sCiAgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQgPSBkZWZhdWx0RXhpdCwKICBGdXR1cmU8dm9pZD4gRnVuY3Rpb24oU3RyaW5nIGZyb20sIFN0cmluZyB0bykgY29weVBhdGggPSBpb19leHBhbmRlZC5jb3B5UGF0aCwKfSkgYXN5bmMgewogIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBkaXJlY3RvcnkgPz8gaW8uRGlyZWN0b3J5LmN1cnJlbnQ7CiAgZmluYWwgdXNlc1dvcmtzcGFjZXMgPSB1c2VzV29ya3NwYWNlUmVzb2x1dGlvbigKICAgIGNvbnRleHQsCiAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBleGl0OiBleGl0LAogICk7CgogIFZvaWRDYWxsYmFjaz8gcmVzdG9yZVdvcmtzcGFjZVJlc29sdXRpb247CgogIGlmICh1c2VzV29ya3NwYWNlcykgewogICAgLy8gRGlzYWJsZSB3b3Jrc3BhY2UgcmVzb2x1dGlvbiB1bnRpbCB3ZSBjYW4gZ2VuZXJhdGUgcGVyLXBhY2thZ2UgbG9ja2ZpbGVzLgogICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2RhcnQtbGFuZy9wdWIvaXNzdWVzLzQ1OTQKICAgIHJlc3RvcmVXb3Jrc3BhY2VSZXNvbHV0aW9uID0gZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgIGNvbnRleHQsCiAgICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgZXhpdDogZXhpdCwKICAgICk7CiAgfQoKICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBwdWJzcGVjLmxvY2sgZmlsZSBpcyB1cCB0byBkYXRlCiAgYXdhaXQgZGFydFB1YkdldCgKICAgIGNvbnRleHQsCiAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBydW5Qcm9jZXNzOiBydW5Qcm9jZXNzLAogICAgZXhpdDogZXhpdCwKICApOwoKICBmaW5hbCBidWlsZERpcmVjdG9yeSA9IGlvLkRpcmVjdG9yeSgKICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdidWlsZCcpLAogICk7CgogIGF3YWl0IGNyZWF0ZUJ1bmRsZSgKICAgIGNvbnRleHQ6IGNvbnRleHQsCiAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LAogICAgZXhpdDogZXhpdCwKICApOwoKICByZXN0b3JlV29ya3NwYWNlUmVzb2x1dGlvbj8uY2FsbCgpOwoKICBmaW5hbCBSb3V0ZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKICB0cnkgewogICAgY29uZmlndXJhdGlvbiA9IGJ1aWxkQ29uZmlndXJhdGlvbihwcm9qZWN0RGlyZWN0b3J5KTsKICB9IG9uIEV4Y2VwdGlvbiBjYXRjaCAoZXJyb3IpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGVycm9yJyk7CiAgICByZXR1cm4gZXhpdCgxKTsKICB9CgogIHJlcG9ydFJvdXRlQ29uZmxpY3RzKAogICAgY29uZmlndXJhdGlvbiwKICAgIG9uUm91dGVDb25mbGljdDogKAogICAgICBvcmlnaW5hbEZpbGVQYXRoLAogICAgICBjb25mbGljdGluZ0ZpbGVQYXRoLAogICAgICBjb25mbGljdGluZ0VuZHBvaW50LAogICAgKSB7CiAgICAgIGNvbnRleHQubG9nZ2VyLmVycigKICAgICAgICAnJydSb3V0ZSBjb25mbGljdCBkZXRlY3RlZC4gJHtsaWdodEN5YW4ud3JhcChvcmlnaW5hbEZpbGVQYXRoKX0gYW5kICR7bGlnaHRDeWFuLndyYXAoY29uZmxpY3RpbmdGaWxlUGF0aCl9IGJvdGggcmVzb2x2ZSB0byAke2xpZ2h0Q3lhbi53cmFwKGNvbmZsaWN0aW5nRW5kcG9pbnQpfS4nJycsCiAgICAgICk7CiAgICB9LAogICAgb25WaW9sYXRpb25FbmQ6ICgpID0+IGV4aXQoMSksCiAgKTsKCiAgcmVwb3J0Um9ndWVSb3V0ZXMoCiAgICBjb25maWd1cmF0aW9uLAogICAgb25Sb2d1ZVJvdXRlOiAoZmlsZVBhdGgsIGlkZWFsUGF0aCkgewogICAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICAgJycnUm9ndWUgcm91dGUgZGV0ZWN0ZWQuJHtkZWZhdWx0Rm9yZWdyb3VuZC53cmFwKCcgJyl9UmVuYW1lICR7bGlnaHRDeWFuLndyYXAoZmlsZVBhdGgpfSB0byAke2xpZ2h0Q3lhbi53cmFwKGlkZWFsUGF0aCl9LicnJywKICAgICAgKTsKICAgIH0sCiAgICBvblZpb2xhdGlvbkVuZDogKCkgPT4gZXhpdCgxKSwKICApOwoKICBmaW5hbCBjdXN0b21Eb2NrZXJGaWxlID0gaW8uRmlsZSgKICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdEb2NrZXJmaWxlJyksCiAgKTsKCiAgZmluYWwgaW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzID0gYXdhaXQgZ2V0SW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzKAogICAgcHJvamVjdERpcmVjdG9yeSwKICApOwoKICBmaW5hbCBleHRlcm5hbERlcGVuZGVuY2llcyA9IGF3YWl0IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoCiAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LAogICAgY29weVBhdGg6IGNvcHlQYXRoLAogICk7CgogIGZpbmFsIGFkZERvY2tlcmZpbGUgPSAhY3VzdG9tRG9ja2VyRmlsZS5leGlzdHNTeW5jKCk7CgogIGNvbnRleHQudmFycyA9IHsKICAgICdkaXJlY3Rvcmllcyc6IGNvbmZpZ3VyYXRpb24uZGlyZWN0b3JpZXMKICAgICAgICAubWFwKChjKSA9PiBjLnRvSnNvbigpKQogICAgICAgIC50b0xpc3QoKQogICAgICAgIC5yZXZlcnNlZAogICAgICAgIC50b0xpc3QoKSwKICAgICdyb3V0ZXMnOiBjb25maWd1cmF0aW9uLnJvdXRlcy5tYXAoKHIpID0+IHIudG9Kc29uKCkpLnRvTGlzdCgpLAogICAgJ21pZGRsZXdhcmUnOiBjb25maWd1cmF0aW9uLm1pZGRsZXdhcmUubWFwKChtKSA9PiBtLnRvSnNvbigpKS50b0xpc3QoKSwKICAgICdnbG9iYWxNaWRkbGV3YXJlJzogY29uZmlndXJhdGlvbi5nbG9iYWxNaWRkbGV3YXJlICE9IG51bGwKICAgICAgICA/IGNvbmZpZ3VyYXRpb24uZ2xvYmFsTWlkZGxld2FyZSEudG9Kc29uKCkKICAgICAgICA6IGZhbHNlLAogICAgJ3NlcnZlU3RhdGljRmlsZXMnOiBjb25maWd1cmF0aW9uLnNlcnZlU3RhdGljRmlsZXMsCiAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IGNvbmZpZ3VyYXRpb24uaW52b2tlQ3VzdG9tRW50cnlwb2ludCwKICAgICdpbnZva2VDdXN0b21Jbml0JzogY29uZmlndXJhdGlvbi5pbnZva2VDdXN0b21Jbml0LAogICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiBpbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMsCiAgICAnaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXMnOiBleHRlcm5hbERlcGVuZGVuY2llcy5pc05vdEVtcHR5LAogICAgJ2RhcnRWZXJzaW9uJzogY29udGV4dC52YXJzWydkYXJ0VmVyc2lvbiddLAogICAgJ2FkZERvY2tlcmZpbGUnOiBhZGREb2NrZXJmaWxlLAogIH07Cn0K", + "type": "text" + }, + { + "path": "build/pubspec.yaml", + "data": + "bmFtZTogZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzCnB1Ymxpc2hfdG86IG5vbmUKCmVudmlyb25tZW50OgogIHNkazogIj49My4wLjAgPDQuMC4wIgoKZGVwZW5kZW5jaWVzOgogIGRhcnRfZnJvZ19nZW46IF4yLjAuMAogIGVxdWF0YWJsZTogXjIuMC41CiAgaW86IF4xLjAuMwogIG1hc29uOiBeMC4xLjAKICBwYXRoOiBeMS44LjEKICB5YW1sOiBeMy4xLjIKICB5YW1sX2VkaXQ6IF4yLjIuMgoKZGV2X2RlcGVuZGVuY2llczoKICBtb2NrdGFpbDogXjEuMC4wCiAgdGVzdDogXjEuMjUuMAo=", + "type": "text" + }, + { + "path": "build/test/post_gen_test.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcKICAgIHNob3cgRXhpdENvZGUsIEhvb2tDb250ZXh0LCBMb2dnZXIsIFByb2dyZXNzLCBsaWdodEN5YW47CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKaW1wb3J0ICcuLi9wb3N0X2dlbi5kYXJ0JyBhcyBwb3N0X2dlbjsKCmNsYXNzIF9GYWtlSG9va0NvbnRleHQgZXh0ZW5kcyBGYWtlIGltcGxlbWVudHMgSG9va0NvbnRleHQgewogIF9GYWtlSG9va0NvbnRleHQoe0xvZ2dlcj8gbG9nZ2VyfSkgOiBfbG9nZ2VyID0gbG9nZ2VyID8/IF9Nb2NrTG9nZ2VyKCk7CgogIGZpbmFsIExvZ2dlciBfbG9nZ2VyOwoKICB2YXIgX3ZhcnMgPSA8U3RyaW5nLCBkeW5hbWljPnt9OwoKICBAb3ZlcnJpZGUKICBNYXA8U3RyaW5nLCBkeW5hbWljPiBnZXQgdmFycyA9PiBfdmFyczsKCiAgQG92ZXJyaWRlCiAgc2V0IHZhcnMoTWFwPFN0cmluZywgZHluYW1pYz4gdmFsdWUpID0+IF92YXJzID0gdmFsdWU7CgogIEBvdmVycmlkZQogIExvZ2dlciBnZXQgbG9nZ2VyID0+IF9sb2dnZXI7Cn0KCmNsYXNzIF9Nb2NrTG9nZ2VyIGV4dGVuZHMgTW9jayBpbXBsZW1lbnRzIExvZ2dlciB7fQoKY2xhc3MgX01vY2tQcm9ncmVzcyBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBQcm9ncmVzcyB7fQoKdm9pZCBtYWluKCkgewogIGdyb3VwKCdwb3N0R2VuJywgKCkgewogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwoKICAgIGNvbnN0IHByb2Nlc3NJZCA9IDQyOwogICAgZmluYWwgcHJvY2Vzc1Jlc3VsdCA9IFByb2Nlc3NSZXN1bHQoCiAgICAgIHByb2Nlc3NJZCwKICAgICAgRXhpdENvZGUuc3VjY2Vzcy5jb2RlLAogICAgICAnJywKICAgICAgJycsCiAgICApOwoKICAgIHNldFVwKCgpIHsKICAgICAgbG9nZ2VyID0gX01vY2tMb2dnZXIoKTsKICAgICAgY29udGV4dCA9IF9GYWtlSG9va0NvbnRleHQobG9nZ2VyOiBsb2dnZXIpOwoKICAgICAgd2hlbigoKSA9PiBsb2dnZXIucHJvZ3Jlc3MoYW55KCkpKS50aGVuUmV0dXJuKF9Nb2NrUHJvZ3Jlc3MoKSk7CiAgICB9KTsKCiAgICB0ZXN0KCdydW4gY29tcGxldGVzJywgKCkgewogICAgICBleHBlY3QoCiAgICAgICAgRXhpdE92ZXJyaWRlcy5ydW5ab25lZCgKICAgICAgICAgICgpID0+IHBvc3RfZ2VuLnJ1bihfRmFrZUhvb2tDb250ZXh0KGxvZ2dlcjogbG9nZ2VyKSksCiAgICAgICAgKSwKICAgICAgICBjb21wbGV0ZXMsCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdydW5zIGRhcnQgcHViIGdldCBhbmQgb3V0cHV0cyBuZXh0IHN0ZXBzJywgKCkgYXN5bmMgewogICAgICB2YXIgcHJvY2Vzc1J1bm5lckNhbGxDb3VudCA9IDA7CiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CgogICAgICBhd2FpdCBwb3N0X2dlbi5wb3N0R2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgcnVuUHJvY2VzczogKAogICAgICAgICAgZXhlY3V0YWJsZSwKICAgICAgICAgIGFyZ3MsIHsKICAgICAgICAgIFN0cmluZz8gd29ya2luZ0RpcmVjdG9yeSwKICAgICAgICAgIGJvb2w/IHJ1bkluU2hlbGwsCiAgICAgICAgfSkgYXN5bmMgewogICAgICAgICAgcHJvY2Vzc1J1bm5lckNhbGxDb3VudCsrOwogICAgICAgICAgZXhwZWN0KGV4ZWN1dGFibGUsIGVxdWFscygnZGFydCcpKTsKICAgICAgICAgIGV4cGVjdChhcmdzLCBlcXVhbHMoWydwdWInLCAnZ2V0J10pKTsKICAgICAgICAgIGV4cGVjdCgKICAgICAgICAgICAgd29ya2luZ0RpcmVjdG9yeSwKICAgICAgICAgICAgZXF1YWxzKHBhdGguam9pbihEaXJlY3RvcnkuY3VycmVudC5wYXRoLCAnYnVpbGQnKSksCiAgICAgICAgICApOwogICAgICAgICAgZXhwZWN0KHJ1bkluU2hlbGwsIGlzVHJ1ZSk7CiAgICAgICAgICByZXR1cm4gcHJvY2Vzc1Jlc3VsdDsKICAgICAgICB9LAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICk7CiAgICAgIGV4cGVjdChwcm9jZXNzUnVubmVyQ2FsbENvdW50LCBlcXVhbHMoMSkpOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5KCgpID0+IGxvZ2dlci5zdWNjZXNzKCdDcmVhdGVkIGEgcHJvZHVjdGlvbiBidWlsZCEnKSkuY2FsbGVkKDEpOwogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmluZm8oJ1N0YXJ0IHRoZSBwcm9kdWN0aW9uIHNlcnZlciBieSBydW5uaW5nOicpLAogICAgICApLmNhbGxlZCgxKTsKICAgICAgdmVyaWZ5KAogICAgICAgICgpID0+IGxvZ2dlci5pbmZvKCcke2xpZ2h0Q3lhbi53cmFwKCdkYXJ0IGJ1aWxkL2Jpbi9zZXJ2ZXIuZGFydCcpfScpLAogICAgICApLmNhbGxlZCgxKTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgfSk7CiAgfSk7Cn0K", + "type": "text" + }, + { + "path": "build/test/pre_gen_test.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcKICAgIHNob3cgSG9va0NvbnRleHQsIExvZ2dlciwgUHJvZ3Jlc3MsIGRlZmF1bHRGb3JlZ3JvdW5kLCBsaWdodEN5YW47CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKaW1wb3J0ICcuLi9wcmVfZ2VuLmRhcnQnIGFzIHByZV9nZW47CmltcG9ydCAncHVic3BlY19sb2Nrcy5kYXJ0JzsKaW1wb3J0ICdwdWJzcGVjcy5kYXJ0JzsKCmNsYXNzIF9GYWtlSG9va0NvbnRleHQgZXh0ZW5kcyBGYWtlIGltcGxlbWVudHMgSG9va0NvbnRleHQgewogIF9GYWtlSG9va0NvbnRleHQoe0xvZ2dlcj8gbG9nZ2VyfSkgOiBfbG9nZ2VyID0gbG9nZ2VyID8/IF9Nb2NrTG9nZ2VyKCk7CgogIGZpbmFsIExvZ2dlciBfbG9nZ2VyOwoKICB2YXIgX3ZhcnMgPSA8U3RyaW5nLCBkeW5hbWljPnt9OwoKICBAb3ZlcnJpZGUKICBNYXA8U3RyaW5nLCBkeW5hbWljPiBnZXQgdmFycyA9PiBfdmFyczsKCiAgQG92ZXJyaWRlCiAgc2V0IHZhcnMoTWFwPFN0cmluZywgZHluYW1pYz4gdmFsdWUpID0+IF92YXJzID0gdmFsdWU7CgogIEBvdmVycmlkZQogIExvZ2dlciBnZXQgbG9nZ2VyID0+IF9sb2dnZXI7Cn0KCmNsYXNzIF9Nb2NrTG9nZ2VyIGV4dGVuZHMgTW9jayBpbXBsZW1lbnRzIExvZ2dlciB7fQoKY2xhc3MgX01vY2tQcm9ncmVzcyBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBQcm9ncmVzcyB7fQoKdm9pZCBtYWluKCkgewogIGdyb3VwKCdwcmVHZW4nLCAoKSB7CiAgICBsYXRlIEhvb2tDb250ZXh0IGNvbnRleHQ7CiAgICBsYXRlIExvZ2dlciBsb2dnZXI7CgogICAgRnV0dXJlPFByb2Nlc3NSZXN1bHQ+IHN1Y2Nlc3NSdW5Qcm9jZXNzKAogICAgICBleGVjdXRhYmxlLAogICAgICBhcmdzLCB7CiAgICAgIFN0cmluZz8gd29ya2luZ0RpcmVjdG9yeSwKICAgICAgYm9vbD8gcnVuSW5TaGVsbCwKICAgIH0pID0+CiAgICAgICAgRnV0dXJlLnZhbHVlKFByb2Nlc3NSZXN1bHQoMCwgMCwgJycsICcnKSk7CgogICAgc2V0VXAoKCkgewogICAgICBsb2dnZXIgPSBfTW9ja0xvZ2dlcigpOwogICAgICBjb250ZXh0ID0gX0Zha2VIb29rQ29udGV4dChsb2dnZXI6IGxvZ2dlcikKICAgICAgICAuLnZhcnNbJ2RhcnRWZXJzaW9uJ10gPSAnc3RhYmxlJzsKCiAgICAgIHdoZW4oKCkgPT4gbG9nZ2VyLnByb2dyZXNzKGFueSgpKSkudGhlblJldHVybihfTW9ja1Byb2dyZXNzKCkpOwogICAgfSk7CgogICAgdGVzdCgncnVuIGNvbXBsZXRlcycsICgpIHsKICAgICAgZXhwZWN0KAogICAgICAgIEV4aXRPdmVycmlkZXMucnVuWm9uZWQoCiAgICAgICAgICAoKSA9PiBwcmVfZ2VuLnJ1bihfRmFrZUhvb2tDb250ZXh0KGxvZ2dlcjogbG9nZ2VyKSksCiAgICAgICAgICBleGl0OiAoXykge30sCiAgICAgICAgKSwKICAgICAgICBjb21wbGV0ZXMsCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdleGl0KDEpIGlmIGJ1aWxkUm91dGVDb25maWd1cmF0aW9uIHRocm93cycsICgpIGFzeW5jIHsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgZmluYWwgZXhjZXB0aW9uID0gRXhjZXB0aW9uKCdvb3BzJyk7CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gdGhyb3cgZXhjZXB0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbMV0pKTsKICAgICAgdmVyaWZ5KCgpID0+IGxvZ2dlci5lcnIoZXhjZXB0aW9uLnRvU3RyaW5nKCkpKS5jYWxsZWQoMSk7CiAgICB9KTsKCiAgICB0ZXN0KCdleGl0KDEpIGZvciByb3V0ZSBjb25mbGljdHMnLCAoKSBhc3luYyB7CiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgZGlyZWN0b3JpZXM6IFtdLAogICAgICAgIHJvdXRlczogW10sCiAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgIGVuZHBvaW50czogewogICAgICAgICAgJy8nOiBbCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaW5kZXgnLAogICAgICAgICAgICAgIHBhdGg6ICdpbmRleC5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgXSwKICAgICAgICAgICcvaGVsbG8nOiBbCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy9oZWxsbycsCiAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICksCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG9faW5kZXgnLAogICAgICAgICAgICAgIHBhdGg6ICdoZWxsby9pbmRleC5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgXSwKICAgICAgICB9LAogICAgICApOwoKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CgogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmVycigKICAgICAgICAgICcnJ1JvdXRlIGNvbmZsaWN0IGRldGVjdGVkLiAke2xpZ2h0Q3lhbi53cmFwKCdyb3V0ZXMvaGVsbG8uZGFydCcpfSBhbmQgJHtsaWdodEN5YW4ud3JhcCgncm91dGVzL2hlbGxvL2luZGV4LmRhcnQnKX0gYm90aCByZXNvbHZlIHRvICR7bGlnaHRDeWFuLndyYXAoJy9oZWxsbycpfS4nJycsCiAgICAgICAgKSwKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgfSk7CgogICAgdGVzdCgnZXhpdCgxKSBmb3Igcm9ndWUgcm91dGVzJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbCiAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgIG5hbWU6ICdoZWxsbycsCiAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICApLAogICAgICAgIF0sCiAgICAgICAgZW5kcG9pbnRzOiB7fSwKICAgICAgICBpbnZva2VDdXN0b21FbnRyeXBvaW50OiB0cnVlLAogICAgICApOwoKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CgogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmVycigKICAgICAgICAgICcnJ1JvZ3VlIHJvdXRlIGRldGVjdGVkLiR7ZGVmYXVsdEZvcmVncm91bmQud3JhcCgnICcpfVJlbmFtZSAke2xpZ2h0Q3lhbi53cmFwKCdyb3V0ZXMvaGVsbG8uZGFydCcpfSB0byAke2xpZ2h0Q3lhbi53cmFwKCdyb3V0ZXMvaGVsbG8vaW5kZXguZGFydCcpfS4nJycsCiAgICAgICAgKSwKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgfSk7CgogICAgdGVzdCgnd29ya3Mgd2l0aCB3b3Jrc3BhY2VzJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICBlbmRwb2ludHM6IHt9LAogICAgICApOwoKICAgICAgZmluYWwgZGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoKTsKICAgICAgRmlsZSgKICAgICAgICBwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSwKICAgICAgKS53cml0ZUFzU3RyaW5nU3luYyh3b3Jrc3BhY2VSb290KTsKICAgICAgZmluYWwgc2VydmVyID0gRGlyZWN0b3J5KAogICAgICAgIHBhdGguam9pbihkaXJlY3RvcnkucGF0aCwgJ3NlcnZlcicpLAogICAgICApLi5jcmVhdGVTeW5jKCk7CiAgICAgIEZpbGUoCiAgICAgICAgcGF0aC5qb2luKHNlcnZlci5wYXRoLCAncHVic3BlYy55YW1sJyksCiAgICAgICkud3JpdGVBc1N0cmluZ1N5bmMod29ya3NwYWNlQ2hpbGQpOwogICAgICBGaWxlKAogICAgICAgIHBhdGguam9pbihzZXJ2ZXIucGF0aCwgJ3B1YnNwZWMubG9jaycpLAogICAgICApLndyaXRlQXNTdHJpbmdTeW5jKCcnJwojIEdlbmVyYXRlZCBieSBwdWIKIyBTZWUgaHR0cHM6Ly9kYXJ0LmRldi90b29scy9wdWIvZ2xvc3NhcnkjbG9ja2ZpbGUKcGFja2FnZXM6CiAgX2ZlX2FuYWx5emVyX3NoYXJlZDoKICAgIGRlcGVuZGVuY3k6IHRyYW5zaXRpdmUKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiBfZmVfYW5hbHl6ZXJfc2hhcmVkCiAgICAgIHNoYTI1NjogZGEwZDkyMDljYTc2YmRlNTc5ZjJkYTMzMGFlYjlkZjYyYjYzMTljODM0ZmE3YmFhZTA1MjAyMWIwNDYyNDAxZgogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjg1LjAuMCIKJycnKTsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgZGlyZWN0b3J5OiBzZXJ2ZXIsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICAgY29weVBhdGg6IChfLCBfXykgYXN5bmMge30sCiAgICAgICk7CgogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgZGlyZWN0b3J5LmRlbGV0ZShyZWN1cnNpdmU6IHRydWUpLmlnbm9yZSgpOwogICAgfSk7CgogICAgdGVzdCgnd29ya3Mgd2l0aCBleHRlcm5hbCBkZXBlbmRlbmNpZXMnLCAoKSBhc3luYyB7CiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgZGlyZWN0b3JpZXM6IFtdLAogICAgICAgIHJvdXRlczogW10sCiAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgIGVuZHBvaW50czoge30sCiAgICAgICk7CgogICAgICBmaW5hbCBkaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygpOwogICAgICBGaWxlKAogICAgICAgIHBhdGguam9pbihkaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMubG9jaycpLAogICAgICApLndyaXRlQXNTdHJpbmdTeW5jKGZvb1BhdGgpOwogICAgICBmaW5hbCBleGl0Q2FsbHMgPSA8aW50PltdOwogICAgICBhd2FpdCBwcmVfZ2VuLnByZUdlbigKICAgICAgICBjb250ZXh0LAogICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbjogKF8pID0+IGNvbmZpZ3VyYXRpb24sCiAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICBkaXJlY3Rvcnk6IGRpcmVjdG9yeSwKICAgICAgICBydW5Qcm9jZXNzOiBzdWNjZXNzUnVuUHJvY2VzcywKICAgICAgICBjb3B5UGF0aDogKGZyb20sIHRvKSBhc3luYyB7CiAgICAgICAgICBGaWxlKAogICAgICAgICAgICBwYXRoLmpvaW4odG8sICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgICAgICAgICApLmNyZWF0ZVN5bmMocmVjdXJzaXZlOiB0cnVlKTsKICAgICAgICB9LAogICAgICApOwoKICAgICAgZXhwZWN0KGV4aXRDYWxscywgaXNFbXB0eSk7CiAgICAgIGRpcmVjdG9yeS5kZWxldGUocmVjdXJzaXZlOiB0cnVlKS5pZ25vcmUoKTsKICAgIH0pOwoKICAgIHRlc3QoJ3JldGFpbnMgaW52b2tlQ3VzdG9tRW50cnlwb2ludCAodHJ1ZSknLCAoKSBhc3luYyB7CiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgZGlyZWN0b3JpZXM6IFtdLAogICAgICAgIHJvdXRlczogW10sCiAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgIGVuZHBvaW50czoge30sCiAgICAgICAgaW52b2tlQ3VzdG9tRW50cnlwb2ludDogdHJ1ZSwKICAgICAgKTsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICB2ZXJpZnlOZXZlcigoKSA9PiBsb2dnZXIuZXJyKGFueSgpKSk7CiAgICAgIGV4cGVjdCgKICAgICAgICBjb250ZXh0LnZhcnMsCiAgICAgICAgZXF1YWxzKHsKICAgICAgICAgICdkaXJlY3Rvcmllcyc6IDxSb3V0ZURpcmVjdG9yeT5bXSwKICAgICAgICAgICdyb3V0ZXMnOiA8Um91dGVGaWxlPltdLAogICAgICAgICAgJ21pZGRsZXdhcmUnOiA8TWlkZGxld2FyZUZpbGU+W10sCiAgICAgICAgICAnZ2xvYmFsTWlkZGxld2FyZSc6IGZhbHNlLAogICAgICAgICAgJ3NlcnZlU3RhdGljRmlsZXMnOiBmYWxzZSwKICAgICAgICAgICdpbnZva2VDdXN0b21FbnRyeXBvaW50JzogdHJ1ZSwKICAgICAgICAgICdpbnZva2VDdXN0b21Jbml0JzogZmFsc2UsCiAgICAgICAgICAncGF0aERlcGVuZGVuY2llcyc6IDxTdHJpbmc+W10sCiAgICAgICAgICAnaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXMnOiBmYWxzZSwKICAgICAgICAgICdkYXJ0VmVyc2lvbic6ICdzdGFibGUnLAogICAgICAgICAgJ2FkZERvY2tlcmZpbGUnOiB0cnVlLAogICAgICAgIH0pLAogICAgICApOwogICAgfSk7CgogICAgdGVzdCgiZG9uJ3QgY3JlYXRlIHRoZSBkb2NrZXJmaWxlIGlmIG9uZSBhbHJlYWR5IGV4aXN0cyBvbiB0aGUgZm9sZGVyLiIsCiAgICAgICAgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICBlbmRwb2ludHM6IHt9LAogICAgICApOwoKICAgICAgZmluYWwgZGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoKTsKICAgICAgRmlsZShwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSkud3JpdGVBc1N0cmluZ1N5bmMoCiAgICAgICAgJycnCm5hbWU6IGV4YW1wbGUKdmVyc2lvbjogMC4xLjAKZW52aXJvbm1lbnQ6CiAgc2RrOiBeMi4xNy4wCmRlcGVuZGVuY2llczoKICBtYXNvbjogYW55CiAgdGVzdDogYW55CicnJywKICAgICAgKTsKCiAgICAgIEZpbGUocGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAncHVic3BlYy5sb2NrJykpLndyaXRlQXNTdHJpbmdTeW5jKAogICAgICAgIG5vUGF0aERlcGVuZGVuY2llcywKICAgICAgKTsKICAgICAgRmlsZShwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdEb2NrZXJmaWxlJykpLndyaXRlQXNTdHJpbmdTeW5jKAogICAgICAgICcnLAogICAgICApOwoKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgZGlyZWN0b3J5OiBkaXJlY3RvcnksCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CgogICAgICBleHBlY3QoCiAgICAgICAgY29udGV4dC52YXJzLAogICAgICAgIGVxdWFscyh7CiAgICAgICAgICAnZGlyZWN0b3JpZXMnOiA8Um91dGVEaXJlY3Rvcnk+W10sCiAgICAgICAgICAncm91dGVzJzogPFJvdXRlRmlsZT5bXSwKICAgICAgICAgICdtaWRkbGV3YXJlJzogPE1pZGRsZXdhcmVGaWxlPltdLAogICAgICAgICAgJ2dsb2JhbE1pZGRsZXdhcmUnOiBmYWxzZSwKICAgICAgICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogZmFsc2UsCiAgICAgICAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IGZhbHNlLAogICAgICAgICAgJ2ludm9rZUN1c3RvbUluaXQnOiBmYWxzZSwKICAgICAgICAgICdoYXNFeHRlcm5hbERlcGVuZGVuY2llcyc6IGZhbHNlLAogICAgICAgICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiA8U3RyaW5nPltdLAogICAgICAgICAgJ2RhcnRWZXJzaW9uJzogJ3N0YWJsZScsCiAgICAgICAgICAnYWRkRG9ja2VyZmlsZSc6IGZhbHNlLAogICAgICAgIH0pLAogICAgICApOwogICAgICBkaXJlY3RvcnkuZGVsZXRlKHJlY3Vyc2l2ZTogdHJ1ZSkuaWdub3JlKCk7CiAgICB9KTsKCiAgICB0ZXN0KCdyZXRhaW5zIGludm9rZUN1c3RvbUluaXQgKHRydWUpJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICBlbmRwb2ludHM6IHt9LAogICAgICAgIGludm9rZUN1c3RvbUluaXQ6IHRydWUsCiAgICAgICk7CiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgIHJ1blByb2Nlc3M6IHN1Y2Nlc3NSdW5Qcm9jZXNzLAogICAgICApOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgICBleHBlY3QoCiAgICAgICAgY29udGV4dC52YXJzLAogICAgICAgIGVxdWFscyh7CiAgICAgICAgICAnZGlyZWN0b3JpZXMnOiA8Um91dGVEaXJlY3Rvcnk+W10sCiAgICAgICAgICAncm91dGVzJzogPFJvdXRlRmlsZT5bXSwKICAgICAgICAgICdtaWRkbGV3YXJlJzogPE1pZGRsZXdhcmVGaWxlPltdLAogICAgICAgICAgJ2dsb2JhbE1pZGRsZXdhcmUnOiBmYWxzZSwKICAgICAgICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogZmFsc2UsCiAgICAgICAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IGZhbHNlLAogICAgICAgICAgJ2ludm9rZUN1c3RvbUluaXQnOiB0cnVlLAogICAgICAgICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZmFsc2UsCiAgICAgICAgICAncGF0aERlcGVuZGVuY2llcyc6IDxTdHJpbmc+W10sCiAgICAgICAgICAnZGFydFZlcnNpb24nOiAnc3RhYmxlJywKICAgICAgICAgICdhZGREb2NrZXJmaWxlJzogdHJ1ZSwKICAgICAgICB9KSwKICAgICAgKTsKICAgIH0pOwoKICAgIHRlc3QoCiAgICAgICd1cGRhdGVzIGNvbnRleHQudmFycyB3aGVuIGJ1aWxkUm91dGVDb25maWd1cmF0aW9uIHN1Y2NlZWRzJywKICAgICAgKCkgYXN5bmMgewogICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgICBnbG9iYWxNaWRkbGV3YXJlOiBNaWRkbGV3YXJlRmlsZSgKICAgICAgICAgICAgbmFtZTogJ21pZGRsZXdhcmUnLAogICAgICAgICAgICBwYXRoOiAnbWlkZGxld2FyZS5kYXJ0JywKICAgICAgICAgICksCiAgICAgICAgICBtaWRkbGV3YXJlOiBbCiAgICAgICAgICAgIE1pZGRsZXdhcmVGaWxlKAogICAgICAgICAgICAgIG5hbWU6ICdoZWxsb19taWRkbGV3YXJlJywKICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8vbWlkZGxld2FyZS5kYXJ0JywKICAgICAgICAgICAgKSwKICAgICAgICAgIF0sCiAgICAgICAgICBkaXJlY3RvcmllczogWwogICAgICAgICAgICBSb3V0ZURpcmVjdG9yeSgKICAgICAgICAgICAgICBuYW1lOiAnXycsCiAgICAgICAgICAgICAgcm91dGU6ICcvJywKICAgICAgICAgICAgICBtaWRkbGV3YXJlOiBbXSwKICAgICAgICAgICAgICBmaWxlczogWwogICAgICAgICAgICAgICAgUm91dGVGaWxlKAogICAgICAgICAgICAgICAgICBuYW1lOiAnaW5kZXgnLAogICAgICAgICAgICAgICAgICBwYXRoOiAnaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgICAgIHJvdXRlOiAnLycsCiAgICAgICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgICAgIHdpbGRjYXJkOiBmYWxzZSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgICAgIG5hbWU6ICdoZWxsbycsCiAgICAgICAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgKSwKICAgICAgICAgIF0sCiAgICAgICAgICByb3V0ZXM6IFsKICAgICAgICAgICAgUm91dGVGaWxlKAogICAgICAgICAgICAgIG5hbWU6ICdpbmRleCcsCiAgICAgICAgICAgICAgcGF0aDogJ2luZGV4LmRhcnQnLAogICAgICAgICAgICAgIHJvdXRlOiAnLycsCiAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICksCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy9oZWxsbycsCiAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICksCiAgICAgICAgICBdLAogICAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgICAgZW5kcG9pbnRzOiB7CiAgICAgICAgICAgICcvJzogWwogICAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICAgIG5hbWU6ICdpbmRleCcsCiAgICAgICAgICAgICAgICBwYXRoOiAnaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICAgIHdpbGRjYXJkOiBmYWxzZSwKICAgICAgICAgICAgICApLAogICAgICAgICAgICBdLAogICAgICAgICAgICAnL2hlbGxvJzogWwogICAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICAgIG5hbWU6ICdoZWxsbycsCiAgICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgICAgICByb3V0ZTogJy9oZWxsbycsCiAgICAgICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICAgICksCiAgICAgICAgICAgIF0sCiAgICAgICAgICB9LAogICAgICAgICAgc2VydmVTdGF0aWNGaWxlczogdHJ1ZSwKICAgICAgICApOwogICAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgICBydW5Qcm9jZXNzOiBzdWNjZXNzUnVuUHJvY2VzcywKICAgICAgICApOwogICAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICAgIHZlcmlmeU5ldmVyKCgpID0+IGxvZ2dlci5lcnIoYW55KCkpKTsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBjb250ZXh0LnZhcnMsCiAgICAgICAgICBlcXVhbHMoewogICAgICAgICAgICAnZGlyZWN0b3JpZXMnOiBbCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJ25hbWUnOiAnXycsCiAgICAgICAgICAgICAgICAncm91dGUnOiAnLycsCiAgICAgICAgICAgICAgICAnbWlkZGxld2FyZSc6IDxNYXA8U3RyaW5nLCBkeW5hbWljPj5bXSwKICAgICAgICAgICAgICAgICdmaWxlcyc6IFsKICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICduYW1lJzogJ2luZGV4JywKICAgICAgICAgICAgICAgICAgICAncGF0aCc6ICdpbmRleC5kYXJ0JywKICAgICAgICAgICAgICAgICAgICAncm91dGUnOiAnLycsCiAgICAgICAgICAgICAgICAgICAgJ2ZpbGVfcGFyYW1zJzogY29uc3QgPFN0cmluZz5bXSwKICAgICAgICAgICAgICAgICAgICAnd2lsZGNhcmQnOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICduYW1lJzogJ2hlbGxvJywKICAgICAgICAgICAgICAgICAgICAncGF0aCc6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICAgICAgICAncm91dGUnOiAnL2hlbGxvJywKICAgICAgICAgICAgICAgICAgICAnZmlsZV9wYXJhbXMnOiBjb25zdCA8U3RyaW5nPltdLAogICAgICAgICAgICAgICAgICAgICd3aWxkY2FyZCc6IGZhbHNlLAogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgJ2RpcmVjdG9yeV9wYXJhbXMnOiBjb25zdCA8U3RyaW5nPltdLAogICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgJ3JvdXRlcyc6IFsKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAnbmFtZSc6ICdpbmRleCcsCiAgICAgICAgICAgICAgICAncGF0aCc6ICdpbmRleC5kYXJ0JywKICAgICAgICAgICAgICAgICdyb3V0ZSc6ICcvJywKICAgICAgICAgICAgICAgICdmaWxlX3BhcmFtcyc6IGNvbnN0IDxTdHJpbmc+W10sCiAgICAgICAgICAgICAgICAnd2lsZGNhcmQnOiBmYWxzZSwKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICduYW1lJzogJ2hlbGxvJywKICAgICAgICAgICAgICAgICdwYXRoJzogJ2hlbGxvLmRhcnQnLAogICAgICAgICAgICAgICAgJ3JvdXRlJzogJy9oZWxsbycsCiAgICAgICAgICAgICAgICAnZmlsZV9wYXJhbXMnOiBjb25zdCA8U3RyaW5nPltdLAogICAgICAgICAgICAgICAgJ3dpbGRjYXJkJzogZmFsc2UsCiAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAnbWlkZGxld2FyZSc6IFsKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAnbmFtZSc6ICdoZWxsb19taWRkbGV3YXJlJywKICAgICAgICAgICAgICAgICdwYXRoJzogJ2hlbGxvL21pZGRsZXdhcmUuZGFydCcsCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgJ2dsb2JhbE1pZGRsZXdhcmUnOiB7CiAgICAgICAgICAgICAgJ25hbWUnOiAnbWlkZGxld2FyZScsCiAgICAgICAgICAgICAgJ3BhdGgnOiAnbWlkZGxld2FyZS5kYXJ0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ3NlcnZlU3RhdGljRmlsZXMnOiB0cnVlLAogICAgICAgICAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IGZhbHNlLAogICAgICAgICAgICAnaW52b2tlQ3VzdG9tSW5pdCc6IGZhbHNlLAogICAgICAgICAgICAnaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXMnOiBmYWxzZSwKICAgICAgICAgICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiA8U3RyaW5nPltdLAogICAgICAgICAgICAnZGFydFZlcnNpb24nOiAnc3RhYmxlJywKICAgICAgICAgICAgJ2FkZERvY2tlcmZpbGUnOiB0cnVlLAogICAgICAgICAgfSksCiAgICAgICAgKTsKICAgICAgfSwKICAgICk7CiAgfSk7Cn0K", + "type": "text" + }, + { + "path": "build/test/pubspec_locks.dart", + "data": + "Ly8vIEFuIGFydGlmaWNpYWxseSBjcmFmdGVkIGBwdWJzcGVjLmxvY2tgIGZpbGUgd2l0aDoKLy8vCi8vLyAqIEEgdHJhbnNpdGl2ZSBkZXBlbmRlbmN5LgovLy8gKiBBIGRpcmVjdCBtYWluIHBhdGggZGVwZW5kZW5jeSB0aGF0IGlzIG5vdCBhIGNoaWxkIG9mIHRoZSBwcm9qZWN0Ci8vLyBkaXJlY3RvcnkuCi8vLyAqIEEgZGlyZWN0IG1haW4gcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgbm90IGEgY2hpbGQgb2YgdGhlIHByb2plY3QKLy8vIGRpcmVjdG9yeSBhbmQgaGFzIGEgZGlmZmVyZW50IHBhY2thZ2UgbmFtZSB0aGFuIHRoZSBkaXJlY3RvcnkgbmFtZS4KLy8vICogQSBkaXJlY3QgbWFpbiBkZXBlbmRlbmN5IHRoYXQgaXMgaG9zdGVkLgovLy8gKiBBIGRpcmVjdCBkZXYgbWFpbiBkZXBlbmRlbmN5IHRoYXQgaXMgaG9zdGVkLgovLy8gKiBBIGRpcmVjdCBvdmVycmlkZGVuIGRlcGVuZGVuY3kgZnJvbSBnaXQuCmNvbnN0IGZvb1BhdGggPSAnJycKcGFja2FnZXM6CiAgYXJnczoKICAgIGRlcGVuZGVuY3k6IHRyYW5zaXRpdmUKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiBhcmdzCiAgICAgIHNoYTI1NjogZWVmNmM0NmI2MjJlMDQ5NGEzNmM1YTEyZDEwZDc3ZmI0ZTg1NTUwMWE5MWMxYjllZjkzMzkzMjZlNThmMDU5NgogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjIuNC4yIgogIGZvbzoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3QgbWFpbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBwYXRoOiAiLi4vLi4vZm9vIgogICAgICByZWxhdGl2ZTogdHJ1ZQogICAgc291cmNlOiBwYXRoCiAgICB2ZXJzaW9uOiAiMC4wLjAiCiAgc2Vjb25kX2ZvbzoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3QgbWFpbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBwYXRoOiAiLi4vLi4vZm9vMiIKICAgICAgcmVsYXRpdmU6IHRydWUKICAgIHNvdXJjZTogcGF0aAogICAgdmVyc2lvbjogIjAuMC4wIgogIGRpcmVjdF9tYWluOgogICAgZGVwZW5kZW5jeTogImRpcmVjdCBtYWluIgogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IGRpcmVjdF9tYWluCiAgICAgIHNoYTI1NjogZmRjOWVhOTA1ZTdjNjkwZmUzOWQyZjk5NDZiN2FlYWQ4NmZkOTc2ZjhlZGY5N2QyNTIxYTY1ZDI2MGJiZjUwOQogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjAuMS4wLWRldi41MCIKICB0ZXN0OgogICAgZGVwZW5kZW5jeTogImRpcmVjdCBkZXYiCiAgICBkZXNjcmlwdGlvbjoKICAgICAgbmFtZTogdGVzdAogICAgICBzaGEyNTY6ICI5YjBkZDhlMzZhZjRhNWIxNTY5MDI5OTQ5ZDUwYTUyY2IyYTJhMmZkYWEyMGNlYmI5NmU2NjAzYjlhZTI0MWY5IgogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjEuMjQuNiIKICBkaXJlY3Rfb3ZlcnJpZGRlbjoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3Qgb3ZlcnJpZGRlbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBwYXRoOiAicGFja2FnZXMvbWFzb24iCiAgICAgIHJlZjogIjcyYzMwNmE4ZDhhYmYzMDZiNWQwMjRmOTVhYWMyOWJhNWZkOTY1NzciCiAgICAgIHJlc29sdmVkLXJlZjogIjcyYzMwNmE4ZDhhYmYzMDZiNWQwMjRmOTVhYWMyOWJhNWZkOTY1NzciCiAgICAgIHVybDogImh0dHBzOi8vZ2l0aHViLmNvbS9hbGVzdGlhZ28vbWFzb24iCiAgICBzb3VyY2U6IGdpdAogICAgdmVyc2lvbjogIjAuMS4wLWRldi41MiIKc2RrczoKICBkYXJ0OiAiPj0zLjAuMCA8NC4wLjAiCicnJzsKCi8vLyBBbiBhcnRpZmljaWFsbHkgY3JhZnRlZCBgcHVic3BlYy5sb2NrYCBmaWxlIHdpdGg6Ci8vLwovLy8gKiBBIHRyYW5zaXRpdmUgZGVwZW5kZW5jeS4KLy8vICogQSBkaXJlY3QgbWFpbiBwYXRoIGRlcGVuZGVuY3kgdGhhdCBpcyBub3QgYSBjaGlsZCBvZiB0aGUgcHJvamVjdAovLy8gZGlyZWN0b3J5LgovLy8gKiBBIGRpcmVjdCBtYWluIHBhdGggZGVwZW5kZW5jeSB0aGF0IGlzIGEgY2hpbGQgb2YgdGhlIHByb2plY3QgZGlyZWN0b3J5LgovLy8gKiBBIGRpcmVjdCBtYWluIGRlcGVuZGVuY3kgdGhhdCBpcyBob3N0ZWQuCi8vLyAqIEEgZGlyZWN0IGRldiBtYWluIGRlcGVuZGVuY3kgdGhhdCBpcyBob3N0ZWQuCmNvbnN0IGZvb1BhdGhXaXRoSW50ZXJuYWxEZXBlbmRlbmN5ID0gJycnCnBhY2thZ2VzOgogIGFyZ3M6CiAgICBkZXBlbmRlbmN5OiB0cmFuc2l0aXZlCiAgICBkZXNjcmlwdGlvbjoKICAgICAgbmFtZTogYXJncwogICAgICBzaGEyNTY6IGVlZjZjNDZiNjIyZTA0OTRhMzZjNWExMmQxMGQ3N2ZiNGU4NTU1MDFhOTFjMWI5ZWY5MzM5MzI2ZTU4ZjA1OTYKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIyLjQuMiIKICBmb286CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IG1haW4iCiAgICBkZXNjcmlwdGlvbjoKICAgICAgcGF0aDogIi4uLy4uL2ZvbyIKICAgICAgcmVsYXRpdmU6IHRydWUKICAgIHNvdXJjZTogcGF0aAogICAgdmVyc2lvbjogIjAuMC4wIgogIGJhcjoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3QgbWFpbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBwYXRoOiAicGFja2FnZXMvYmFyIgogICAgICByZWxhdGl2ZTogdHJ1ZQogICAgc291cmNlOiBwYXRoCiAgICB2ZXJzaW9uOiAiMC4wLjAiCiAgbWFzb246CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IG1haW4iCiAgICBkZXNjcmlwdGlvbjoKICAgICAgbmFtZTogbWFzb24KICAgICAgc2hhMjU2OiBmZGM5ZWE5MDVlN2M2OTBmZTM5ZDJmOTk0NmI3YWVhZDg2ZmQ5NzZmOGVkZjk3ZDI1MjFhNjVkMjYwYmJmNTA5CiAgICAgIHVybDogImh0dHBzOi8vcHViLmRldiIKICAgIHNvdXJjZTogaG9zdGVkCiAgICB2ZXJzaW9uOiAiMC4xLjAtZGV2LjUwIgogIHRlc3Q6CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IGRldiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiB0ZXN0CiAgICAgIHNoYTI1NjogIjliMGRkOGUzNmFmNGE1YjE1NjkwMjk5NDlkNTBhNTJjYjJhMmEyZmRhYTIwY2ViYjk2ZTY2MDNiOWFlMjQxZjkiCiAgICAgIHVybDogImh0dHBzOi8vcHViLmRldiIKICAgIHNvdXJjZTogaG9zdGVkCiAgICB2ZXJzaW9uOiAiMS4yNC42IgpzZGtzOgogIGRhcnQ6ICI+PTMuMC4wIDw0LjAuMCIKJycnOwoKLy8vIEFuIGFydGlmaWNpYWxseSBjcmFmdGVkIGBwdWJzcGVjLmxvY2tgIGZpbGUgd2l0aDoKLy8vCi8vLyAqIEEgdHJhbnNpdGl2ZSBkZXBlbmRlbmN5LgovLy8gKiBBIGRpcmVjdCBtYWluIGRlcGVuZGVuY3kgdGhhdCBpcyBob3N0ZWQuCi8vLyAqIEEgZGlyZWN0IGRldiBtYWluIGRlcGVuZGVuY3kgdGhhdCBpcyBob3N0ZWQuCmNvbnN0IG5vUGF0aERlcGVuZGVuY2llcyA9ICcnJwpwYWNrYWdlczoKICBhcmdzOgogICAgZGVwZW5kZW5jeTogdHJhbnNpdGl2ZQogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IGFyZ3MKICAgICAgc2hhMjU2OiBlZWY2YzQ2YjYyMmUwNDk0YTM2YzVhMTJkMTBkNzdmYjRlODU1NTAxYTkxYzFiOWVmOTMzOTMyNmU1OGYwNTk2CiAgICAgIHVybDogImh0dHBzOi8vcHViLmRldiIKICAgIHNvdXJjZTogaG9zdGVkCiAgICB2ZXJzaW9uOiAiMi40LjIiCiAgbWFzb246CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IG1haW4iCiAgICBkZXNjcmlwdGlvbjoKICAgICAgbmFtZTogbWFzb24KICAgICAgc2hhMjU2OiBmZGM5ZWE5MDVlN2M2OTBmZTM5ZDJmOTk0NmI3YWVhZDg2ZmQ5NzZmOGVkZjk3ZDI1MjFhNjVkMjYwYmJmNTA5CiAgICAgIHVybDogImh0dHBzOi8vcHViLmRldiIKICAgIHNvdXJjZTogaG9zdGVkCiAgICB2ZXJzaW9uOiAiMC4xLjAtZGV2LjUwIgogIHRlc3Q6CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IGRldiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiB0ZXN0CiAgICAgIHNoYTI1NjogIjliMGRkOGUzNmFmNGE1YjE1NjkwMjk5NDlkNTBhNTJjYjJhMmEyZmRhYTIwY2ViYjk2ZTY2MDNiOWFlMjQxZjkiCiAgICAgIHVybDogImh0dHBzOi8vcHViLmRldiIKICAgIHNvdXJjZTogaG9zdGVkCiAgICB2ZXJzaW9uOiAiMS4yNC42IgpzZGtzOgogIGRhcnQ6ICI+PTMuMC4wIDw0LjAuMCIKJycnOwo=", + "type": "text" + }, + { + "path": "build/test/pubspecs.dart", + "data": + "Ly8vIEFuIGFydGlmaWNpYWxseSBjcmFmdGVkIGBwdWJzcGVjLnlhbWxgIGZpbGUgd2l0aDoKLy8vCi8vLyAqIEEgZGlyZWN0IG1haW4gcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgYSBjaGlsZCBvZiB0aGUgcHJvamVjdCBkaXJlY3RvcnkuCi8vLyAqIERhcnQgd29ya3NwYWNlcyBlbmFibGVkCmNvbnN0IHdvcmtzcGFjZVJvb3QgPSAnJycKbmFtZTogXwpkZXBlbmRlbmNpZXM6CiAgc2VydmVyOgogICAgcGF0aDogcGFja2FnZXMvc2VydmVyICAKd29ya3NwYWNlOgogIC0gcGFja2FnZXMvc2VydmVyCicnJzsKCi8vLyBBbiBhcnRpZmljaWFsbHkgY3JhZnRlZCBgcHVic3BlYy55YW1sYCBmaWxlIHdpdGg6Ci8vLwovLy8gKiBEYXJ0IHdvcmtzcGFjZXMgZW5hYmxlZApjb25zdCB3b3Jrc3BhY2VDaGlsZCA9ICcnJwpuYW1lOiBzZXJ2ZXIKcmVzb2x1dGlvbjogd29ya3NwYWNlCicnJzsK", + "type": "text" + }, + { + "path": "build/test/src/create_bundle_test.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcgaGlkZSBjcmVhdGVCdW5kbGU7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKY2xhc3MgX01vY2tMb2dnZXIgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgTG9nZ2VyIHt9CgpjbGFzcyBfTW9ja1Byb2dyZXNzIGV4dGVuZHMgTW9jayBpbXBsZW1lbnRzIFByb2dyZXNzIHt9CgpjbGFzcyBfRmFrZUhvb2tDb250ZXh0IGV4dGVuZHMgRmFrZSBpbXBsZW1lbnRzIEhvb2tDb250ZXh0IHsKICBfRmFrZUhvb2tDb250ZXh0KHtMb2dnZXI/IGxvZ2dlcn0pIDogX2xvZ2dlciA9IGxvZ2dlciA/PyBfTW9ja0xvZ2dlcigpOwoKICBmaW5hbCBMb2dnZXIgX2xvZ2dlcjsKCiAgdmFyIF92YXJzID0gPFN0cmluZywgZHluYW1pYz57fTsKCiAgQG92ZXJyaWRlCiAgTWFwPFN0cmluZywgZHluYW1pYz4gZ2V0IHZhcnMgPT4gX3ZhcnM7CgogIEBvdmVycmlkZQogIHNldCB2YXJzKE1hcDxTdHJpbmcsIGR5bmFtaWM+IHZhbHVlKSA9PiBfdmFycyA9IHZhbHVlOwoKICBAb3ZlcnJpZGUKICBMb2dnZXIgZ2V0IGxvZ2dlciA9PiBfbG9nZ2VyOwp9Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2NyZWF0ZUJ1bmRsZScsICgpIHsKICAgIGxhdGUgSG9va0NvbnRleHQgY29udGV4dDsKICAgIGxhdGUgTG9nZ2VyIGxvZ2dlcjsKCiAgICBzZXRVcCgoKSB7CiAgICAgIGxvZ2dlciA9IF9Nb2NrTG9nZ2VyKCk7CiAgICAgIGNvbnRleHQgPSBfRmFrZUhvb2tDb250ZXh0KGxvZ2dlcjogbG9nZ2VyKTsKCiAgICAgIHdoZW4oKCkgPT4gbG9nZ2VyLnByb2dyZXNzKGFueSgpKSkudGhlblJldHVybihfTW9ja1Byb2dyZXNzKCkpOwogICAgfSk7CgogICAgdGVzdCgnZXhpdCgxKSBpZiBidW5kbGluZyB0aHJvd3MnLCAoKSBhc3luYyB7CiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGF3YWl0IGNyZWF0ZUJ1bmRsZSgKICAgICAgICBjb250ZXh0OiBjb250ZXh0LAogICAgICAgIHByb2plY3REaXJlY3Rvcnk6IERpcmVjdG9yeSgnL2ludmFsaWQvZGlyJyksCiAgICAgICAgYnVpbGREaXJlY3Rvcnk6IERpcmVjdG9yeSgnL2ludmFsaWQvZGlyL2J1aWxkJyksCiAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgICB2ZXJpZnkoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpLmNhbGxlZCgxKTsKICAgIH0pOwoKICAgIHRlc3QoJ2RvZXMgbm90IHRocm93IHdoZW4gYnVuZGxpbmcgc3VjY2VlZHMnLCAoKSBhc3luYyB7CiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygpOwogICAgICBmaW5hbCBkb3REYXJ0RnJvZ0RpciA9CiAgICAgICAgICBEaXJlY3RvcnkocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJy5kYXJ0X2Zyb2cnKSkKICAgICAgICAgICAgLi5jcmVhdGVTeW5jKCk7CiAgICAgIGZpbmFsIGJ1aWxkRGlyZWN0b3J5ID0KICAgICAgICAgIERpcmVjdG9yeShwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnYnVpbGQnKSkuLmNyZWF0ZVN5bmMoKTsKICAgICAgZmluYWwgb2xkQnVpbGRBcnRpZmFjdCA9CiAgICAgICAgICBGaWxlKHBhdGguam9pbihidWlsZERpcmVjdG9yeS5wYXRoLCAnYXJ0aWZhY3QudHh0JykpLi5jcmVhdGVTeW5jKCk7CgogICAgICBhd2FpdCBjcmVhdGVCdW5kbGUoCiAgICAgICAgY29udGV4dDogY29udGV4dCwKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeSwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICApOwoKICAgICAgZXhwZWN0KGRvdERhcnRGcm9nRGlyLmV4aXN0c1N5bmMoKSwgaXNGYWxzZSk7CiAgICAgIGV4cGVjdChidWlsZERpcmVjdG9yeS5leGlzdHNTeW5jKCksIGlzVHJ1ZSk7CiAgICAgIGV4cGVjdChvbGRCdWlsZEFydGlmYWN0LmV4aXN0c1N5bmMoKSwgaXNGYWxzZSk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICB2ZXJpZnlOZXZlcigoKSA9PiBsb2dnZXIuZXJyKGFueSgpKSk7CiAgICB9KTsKICB9KTsKfQo=", + "type": "text" + }, + { + "path": "build/test/src/create_external_packages_folder_test.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp0ZXN0L3Rlc3QuZGFydCc7CgppbXBvcnQgJy4uL3B1YnNwZWNfbG9ja3MuZGFydCc7Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2NyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXInLCAoKSB7CiAgICB0ZXN0KCdidW5kbGVzIGV4dGVybmFsIGRlcGVuZGVuY2llcyB3aXRoIGV4dGVybmFsIGRlcGVuZGVuY2llcycsICgpIGFzeW5jIHsKICAgICAgZmluYWwgcHJvamVjdERpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgIEZpbGUocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMubG9jaycpKQogICAgICAgICAgLndyaXRlQXNTdHJpbmdTeW5jKGZvb1BhdGgpOwogICAgICBmaW5hbCBjb3B5Q2FsbHMgPSA8U3RyaW5nPltdOwoKICAgICAgYXdhaXQgY3JlYXRlRXh0ZXJuYWxQYWNrYWdlc0ZvbGRlcigKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBEaXJlY3RvcnkocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJykpLAogICAgICAgIGNvcHlQYXRoOiAoZnJvbSwgdG8pIGFzeW5jIHsKICAgICAgICAgIGNvcHlDYWxscy5hZGQoJyRmcm9tIC0+ICR0bycpOwogICAgICAgICAgRmlsZSgKICAgICAgICAgICAgcGF0aC5qb2luKHRvLCAncHVic3BlY19vdmVycmlkZXMueWFtbCcpLAogICAgICAgICAgKS5jcmVhdGVTeW5jKHJlY3Vyc2l2ZTogdHJ1ZSk7CiAgICAgICAgfSwKICAgICAgKTsKCiAgICAgIGZpbmFsIGZvb1BhY2thZ2VEaXJlY3RvcnkgPSBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnLi4vLi4vZm9vJyk7CiAgICAgIGZpbmFsIGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQgPSBwYXRoLmpvaW4oCiAgICAgICAgcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICdidWlsZCcsCiAgICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgICAgICdmb28nLAogICAgICApOwoKICAgICAgZmluYWwgc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeSA9IHBhdGguam9pbigKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgICAgJy4uLy4uL2ZvbzInLAogICAgICApOwogICAgICBmaW5hbCBzZWNvbmRGb29QYWNrYWdlRGlyZWN0b3J5VGFyZ2V0ID0gcGF0aC5qb2luKAogICAgICAgIHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAnYnVpbGQnLAogICAgICAgICcuZGFydF9mcm9nX3BhdGhfZGVwZW5kZW5jaWVzJywKICAgICAgICAnc2Vjb25kX2ZvbycsCiAgICAgICk7CiAgICAgIGV4cGVjdChjb3B5Q2FsbHMsIFsKICAgICAgICAnJGZvb1BhY2thZ2VEaXJlY3RvcnkgLT4gJGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQnLAogICAgICAgICckc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeSAtPiAkc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeVRhcmdldCcsCiAgICAgIF0pOwogICAgfSk7CgogICAgdGVzdCgiZG9lc24ndCBidW5kbGUgaW50ZXJuYWwgcGF0aCBkZXBlbmRlbmNpZXMiLCAoKSBhc3luYyB7CiAgICAgIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygpOwogICAgICBGaWxlKHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLmxvY2snKSkKICAgICAgICAgIC53cml0ZUFzU3RyaW5nU3luYyhmb29QYXRoV2l0aEludGVybmFsRGVwZW5kZW5jeSk7CiAgICAgIGZpbmFsIGNvcHlDYWxscyA9IDxTdHJpbmc+W107CgogICAgICBhd2FpdCBjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyKAogICAgICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnksCiAgICAgICAgYnVpbGREaXJlY3Rvcnk6IERpcmVjdG9yeShwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnYnVpbGQnKSksCiAgICAgICAgY29weVBhdGg6IChmcm9tLCB0bykgYXN5bmMgewogICAgICAgICAgY29weUNhbGxzLmFkZCgnJGZyb20gLT4gJHRvJyk7CiAgICAgICAgICBGaWxlKAogICAgICAgICAgICBwYXRoLmpvaW4odG8sICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgICAgICAgICApLmNyZWF0ZVN5bmMocmVjdXJzaXZlOiB0cnVlKTsKICAgICAgICB9LAogICAgICApOwoKICAgICAgZmluYWwgZnJvbSA9IHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICcuLi8uLi9mb28nKTsKICAgICAgZmluYWwgdG8gPSBwYXRoLmpvaW4oCiAgICAgICAgcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICdidWlsZCcsCiAgICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgICAgICdmb28nLAogICAgICApOwogICAgICBleHBlY3QoY29weUNhbGxzLCBbJyRmcm9tIC0+ICR0byddKTsKICAgIH0pOwogIH0pOwp9Cg==", + "type": "text" + }, + { + "path": "build/test/src/dart_pub_get_test.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnRlc3QvdGVzdC5kYXJ0JzsKCmNsYXNzIF9GYWtlSG9va0NvbnRleHQgZXh0ZW5kcyBGYWtlIGltcGxlbWVudHMgSG9va0NvbnRleHQgewogIF9GYWtlSG9va0NvbnRleHQoe0xvZ2dlcj8gbG9nZ2VyfSkgOiBfbG9nZ2VyID0gbG9nZ2VyID8/IF9Nb2NrTG9nZ2VyKCk7CgogIGZpbmFsIExvZ2dlciBfbG9nZ2VyOwoKICB2YXIgX3ZhcnMgPSA8U3RyaW5nLCBkeW5hbWljPnt9OwoKICBAb3ZlcnJpZGUKICBNYXA8U3RyaW5nLCBkeW5hbWljPiBnZXQgdmFycyA9PiBfdmFyczsKCiAgQG92ZXJyaWRlCiAgc2V0IHZhcnMoTWFwPFN0cmluZywgZHluYW1pYz4gdmFsdWUpID0+IF92YXJzID0gdmFsdWU7CgogIEBvdmVycmlkZQogIExvZ2dlciBnZXQgbG9nZ2VyID0+IF9sb2dnZXI7Cn0KCmNsYXNzIF9Nb2NrTG9nZ2VyIGV4dGVuZHMgTW9jayBpbXBsZW1lbnRzIExvZ2dlciB7fQoKY2xhc3MgX01vY2tQcm9ncmVzcyBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBQcm9ncmVzcyB7fQoKdm9pZCBtYWluKCkgewogIGdyb3VwKCdkYXJ0UHViR2V0JywgKCkgewogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwoKICAgIGNvbnN0IHByb2Nlc3NJZCA9IDQyOwogICAgZmluYWwgcHJvY2Vzc1Jlc3VsdCA9IFByb2Nlc3NSZXN1bHQoCiAgICAgIHByb2Nlc3NJZCwKICAgICAgRXhpdENvZGUuc3VjY2Vzcy5jb2RlLAogICAgICAnJywKICAgICAgJycsCiAgICApOwoKICAgIHNldFVwKCgpIHsKICAgICAgbG9nZ2VyID0gX01vY2tMb2dnZXIoKTsKICAgICAgY29udGV4dCA9IF9GYWtlSG9va0NvbnRleHQobG9nZ2VyOiBsb2dnZXIpOwoKICAgICAgd2hlbigoKSA9PiBsb2dnZXIucHJvZ3Jlc3MoYW55KCkpKS50aGVuUmV0dXJuKF9Nb2NrUHJvZ3Jlc3MoKSk7CiAgICB9KTsKCiAgICB0ZXN0KCdjb21wbGV0ZXMgd2hlbiBwcm9jZXNzIHN1Y2NlZWRzJywgKCkgYXN5bmMgewogICAgICBmaW5hbCBleGl0Q2FsbHMgPSA8aW50PltdOwoKICAgICAgYXdhaXQgZGFydFB1YkdldCgKICAgICAgICBjb250ZXh0LAogICAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6ICcuJywKICAgICAgICBydW5Qcm9jZXNzOiAoCiAgICAgICAgICBleGVjdXRhYmxlLAogICAgICAgICAgYXJncywgewogICAgICAgICAgU3RyaW5nPyB3b3JraW5nRGlyZWN0b3J5LAogICAgICAgICAgYm9vbD8gcnVuSW5TaGVsbCwKICAgICAgICB9KSBhc3luYyB7CiAgICAgICAgICBleHBlY3QoZXhlY3V0YWJsZSwgZXF1YWxzKCdkYXJ0JykpOwogICAgICAgICAgZXhwZWN0KGFyZ3MsIGVxdWFscyhbJ3B1YicsICdnZXQnXSkpOwogICAgICAgICAgZXhwZWN0KHdvcmtpbmdEaXJlY3RvcnksIGVxdWFscygnLicpKTsKICAgICAgICAgIGV4cGVjdChydW5JblNoZWxsLCBpc1RydWUpOwogICAgICAgICAgcmV0dXJuIHByb2Nlc3NSZXN1bHQ7CiAgICAgICAgfSwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICApOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgfSk7CgogICAgdGVzdCgnZXhpdHMgd2hlbiBwcm9jZXNzIGZhaWxzJywgKCkgYXN5bmMgewogICAgICBjb25zdCBlcnJvciA9ICdvb3BzIHNvbWV0aGluZyB3ZW50IHdyb25nJzsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKCiAgICAgIGZpbmFsIHByb2Nlc3NSZXN1bHQgPSBQcm9jZXNzUmVzdWx0KAogICAgICAgIHByb2Nlc3NJZCwKICAgICAgICBFeGl0Q29kZS5zb2Z0d2FyZS5jb2RlLAogICAgICAgICcnLAogICAgICAgIGVycm9yLAogICAgICApOwoKICAgICAgYXdhaXQgZGFydFB1YkdldCgKICAgICAgICBjb250ZXh0LAogICAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6ICcuJywKICAgICAgICBydW5Qcm9jZXNzOiAoCiAgICAgICAgICBleGVjdXRhYmxlLAogICAgICAgICAgYXJncywgewogICAgICAgICAgU3RyaW5nPyB3b3JraW5nRGlyZWN0b3J5LAogICAgICAgICAgYm9vbD8gcnVuSW5TaGVsbCwKICAgICAgICB9KSBhc3luYyB7CiAgICAgICAgICByZXR1cm4gcHJvY2Vzc1Jlc3VsdDsKICAgICAgICB9LAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbRXhpdENvZGUuc29mdHdhcmUuY29kZV0pKTsKICAgICAgdmVyaWZ5KCgpID0+IGxvZ2dlci5lcnIoZXJyb3IpKS5jYWxsZWQoMSk7CiAgICB9KTsKCiAgICB0ZXN0KCdleGl0cyB3aGVuIFByb2Nlc3NFeGNlcHRpb24gb2NjdXJzJywgKCkgYXN5bmMgewogICAgICBjb25zdCBlcnJvciA9ICdvb3BzIHNvbWV0aGluZyB3ZW50IHdyb25nJzsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgZGFydFB1YkdldCgKICAgICAgICBjb250ZXh0LAogICAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6ICcuJywKICAgICAgICBydW5Qcm9jZXNzOiAoCiAgICAgICAgICBleGVjdXRhYmxlLAogICAgICAgICAgYXJncywgewogICAgICAgICAgU3RyaW5nPyB3b3JraW5nRGlyZWN0b3J5LAogICAgICAgICAgYm9vbD8gcnVuSW5TaGVsbCwKICAgICAgICB9KSBhc3luYyB7CiAgICAgICAgICB0aHJvdyBQcm9jZXNzRXhjZXB0aW9uKAogICAgICAgICAgICAnZGFydCcsCiAgICAgICAgICAgIFsncHViJywgJ2dldCddLAogICAgICAgICAgICBlcnJvciwKICAgICAgICAgICAgRXhpdENvZGUuc29mdHdhcmUuY29kZSwKICAgICAgICAgICk7CiAgICAgICAgfSwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICApOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBlcXVhbHMoW0V4aXRDb2RlLnNvZnR3YXJlLmNvZGVdKSk7CiAgICAgIHZlcmlmeSgoKSA9PiBsb2dnZXIuZXJyKGVycm9yKSkuY2FsbGVkKDEpOwogICAgfSk7CiAgfSk7Cn0K", + "type": "text" + }, + { + "path": "build/test/src/disable_workspace_resolution_test.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKY2xhc3MgX01vY2tIb29rQ29udGV4dCBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBIb29rQ29udGV4dCB7fQoKY2xhc3MgX01vY2tMb2dnZXIgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgTG9nZ2VyIHt9Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2Rpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uJywgKCkgewogICAgbGF0ZSBMaXN0PGludD4gZXhpdENhbGxzOwogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwogICAgbGF0ZSBEaXJlY3RvcnkgcHJvamVjdERpcmVjdG9yeTsKCiAgICBzZXRVcCgoKSB7CiAgICAgIGV4aXRDYWxscyA9IFtdOwogICAgICBjb250ZXh0ID0gX01vY2tIb29rQ29udGV4dCgpOwogICAgICBsb2dnZXIgPSBfTW9ja0xvZ2dlcigpOwogICAgICBwcm9qZWN0RGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoJ3Byb2plY3QnKTsKCiAgICAgIHdoZW4oKCkgPT4gY29udGV4dC5sb2dnZXIpLnRoZW5SZXR1cm4obG9nZ2VyKTsKCiAgICAgIGFkZFRlYXJEb3duKCgpID0+IHByb2plY3REaXJlY3RvcnkuZGVsZXRlKCkuaWdub3JlKCkpOwogICAgfSk7CgogICAgZ3JvdXAoJ3doZW4gcHVic3BlY19vdmVycmlkZXMueWFtbCBkb2VzIG5vdCBleGlzdCcsICgpIHsKICAgICAgdGVzdCgnYWRkcyByZXNvbHV0aW9uOiBudWxsJywgKCkgewogICAgICAgIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgY29udGV4dCwKICAgICAgICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBjb250ZW50cyA9IHByb2plY3REaXJlY3RvcnkubGlzdFN5bmMoKTsKICAgICAgICBleHBlY3QoY29udGVudHMsIGhhc0xlbmd0aCgxKSk7CiAgICAgICAgZmluYWwgcHVic3BlY092ZXJyaWRlcyA9IGNvbnRlbnRzLmZpcnN0IGFzIEZpbGU7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgcHVic3BlY092ZXJyaWRlcy5yZWFkQXNTdHJpbmdTeW5jKCksCiAgICAgICAgICBlcXVhbHMoJ3Jlc29sdXRpb246IG51bGwnKSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWNfb3ZlcnJpZGVzLnlhbWwgZXhpc3RzJywgKCkgewogICAgICBjb25zdCBvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50ID0gJycnCmRlcGVuZGVuY3lfb3ZlcnJpZGVzOgogIGZvbzoKICAgIHBhdGg6IC4vcGF0aC90by9mb28nJyc7CgogICAgICBzZXRVcCgoKSB7CiAgICAgICAgRmlsZSgKICAgICAgICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgICAgICAgKS53cml0ZUFzU3RyaW5nU3luYyhvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50KTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdhZGRzIHJlc29sdXRpb246IG51bGwnLCAoKSB7CiAgICAgICAgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICApOwogICAgICAgIGZpbmFsIGNvbnRlbnRzID0gcHJvamVjdERpcmVjdG9yeS5saXN0U3luYygpOwogICAgICAgIGV4cGVjdChjb250ZW50cywgaGFzTGVuZ3RoKDEpKTsKICAgICAgICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gY29udGVudHMuZmlyc3QgYXMgRmlsZTsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBwdWJzcGVjT3ZlcnJpZGVzLnJlYWRBc1N0cmluZ1N5bmMoKSwKICAgICAgICAgIGVxdWFscygKICAgICAgICAgICAgJycnCiRvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50CnJlc29sdXRpb246IG51bGwKJycnLAogICAgICAgICAgKSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHVuYWJsZSB0byByZWFkIHB1YnNwZWNfb3ZlcnJpZGVzJywgKCkgewogICAgICBzZXRVcCgoKSB7CiAgICAgICAgZmluYWwgcHVic3BlY092ZXJyaWRlcyA9IEZpbGUoCiAgICAgICAgICBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAncHVic3BlY19vdmVycmlkZXMueWFtbCcpLAogICAgICAgICkuLmNyZWF0ZVN5bmMoKTsKICAgICAgICBQcm9jZXNzLnJ1blN5bmMoJ2NobW9kJywgWycwMDAnLCBwdWJzcGVjT3ZlcnJpZGVzLnBhdGhdKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdleGl0cyB3aXRoIGVycm9yJywgKCkgewogICAgICAgIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgY29udGV4dCwKICAgICAgICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBjb250ZW50cyA9IHByb2plY3REaXJlY3RvcnkubGlzdFN5bmMoKTsKICAgICAgICBleHBlY3QoY29udGVudHMsIGhhc0xlbmd0aCgxKSk7CiAgICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgICAgIHZlcmlmeSgKICAgICAgICAgICgpID0+IGxvZ2dlci5lcnIoYW55KHRoYXQ6IGNvbnRhaW5zKCdQZXJtaXNzaW9uIGRlbmllZCcpKSksCiAgICAgICAgKS5jYWxsZWQoMSk7CiAgICAgIH0pOwogICAgfSk7CiAgfSk7Cn0K", + "type": "text" + }, + { + "path": "build/test/src/exit_overrides_test.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKdm9pZCBtYWluKCkgewogIGdyb3VwKCdFeGl0T3ZlcnJpZGVzJywgKCkgewogICAgZ3JvdXAoJ3J1blpvbmVkJywgKCkgewogICAgICB0ZXN0KCd1c2VzIGRlZmF1bHQgZXhpdCB3aGVuIG5vdCBzcGVjaWZpZWQnLCAoKSB7CiAgICAgICAgRXhpdE92ZXJyaWRlcy5ydW5ab25lZCgoKSB7CiAgICAgICAgICBmaW5hbCBvdmVycmlkZXMgPSBFeGl0T3ZlcnJpZGVzLmN1cnJlbnQ7CiAgICAgICAgICBleHBlY3Qob3ZlcnJpZGVzIS5leGl0LCBlcXVhbHMoZXhpdCkpOwogICAgICAgIH0pOwogICAgICB9KTsKCiAgICAgIHRlc3QoJ3VzZXMgY3VzdG9tIGV4aXQgd2hlbiBzcGVjaWZpZWQnLCAoKSB7CiAgICAgICAgRXhpdE92ZXJyaWRlcy5ydW5ab25lZCgKICAgICAgICAgICgpIHsKICAgICAgICAgICAgZmluYWwgb3ZlcnJpZGVzID0gRXhpdE92ZXJyaWRlcy5jdXJyZW50OwogICAgICAgICAgICBleHBlY3Qob3ZlcnJpZGVzIS5leGl0LCBpc05vdChlcXVhbHMoZXhpdCkpKTsKICAgICAgICAgIH0sCiAgICAgICAgICBleGl0OiAoXykge30sCiAgICAgICAgKTsKICAgICAgfSk7CiAgICB9KTsKICB9KTsKfQo=", + "type": "text" + }, + { + "path": "build/test/src/get_internal_path_dependencies_test.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp0ZXN0L3Rlc3QuZGFydCc7Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2dldFBhdGhEZXBlbmRlbmNpZXMnLCAoKSB7CiAgICB0ZXN0KCdyZXR1cm5zIG5vdGhpbmcgd2hlbiB0aGVyZSBhcmUgbm8gcGF0aCBkZXBlbmRlbmNpZXMnLCAoKSB7CiAgICAgIGZpbmFsIGRpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgIEZpbGUocGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAncHVic3BlYy5sb2NrJykpLndyaXRlQXNTdHJpbmdTeW5jKAogICAgICAgICcnJwpwYWNrYWdlczoKICB0ZXN0OgogICAgZGVwZW5kZW5jeTogdHJhbnNpdGl2ZQogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IGFuYWx5emVyCiAgICAgIHNoYTI1NjogZjg1NTY2ZWM3YjNkMjVjYmVhNjBmN2RkNGYxNTdjNTAyNWYyZjE5MjMzY2E0ZmVlZWQzM2I2MTZjNzhhMjZhMwogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjYuMS4wIgogIG1hc29uOgogICAgZGVwZW5kZW5jeTogdHJhbnNpdGl2ZQogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IGFuYWx5emVyCiAgICAgIHNoYTI1NjogZjg1NTY2ZWM3YjNkMjVjYmVhNjBmN2RkNGYxNTdjNTAyNWYyZjE5MjMzY2E0ZmVlZWQzM2I2MTZjNzhhMjZhMwogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjYuMS4wIgonJycsCiAgICAgICk7CiAgICAgIGV4cGVjdChnZXRJbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMoZGlyZWN0b3J5KSwgY29tcGxldGlvbihpc0VtcHR5KSk7CiAgICAgIGRpcmVjdG9yeS5kZWxldGUocmVjdXJzaXZlOiB0cnVlKS5pZ25vcmUoKTsKICAgIH0pOwoKICAgIHRlc3QoJ3JldHVybnMgY29ycmVjdCBwYXRoIGRlcGVuZGVuY2llcycsICgpIHsKICAgICAgZmluYWwgZGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoKTsKICAgICAgRmlsZShwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLmxvY2snKSkud3JpdGVBc1N0cmluZ1N5bmMoCiAgICAgICAgJycnCnBhY2thZ2VzOgogIGRhcnRfZnJvZzoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3QgbWFpbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBwYXRoOiAicGF0aC90by9kYXJ0X2Zyb2ciCiAgICAgIHJlbGF0aXZlOiB0cnVlCiAgICBzb3VyY2U6IHBhdGgKICAgIHZlcnNpb246ICIwLjAuMCIKICBkYXJ0X2Zyb2dfZ2VuOgogICAgZGVwZW5kZW5jeTogImRpcmVjdCBtYWluIgogICAgZGVzY3JpcHRpb246CiAgICAgIHBhdGg6ICJwYXRoL3RvL2RhcnRfZnJvZ19nZW4iCiAgICAgIHJlbGF0aXZlOiB0cnVlCiAgICBzb3VyY2U6IHBhdGgKICAgIHZlcnNpb246ICIwLjAuMCIKJycnLAogICAgICApOwogICAgICBleHBlY3QoCiAgICAgICAgZ2V0SW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzKGRpcmVjdG9yeSksCiAgICAgICAgY29tcGxldGlvbigKICAgICAgICAgIGVxdWFscyhbJ3BhdGgvdG8vZGFydF9mcm9nJywgJ3BhdGgvdG8vZGFydF9mcm9nX2dlbiddKSwKICAgICAgICApLAogICAgICApOwogICAgICBkaXJlY3RvcnkuZGVsZXRlKHJlY3Vyc2l2ZTogdHJ1ZSkuaWdub3JlKCk7CiAgICB9KTsKICB9KTsKfQo=", + "type": "text" + }, + { + "path": "build/test/src/pubspec_lock/pubspec_lock_test.dart", + "data": + "Ly8gaWdub3JpbmcgZm9yIHRlc3RpbmcgcHVycG9zZXMKLy8gaWdub3JlX2Zvcl9maWxlOiBwcmVmZXJfY29uc3RfY29uc3RydWN0b3JzCgppbXBvcnQgJ3BhY2thZ2U6ZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzL3NyYy9wdWJzcGVjX2xvY2svcHVic3BlY19sb2NrLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6eWFtbC95YW1sLmRhcnQnOwoKdm9pZCBtYWluKCkgewogIGdyb3VwKCckUHVic3BlY0xvY2snLCAoKSB7CiAgICBncm91cCgnZnJvbVN0cmluZycsICgpIHsKICAgICAgdGVzdCgncGFyc2VzIGNvcnJlY3RseScsICgpIHsKICAgICAgICBmaW5hbCBwdWJzcGVjTG9jayA9IFB1YnNwZWNMb2NrLmZyb21TdHJpbmcoX3B1YnNwZWNMb2NrQ29udGVudCk7CgogICAgICAgIGV4cGVjdCgKICAgICAgICAgIHB1YnNwZWNMb2NrLnBhY2thZ2VzLAogICAgICAgICAgZXF1YWxzKAogICAgICAgICAgICBjb25zdCBbCiAgICAgICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlKAogICAgICAgICAgICAgICAgbmFtZTogJ3ZlcnlfZ29vZF90ZXN0X3J1bm5lcicsCiAgICAgICAgICAgICAgICB0eXBlOiBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5kaXJlY3RNYWluLAogICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlKAogICAgICAgICAgICAgICAgbmFtZTogJ3ZlcnlfZ29vZF9hbmFseXNpcycsCiAgICAgICAgICAgICAgICB0eXBlOiBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5kaXJlY3REZXYsCiAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgICAgICAgICBuYW1lOiAneWFtbCcsCiAgICAgICAgICAgICAgICB0eXBlOiBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS50cmFuc2l0aXZlLAogICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlKAogICAgICAgICAgICAgICAgbmFtZTogJ3BhdGgnLAogICAgICAgICAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0T3ZlcnJpZGRlbiwKICAgICAgICAgICAgICApLAogICAgICAgICAgICAgIFB1YnNwZWNMb2NrUGFja2FnZSgKICAgICAgICAgICAgICAgIG5hbWU6ICdmb28nLAogICAgICAgICAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiwKICAgICAgICAgICAgICAgIHBhdGhEZXNjcmlwdGlvbjogUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oCiAgICAgICAgICAgICAgICAgIHBhdGg6ICdwYWNrYWdlcy9mb28nLAogICAgICAgICAgICAgICAgICByZWxhdGl2ZTogdHJ1ZSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgICAgICAgICBuYW1lOiAneWFtbDInLAogICAgICAgICAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUudHJhbnNpdGl2ZSwKICAgICAgICAgICAgICApLAogICAgICAgICAgICBdLAogICAgICAgICAgKSwKICAgICAgICApOwogICAgICB9KTsKCiAgICAgIHRlc3QoJ3Rocm93cyBhICRQdWJzcGVjTG9ja1BhcnNlRXhjZXB0aW9uIHdoZW4gY29udGVudCBpcyBlbXB0eScsICgpIHsKICAgICAgICBleHBlY3QoCiAgICAgICAgICAoKSA9PiBQdWJzcGVjTG9jay5mcm9tU3RyaW5nKCcnKSwKICAgICAgICAgIHRocm93c0EoaXNBPFB1YnNwZWNMb2NrUGFyc2VFeGNlcHRpb24+KCkpLAogICAgICAgICk7CiAgICAgIH0pOwoKICAgICAgdGVzdCgncmV0dXJucyBlbXB0eSBQdWJzcGVjTG9jayB3aGVuIGNvbnRlbnQgaGFzIG5vIHBhY2thZ2VzIGVudHJ5JywgKCkgewogICAgICAgIGZpbmFsIHB1YnNwZWNMb2NrID0gUHVic3BlY0xvY2suZnJvbVN0cmluZyhfZW1wdHlQdWJzcGVjTG9ja0NvbnRlbnQpOwogICAgICAgIGV4cGVjdChwdWJzcGVjTG9jay5wYWNrYWdlcywgaXNFbXB0eSk7CiAgICAgIH0pOwogICAgfSk7CiAgfSk7CgogIGdyb3VwKCckUHVic3BlY0xvY2tQYWNrYWdlJywgKCkgewogICAgdGVzdCgnY2FuIGJlIGluc3RhbnRpYXRlZCcsICgpIHsKICAgICAgZXhwZWN0KAogICAgICAgIFB1YnNwZWNMb2NrUGFja2FnZSgKICAgICAgICAgIG5hbWU6ICdmb28nLAogICAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiwKICAgICAgICApLAogICAgICAgIGlzQTxQdWJzcGVjTG9ja1BhY2thZ2U+KCksCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdzdXBwb3J0cyB2YWx1ZSBlcXVhbGl0eScsICgpIHsKICAgICAgZmluYWwgcGFja2FnZTEgPSBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgbmFtZTogJ2ZvbycsCiAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiwKICAgICAgKTsKICAgICAgZmluYWwgcGFja2FnZTIgPSBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgbmFtZTogJ2ZvbycsCiAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiwKICAgICAgKTsKICAgICAgZmluYWwgcGFja2FnZTMgPSBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgbmFtZTogJ2JhcicsCiAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUudHJhbnNpdGl2ZSwKICAgICAgKTsKCiAgICAgIGV4cGVjdChwYWNrYWdlMSwgZXF1YWxzKHBhY2thZ2UyKSk7CiAgICAgIGV4cGVjdChwYWNrYWdlMSwgaXNOb3QoZXF1YWxzKHBhY2thZ2UzKSkpOwogICAgICBleHBlY3QocGFja2FnZTIsIGlzTm90KGVxdWFscyhwYWNrYWdlMykpKTsKICAgIH0pOwogIH0pOwoKICBncm91cCgnJFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlJywgKCkgewogICAgZ3JvdXAoJ3BhcnNlJywgKCkgewogICAgICB0ZXN0KCdwYXJzZXMgc3VjY2Vzc2Z1bGx5IGBkaXJlY3QgbWFpbmAnLCAoKSB7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUucGFyc2UoJ2RpcmVjdCBtYWluJyksCiAgICAgICAgICBlcXVhbHMoUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiksCiAgICAgICAgKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdwYXJzZXMgc3VjY2Vzc2Z1bGx5IGBkaXJlY3QgZGV2YCcsICgpIHsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5wYXJzZSgnZGlyZWN0IGRldicpLAogICAgICAgICAgZXF1YWxzKFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlLmRpcmVjdERldiksCiAgICAgICAgKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdwYXJzZXMgc3VjY2Vzc2Z1bGx5IGBkaXJlY3Qgb3ZlcnJpZGRlbmAnLCAoKSB7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUucGFyc2UoJ2RpcmVjdCBvdmVycmlkZGVuJyksCiAgICAgICAgICBlcXVhbHMoUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0T3ZlcnJpZGRlbiksCiAgICAgICAgKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdwYXJzZXMgc3VjY2Vzc2Z1bGx5IGB0cmFuc2l0aXZlYCcsICgpIHsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5wYXJzZSgndHJhbnNpdGl2ZScpLAogICAgICAgICAgZXF1YWxzKFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlLnRyYW5zaXRpdmUpLAogICAgICAgICk7CiAgICAgIH0pOwoKICAgICAgdGVzdCgndGhyb3dzIGEgJEFyZ3VtZW50RXJyb3Igd2hlbiB0eXBlIGlzIGludmFsaWQnLCAoKSB7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgKCkgPT4gUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUucGFyc2UoJ2ludmFsaWQnKSwKICAgICAgICAgIHRocm93c0EoaXNBPEFyZ3VtZW50RXJyb3I+KCkpLAogICAgICAgICk7CiAgICAgIH0pOwogICAgfSk7CiAgfSk7CgogIGdyb3VwKCckUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24nLCAoKSB7CiAgICB0ZXN0KCdjYW4gYmUgaW5zdGFudGlhdGVkJywgKCkgewogICAgICBleHBlY3QoCiAgICAgICAgUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oCiAgICAgICAgICBwYXRoOiAncGFja2FnZXMvZm9vJywKICAgICAgICAgIHJlbGF0aXZlOiB0cnVlLAogICAgICAgICksCiAgICAgICAgaXNBPFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uPigpLAogICAgICApOwogICAgfSk7CgogICAgdGVzdCgnc3VwcG9ydHMgdmFsdWUgZXF1YWxpdHknLCAoKSB7CiAgICAgIGZpbmFsIGRlc2NyaXB0aW9uMSA9IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uKAogICAgICAgIHBhdGg6ICdwYWNrYWdlcy9mb28nLAogICAgICAgIHJlbGF0aXZlOiB0cnVlLAogICAgICApOwogICAgICBmaW5hbCBkZXNjcmlwdGlvbjIgPSBQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbigKICAgICAgICBwYXRoOiAncGFja2FnZXMvZm9vJywKICAgICAgICByZWxhdGl2ZTogdHJ1ZSwKICAgICAgKTsKICAgICAgZmluYWwgZGVzY3JpcHRpb24zID0gUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oCiAgICAgICAgcGF0aDogJ3BhY2thZ2VzL2JhcicsCiAgICAgICAgcmVsYXRpdmU6IHRydWUsCiAgICAgICk7CiAgICAgIGZpbmFsIGRlc2NyaXB0aW9uNCA9IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uKAogICAgICAgIHBhdGg6ICdwYWNrYWdlcy9mb28nLAogICAgICAgIHJlbGF0aXZlOiBmYWxzZSwKICAgICAgKTsKCiAgICAgIGV4cGVjdChkZXNjcmlwdGlvbjEsIGVxdWFscyhkZXNjcmlwdGlvbjIpKTsKICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uMSwgaXNOb3QoZXF1YWxzKGRlc2NyaXB0aW9uMykpKTsKICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uMSwgaXNOb3QoZXF1YWxzKGRlc2NyaXB0aW9uNCkpKTsKICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uMywgaXNOb3QoZXF1YWxzKGRlc2NyaXB0aW9uNCkpKTsKICAgIH0pOwoKICAgIGdyb3VwKCd0cnlQYXJzZScsICgpIHsKICAgICAgdGVzdCgncGFyc2VzJywgKCkgewogICAgICAgIGZpbmFsIGRhdGEgPSBsb2FkWWFtbCgKICAgICAgICAgICcnJwpwYXRoOiAicGFja2FnZXMvZm9vIgpyZWxhdGl2ZTogdHJ1ZQogICAgICAgICAgICAnJycsCiAgICAgICAgKSBhcyBZYW1sTWFwOwoKICAgICAgICBmaW5hbCBkZXNjcmlwdGlvbiA9IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uLnRyeVBhcnNlKGRhdGEpOwoKICAgICAgICBleHBlY3QoCiAgICAgICAgICBkZXNjcmlwdGlvbiwKICAgICAgICAgIGVxdWFscygKICAgICAgICAgICAgUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oCiAgICAgICAgICAgICAgcGF0aDogJ3BhY2thZ2VzL2ZvbycsCiAgICAgICAgICAgICAgcmVsYXRpdmU6IHRydWUsCiAgICAgICAgICAgICksCiAgICAgICAgICApLAogICAgICAgICk7CiAgICAgIH0pOwoKICAgICAgZ3JvdXAoJ3JldHVybnMgbnVsbCcsICgpIHsKICAgICAgICB0ZXN0KCd3aGVuIG1pc3NpbmcgInBhdGgiJywgKCkgewogICAgICAgICAgZmluYWwgZGF0YSA9IGxvYWRZYW1sKAogICAgICAgICAgICAnJycKcmVsYXRpdmU6IHRydWUKICAgICAgICAgICAgJycnLAogICAgICAgICAgKSBhcyBZYW1sTWFwOwoKICAgICAgICAgIGZpbmFsIGRlc2NyaXB0aW9uID0gUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24udHJ5UGFyc2UoZGF0YSk7CgogICAgICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uLCBpc051bGwpOwogICAgICAgIH0pOwoKICAgICAgICB0ZXN0KCd3aGVuICJwYXRoIiBpcyBub3QgYSBTdHJpbmcnLCAoKSB7CiAgICAgICAgICBmaW5hbCBkYXRhID0gbG9hZFlhbWwoCiAgICAgICAgICAgICcnJwpwYXRoOiAxCnJlbGF0aXZlOiB0cnVlCiAgICAgICAgICAgICcnJywKICAgICAgICAgICkgYXMgWWFtbE1hcDsKCiAgICAgICAgICBmaW5hbCBkZXNjcmlwdGlvbiA9IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uLnRyeVBhcnNlKGRhdGEpOwoKICAgICAgICAgIGV4cGVjdChkZXNjcmlwdGlvbiwgaXNOdWxsKTsKICAgICAgICB9KTsKCiAgICAgICAgdGVzdCgnd2hlbiBtaXNzaW5nICJyZWxhdGl2ZSInLCAoKSB7CiAgICAgICAgICBmaW5hbCBkYXRhID0gbG9hZFlhbWwoCiAgICAgICAgICAgICcnJwpwYXRoOiAicGFja2FnZXMvZm9vIgogICAgICAgICAgICAnJycsCiAgICAgICAgICApIGFzIFlhbWxNYXA7CgogICAgICAgICAgZmluYWwgZGVzY3JpcHRpb24gPSBQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbi50cnlQYXJzZShkYXRhKTsKCiAgICAgICAgICBleHBlY3QoZGVzY3JpcHRpb24sIGlzTnVsbCk7CiAgICAgICAgfSk7CgogICAgICAgIHRlc3QoJ3doZW4gInJlbGF0aXZlIiBpcyBub3QgYSBib29sJywgKCkgewogICAgICAgICAgZmluYWwgZGF0YSA9IGxvYWRZYW1sKAogICAgICAgICAgICAnJycKcGF0aDogInBhY2thZ2VzL2ZvbyIKcmVsYXRpdmU6IDUKICAgICAgICAgICAgJycnLAogICAgICAgICAgKSBhcyBZYW1sTWFwOwoKICAgICAgICAgIGZpbmFsIGRlc2NyaXB0aW9uID0gUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24udHJ5UGFyc2UoZGF0YSk7CgogICAgICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uLCBpc051bGwpOwogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0pOwogIH0pOwp9CgovLy8gQW4gZXhhbXBsZSBwdWJzcGVjLmxvY2sgY29udGVudCB1c2VkIHRvIHRlc3QgdGhlIFtQdWJzcGVjTG9ja10gY2xhc3MuCi8vLwovLy8gSXQgaGFzIGJlZW4gYXJ0aWZpY2lhbGx5IGNyYWZ0ZWQgdG8gaW5jbHVkZToKLy8vIC0gb25lIHB1YiBob3N0ZWQgZGlyZWN0IG1haW4gcGFja2FnZSBlbnRyeQovLy8gLSBvbmUgcHViIGhvc3RlZCBkaXJlY3QgZGV2IHBhY2thZ2UgZW50cnkKLy8vIC0gb25lIHB1YiBob3N0ZWQgdHJhbnNpdGl2ZSBwYWNrYWdlIGVudHJ5Ci8vLyAtIG9uZSBwdWIgaG9zdGVkIG92ZXJyaWRkZW4gcGFja2FnZSBlbnRyeQovLy8gLSBvbmUgcGF0aCBkaXJlY3QgbWFpbiBwYWNrYWdlIGVudHJ5Ci8vLyAtIG9uZSBub3QgcHViIGhvc3RlZCB0cmFuc2l0aXZlIHBhY2thZ2UgZW50cnkKLy8vIC0gb25lIGludmFsaWQgcGFja2FnZSBlbnRyeQpjb25zdCBfcHVic3BlY0xvY2tDb250ZW50ID0gJycnCnBhY2thZ2VzOgogIHZlcnlfZ29vZF90ZXN0X3J1bm5lcjoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3QgbWFpbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiB2ZXJ5X2dvb2RfdGVzdF9ydW5uZXIKICAgICAgc2hhMjU2OiAiNGQ0MWU1ZDc2NzdkMjU5YjlhMTU5OWM3ODY0NWFjMmQzNmJjMmJkNmZmNzc3MzUwN2JjYjBiYWI0MTQxN2ZlMiIKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIwLjEuMiIKICB2ZXJ5X2dvb2RfYW5hbHlzaXM6CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IGRldiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiB2ZXJ5X2dvb2RfYW5hbHlzaXMKICAgICAgc2hhMjU2OiAiOWFlN2YzYTNiZDU3NjRmYjAyMWIzMzVjYTI4YTM0ZjA0MGNkMGFiNmVlYzAwYTFiMjEzYjQ0NWRhZTU4YTRiOCIKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICI1LjEuMCIKICB5YW1sOgogICAgZGVwZW5kZW5jeTogdHJhbnNpdGl2ZQogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IHlhbWwKICAgICAgc2hhMjU2OiAiNzU3Njk1MDFlYTM0ODlmY2E1NjYwMWZmMzM0NTRmZTQ1NTA3ZWEzYmZiMDE0MTYxYWJjM2I0M2FlMjU5ODlkNSIKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIzLjEuMiIKICBwYXRoOgogICAgZGVwZW5kZW5jeTogImRpcmVjdCBvdmVycmlkZGVuIgogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IHBhdGgKICAgICAgc2hhMjU2OiAiMDg3Y2U0OWMzZjBkYzM5MTgwYmVmZWZjNjBmZGI0YWNkOGY4NjIwZTU2ODJmZTI0NzZhZmQwYjM2ODhiYjRhZiIKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIxLjkuMCIKICBmb286CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IG1haW4iCiAgICBkZXNjcmlwdGlvbjoKICAgICAgcGF0aDogInBhY2thZ2VzL2ZvbyIKICAgICAgcmVsYXRpdmU6IHRydWUKICAgIHNvdXJjZTogcGF0aAogICAgdmVyc2lvbjogIjEuMC4wKzEiCiAgeWFtbDI6CiAgICBkZXBlbmRlbmN5OiB0cmFuc2l0aXZlCiAgICBkZXNjcmlwdGlvbjoKICAgICAgbmFtZTogeWFtbAogICAgICBzaGEyNTY6ICI3NTc2OTUwMWVhMzQ4OWZjYTU2NjAxZmYzMzQ1NGZlNDU1MDdlYTNiZmIwMTQxNjFhYmMzYjQzYWUyNTk4OWQ1IgogICAgICB1cmw6ICJodHRwczovL25vdC1wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIzLjEuMiIKICBiYWRfcGFja2FnZToKICAgIG5vdF9kZXBlbmRlbmN5OiAiYmFkIgpzZGtzOgogIGRhcnQ6ICI+PTMuMS4wIDw0LjAuMCIKJycnOwoKLy8vIEEgdmFsaWQgcHVic3BlYyBsb2NrIGZpbGUgd2l0aCBubyBwYWNrYWdlcy4KY29uc3QgX2VtcHR5UHVic3BlY0xvY2tDb250ZW50ID0gJycnCnNka3M6CiAgZGFydDogIj49My4xLjAgPDQuMC4wIgonJyc7Cg==", + "type": "text" + }, + { + "path": "build/test/src/uses_workspace_resolution_test.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKY2xhc3MgX01vY2tIb29rQ29udGV4dCBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBIb29rQ29udGV4dCB7fQoKY2xhc3MgX01vY2tMb2dnZXIgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgTG9nZ2VyIHt9Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ3VzZXNXb3Jrc3BhY2VSZXNvbHV0aW9uJywgKCkgewogICAgbGF0ZSBMaXN0PGludD4gZXhpdENhbGxzOwogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwogICAgbGF0ZSBEaXJlY3RvcnkgYnVpbGREaXJlY3Rvcnk7CiAgICBsYXRlIERpcmVjdG9yeSB3b3JraW5nRGlyZWN0b3J5OwoKICAgIHNldFVwKCgpIHsKICAgICAgZXhpdENhbGxzID0gW107CiAgICAgIGNvbnRleHQgPSBfTW9ja0hvb2tDb250ZXh0KCk7CiAgICAgIGxvZ2dlciA9IF9Nb2NrTG9nZ2VyKCk7CiAgICAgIGJ1aWxkRGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoJ2J1aWxkJyk7CiAgICAgIHdvcmtpbmdEaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygnd29ya2luZycpOwoKICAgICAgd2hlbigoKSA9PiBjb250ZXh0LmxvZ2dlcikudGhlblJldHVybihsb2dnZXIpOwoKICAgICAgYWRkVGVhckRvd24oKCkgewogICAgICAgIGJ1aWxkRGlyZWN0b3J5LmRlbGV0ZSgpLmlnbm9yZSgpOwogICAgICAgIHdvcmtpbmdEaXJlY3RvcnkuZGVsZXRlKCkuaWdub3JlKCk7CiAgICAgIH0pOwogICAgfSk7CgogICAgZ3JvdXAoJ3doZW4gcHVic3BlYy55YW1sIGRvZXMgbm90IGV4aXN0JywgKCkgewogICAgICB0ZXN0KCdyZXR1cm5zIGZhbHNlJywgKCkgewogICAgICAgIGV4cGVjdCgKICAgICAgICAgIHVzZXNXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgICB3b3JraW5nRGlyZWN0b3J5OiB3b3JraW5nRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgICApLAogICAgICAgICAgaXNGYWxzZSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWMueWFtbCBpcyBtYWxmb3JtZWQnLCAoKSB7CiAgICAgIGxhdGUgRmlsZSBwdWJzcGVjRmlsZTsKICAgICAgc2V0VXAoKCkgewogICAgICAgIHB1YnNwZWNGaWxlID0gRmlsZSgKICAgICAgICAgIHBhdGguam9pbih3b3JraW5nRGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSwKICAgICAgICApLi53cml0ZUFzU3RyaW5nU3luYygnaW52YWxpZCBwdWJzcGVjLnlhbWwnKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdyZXR1cm5zIGZhbHNlJywgKCkgewogICAgICAgIGV4cGVjdCgKICAgICAgICAgIHVzZXNXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgICB3b3JraW5nRGlyZWN0b3J5OiB3b3JraW5nRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgICApLAogICAgICAgICAgaXNGYWxzZSwKICAgICAgICApOwogICAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbMV0pKTsKICAgICAgICB2ZXJpZnkoCiAgICAgICAgICAoKSA9PiBsb2dnZXIuZXJyKAogICAgICAgICAgICBhbnkodGhhdDogY29udGFpbnMoJ1VuYWJsZSB0byBwYXJzZSAke3B1YnNwZWNGaWxlLnBhdGh9JykpLAogICAgICAgICAgKSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWMueWFtbCBpcyB2YWxpZCB3aXRoIG5vIHJlc29sdXRpb24nLCAoKSB7CiAgICAgIHNldFVwKCgpIHsKICAgICAgICBGaWxlKAogICAgICAgICAgcGF0aC5qb2luKHdvcmtpbmdEaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMueWFtbCcpLAogICAgICAgICkud3JpdGVBc1N0cmluZ1N5bmMoJycnCm5hbWU6IF8KJycnKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdyZXR1cm5zIGZhbHNlJywgKCkgewogICAgICAgIGV4cGVjdCgKICAgICAgICAgIHVzZXNXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgICB3b3JraW5nRGlyZWN0b3J5OiB3b3JraW5nRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgICApLAogICAgICAgICAgaXNGYWxzZSwKICAgICAgICApOwogICAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICAgIHZlcmlmeU5ldmVyKCgpID0+IGxvZ2dlci5lcnIoYW55KCkpKTsKICAgICAgfSk7CiAgICB9KTsKCiAgICBncm91cCgnd2hlbiBwdWJzcGVjLnlhbWwgaXMgdmFsaWQgd2l0aCByZXNvbHV0aW9uIHdvcmtzcGFjZScsICgpIHsKICAgICAgc2V0VXAoKCkgewogICAgICAgIEZpbGUoCiAgICAgICAgICBwYXRoLmpvaW4od29ya2luZ0RpcmVjdG9yeS5wYXRoLCAncHVic3BlYy55YW1sJyksCiAgICAgICAgKS53cml0ZUFzU3RyaW5nU3luYygnJycKbmFtZTogXwpyZXNvbHV0aW9uOiB3b3Jrc3BhY2UKJycnKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdyZXR1cm5zIHRydWUnLCAoKSB7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgdXNlc1dvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgICAgICAgIGNvbnRleHQsCiAgICAgICAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHdvcmtpbmdEaXJlY3RvcnkucGF0aCwKICAgICAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICAgICksCiAgICAgICAgICBpc1RydWUsCiAgICAgICAgKTsKICAgICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgICB2ZXJpZnlOZXZlcigoKSA9PiBsb2dnZXIuZXJyKGFueSgpKSk7CiAgICAgIH0pOwogICAgfSk7CiAgfSk7Cn0K", + "type": "text" + }, { "path": "lib/dart_frog_prod_server_hooks.dart", "data": - "ZXhwb3J0ICdzcmMvY3JlYXRlX2J1bmRsZS5kYXJ0JzsKZXhwb3J0ICdzcmMvY3JlYXRlX2V4dGVybmFsX3BhY2thZ2VzX2ZvbGRlci5kYXJ0JzsKZXhwb3J0ICdzcmMvZGFydF9wdWJfZ2V0LmRhcnQnOwpleHBvcnQgJ3NyYy9leGl0X292ZXJyaWRlcy5kYXJ0JzsKZXhwb3J0ICdzcmMvZ2V0X2ludGVybmFsX3BhdGhfZGVwZW5kZW5jaWVzLmRhcnQnOwpleHBvcnQgJ3NyYy9nZXRfcHVic3BlY19sb2NrLmRhcnQnOwo=", + "ZXhwb3J0ICdzcmMvY3JlYXRlX2J1bmRsZS5kYXJ0JzsKZXhwb3J0ICdzcmMvY3JlYXRlX2V4dGVybmFsX3BhY2thZ2VzX2ZvbGRlci5kYXJ0JzsKZXhwb3J0ICdzcmMvZGFydF9wdWJfZ2V0LmRhcnQnOwpleHBvcnQgJ3NyYy9kaXNhYmxlX3dvcmtzcGFjZV9yZXNvbHV0aW9uLmRhcnQnOwpleHBvcnQgJ3NyYy9leGl0X292ZXJyaWRlcy5kYXJ0JzsKZXhwb3J0ICdzcmMvZ2V0X2ludGVybmFsX3BhdGhfZGVwZW5kZW5jaWVzLmRhcnQnOwpleHBvcnQgJ3NyYy9nZXRfcHVic3BlY19sb2NrLmRhcnQnOwpleHBvcnQgJ3NyYy91c2VzX3dvcmtzcGFjZV9yZXNvbHV0aW9uLmRhcnQnOwo=", "type": "text" }, { @@ -40,7 +190,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "lib/src/create_external_packages_folder.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW87CmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKCi8vLyBTaWduYXR1cmUgb2YgW2lvLmNvcHlQYXRoXS4KdHlwZWRlZiBDb3B5UGF0aCA9IEZ1dHVyZTx2b2lkPiBGdW5jdGlvbihTdHJpbmcgZnJvbSwgU3RyaW5nIHRvKTsKCkZ1dHVyZTxMaXN0PFN0cmluZz4+IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoewogIHJlcXVpcmVkIERpcmVjdG9yeSBwcm9qZWN0RGlyZWN0b3J5LAogIHJlcXVpcmVkIERpcmVjdG9yeSBidWlsZERpcmVjdG9yeSwKICBDb3B5UGF0aCBjb3B5UGF0aCA9IGlvLmNvcHlQYXRoLAp9KSBhc3luYyB7CiAgZmluYWwgcGF0aFJlc29sdmVyID0gcGF0aC5jb250ZXh0OwogIGZpbmFsIHB1YnNwZWNMb2NrID0gYXdhaXQgZ2V0UHVic3BlY0xvY2soCiAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBwYXRoQ29udGV4dDogcGF0aC5jb250ZXh0LAogICk7CgogIGZpbmFsIGV4dGVybmFsUGF0aERlcGVuZGVuY2llcyA9IHB1YnNwZWNMb2NrLnBhY2thZ2VzCiAgICAgIC5tYXAoCiAgICAgICAgKGRlcGVuZGVuY3kpIHsKICAgICAgICAgIGZpbmFsIHBhdGhEZXNjcmlwdGlvbiA9IGRlcGVuZGVuY3kucGF0aERlc2NyaXB0aW9uOwogICAgICAgICAgaWYgKHBhdGhEZXNjcmlwdGlvbiA9PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQoKICAgICAgICAgIGZpbmFsIGlzRXh0ZXJuYWwgPSAhcGF0aFJlc29sdmVyLmlzV2l0aGluKCcnLCBwYXRoRGVzY3JpcHRpb24ucGF0aCk7CiAgICAgICAgICBpZiAoIWlzRXh0ZXJuYWwpIHJldHVybiBudWxsOwoKICAgICAgICAgIHJldHVybiBfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeSgKICAgICAgICAgICAgbmFtZTogZGVwZW5kZW5jeS5uYW1lLAogICAgICAgICAgICBwYXRoOiBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCBwYXRoRGVzY3JpcHRpb24ucGF0aCksCiAgICAgICAgICApOwogICAgICAgIH0sCiAgICAgICkKICAgICAgLndoZXJlVHlwZTxfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeT4oKQogICAgICAudG9MaXN0KCk7CgogIGlmIChleHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMuaXNFbXB0eSkgewogICAgcmV0dXJuIFtdOwogIH0KCiAgZmluYWwgcGFja2FnZXNEaXJlY3RvcnkgPSBEaXJlY3RvcnkoCiAgICBwYXRoUmVzb2x2ZXIuam9pbigKICAgICAgYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgKSwKICApLi5jcmVhdGVTeW5jKHJlY3Vyc2l2ZTogdHJ1ZSk7CgogIGZpbmFsIGNvcGllZEV4dGVybmFsUGF0aERlcGVuZGVuY2llcyA9IGF3YWl0IEZ1dHVyZS53YWl0KAogICAgZXh0ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLm1hcCgKICAgICAgKGV4dGVybmFsUGF0aERlcGVuZGVuY3kpID0+IGV4dGVybmFsUGF0aERlcGVuZGVuY3kuY29weVRvKAogICAgICAgIGNvcHlQYXRoOiBjb3B5UGF0aCwKICAgICAgICB0YXJnZXREaXJlY3Rvcnk6IERpcmVjdG9yeSgKICAgICAgICAgIHBhdGhSZXNvbHZlci5qb2luKAogICAgICAgICAgICBwYWNrYWdlc0RpcmVjdG9yeS5wYXRoLAogICAgICAgICAgICBleHRlcm5hbFBhdGhEZXBlbmRlbmN5Lm5hbWUsCiAgICAgICAgICApLAogICAgICAgICksCiAgICAgICksCiAgICApLAogICk7CgogIGF3YWl0IEZpbGUoCiAgICBwYXRoUmVzb2x2ZXIuam9pbigKICAgICAgYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgJ3B1YnNwZWNfb3ZlcnJpZGVzLnlhbWwnLAogICAgKSwKICApLndyaXRlQXNTdHJpbmcoJycnCmRlcGVuZGVuY3lfb3ZlcnJpZGVzOgoke2NvcGllZEV4dGVybmFsUGF0aERlcGVuZGVuY2llcy5tYXAoCiAgICAoZGVwZW5kZW5jeSkgewogICAgICBmaW5hbCBuYW1lID0gZGVwZW5kZW5jeS5uYW1lOwogICAgICBmaW5hbCBwYXRoID0KICAgICAgICAgIHBhdGhSZXNvbHZlci5yZWxhdGl2ZShkZXBlbmRlbmN5LnBhdGgsIGZyb206IGJ1aWxkRGlyZWN0b3J5LnBhdGgpOwogICAgICByZXR1cm4gJyAgJG5hbWU6XG4gICAgcGF0aDogJHBhdGgnOwogICAgfSwKICApLmpvaW4oJ1xuJyl9CicnJyk7CgogIHJldHVybiBjb3BpZWRFeHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMKICAgICAgLm1hcCgoZGVwZW5kZW5jeSkgPT4gZGVwZW5kZW5jeS5wYXRoKQogICAgICAudG9MaXN0KCk7Cn0KCi8vLyB7QHRlbXBsYXRlIGV4dGVybmFsX3BhdGhfZGVwZW5kZW5jeX0KLy8vIEEgcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgbm90IHdpdGhpbiB0aGUgYnVuZGxlZCBEYXJ0IEZyb2cgcHJvamVjdAovLy8gZGlyZWN0b3J5LgovLy8KLy8vIEZvciBleGFtcGxlOgovLy8gYGBgeWFtbAovLy8gbmFtZTogbXlfZGFydF9mcm9nX3Byb2plY3QKLy8vIGRlcGVuZGVuY2llczoKLy8vICAgbXlfcGFja2FnZToKLy8vICAgICBwYXRoOiAuLi9teV9wYWNrYWdlCi8vLyBgYGAKLy8vIHtAZW5kdGVtcGxhdGV9CmNsYXNzIF9FeHRlcm5hbFBhdGhEZXBlbmRlbmN5IHsKICAvLy8ge0BtYWNybyBleHRlcm5hbF9wYXRoX2RlcGVuZGVuY3l9CiAgY29uc3QgX0V4dGVybmFsUGF0aERlcGVuZGVuY3koewogICAgcmVxdWlyZWQgdGhpcy5uYW1lLAogICAgcmVxdWlyZWQgdGhpcy5wYXRoLAogIH0pOwoKICAvLy8gVGhlIG5hbWUgb2YgdGhlIHBhY2thZ2UuCiAgZmluYWwgU3RyaW5nIG5hbWU7CgogIC8vLyBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgcGFja2FnZS4KICBmaW5hbCBTdHJpbmcgcGF0aDsKCiAgLy8vIENvcGllcyB0aGUgW19FeHRlcm5hbFBhdGhEZXBlbmRlbmN5XSB0byBbdGFyZ2V0RGlyZWN0b3J5XS4KICBGdXR1cmU8X0V4dGVybmFsUGF0aERlcGVuZGVuY3k+IGNvcHlUbyh7CiAgICByZXF1aXJlZCBEaXJlY3RvcnkgdGFyZ2V0RGlyZWN0b3J5LAogICAgQ29weVBhdGggY29weVBhdGggPSBpby5jb3B5UGF0aCwKICB9KSBhc3luYyB7CiAgICBhd2FpdCBjb3B5UGF0aChwYXRoLCB0YXJnZXREaXJlY3RvcnkucGF0aCk7CiAgICByZXR1cm4gX0V4dGVybmFsUGF0aERlcGVuZGVuY3kobmFtZTogbmFtZSwgcGF0aDogdGFyZ2V0RGlyZWN0b3J5LnBhdGgpOwogIH0KfQo=", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW87CmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKCi8vLyBTaWduYXR1cmUgb2YgW2lvLmNvcHlQYXRoXS4KdHlwZWRlZiBDb3B5UGF0aCA9IEZ1dHVyZTx2b2lkPiBGdW5jdGlvbihTdHJpbmcgZnJvbSwgU3RyaW5nIHRvKTsKCkZ1dHVyZTxMaXN0PFN0cmluZz4+IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoewogIHJlcXVpcmVkIERpcmVjdG9yeSBwcm9qZWN0RGlyZWN0b3J5LAogIHJlcXVpcmVkIERpcmVjdG9yeSBidWlsZERpcmVjdG9yeSwKICBDb3B5UGF0aCBjb3B5UGF0aCA9IGlvLmNvcHlQYXRoLAp9KSBhc3luYyB7CiAgZmluYWwgcGF0aFJlc29sdmVyID0gcGF0aC5jb250ZXh0OwogIGZpbmFsIHB1YnNwZWNMb2NrID0gYXdhaXQgZ2V0UHVic3BlY0xvY2soCiAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBwYXRoQ29udGV4dDogcGF0aC5jb250ZXh0LAogICk7CgogIGZpbmFsIGV4dGVybmFsUGF0aERlcGVuZGVuY2llcyA9IHB1YnNwZWNMb2NrLnBhY2thZ2VzCiAgICAgIC5tYXAoCiAgICAgICAgKGRlcGVuZGVuY3kpIHsKICAgICAgICAgIGZpbmFsIHBhdGhEZXNjcmlwdGlvbiA9IGRlcGVuZGVuY3kucGF0aERlc2NyaXB0aW9uOwogICAgICAgICAgaWYgKHBhdGhEZXNjcmlwdGlvbiA9PSBudWxsKSByZXR1cm4gbnVsbDsKCiAgICAgICAgICBmaW5hbCBpc0V4dGVybmFsID0gIXBhdGhSZXNvbHZlci5pc1dpdGhpbignJywgcGF0aERlc2NyaXB0aW9uLnBhdGgpOwogICAgICAgICAgaWYgKCFpc0V4dGVybmFsKSByZXR1cm4gbnVsbDsKCiAgICAgICAgICByZXR1cm4gX0V4dGVybmFsUGF0aERlcGVuZGVuY3koCiAgICAgICAgICAgIG5hbWU6IGRlcGVuZGVuY3kubmFtZSwKICAgICAgICAgICAgcGF0aDogcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgcGF0aERlc2NyaXB0aW9uLnBhdGgpLAogICAgICAgICAgKTsKICAgICAgICB9LAogICAgICApCiAgICAgIC53aGVyZVR5cGU8X0V4dGVybmFsUGF0aERlcGVuZGVuY3k+KCkKICAgICAgLnRvTGlzdCgpOwoKICBpZiAoZXh0ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLmlzRW1wdHkpIHJldHVybiBbXTsKCiAgZmluYWwgcGFja2FnZXNEaXJlY3RvcnkgPSBEaXJlY3RvcnkoCiAgICBwYXRoUmVzb2x2ZXIuam9pbigKICAgICAgYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgKSwKICApLi5jcmVhdGVTeW5jKHJlY3Vyc2l2ZTogdHJ1ZSk7CgogIGZpbmFsIGNvcGllZEV4dGVybmFsUGF0aERlcGVuZGVuY2llcyA9IGF3YWl0IEZ1dHVyZS53YWl0KAogICAgZXh0ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLm1hcCgKICAgICAgKGV4dGVybmFsUGF0aERlcGVuZGVuY3kpIGFzeW5jIHsKICAgICAgICBmaW5hbCBjb3B5ID0gYXdhaXQgZXh0ZXJuYWxQYXRoRGVwZW5kZW5jeS5jb3B5VG8oCiAgICAgICAgICBjb3B5UGF0aDogY29weVBhdGgsCiAgICAgICAgICB0YXJnZXREaXJlY3Rvcnk6IERpcmVjdG9yeSgKICAgICAgICAgICAgcGF0aFJlc29sdmVyLmpvaW4oCiAgICAgICAgICAgICAgcGFja2FnZXNEaXJlY3RvcnkucGF0aCwKICAgICAgICAgICAgICBleHRlcm5hbFBhdGhEZXBlbmRlbmN5Lm5hbWUsCiAgICAgICAgICAgICksCiAgICAgICAgICApLAogICAgICAgICk7CiAgICAgICAgb3ZlcnJpZGVSZXNvbHV0aW9uSW5QdWJzcGVjT3ZlcnJpZGVzKGNvcHkucGF0aCk7CiAgICAgICAgcmV0dXJuIGNvcHk7CiAgICAgIH0sCiAgICApLAogICk7CgogIEZpbGUoCiAgICBwYXRoUmVzb2x2ZXIuam9pbihidWlsZERpcmVjdG9yeS5wYXRoLCAncHVic3BlY19vdmVycmlkZXMueWFtbCcpLAogICkud3JpdGVBc1N0cmluZ1N5bmMoCiAgICAnJycKcmVzb2x1dGlvbjogbnVsbApkZXBlbmRlbmN5X292ZXJyaWRlczoKJHtjb3BpZWRFeHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMubWFwKAogICAgICAoZGVwZW5kZW5jeSkgewogICAgICAgIGZpbmFsIG5hbWUgPSBkZXBlbmRlbmN5Lm5hbWU7CiAgICAgICAgZmluYWwgcGF0aCA9CiAgICAgICAgICAgIHBhdGhSZXNvbHZlci5yZWxhdGl2ZShkZXBlbmRlbmN5LnBhdGgsIGZyb206IGJ1aWxkRGlyZWN0b3J5LnBhdGgpOwogICAgICAgIHJldHVybiAnICAkbmFtZTpcbiAgICBwYXRoOiAkcGF0aCc7CiAgICAgIH0sCiAgICApLmpvaW4oJ1xuJyl9CicnJywKICApOwoKICByZXR1cm4gY29waWVkRXh0ZXJuYWxQYXRoRGVwZW5kZW5jaWVzCiAgICAgIC5tYXAoKGRlcGVuZGVuY3kpID0+IGRlcGVuZGVuY3kucGF0aCkKICAgICAgLnRvTGlzdCgpOwp9CgovLy8ge0B0ZW1wbGF0ZSBleHRlcm5hbF9wYXRoX2RlcGVuZGVuY3l9Ci8vLyBBIHBhdGggZGVwZW5kZW5jeSB0aGF0IGlzIG5vdCB3aXRoaW4gdGhlIGJ1bmRsZWQgRGFydCBGcm9nIHByb2plY3QKLy8vIGRpcmVjdG9yeS4KLy8vCi8vLyBGb3IgZXhhbXBsZToKLy8vIGBgYHlhbWwKLy8vIG5hbWU6IG15X2RhcnRfZnJvZ19wcm9qZWN0Ci8vLyBkZXBlbmRlbmNpZXM6Ci8vLyAgIG15X3BhY2thZ2U6Ci8vLyAgICAgcGF0aDogLi4vbXlfcGFja2FnZQovLy8gYGBgCi8vLyB7QGVuZHRlbXBsYXRlfQpjbGFzcyBfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeSB7CiAgLy8vIHtAbWFjcm8gZXh0ZXJuYWxfcGF0aF9kZXBlbmRlbmN5fQogIGNvbnN0IF9FeHRlcm5hbFBhdGhEZXBlbmRlbmN5KHsKICAgIHJlcXVpcmVkIHRoaXMubmFtZSwKICAgIHJlcXVpcmVkIHRoaXMucGF0aCwKICB9KTsKCiAgLy8vIFRoZSBuYW1lIG9mIHRoZSBwYWNrYWdlLgogIGZpbmFsIFN0cmluZyBuYW1lOwoKICAvLy8gVGhlIGFic29sdXRlIHBhdGggdG8gdGhlIHBhY2thZ2UuCiAgZmluYWwgU3RyaW5nIHBhdGg7CgogIC8vLyBDb3BpZXMgdGhlIFtfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeV0gdG8gW3RhcmdldERpcmVjdG9yeV0uCiAgRnV0dXJlPF9FeHRlcm5hbFBhdGhEZXBlbmRlbmN5PiBjb3B5VG8oewogICAgcmVxdWlyZWQgRGlyZWN0b3J5IHRhcmdldERpcmVjdG9yeSwKICAgIENvcHlQYXRoIGNvcHlQYXRoID0gaW8uY29weVBhdGgsCiAgfSkgYXN5bmMgewogICAgYXdhaXQgY29weVBhdGgocGF0aCwgdGFyZ2V0RGlyZWN0b3J5LnBhdGgpOwogICAgcmV0dXJuIF9FeHRlcm5hbFBhdGhEZXBlbmRlbmN5KG5hbWU6IG5hbWUsIHBhdGg6IHRhcmdldERpcmVjdG9yeS5wYXRoKTsKICB9Cn0K", "type": "text" }, { @@ -49,6 +199,12 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ "aW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JzsKCnR5cGVkZWYgUHJvY2Vzc1J1bm5lciA9IEZ1dHVyZTxpby5Qcm9jZXNzUmVzdWx0PiBGdW5jdGlvbigKICBTdHJpbmcgZXhlY3V0YWJsZSwKICBMaXN0PFN0cmluZz4gYXJndW1lbnRzLCB7CiAgU3RyaW5nIHdvcmtpbmdEaXJlY3RvcnksCiAgYm9vbCBydW5JblNoZWxsLAp9KTsKCkZ1dHVyZTx2b2lkPiBkYXJ0UHViR2V0KAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICByZXF1aXJlZCBTdHJpbmcgd29ya2luZ0RpcmVjdG9yeSwKICByZXF1aXJlZCBQcm9jZXNzUnVubmVyIHJ1blByb2Nlc3MsCiAgcmVxdWlyZWQgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQsCn0pIGFzeW5jIHsKICBmaW5hbCBwcm9ncmVzcyA9IGNvbnRleHQubG9nZ2VyLnByb2dyZXNzKCdJbnN0YWxsaW5nIGRlcGVuZGVuY2llcycpOwogIHRyeSB7CiAgICBmaW5hbCByZXN1bHQgPSBhd2FpdCBydW5Qcm9jZXNzKAogICAgICAnZGFydCcsCiAgICAgIFsncHViJywgJ2dldCddLAogICAgICB3b3JraW5nRGlyZWN0b3J5OiB3b3JraW5nRGlyZWN0b3J5LAogICAgICBydW5JblNoZWxsOiB0cnVlLAogICAgKTsKICAgIHByb2dyZXNzLmNvbXBsZXRlKCk7CgogICAgaWYgKHJlc3VsdC5leGl0Q29kZSAhPSAwKSB7CiAgICAgIGNvbnRleHQubG9nZ2VyLmVycignJHtyZXN1bHQuc3RkZXJyfScpOwogICAgICByZXR1cm4gZXhpdChyZXN1bHQuZXhpdENvZGUpOwogICAgfQogIH0gb24gaW8uUHJvY2Vzc0V4Y2VwdGlvbiBjYXRjaCAoZXJyb3IpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycihlcnJvci5tZXNzYWdlKTsKICAgIHJldHVybiBleGl0KGVycm9yLmVycm9yQ29kZSk7CiAgfQp9Cg==", "type": "text" }, + { + "path": "lib/src/disable_workspace_resolution.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp5YW1sL3lhbWwuZGFydCc7CmltcG9ydCAncGFja2FnZTp5YW1sX2VkaXQveWFtbF9lZGl0LmRhcnQnOwoKLy8vIEEgdm9pZCBjYWxsYmFjayBmdW5jdGlvbiAoZS5nLiBgdm9pZCBGdW5jdGlvbigpYCkuCnR5cGVkZWYgVm9pZENhbGxiYWNrID0gdm9pZCBGdW5jdGlvbigpOwoKLy8vIE9wdHMgb3V0IG9mIGRhcnQgd29ya3NwYWNlcyB1bnRpbCB3ZSBjYW4gZ2VuZXJhdGUgcGVyIHBhY2thZ2UgbG9ja2ZpbGVzLgovLy8gaHR0cHM6Ly9naXRodWIuY29tL2RhcnQtbGFuZy9wdWIvaXNzdWVzLzQ1OTQKVm9pZENhbGxiYWNrIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICByZXF1aXJlZCBTdHJpbmcgcHJvamVjdERpcmVjdG9yeSwKICByZXF1aXJlZCB2b2lkIEZ1bmN0aW9uKGludCBleGl0Q29kZSkgZXhpdCwKfSkgewogIHRyeSB7CiAgICByZXR1cm4gb3ZlcnJpZGVSZXNvbHV0aW9uSW5QdWJzcGVjT3ZlcnJpZGVzKHByb2plY3REaXJlY3RvcnkpOwogIH0gb24gRXhjZXB0aW9uIGNhdGNoIChlKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoJyRlJyk7CiAgICBleGl0KDEpOwogICAgcmV0dXJuICgpIHt9OyAvLyBuby1vcAogIH0KfQoKVm9pZENhbGxiYWNrIG92ZXJyaWRlUmVzb2x1dGlvbkluUHVic3BlY092ZXJyaWRlcyhTdHJpbmcgcHJvamVjdERpcmVjdG9yeSkgewogIGZpbmFsIHB1YnNwZWNPdmVycmlkZXNGaWxlID0gRmlsZSgKICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LCAncHVic3BlY19vdmVycmlkZXMueWFtbCcpLAogICk7CgogIGlmICghcHVic3BlY092ZXJyaWRlc0ZpbGUuZXhpc3RzU3luYygpKSB7CiAgICBwdWJzcGVjT3ZlcnJpZGVzRmlsZS53cml0ZUFzU3RyaW5nU3luYygncmVzb2x1dGlvbjogbnVsbCcpOwogICAgcmV0dXJuIHB1YnNwZWNPdmVycmlkZXNGaWxlLmRlbGV0ZVN5bmM7CiAgfQoKICBmaW5hbCBjb250ZW50cyA9IHB1YnNwZWNPdmVycmlkZXNGaWxlLnJlYWRBc1N0cmluZ1N5bmMoKTsKICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gbG9hZFlhbWwoY29udGVudHMpIGFzIFlhbWxNYXA/OwoKICBpZiAocHVic3BlY092ZXJyaWRlcyA9PSBudWxsKSB7CiAgICBwdWJzcGVjT3ZlcnJpZGVzRmlsZS53cml0ZUFzU3RyaW5nU3luYygncmVzb2x1dGlvbjogbnVsbCcpOwogICAgcmV0dXJuICgpID0+IHB1YnNwZWNPdmVycmlkZXNGaWxlLndyaXRlQXNTdHJpbmdTeW5jKGNvbnRlbnRzKTsKICB9CgogIGlmIChwdWJzcGVjT3ZlcnJpZGVzWydyZXNvbHV0aW9uJ10gPT0gJ251bGwnKSByZXR1cm4gKCkge307IC8vIG5vLW9wCgogIGZpbmFsIGVkaXRvciA9IFlhbWxFZGl0b3IoY29udGVudHMpLi51cGRhdGUoWydyZXNvbHV0aW9uJ10sIG51bGwpOwogIHB1YnNwZWNPdmVycmlkZXNGaWxlLndyaXRlQXNTdHJpbmdTeW5jKGVkaXRvci50b1N0cmluZygpKTsKCiAgcmV0dXJuICgpID0+IHB1YnNwZWNPdmVycmlkZXNGaWxlLndyaXRlQXNTdHJpbmdTeW5jKGNvbnRlbnRzKTsKfQo=", + "type": "text" + }, { "path": "lib/src/exit_overrides.dart", "data": @@ -73,6 +229,12 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ "aW1wb3J0ICdkYXJ0OmNvbGxlY3Rpb24nOwoKaW1wb3J0ICdwYWNrYWdlOmVxdWF0YWJsZS9lcXVhdGFibGUuZGFydCc7CmltcG9ydCAncGFja2FnZTp5YW1sL3lhbWwuZGFydCc7CgovLy8ge0B0ZW1wbGF0ZSBwdWJzcGVjX2xvY2tfcGFyc2VfZXhjZXB0aW9ufQovLy8gVGhyb3duIHdoZW4gYSBbUHVic3BlY0xvY2tdIGZhaWxzIHRvIHBhcnNlLgovLy8ge0BlbmR0ZW1wbGF0ZX0KY2xhc3MgUHVic3BlY0xvY2tQYXJzZUV4Y2VwdGlvbiBpbXBsZW1lbnRzIEV4Y2VwdGlvbiB7CiAgLy8vIHtAbWFjcm8gcHVic3BlY19sb2NrX3BhcnNlX2V4Y2VwdGlvbn0KICBjb25zdCBQdWJzcGVjTG9ja1BhcnNlRXhjZXB0aW9uKCk7Cn0KCi8vLyBBIHJlcHJlc2VudGF0aW9uIG9mIGEgcHVic3BlYy5sb2NrIGZpbGUuCmNsYXNzIFB1YnNwZWNMb2NrIHsKICBjb25zdCBQdWJzcGVjTG9jay5fKHsKICAgIHJlcXVpcmVkIHRoaXMucGFja2FnZXMsCiAgfSk7CgogIC8vLyBQYXJzZXMgYSBbUHVic3BlY0xvY2tdIGZyb20gYSBzdHJpbmcuCiAgLy8vCiAgLy8vIElmIG5vIHBhY2thZ2VzIGFyZSBmb3VuZCwgYW4gZW1wdHkgW1B1YnNwZWNMb2NrXSBpcyByZXR1cm5lZC4gVGhvc2UKICAvLy8gcGFja2FnZXMgZW50cmllcyB0aGF0IGNhbm5vdCBiZSBwYXJzZWQgYXJlIGlnbm9yZWQuCiAgLy8vCiAgLy8vIEl0IHRocm93cyBhIFtQdWJzcGVjTG9ja1BhcnNlRXhjZXB0aW9uXSBpZiB0aGUgc3RyaW5nIGNhbm5vdCBiZSBwYXJzZWQKICAvLy8gYXMgYSBbWWFtbE1hcF0uCiAgZmFjdG9yeSBQdWJzcGVjTG9jay5mcm9tU3RyaW5nKFN0cmluZyBjb250ZW50KSB7CiAgICBsYXRlIGZpbmFsIFlhbWxNYXAgeWFtbDsKICAgIHRyeSB7CiAgICAgIHlhbWwgPSBsb2FkWWFtbChjb250ZW50KSBhcyBZYW1sTWFwOwogICAgICAvLyBpZ25vcmluZyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQogICAgICAvLyBpZ25vcmU6IGF2b2lkX2NhdGNoZXNfd2l0aG91dF9vbl9jbGF1c2VzCiAgICB9IGNhdGNoIChfKSB7CiAgICAgIHRocm93IGNvbnN0IFB1YnNwZWNMb2NrUGFyc2VFeGNlcHRpb24oKTsKICAgIH0KCiAgICBpZiAoIXlhbWwuY29udGFpbnNLZXkoJ3BhY2thZ2VzJykpIHsKICAgICAgcmV0dXJuIFB1YnNwZWNMb2NrLmVtcHR5OwogICAgfQoKICAgIGZpbmFsIHBhY2thZ2VzID0geWFtbFsncGFja2FnZXMnXSBhcyBZYW1sTWFwOwoKICAgIGZpbmFsIHBhcnNlZFBhY2thZ2VzID0gPFB1YnNwZWNMb2NrUGFja2FnZT5bXTsKICAgIGZvciAoZmluYWwgZW50cnkgaW4gcGFja2FnZXMuZW50cmllcykgewogICAgICB0cnkgewogICAgICAgIGZpbmFsIHBhY2thZ2UgPSBQdWJzcGVjTG9ja1BhY2thZ2UuZnJvbVlhbWxNYXAoCiAgICAgICAgICBuYW1lOiBlbnRyeS5rZXkgYXMgU3RyaW5nLAogICAgICAgICAgZGF0YTogZW50cnkudmFsdWUgYXMgWWFtbE1hcCwKICAgICAgICApOwogICAgICAgIHBhcnNlZFBhY2thZ2VzLmFkZChwYWNrYWdlKTsKICAgICAgICAvLyBpZ25vcmluZyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQogICAgICAgIC8vIGlnbm9yZTogYXZvaWRfY2F0Y2hlc193aXRob3V0X29uX2NsYXVzZXMKICAgICAgfSBjYXRjaCAoXykgewogICAgICAgIC8vIElnbm9yZSB0aG9zZSBwYWNrYWdlcyB0aGF0IGZvciBzb21lIHJlYXNvbiBjYW5ub3QgYmUgcGFyc2VkLgogICAgICB9CiAgICB9CgogICAgcmV0dXJuIFB1YnNwZWNMb2NrLl8oCiAgICAgIHBhY2thZ2VzOiBVbm1vZGlmaWFibGVMaXN0VmlldyhwYXJzZWRQYWNrYWdlcyksCiAgICApOwogIH0KCiAgLy8vIEFuIGVtcHR5IFtQdWJzcGVjTG9ja10uCiAgc3RhdGljIFB1YnNwZWNMb2NrIGVtcHR5ID0gUHVic3BlY0xvY2suXygKICAgIHBhY2thZ2VzOiBVbm1vZGlmaWFibGVMaXN0VmlldyhbXSksCiAgKTsKCiAgLy8vIEFsbCB0aGUgZGVwZW5kZW5jaWVzIGluIHRoZSBwdWJzcGVjLmxvY2sgZmlsZS4KICBmaW5hbCBVbm1vZGlmaWFibGVMaXN0VmlldzxQdWJzcGVjTG9ja1BhY2thZ2U+IHBhY2thZ2VzOwp9CgovLy8ge0B0ZW1wbGF0ZSBwdWJzcGVjX2xvY2tfZGVwZW5kZW5jeX0KLy8vIEEgcmVwcmVzZW50YXRpb24gb2YgYSBkZXBlbmRlbmN5IGluIGEgcHVic3BlYy5sb2NrIGZpbGUuCi8vLyB7QGVuZHRlbXBsYXRlfQpjbGFzcyBQdWJzcGVjTG9ja1BhY2thZ2UgZXh0ZW5kcyBFcXVhdGFibGUgewogIC8vLyB7QG1hY3JvIHB1YnNwZWNfbG9ja19kZXBlbmRlbmN5fQogIGNvbnN0IFB1YnNwZWNMb2NrUGFja2FnZSh7CiAgICByZXF1aXJlZCB0aGlzLm5hbWUsCiAgICByZXF1aXJlZCB0aGlzLnR5cGUsCiAgICB0aGlzLnBhdGhEZXNjcmlwdGlvbiwKICB9KTsKCiAgLy8vIFBhcnNlcyBhIFtQdWJzcGVjTG9ja1BhY2thZ2VdIGZyb20gYSBbWWFtbE1hcF0uCiAgZmFjdG9yeSBQdWJzcGVjTG9ja1BhY2thZ2UuZnJvbVlhbWxNYXAoewogICAgcmVxdWlyZWQgU3RyaW5nIG5hbWUsCiAgICByZXF1aXJlZCBZYW1sTWFwIGRhdGEsCiAgfSkgewogICAgZmluYWwgZGVwZW5kZW5jeSA9IGRhdGFbJ2RlcGVuZGVuY3knXSBhcyBTdHJpbmc7CiAgICBmaW5hbCBkZXBlbmRlbmN5VHlwZSA9IFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlLnBhcnNlKGRlcGVuZGVuY3kpOwoKICAgIGZpbmFsIGRlc2NyaXB0aW9uID0gZGF0YVsnZGVzY3JpcHRpb24nXSBhcyBZYW1sTWFwPzsKICAgIGZpbmFsIHBhdGhEZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uICE9IG51bGwKICAgICAgICA/IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uLnRyeVBhcnNlKGRlc2NyaXB0aW9uKQogICAgICAgIDogbnVsbDsKCiAgICByZXR1cm4gUHVic3BlY0xvY2tQYWNrYWdlKAogICAgICBuYW1lOiBuYW1lLAogICAgICB0eXBlOiBkZXBlbmRlbmN5VHlwZSwKICAgICAgcGF0aERlc2NyaXB0aW9uOiBwYXRoRGVzY3JpcHRpb24sCiAgICApOwogIH0KCiAgLy8vIFRoZSBuYW1lIG9mIHRoZSBkZXBlbmRlbmN5LgogIGZpbmFsIFN0cmluZyBuYW1lOwoKICAvLy8ge0BtYWNybyBwdWJzcGVjX2xvY2tfZGVwZW5kZW5jeV90eXBlfQogIGZpbmFsIFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlIHR5cGU7CgogIC8vLyB7QG1hY3JvIHB1YnNwZWNfcGFja2FnZV9wYXRoX2Rlc2NyaXB0aW9ufQogIGZpbmFsIFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uPyBwYXRoRGVzY3JpcHRpb247CgogIEBvdmVycmlkZQogIExpc3Q8T2JqZWN0Pz4gZ2V0IHByb3BzID0+IFtuYW1lLCB0eXBlLCBwYXRoRGVzY3JpcHRpb25dOwp9CgovLy8ge0B0ZW1wbGF0ZSBwdWJzcGVjX2xvY2tfZGVwZW5kZW5jeV90eXBlfQovLy8gVGhlIHR5cGUgb2YgYSBbUHVic3BlY0xvY2tQYWNrYWdlXS4KLy8vIHtAZW5kdGVtcGxhdGV9CmVudW0gUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUgewogIC8vLyBBbm90aGVyIHBhY2thZ2UgdGhhdCB5b3VyIHBhY2thZ2UgbmVlZHMgdG8gd29yay4KICAvLy8KICAvLy8gU2VlIGFsc286CiAgLy8vCiAgLy8vICogW0RhcnQncyBkZXBlbmRlbmN5IGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZGFydC5kZXYvdG9vbHMvcHViL2RlcGVuZGVuY2llcykKICBkaXJlY3RNYWluLl8oJ2RpcmVjdCBtYWluJyksCgogIC8vLyBBbm90aGVyIHBhY2thZ2UgdGhhdCB5b3VyIHBhY2thZ2UgbmVlZHMgZHVyaW5nIGRldmVsb3BtZW50LgogIC8vLwogIC8vLyBTZWUgYWxzbzoKICAvLy8KICAvLy8gKiBbRGFydCdzIGRldmVsb3BlciBkZXBlbmRlbmN5IGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZGFydC5kZXYvdG9vbHMvcHViL2RlcGVuZGVuY2llcyNkZXYtZGVwZW5kZW5jaWVzKQogIGRpcmVjdERldi5fKCdkaXJlY3QgZGV2JyksCgogIC8vLyBBIGRlcGVuZGVuY3kgdGhhdCB5b3VyIHBhY2thZ2UgaW5kaXJlY3RseSB1c2VzIGJlY2F1c2Ugb25lIG9mIGl0cwogIC8vLyBkZXBlbmRlbmNpZXMgcmVxdWlyZXMgaXQuCiAgLy8vCiAgLy8vIFNlZSBhbHNvOgogIC8vLwogIC8vLyAqIFtEYXJ0J3MgdHJhbnNpdGl2ZSBkZXBlbmRlbmN5IGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZGFydC5kZXYvdG9vbHMvcHViL2dsb3NzYXJ5I3RyYW5zaXRpdmUtKQogIHRyYW5zaXRpdmUuXygndHJhbnNpdGl2ZScpLAoKICAvLy8gIEEgZGVwZW5kZW5jeSB0aGF0IHlvdXIgcGFja2FnZSBvdmVycmlkZXMgdGhhdCBpcyBub3QgYWxyZWFkeSBhCiAgLy8vIGBkaXJlY3QgbWFpbmAgb3IgYGRpcmVjdCBkZXZgIGRlcGVuZGVuY3kuCiAgLy8vCiAgLy8vIFNlZSBhbHNvOgogIC8vLwogIC8vLyAqIFtEYXJ0J3MgZGVwZW5kZW5jeSBvdmVycmlkZSBkb2N1bWVudGF0aW9uXShodHRwczovL2RhcnQuZGV2L3Rvb2xzL3B1Yi9kZXBlbmRlbmNpZXMjZGVwZW5kZW5jeS1vdmVycmlkZXMpCiAgZGlyZWN0T3ZlcnJpZGRlbi5fKCdkaXJlY3Qgb3ZlcnJpZGRlbicpOwoKICBjb25zdCBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5fKHRoaXMudmFsdWUpOwoKICAvLy8gUGFyc2VzIGEgW1B1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlXSBmcm9tIGEgc3RyaW5nLgogIC8vLwogIC8vLyBUaHJvd3MgYW4gW0FyZ3VtZW50RXJyb3JdIGlmIHRoZSBzdHJpbmcgaXMgbm90IGEgdmFsaWQgZGVwZW5kZW5jeSB0eXBlLgogIGZhY3RvcnkgUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUucGFyc2UoU3RyaW5nIHZhbHVlKSB7CiAgICBpZiAoX3ZhbHVlTWFwLmNvbnRhaW5zS2V5KHZhbHVlKSkgewogICAgICByZXR1cm4gX3ZhbHVlTWFwW3ZhbHVlXSE7CiAgICB9CgogICAgdGhyb3cgQXJndW1lbnRFcnJvci52YWx1ZSgKICAgICAgdmFsdWUsCiAgICAgICd2YWx1ZScsCiAgICAgICdJbnZhbGlkIFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlIHZhbHVlLicsCiAgICApOwogIH0KCiAgc3RhdGljIE1hcDxTdHJpbmcsIFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlPiBfdmFsdWVNYXAgPSB7CiAgICBmb3IgKGZpbmFsIHR5cGUgaW4gUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUudmFsdWVzKQogICAgICB0eXBlLnZhbHVlOiB0eXBlLAogIH07CgogIC8vLyBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBbUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGVdCiAgLy8vIGFzIGl0IGFwcGVhcnMgaW4gYSBwdWJzcGVjLmxvY2sgZmlsZS4KICBmaW5hbCBTdHJpbmcgdmFsdWU7Cn0KCi8vLyB7QHRlbXBsYXRlIHB1YnNwZWNfcGFja2FnZV9wYXRoX2Rlc2NyaXB0aW9ufQovLy8gVGhlIGRlc2NyaXB0aW9uIG9mIGEgcGF0aCBkZXBlbmRlbmN5IGluIGEgcHVic3BlYy5sb2NrIGZpbGUuCi8vLwovLy8gRm9yIGV4YW1wbGUsIGluOgovLy8gYGBgeWFtbAovLy8gbXlfcGFja2FnZToKLy8vICAgZGVwZW5kZW5jeTogImRpcmVjdCBtYWluIgovLy8gICBkZXNjcmlwdGlvbjoKLy8vICAgICBwYXRoOiAicGFja2FnZXMvbXlfcGFja2FnZSIKLy8vICAgICByZWxhdGl2ZTogdHJ1ZQovLy8gICBzb3VyY2U6IHBhdGgKLy8vICAgdmVyc2lvbjogIjEuMC4wKzEiCi8vLyBgYGAKLy8vCi8vLyBUaGUgZGVzY3JpcHRpb24gaXM6Ci8vLyBgYGB5YW1sCi8vLyBwYXRoOiAicGFja2FnZXMvbXlfcGFja2FnZSIKLy8vIHJlbGF0aXZlOiB0cnVlCi8vLyBgYGAKLy8vCi8vLyBTZWUgYWxzbzoKLy8vCi8vLyAqIFtQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbi50cnlQYXJzZV0sIHdoaWNoIGF0dGVtcHRzIHRvIHBhcnNlcyBhCi8vLyBbWWFtbE1hcF0gaW50byBhIFtQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbl0uCi8vLyB7QGVuZHRlbXBsYXRlfQpjbGFzcyBQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbiBleHRlbmRzIEVxdWF0YWJsZSB7CiAgY29uc3QgUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oewogICAgcmVxdWlyZWQgdGhpcy5wYXRoLAogICAgcmVxdWlyZWQgdGhpcy5yZWxhdGl2ZSwKICB9KTsKCiAgLy8vIEF0dGVtcHRzIHRvIHBhcnNlIGEgW1lhbWxNYXBdIGludG8gYSBbUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb25dLgogIC8vLwogIC8vLyBSZXR1cm5zIGBudWxsYCBpZiB0aGUgW1lhbWxNYXBdIGRvZXMgbm90IGNvbnRhaW4gdGhlIHJlcXVpcmVkIGRhdGEKICAvLy8gdG8gY3JlYXRlIGEgW1B1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uXS4KICBzdGF0aWMgUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24/IHRyeVBhcnNlKFlhbWxNYXAgZGF0YSkgewogICAgaWYgKCghZGF0YS5jb250YWluc0tleSgncGF0aCcpIHx8IGRhdGFbJ3BhdGgnXSBpcyEgU3RyaW5nKSB8fAogICAgICAgICghZGF0YS5jb250YWluc0tleSgncmVsYXRpdmUnKSB8fCBkYXRhWydyZWxhdGl2ZSddIGlzISBib29sKSkgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBmaW5hbCBwYXRoID0gZGF0YVsncGF0aCddIGFzIFN0cmluZzsKICAgIGZpbmFsIHJlbGF0aXZlID0gZGF0YVsncmVsYXRpdmUnXSBhcyBib29sOwoKICAgIHJldHVybiBQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbigKICAgICAgcGF0aDogcGF0aCwKICAgICAgcmVsYXRpdmU6IHJlbGF0aXZlLAogICAgKTsKICB9CgogIGZpbmFsIFN0cmluZyBwYXRoOwogIGZpbmFsIGJvb2wgcmVsYXRpdmU7CgogIEBvdmVycmlkZQogIExpc3Q8T2JqZWN0Pz4gZ2V0IHByb3BzID0+IFtwYXRoLCByZWxhdGl2ZV07Cn0K", "type": "text" }, + { + "path": "lib/src/uses_workspace_resolution.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp5YW1sL3lhbWwuZGFydCc7CgovLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBwcm9qZWN0IGluIHRoZSBwcm92aWRlZCBbd29ya2luZ0RpcmVjdG9yeV0KLy8vIGlzIGNvbmZpZ3VyZWQgdG8gdXNlIGByZXNvbHV0aW9uOiB3b3Jrc3BhY2VgLgpib29sIHVzZXNXb3Jrc3BhY2VSZXNvbHV0aW9uKAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICByZXF1aXJlZCBTdHJpbmcgd29ya2luZ0RpcmVjdG9yeSwKICByZXF1aXJlZCB2b2lkIEZ1bmN0aW9uKGludCBleGl0Q29kZSkgZXhpdCwKfSkgewogIGZpbmFsIHB1YnNwZWNGaWxlID0gRmlsZShwYXRoLmpvaW4od29ya2luZ0RpcmVjdG9yeSwgJ3B1YnNwZWMueWFtbCcpKTsKICBpZiAoIXB1YnNwZWNGaWxlLmV4aXN0c1N5bmMoKSkgcmV0dXJuIGZhbHNlOwoKICBmaW5hbCBZYW1sTWFwIHB1YnNwZWM7CiAgdHJ5IHsKICAgIGZpbmFsIHlhbWwgPSBsb2FkWWFtbChwdWJzcGVjRmlsZS5yZWFkQXNTdHJpbmdTeW5jKCkpOwogICAgaWYgKHlhbWwgaXMhIFlhbWxNYXApIHsKICAgICAgdGhyb3cgRXhjZXB0aW9uKCdVbmFibGUgdG8gcGFyc2UgJHtwdWJzcGVjRmlsZS5wYXRofScpOwogICAgfQogICAgcHVic3BlYyA9IHlhbWw7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGUpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGUnKTsKICAgIGV4aXQoMSk7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKICByZXR1cm4gcHVic3BlY1sncmVzb2x1dGlvbiddID09ICd3b3Jrc3BhY2UnOwp9Cg==", + "type": "text" + }, { "path": "post_gen.dart", "data": @@ -82,25 +244,25 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "pre_gen.dart", "data": - "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW9fZXhwYW5kZWQ7CmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JwogICAgc2hvdyBIb29rQ29udGV4dCwgZGVmYXVsdEZvcmVncm91bmQsIGxpZ2h0Q3lhbjsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwoKdHlwZWRlZiBSb3V0ZUNvbmZpZ3VyYXRpb25CdWlsZGVyID0gUm91dGVDb25maWd1cmF0aW9uIEZ1bmN0aW9uKAogIGlvLkRpcmVjdG9yeSBkaXJlY3RvcnksCik7CgpGdXR1cmU8dm9pZD4gcnVuKEhvb2tDb250ZXh0IGNvbnRleHQpID0+IHByZUdlbihjb250ZXh0KTsKCkZ1dHVyZTx2b2lkPiBwcmVHZW4oCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIGlvLkRpcmVjdG9yeT8gZGlyZWN0b3J5LAogIFByb2Nlc3NSdW5uZXIgcnVuUHJvY2VzcyA9IGlvLlByb2Nlc3MucnVuLAogIFJvdXRlQ29uZmlndXJhdGlvbkJ1aWxkZXIgYnVpbGRDb25maWd1cmF0aW9uID0gYnVpbGRSb3V0ZUNvbmZpZ3VyYXRpb24sCiAgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQgPSBkZWZhdWx0RXhpdCwKICBGdXR1cmU8dm9pZD4gRnVuY3Rpb24oU3RyaW5nIGZyb20sIFN0cmluZyB0bykgY29weVBhdGggPSBpb19leHBhbmRlZC5jb3B5UGF0aCwKfSkgYXN5bmMgewogIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBkaXJlY3RvcnkgPz8gaW8uRGlyZWN0b3J5LmN1cnJlbnQ7CgogIC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHB1YnNwZWMubG9jayBmaWxlIGlzIHVwIHRvIGRhdGUKICBhd2FpdCBkYXJ0UHViR2V0KAogICAgY29udGV4dCwKICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgIHJ1blByb2Nlc3M6IHJ1blByb2Nlc3MsCiAgICBleGl0OiBleGl0LAogICk7CgogIGZpbmFsIGJ1aWxkRGlyZWN0b3J5ID0gaW8uRGlyZWN0b3J5KAogICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJyksCiAgKTsKCiAgYXdhaXQgY3JlYXRlQnVuZGxlKAogICAgY29udGV4dDogY29udGV4dCwKICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnksCiAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnksCiAgICBleGl0OiBleGl0LAogICk7CgogIGZpbmFsIFJvdXRlQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOwogIHRyeSB7CiAgICBjb25maWd1cmF0aW9uID0gYnVpbGRDb25maWd1cmF0aW9uKHByb2plY3REaXJlY3RvcnkpOwogIH0gb24gRXhjZXB0aW9uIGNhdGNoIChlcnJvcikgewogICAgY29udGV4dC5sb2dnZXIuZXJyKCckZXJyb3InKTsKICAgIHJldHVybiBleGl0KDEpOwogIH0KCiAgcmVwb3J0Um91dGVDb25mbGljdHMoCiAgICBjb25maWd1cmF0aW9uLAogICAgb25Sb3V0ZUNvbmZsaWN0OiAoCiAgICAgIG9yaWdpbmFsRmlsZVBhdGgsCiAgICAgIGNvbmZsaWN0aW5nRmlsZVBhdGgsCiAgICAgIGNvbmZsaWN0aW5nRW5kcG9pbnQsCiAgICApIHsKICAgICAgY29udGV4dC5sb2dnZXIuZXJyKAogICAgICAgICcnJ1JvdXRlIGNvbmZsaWN0IGRldGVjdGVkLiAke2xpZ2h0Q3lhbi53cmFwKG9yaWdpbmFsRmlsZVBhdGgpfSBhbmQgJHtsaWdodEN5YW4ud3JhcChjb25mbGljdGluZ0ZpbGVQYXRoKX0gYm90aCByZXNvbHZlIHRvICR7bGlnaHRDeWFuLndyYXAoY29uZmxpY3RpbmdFbmRwb2ludCl9LicnJywKICAgICAgKTsKICAgIH0sCiAgICBvblZpb2xhdGlvbkVuZDogKCkgewogICAgICBleGl0KDEpOwogICAgfSwKICApOwoKICByZXBvcnRSb2d1ZVJvdXRlcygKICAgIGNvbmZpZ3VyYXRpb24sCiAgICBvblJvZ3VlUm91dGU6IChmaWxlUGF0aCwgaWRlYWxQYXRoKSB7CiAgICAgIGNvbnRleHQubG9nZ2VyLmVycigKICAgICAgICAnJydSb2d1ZSByb3V0ZSBkZXRlY3RlZC4ke2RlZmF1bHRGb3JlZ3JvdW5kLndyYXAoJyAnKX1SZW5hbWUgJHtsaWdodEN5YW4ud3JhcChmaWxlUGF0aCl9IHRvICR7bGlnaHRDeWFuLndyYXAoaWRlYWxQYXRoKX0uJycnLAogICAgICApOwogICAgfSwKICAgIG9uVmlvbGF0aW9uRW5kOiAoKSB7CiAgICAgIGV4aXQoMSk7CiAgICB9LAogICk7CgogIGZpbmFsIGN1c3RvbURvY2tlckZpbGUgPSBpby5GaWxlKAogICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ0RvY2tlcmZpbGUnKSwKICApOwoKICBmaW5hbCBpbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMgPSBhd2FpdCBnZXRJbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMoCiAgICBwcm9qZWN0RGlyZWN0b3J5LAogICk7CgogIGZpbmFsIGV4dGVybmFsRGVwZW5kZW5jaWVzID0gYXdhaXQgY3JlYXRlRXh0ZXJuYWxQYWNrYWdlc0ZvbGRlcigKICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnksCiAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnksCiAgICBjb3B5UGF0aDogY29weVBhdGgsCiAgKTsKCiAgZmluYWwgYWRkRG9ja2VyZmlsZSA9ICFjdXN0b21Eb2NrZXJGaWxlLmV4aXN0c1N5bmMoKTsKCiAgY29udGV4dC52YXJzID0gewogICAgJ2RpcmVjdG9yaWVzJzogY29uZmlndXJhdGlvbi5kaXJlY3RvcmllcwogICAgICAgIC5tYXAoKGMpID0+IGMudG9Kc29uKCkpCiAgICAgICAgLnRvTGlzdCgpCiAgICAgICAgLnJldmVyc2VkCiAgICAgICAgLnRvTGlzdCgpLAogICAgJ3JvdXRlcyc6IGNvbmZpZ3VyYXRpb24ucm91dGVzLm1hcCgocikgPT4gci50b0pzb24oKSkudG9MaXN0KCksCiAgICAnbWlkZGxld2FyZSc6IGNvbmZpZ3VyYXRpb24ubWlkZGxld2FyZS5tYXAoKG0pID0+IG0udG9Kc29uKCkpLnRvTGlzdCgpLAogICAgJ2dsb2JhbE1pZGRsZXdhcmUnOiBjb25maWd1cmF0aW9uLmdsb2JhbE1pZGRsZXdhcmUgIT0gbnVsbAogICAgICAgID8gY29uZmlndXJhdGlvbi5nbG9iYWxNaWRkbGV3YXJlIS50b0pzb24oKQogICAgICAgIDogZmFsc2UsCiAgICAnc2VydmVTdGF0aWNGaWxlcyc6IGNvbmZpZ3VyYXRpb24uc2VydmVTdGF0aWNGaWxlcywKICAgICdpbnZva2VDdXN0b21FbnRyeXBvaW50JzogY29uZmlndXJhdGlvbi5pbnZva2VDdXN0b21FbnRyeXBvaW50LAogICAgJ2ludm9rZUN1c3RvbUluaXQnOiBjb25maWd1cmF0aW9uLmludm9rZUN1c3RvbUluaXQsCiAgICAncGF0aERlcGVuZGVuY2llcyc6IGludGVybmFsUGF0aERlcGVuZGVuY2llcywKICAgICdoYXNFeHRlcm5hbERlcGVuZGVuY2llcyc6IGV4dGVybmFsRGVwZW5kZW5jaWVzLmlzTm90RW1wdHksCiAgICAnZGFydFZlcnNpb24nOiBjb250ZXh0LnZhcnNbJ2RhcnRWZXJzaW9uJ10sCiAgICAnYWRkRG9ja2VyZmlsZSc6IGFkZERvY2tlcmZpbGUsCiAgfTsKfQo=", + "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW9fZXhwYW5kZWQ7CmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JwogICAgc2hvdyBIb29rQ29udGV4dCwgZGVmYXVsdEZvcmVncm91bmQsIGxpZ2h0Q3lhbjsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwoKdHlwZWRlZiBSb3V0ZUNvbmZpZ3VyYXRpb25CdWlsZGVyID0gUm91dGVDb25maWd1cmF0aW9uIEZ1bmN0aW9uKAogIGlvLkRpcmVjdG9yeSBkaXJlY3RvcnksCik7CgpGdXR1cmU8dm9pZD4gcnVuKEhvb2tDb250ZXh0IGNvbnRleHQpID0+IHByZUdlbihjb250ZXh0KTsKCkZ1dHVyZTx2b2lkPiBwcmVHZW4oCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIGlvLkRpcmVjdG9yeT8gZGlyZWN0b3J5LAogIFByb2Nlc3NSdW5uZXIgcnVuUHJvY2VzcyA9IGlvLlByb2Nlc3MucnVuLAogIFJvdXRlQ29uZmlndXJhdGlvbkJ1aWxkZXIgYnVpbGRDb25maWd1cmF0aW9uID0gYnVpbGRSb3V0ZUNvbmZpZ3VyYXRpb24sCiAgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQgPSBkZWZhdWx0RXhpdCwKICBGdXR1cmU8dm9pZD4gRnVuY3Rpb24oU3RyaW5nIGZyb20sIFN0cmluZyB0bykgY29weVBhdGggPSBpb19leHBhbmRlZC5jb3B5UGF0aCwKfSkgYXN5bmMgewogIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBkaXJlY3RvcnkgPz8gaW8uRGlyZWN0b3J5LmN1cnJlbnQ7CiAgZmluYWwgdXNlc1dvcmtzcGFjZXMgPSB1c2VzV29ya3NwYWNlUmVzb2x1dGlvbigKICAgIGNvbnRleHQsCiAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBleGl0OiBleGl0LAogICk7CgogIFZvaWRDYWxsYmFjaz8gcmVzdG9yZVdvcmtzcGFjZVJlc29sdXRpb247CgogIGlmICh1c2VzV29ya3NwYWNlcykgewogICAgLy8gRGlzYWJsZSB3b3Jrc3BhY2UgcmVzb2x1dGlvbiB1bnRpbCB3ZSBjYW4gZ2VuZXJhdGUgcGVyLXBhY2thZ2UgbG9ja2ZpbGVzLgogICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2RhcnQtbGFuZy9wdWIvaXNzdWVzLzQ1OTQKICAgIHJlc3RvcmVXb3Jrc3BhY2VSZXNvbHV0aW9uID0gZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgIGNvbnRleHQsCiAgICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgZXhpdDogZXhpdCwKICAgICk7CiAgfQoKICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBwdWJzcGVjLmxvY2sgZmlsZSBpcyB1cCB0byBkYXRlCiAgYXdhaXQgZGFydFB1YkdldCgKICAgIGNvbnRleHQsCiAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBydW5Qcm9jZXNzOiBydW5Qcm9jZXNzLAogICAgZXhpdDogZXhpdCwKICApOwoKICBmaW5hbCBidWlsZERpcmVjdG9yeSA9IGlvLkRpcmVjdG9yeSgKICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdidWlsZCcpLAogICk7CgogIGF3YWl0IGNyZWF0ZUJ1bmRsZSgKICAgIGNvbnRleHQ6IGNvbnRleHQsCiAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LAogICAgZXhpdDogZXhpdCwKICApOwoKICByZXN0b3JlV29ya3NwYWNlUmVzb2x1dGlvbj8uY2FsbCgpOwoKICBmaW5hbCBSb3V0ZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKICB0cnkgewogICAgY29uZmlndXJhdGlvbiA9IGJ1aWxkQ29uZmlndXJhdGlvbihwcm9qZWN0RGlyZWN0b3J5KTsKICB9IG9uIEV4Y2VwdGlvbiBjYXRjaCAoZXJyb3IpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGVycm9yJyk7CiAgICByZXR1cm4gZXhpdCgxKTsKICB9CgogIHJlcG9ydFJvdXRlQ29uZmxpY3RzKAogICAgY29uZmlndXJhdGlvbiwKICAgIG9uUm91dGVDb25mbGljdDogKAogICAgICBvcmlnaW5hbEZpbGVQYXRoLAogICAgICBjb25mbGljdGluZ0ZpbGVQYXRoLAogICAgICBjb25mbGljdGluZ0VuZHBvaW50LAogICAgKSB7CiAgICAgIGNvbnRleHQubG9nZ2VyLmVycigKICAgICAgICAnJydSb3V0ZSBjb25mbGljdCBkZXRlY3RlZC4gJHtsaWdodEN5YW4ud3JhcChvcmlnaW5hbEZpbGVQYXRoKX0gYW5kICR7bGlnaHRDeWFuLndyYXAoY29uZmxpY3RpbmdGaWxlUGF0aCl9IGJvdGggcmVzb2x2ZSB0byAke2xpZ2h0Q3lhbi53cmFwKGNvbmZsaWN0aW5nRW5kcG9pbnQpfS4nJycsCiAgICAgICk7CiAgICB9LAogICAgb25WaW9sYXRpb25FbmQ6ICgpID0+IGV4aXQoMSksCiAgKTsKCiAgcmVwb3J0Um9ndWVSb3V0ZXMoCiAgICBjb25maWd1cmF0aW9uLAogICAgb25Sb2d1ZVJvdXRlOiAoZmlsZVBhdGgsIGlkZWFsUGF0aCkgewogICAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICAgJycnUm9ndWUgcm91dGUgZGV0ZWN0ZWQuJHtkZWZhdWx0Rm9yZWdyb3VuZC53cmFwKCcgJyl9UmVuYW1lICR7bGlnaHRDeWFuLndyYXAoZmlsZVBhdGgpfSB0byAke2xpZ2h0Q3lhbi53cmFwKGlkZWFsUGF0aCl9LicnJywKICAgICAgKTsKICAgIH0sCiAgICBvblZpb2xhdGlvbkVuZDogKCkgPT4gZXhpdCgxKSwKICApOwoKICBmaW5hbCBjdXN0b21Eb2NrZXJGaWxlID0gaW8uRmlsZSgKICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdEb2NrZXJmaWxlJyksCiAgKTsKCiAgZmluYWwgaW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzID0gYXdhaXQgZ2V0SW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzKAogICAgcHJvamVjdERpcmVjdG9yeSwKICApOwoKICBmaW5hbCBleHRlcm5hbERlcGVuZGVuY2llcyA9IGF3YWl0IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoCiAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LAogICAgY29weVBhdGg6IGNvcHlQYXRoLAogICk7CgogIGZpbmFsIGFkZERvY2tlcmZpbGUgPSAhY3VzdG9tRG9ja2VyRmlsZS5leGlzdHNTeW5jKCk7CgogIGNvbnRleHQudmFycyA9IHsKICAgICdkaXJlY3Rvcmllcyc6IGNvbmZpZ3VyYXRpb24uZGlyZWN0b3JpZXMKICAgICAgICAubWFwKChjKSA9PiBjLnRvSnNvbigpKQogICAgICAgIC50b0xpc3QoKQogICAgICAgIC5yZXZlcnNlZAogICAgICAgIC50b0xpc3QoKSwKICAgICdyb3V0ZXMnOiBjb25maWd1cmF0aW9uLnJvdXRlcy5tYXAoKHIpID0+IHIudG9Kc29uKCkpLnRvTGlzdCgpLAogICAgJ21pZGRsZXdhcmUnOiBjb25maWd1cmF0aW9uLm1pZGRsZXdhcmUubWFwKChtKSA9PiBtLnRvSnNvbigpKS50b0xpc3QoKSwKICAgICdnbG9iYWxNaWRkbGV3YXJlJzogY29uZmlndXJhdGlvbi5nbG9iYWxNaWRkbGV3YXJlICE9IG51bGwKICAgICAgICA/IGNvbmZpZ3VyYXRpb24uZ2xvYmFsTWlkZGxld2FyZSEudG9Kc29uKCkKICAgICAgICA6IGZhbHNlLAogICAgJ3NlcnZlU3RhdGljRmlsZXMnOiBjb25maWd1cmF0aW9uLnNlcnZlU3RhdGljRmlsZXMsCiAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IGNvbmZpZ3VyYXRpb24uaW52b2tlQ3VzdG9tRW50cnlwb2ludCwKICAgICdpbnZva2VDdXN0b21Jbml0JzogY29uZmlndXJhdGlvbi5pbnZva2VDdXN0b21Jbml0LAogICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiBpbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMsCiAgICAnaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXMnOiBleHRlcm5hbERlcGVuZGVuY2llcy5pc05vdEVtcHR5LAogICAgJ2RhcnRWZXJzaW9uJzogY29udGV4dC52YXJzWydkYXJ0VmVyc2lvbiddLAogICAgJ2FkZERvY2tlcmZpbGUnOiBhZGREb2NrZXJmaWxlLAogIH07Cn0K", "type": "text" }, { "path": "pubspec.yaml", "data": - "bmFtZTogZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzCnB1Ymxpc2hfdG86IG5vbmUKCmVudmlyb25tZW50OgogIHNkazogIj49My4wLjAgPDQuMC4wIgoKZGVwZW5kZW5jaWVzOgogIGRhcnRfZnJvZ19nZW46IF4yLjAuMAogIGVxdWF0YWJsZTogXjIuMC41CiAgaW86IF4xLjAuMwogIG1hc29uOiBeMC4xLjAKICBwYXRoOiBeMS44LjEKICB5YW1sOiBeMy4xLjIKCmRldl9kZXBlbmRlbmNpZXM6CiAgbW9ja3RhaWw6IF4xLjAuMAogIHRlc3Q6IF4xLjI1LjAK", + "bmFtZTogZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzCnB1Ymxpc2hfdG86IG5vbmUKCmVudmlyb25tZW50OgogIHNkazogIj49My4wLjAgPDQuMC4wIgoKZGVwZW5kZW5jaWVzOgogIGRhcnRfZnJvZ19nZW46IF4yLjAuMAogIGVxdWF0YWJsZTogXjIuMC41CiAgaW86IF4xLjAuMwogIG1hc29uOiBeMC4xLjAKICBwYXRoOiBeMS44LjEKICB5YW1sOiBeMy4xLjIKICB5YW1sX2VkaXQ6IF4yLjIuMgoKZGV2X2RlcGVuZGVuY2llczoKICBtb2NrdGFpbDogXjEuMC4wCiAgdGVzdDogXjEuMjUuMAo=", "type": "text" }, { "path": "test/post_gen_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcKICAgIHNob3cgRXhpdENvZGUsIEhvb2tDb250ZXh0LCBMb2dnZXIsIFByb2dyZXNzLCBsaWdodEN5YW47CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKaW1wb3J0ICcuLi9wb3N0X2dlbi5kYXJ0JyBhcyBwb3N0X2dlbjsKCmNsYXNzIF9GYWtlSG9va0NvbnRleHQgZXh0ZW5kcyBGYWtlIGltcGxlbWVudHMgSG9va0NvbnRleHQgewogIF9GYWtlSG9va0NvbnRleHQoe0xvZ2dlcj8gbG9nZ2VyfSkgOiBfbG9nZ2VyID0gbG9nZ2VyID8/IF9Nb2NrTG9nZ2VyKCk7CgogIGZpbmFsIExvZ2dlciBfbG9nZ2VyOwoKICB2YXIgX3ZhcnMgPSA8U3RyaW5nLCBkeW5hbWljPnt9OwoKICBAb3ZlcnJpZGUKICBNYXA8U3RyaW5nLCBkeW5hbWljPiBnZXQgdmFycyA9PiBfdmFyczsKCiAgQG92ZXJyaWRlCiAgc2V0IHZhcnMoTWFwPFN0cmluZywgZHluYW1pYz4gdmFsdWUpID0+IF92YXJzID0gdmFsdWU7CgogIEBvdmVycmlkZQogIExvZ2dlciBnZXQgbG9nZ2VyID0+IF9sb2dnZXI7Cn0KCmNsYXNzIF9Nb2NrTG9nZ2VyIGV4dGVuZHMgTW9jayBpbXBsZW1lbnRzIExvZ2dlciB7fQoKY2xhc3MgX01vY2tQcm9ncmVzcyBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBQcm9ncmVzcyB7fQoKdm9pZCBtYWluKCkgewogIGdyb3VwKCdwb3N0R2VuJywgKCkgewogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwoKICAgIGNvbnN0IHByb2Nlc3NJZCA9IDQyOwogICAgZmluYWwgcHJvY2Vzc1Jlc3VsdCA9IFByb2Nlc3NSZXN1bHQoCiAgICAgIHByb2Nlc3NJZCwKICAgICAgRXhpdENvZGUuc3VjY2Vzcy5jb2RlLAogICAgICAnJywKICAgICAgJycsCiAgICApOwoKICAgIHNldFVwKCgpIHsKICAgICAgbG9nZ2VyID0gX01vY2tMb2dnZXIoKTsKICAgICAgY29udGV4dCA9IF9GYWtlSG9va0NvbnRleHQobG9nZ2VyOiBsb2dnZXIpOwoKICAgICAgd2hlbigoKSA9PiBsb2dnZXIucHJvZ3Jlc3MoYW55KCkpKS50aGVuUmV0dXJuKF9Nb2NrUHJvZ3Jlc3MoKSk7CiAgICB9KTsKCiAgICB0ZXN0KCdydW4gY29tcGxldGVzJywgKCkgewogICAgICBleHBlY3QoCiAgICAgICAgRXhpdE92ZXJyaWRlcy5ydW5ab25lZCgKICAgICAgICAgICgpID0+IHBvc3RfZ2VuLnJ1bihfRmFrZUhvb2tDb250ZXh0KGxvZ2dlcjogbG9nZ2VyKSksCiAgICAgICAgICBleGl0OiAoXykge30sCiAgICAgICAgKSwKICAgICAgICBjb21wbGV0ZXMsCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdydW5zIGRhcnQgcHViIGdldCBhbmQgb3V0cHV0cyBuZXh0IHN0ZXBzJywgKCkgYXN5bmMgewogICAgICB2YXIgcHJvY2Vzc1J1bm5lckNhbGxDb3VudCA9IDA7CiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CgogICAgICBhd2FpdCBwb3N0X2dlbi5wb3N0R2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgcnVuUHJvY2VzczogKAogICAgICAgICAgZXhlY3V0YWJsZSwKICAgICAgICAgIGFyZ3MsIHsKICAgICAgICAgIFN0cmluZz8gd29ya2luZ0RpcmVjdG9yeSwKICAgICAgICAgIGJvb2w/IHJ1bkluU2hlbGwsCiAgICAgICAgfSkgYXN5bmMgewogICAgICAgICAgcHJvY2Vzc1J1bm5lckNhbGxDb3VudCsrOwogICAgICAgICAgZXhwZWN0KGV4ZWN1dGFibGUsIGVxdWFscygnZGFydCcpKTsKICAgICAgICAgIGV4cGVjdChhcmdzLCBlcXVhbHMoWydwdWInLCAnZ2V0J10pKTsKICAgICAgICAgIGV4cGVjdCgKICAgICAgICAgICAgd29ya2luZ0RpcmVjdG9yeSwKICAgICAgICAgICAgZXF1YWxzKHBhdGguam9pbihEaXJlY3RvcnkuY3VycmVudC5wYXRoLCAnYnVpbGQnKSksCiAgICAgICAgICApOwogICAgICAgICAgZXhwZWN0KHJ1bkluU2hlbGwsIGlzVHJ1ZSk7CiAgICAgICAgICByZXR1cm4gcHJvY2Vzc1Jlc3VsdDsKICAgICAgICB9LAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICk7CiAgICAgIGV4cGVjdChwcm9jZXNzUnVubmVyQ2FsbENvdW50LCBlcXVhbHMoMSkpOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5KCgpID0+IGxvZ2dlci5zdWNjZXNzKCdDcmVhdGVkIGEgcHJvZHVjdGlvbiBidWlsZCEnKSkuY2FsbGVkKDEpOwogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmluZm8oJ1N0YXJ0IHRoZSBwcm9kdWN0aW9uIHNlcnZlciBieSBydW5uaW5nOicpLAogICAgICApLmNhbGxlZCgxKTsKICAgICAgdmVyaWZ5KAogICAgICAgICgpID0+IGxvZ2dlci5pbmZvKCcke2xpZ2h0Q3lhbi53cmFwKCdkYXJ0IGJ1aWxkL2Jpbi9zZXJ2ZXIuZGFydCcpfScpLAogICAgICApLmNhbGxlZCgxKTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgfSk7CiAgfSk7Cn0K", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcKICAgIHNob3cgRXhpdENvZGUsIEhvb2tDb250ZXh0LCBMb2dnZXIsIFByb2dyZXNzLCBsaWdodEN5YW47CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKaW1wb3J0ICcuLi9wb3N0X2dlbi5kYXJ0JyBhcyBwb3N0X2dlbjsKCmNsYXNzIF9GYWtlSG9va0NvbnRleHQgZXh0ZW5kcyBGYWtlIGltcGxlbWVudHMgSG9va0NvbnRleHQgewogIF9GYWtlSG9va0NvbnRleHQoe0xvZ2dlcj8gbG9nZ2VyfSkgOiBfbG9nZ2VyID0gbG9nZ2VyID8/IF9Nb2NrTG9nZ2VyKCk7CgogIGZpbmFsIExvZ2dlciBfbG9nZ2VyOwoKICB2YXIgX3ZhcnMgPSA8U3RyaW5nLCBkeW5hbWljPnt9OwoKICBAb3ZlcnJpZGUKICBNYXA8U3RyaW5nLCBkeW5hbWljPiBnZXQgdmFycyA9PiBfdmFyczsKCiAgQG92ZXJyaWRlCiAgc2V0IHZhcnMoTWFwPFN0cmluZywgZHluYW1pYz4gdmFsdWUpID0+IF92YXJzID0gdmFsdWU7CgogIEBvdmVycmlkZQogIExvZ2dlciBnZXQgbG9nZ2VyID0+IF9sb2dnZXI7Cn0KCmNsYXNzIF9Nb2NrTG9nZ2VyIGV4dGVuZHMgTW9jayBpbXBsZW1lbnRzIExvZ2dlciB7fQoKY2xhc3MgX01vY2tQcm9ncmVzcyBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBQcm9ncmVzcyB7fQoKdm9pZCBtYWluKCkgewogIGdyb3VwKCdwb3N0R2VuJywgKCkgewogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwoKICAgIGNvbnN0IHByb2Nlc3NJZCA9IDQyOwogICAgZmluYWwgcHJvY2Vzc1Jlc3VsdCA9IFByb2Nlc3NSZXN1bHQoCiAgICAgIHByb2Nlc3NJZCwKICAgICAgRXhpdENvZGUuc3VjY2Vzcy5jb2RlLAogICAgICAnJywKICAgICAgJycsCiAgICApOwoKICAgIHNldFVwKCgpIHsKICAgICAgbG9nZ2VyID0gX01vY2tMb2dnZXIoKTsKICAgICAgY29udGV4dCA9IF9GYWtlSG9va0NvbnRleHQobG9nZ2VyOiBsb2dnZXIpOwoKICAgICAgd2hlbigoKSA9PiBsb2dnZXIucHJvZ3Jlc3MoYW55KCkpKS50aGVuUmV0dXJuKF9Nb2NrUHJvZ3Jlc3MoKSk7CiAgICB9KTsKCiAgICB0ZXN0KCdydW4gY29tcGxldGVzJywgKCkgewogICAgICBleHBlY3QoCiAgICAgICAgRXhpdE92ZXJyaWRlcy5ydW5ab25lZCgKICAgICAgICAgICgpID0+IHBvc3RfZ2VuLnJ1bihfRmFrZUhvb2tDb250ZXh0KGxvZ2dlcjogbG9nZ2VyKSksCiAgICAgICAgKSwKICAgICAgICBjb21wbGV0ZXMsCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdydW5zIGRhcnQgcHViIGdldCBhbmQgb3V0cHV0cyBuZXh0IHN0ZXBzJywgKCkgYXN5bmMgewogICAgICB2YXIgcHJvY2Vzc1J1bm5lckNhbGxDb3VudCA9IDA7CiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CgogICAgICBhd2FpdCBwb3N0X2dlbi5wb3N0R2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgcnVuUHJvY2VzczogKAogICAgICAgICAgZXhlY3V0YWJsZSwKICAgICAgICAgIGFyZ3MsIHsKICAgICAgICAgIFN0cmluZz8gd29ya2luZ0RpcmVjdG9yeSwKICAgICAgICAgIGJvb2w/IHJ1bkluU2hlbGwsCiAgICAgICAgfSkgYXN5bmMgewogICAgICAgICAgcHJvY2Vzc1J1bm5lckNhbGxDb3VudCsrOwogICAgICAgICAgZXhwZWN0KGV4ZWN1dGFibGUsIGVxdWFscygnZGFydCcpKTsKICAgICAgICAgIGV4cGVjdChhcmdzLCBlcXVhbHMoWydwdWInLCAnZ2V0J10pKTsKICAgICAgICAgIGV4cGVjdCgKICAgICAgICAgICAgd29ya2luZ0RpcmVjdG9yeSwKICAgICAgICAgICAgZXF1YWxzKHBhdGguam9pbihEaXJlY3RvcnkuY3VycmVudC5wYXRoLCAnYnVpbGQnKSksCiAgICAgICAgICApOwogICAgICAgICAgZXhwZWN0KHJ1bkluU2hlbGwsIGlzVHJ1ZSk7CiAgICAgICAgICByZXR1cm4gcHJvY2Vzc1Jlc3VsdDsKICAgICAgICB9LAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICk7CiAgICAgIGV4cGVjdChwcm9jZXNzUnVubmVyQ2FsbENvdW50LCBlcXVhbHMoMSkpOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5KCgpID0+IGxvZ2dlci5zdWNjZXNzKCdDcmVhdGVkIGEgcHJvZHVjdGlvbiBidWlsZCEnKSkuY2FsbGVkKDEpOwogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmluZm8oJ1N0YXJ0IHRoZSBwcm9kdWN0aW9uIHNlcnZlciBieSBydW5uaW5nOicpLAogICAgICApLmNhbGxlZCgxKTsKICAgICAgdmVyaWZ5KAogICAgICAgICgpID0+IGxvZ2dlci5pbmZvKCcke2xpZ2h0Q3lhbi53cmFwKCdkYXJ0IGJ1aWxkL2Jpbi9zZXJ2ZXIuZGFydCcpfScpLAogICAgICApLmNhbGxlZCgxKTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgfSk7CiAgfSk7Cn0K", "type": "text" }, { "path": "test/pre_gen_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcKICAgIHNob3cgSG9va0NvbnRleHQsIExvZ2dlciwgUHJvZ3Jlc3MsIGRlZmF1bHRGb3JlZ3JvdW5kLCBsaWdodEN5YW47CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKaW1wb3J0ICcuLi9wcmVfZ2VuLmRhcnQnIGFzIHByZV9nZW47CmltcG9ydCAncHVic3BlY19sb2Nrcy5kYXJ0JzsKCmNsYXNzIF9GYWtlSG9va0NvbnRleHQgZXh0ZW5kcyBGYWtlIGltcGxlbWVudHMgSG9va0NvbnRleHQgewogIF9GYWtlSG9va0NvbnRleHQoe0xvZ2dlcj8gbG9nZ2VyfSkgOiBfbG9nZ2VyID0gbG9nZ2VyID8/IF9Nb2NrTG9nZ2VyKCk7CgogIGZpbmFsIExvZ2dlciBfbG9nZ2VyOwoKICB2YXIgX3ZhcnMgPSA8U3RyaW5nLCBkeW5hbWljPnt9OwoKICBAb3ZlcnJpZGUKICBNYXA8U3RyaW5nLCBkeW5hbWljPiBnZXQgdmFycyA9PiBfdmFyczsKCiAgQG92ZXJyaWRlCiAgc2V0IHZhcnMoTWFwPFN0cmluZywgZHluYW1pYz4gdmFsdWUpID0+IF92YXJzID0gdmFsdWU7CgogIEBvdmVycmlkZQogIExvZ2dlciBnZXQgbG9nZ2VyID0+IF9sb2dnZXI7Cn0KCmNsYXNzIF9Nb2NrTG9nZ2VyIGV4dGVuZHMgTW9jayBpbXBsZW1lbnRzIExvZ2dlciB7fQoKY2xhc3MgX01vY2tQcm9ncmVzcyBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBQcm9ncmVzcyB7fQoKdm9pZCBtYWluKCkgewogIGdyb3VwKCdwcmVHZW4nLCAoKSB7CiAgICBsYXRlIEhvb2tDb250ZXh0IGNvbnRleHQ7CiAgICBsYXRlIExvZ2dlciBsb2dnZXI7CgogICAgRnV0dXJlPFByb2Nlc3NSZXN1bHQ+IHN1Y2Nlc3NSdW5Qcm9jZXNzKAogICAgICBleGVjdXRhYmxlLAogICAgICBhcmdzLCB7CiAgICAgIFN0cmluZz8gd29ya2luZ0RpcmVjdG9yeSwKICAgICAgYm9vbD8gcnVuSW5TaGVsbCwKICAgIH0pID0+CiAgICAgICAgRnV0dXJlLnZhbHVlKFByb2Nlc3NSZXN1bHQoMCwgMCwgJycsICcnKSk7CgogICAgc2V0VXAoKCkgewogICAgICBsb2dnZXIgPSBfTW9ja0xvZ2dlcigpOwogICAgICBjb250ZXh0ID0gX0Zha2VIb29rQ29udGV4dChsb2dnZXI6IGxvZ2dlcikKICAgICAgICAuLnZhcnNbJ2RhcnRWZXJzaW9uJ10gPSAnc3RhYmxlJzsKCiAgICAgIHdoZW4oKCkgPT4gbG9nZ2VyLnByb2dyZXNzKGFueSgpKSkudGhlblJldHVybihfTW9ja1Byb2dyZXNzKCkpOwogICAgfSk7CgogICAgdGVzdCgncnVuIGNvbXBsZXRlcycsICgpIHsKICAgICAgZXhwZWN0KAogICAgICAgIEV4aXRPdmVycmlkZXMucnVuWm9uZWQoCiAgICAgICAgICAoKSA9PiBwcmVfZ2VuLnJ1bihfRmFrZUhvb2tDb250ZXh0KGxvZ2dlcjogbG9nZ2VyKSksCiAgICAgICAgICBleGl0OiAoXykge30sCiAgICAgICAgKSwKICAgICAgICBjb21wbGV0ZXMsCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdleGl0KDEpIGlmIGJ1aWxkUm91dGVDb25maWd1cmF0aW9uIHRocm93cycsICgpIGFzeW5jIHsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgZmluYWwgZXhjZXB0aW9uID0gRXhjZXB0aW9uKCdvb3BzJyk7CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gdGhyb3cgZXhjZXB0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbMV0pKTsKICAgICAgdmVyaWZ5KCgpID0+IGxvZ2dlci5lcnIoZXhjZXB0aW9uLnRvU3RyaW5nKCkpKS5jYWxsZWQoMSk7CiAgICB9KTsKCiAgICB0ZXN0KCdleGl0KDEpIGZvciByb3V0ZSBjb25mbGljdHMnLCAoKSBhc3luYyB7CiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgZGlyZWN0b3JpZXM6IFtdLAogICAgICAgIHJvdXRlczogW10sCiAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgIGVuZHBvaW50czogewogICAgICAgICAgJy8nOiBbCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaW5kZXgnLAogICAgICAgICAgICAgIHBhdGg6ICdpbmRleC5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgXSwKICAgICAgICAgICcvaGVsbG8nOiBbCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy9oZWxsbycsCiAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICksCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG9faW5kZXgnLAogICAgICAgICAgICAgIHBhdGg6ICdoZWxsby9pbmRleC5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgXSwKICAgICAgICB9LAogICAgICApOwoKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CgogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmVycigKICAgICAgICAgICcnJ1JvdXRlIGNvbmZsaWN0IGRldGVjdGVkLiAke2xpZ2h0Q3lhbi53cmFwKCdyb3V0ZXMvaGVsbG8uZGFydCcpfSBhbmQgJHtsaWdodEN5YW4ud3JhcCgncm91dGVzL2hlbGxvL2luZGV4LmRhcnQnKX0gYm90aCByZXNvbHZlIHRvICR7bGlnaHRDeWFuLndyYXAoJy9oZWxsbycpfS4nJycsCiAgICAgICAgKSwKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgfSk7CgogICAgdGVzdCgnZXhpdCgxKSBmb3Igcm9ndWUgcm91dGVzJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbCiAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgIG5hbWU6ICdoZWxsbycsCiAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICApLAogICAgICAgIF0sCiAgICAgICAgZW5kcG9pbnRzOiB7fSwKICAgICAgICBpbnZva2VDdXN0b21FbnRyeXBvaW50OiB0cnVlLAogICAgICApOwoKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CgogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmVycigKICAgICAgICAgICcnJ1JvZ3VlIHJvdXRlIGRldGVjdGVkLiR7ZGVmYXVsdEZvcmVncm91bmQud3JhcCgnICcpfVJlbmFtZSAke2xpZ2h0Q3lhbi53cmFwKCdyb3V0ZXMvaGVsbG8uZGFydCcpfSB0byAke2xpZ2h0Q3lhbi53cmFwKCdyb3V0ZXMvaGVsbG8vaW5kZXguZGFydCcpfS4nJycsCiAgICAgICAgKSwKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgfSk7CgogICAgdGVzdCgKICAgICAgJ3dvcmtzIHdpdGggZXh0ZXJuYWwgZGVwZW5kZW5jaWVzJywKICAgICAgKCkgYXN5bmMgewogICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgICBtaWRkbGV3YXJlOiBbXSwKICAgICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICAgIHJvdXRlczogW10sCiAgICAgICAgICByb2d1ZVJvdXRlczogW10sCiAgICAgICAgICBlbmRwb2ludHM6IHt9LAogICAgICAgICk7CgogICAgICAgIGZpbmFsIGRpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgICAgRmlsZShwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSkud3JpdGVBc1N0cmluZ1N5bmMoCiAgICAgICAgICAnJycKbmFtZTogZXhhbXBsZQp2ZXJzaW9uOiAwLjEuMAplbnZpcm9ubWVudDoKICBzZGs6IF4yLjE3LjAKZGVwZW5kZW5jaWVzOgogIG1hc29uOiBhbnkKICBmb286CiAgICBwYXRoOiAuLi8uLi9mb28KZGV2X2RlcGVuZGVuY2llczoKICB0ZXN0OiBhbnkKJycnLAogICAgICAgICk7CiAgICAgICAgRmlsZShwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLmxvY2snKSkud3JpdGVBc1N0cmluZ1N5bmMoCiAgICAgICAgICBmb29QYXRoLAogICAgICAgICk7CiAgICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgICBhd2FpdCBwcmVfZ2VuLnByZUdlbigKICAgICAgICAgIGNvbnRleHQsCiAgICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICAgIGRpcmVjdG9yeTogZGlyZWN0b3J5LAogICAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICAgICBjb3B5UGF0aDogKF8sIF9fKSBhc3luYyB7fSwKICAgICAgICApOwoKICAgICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgICBkaXJlY3RvcnkuZGVsZXRlKHJlY3Vyc2l2ZTogdHJ1ZSkuaWdub3JlKCk7CiAgICAgIH0sCiAgICApOwoKICAgIHRlc3QoJ3JldGFpbnMgaW52b2tlQ3VzdG9tRW50cnlwb2ludCAodHJ1ZSknLCAoKSBhc3luYyB7CiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgZGlyZWN0b3JpZXM6IFtdLAogICAgICAgIHJvdXRlczogW10sCiAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgIGVuZHBvaW50czoge30sCiAgICAgICAgaW52b2tlQ3VzdG9tRW50cnlwb2ludDogdHJ1ZSwKICAgICAgKTsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICB2ZXJpZnlOZXZlcigoKSA9PiBsb2dnZXIuZXJyKGFueSgpKSk7CiAgICAgIGV4cGVjdCgKICAgICAgICBjb250ZXh0LnZhcnMsCiAgICAgICAgZXF1YWxzKHsKICAgICAgICAgICdkaXJlY3Rvcmllcyc6IDxSb3V0ZURpcmVjdG9yeT5bXSwKICAgICAgICAgICdyb3V0ZXMnOiA8Um91dGVGaWxlPltdLAogICAgICAgICAgJ21pZGRsZXdhcmUnOiA8TWlkZGxld2FyZUZpbGU+W10sCiAgICAgICAgICAnZ2xvYmFsTWlkZGxld2FyZSc6IGZhbHNlLAogICAgICAgICAgJ3NlcnZlU3RhdGljRmlsZXMnOiBmYWxzZSwKICAgICAgICAgICdpbnZva2VDdXN0b21FbnRyeXBvaW50JzogdHJ1ZSwKICAgICAgICAgICdpbnZva2VDdXN0b21Jbml0JzogZmFsc2UsCiAgICAgICAgICAncGF0aERlcGVuZGVuY2llcyc6IDxTdHJpbmc+W10sCiAgICAgICAgICAnaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXMnOiBmYWxzZSwKICAgICAgICAgICdkYXJ0VmVyc2lvbic6ICdzdGFibGUnLAogICAgICAgICAgJ2FkZERvY2tlcmZpbGUnOiB0cnVlLAogICAgICAgIH0pLAogICAgICApOwogICAgfSk7CgogICAgdGVzdCgiZG9uJ3QgY3JlYXRlIHRoZSBkb2NrZXJmaWxlIGlmIG9uZSBhbHJlYWR5IGV4aXN0cyBvbiB0aGUgZm9sZGVyLiIsCiAgICAgICAgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICBlbmRwb2ludHM6IHt9LAogICAgICApOwoKICAgICAgZmluYWwgZGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoKTsKICAgICAgRmlsZShwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSkud3JpdGVBc1N0cmluZ1N5bmMoCiAgICAgICAgJycnCm5hbWU6IGV4YW1wbGUKdmVyc2lvbjogMC4xLjAKZW52aXJvbm1lbnQ6CiAgc2RrOiBeMi4xNy4wCmRlcGVuZGVuY2llczoKICBtYXNvbjogYW55CiAgdGVzdDogYW55CicnJywKICAgICAgKTsKCiAgICAgIEZpbGUocGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAncHVic3BlYy5sb2NrJykpLndyaXRlQXNTdHJpbmdTeW5jKAogICAgICAgIG5vUGF0aERlcGVuZGVuY2llcywKICAgICAgKTsKICAgICAgRmlsZShwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdEb2NrZXJmaWxlJykpLndyaXRlQXNTdHJpbmdTeW5jKAogICAgICAgICcnLAogICAgICApOwoKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgZGlyZWN0b3J5OiBkaXJlY3RvcnksCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CgogICAgICBleHBlY3QoCiAgICAgICAgY29udGV4dC52YXJzLAogICAgICAgIGVxdWFscyh7CiAgICAgICAgICAnZGlyZWN0b3JpZXMnOiA8Um91dGVEaXJlY3Rvcnk+W10sCiAgICAgICAgICAncm91dGVzJzogPFJvdXRlRmlsZT5bXSwKICAgICAgICAgICdtaWRkbGV3YXJlJzogPE1pZGRsZXdhcmVGaWxlPltdLAogICAgICAgICAgJ2dsb2JhbE1pZGRsZXdhcmUnOiBmYWxzZSwKICAgICAgICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogZmFsc2UsCiAgICAgICAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IGZhbHNlLAogICAgICAgICAgJ2ludm9rZUN1c3RvbUluaXQnOiBmYWxzZSwKICAgICAgICAgICdoYXNFeHRlcm5hbERlcGVuZGVuY2llcyc6IGZhbHNlLAogICAgICAgICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiA8U3RyaW5nPltdLAogICAgICAgICAgJ2RhcnRWZXJzaW9uJzogJ3N0YWJsZScsCiAgICAgICAgICAnYWRkRG9ja2VyZmlsZSc6IGZhbHNlLAogICAgICAgIH0pLAogICAgICApOwogICAgICBkaXJlY3RvcnkuZGVsZXRlKHJlY3Vyc2l2ZTogdHJ1ZSkuaWdub3JlKCk7CiAgICB9KTsKCiAgICB0ZXN0KCdyZXRhaW5zIGludm9rZUN1c3RvbUluaXQgKHRydWUpJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICBlbmRwb2ludHM6IHt9LAogICAgICAgIGludm9rZUN1c3RvbUluaXQ6IHRydWUsCiAgICAgICk7CiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgIHJ1blByb2Nlc3M6IHN1Y2Nlc3NSdW5Qcm9jZXNzLAogICAgICApOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgICBleHBlY3QoCiAgICAgICAgY29udGV4dC52YXJzLAogICAgICAgIGVxdWFscyh7CiAgICAgICAgICAnZGlyZWN0b3JpZXMnOiA8Um91dGVEaXJlY3Rvcnk+W10sCiAgICAgICAgICAncm91dGVzJzogPFJvdXRlRmlsZT5bXSwKICAgICAgICAgICdtaWRkbGV3YXJlJzogPE1pZGRsZXdhcmVGaWxlPltdLAogICAgICAgICAgJ2dsb2JhbE1pZGRsZXdhcmUnOiBmYWxzZSwKICAgICAgICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogZmFsc2UsCiAgICAgICAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IGZhbHNlLAogICAgICAgICAgJ2ludm9rZUN1c3RvbUluaXQnOiB0cnVlLAogICAgICAgICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZmFsc2UsCiAgICAgICAgICAncGF0aERlcGVuZGVuY2llcyc6IDxTdHJpbmc+W10sCiAgICAgICAgICAnZGFydFZlcnNpb24nOiAnc3RhYmxlJywKICAgICAgICAgICdhZGREb2NrZXJmaWxlJzogdHJ1ZSwKICAgICAgICB9KSwKICAgICAgKTsKICAgIH0pOwoKICAgIHRlc3QoCiAgICAgICd1cGRhdGVzIGNvbnRleHQudmFycyB3aGVuIGJ1aWxkUm91dGVDb25maWd1cmF0aW9uIHN1Y2NlZWRzJywKICAgICAgKCkgYXN5bmMgewogICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgICBnbG9iYWxNaWRkbGV3YXJlOiBNaWRkbGV3YXJlRmlsZSgKICAgICAgICAgICAgbmFtZTogJ21pZGRsZXdhcmUnLAogICAgICAgICAgICBwYXRoOiAnbWlkZGxld2FyZS5kYXJ0JywKICAgICAgICAgICksCiAgICAgICAgICBtaWRkbGV3YXJlOiBbCiAgICAgICAgICAgIE1pZGRsZXdhcmVGaWxlKAogICAgICAgICAgICAgIG5hbWU6ICdoZWxsb19taWRkbGV3YXJlJywKICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8vbWlkZGxld2FyZS5kYXJ0JywKICAgICAgICAgICAgKSwKICAgICAgICAgIF0sCiAgICAgICAgICBkaXJlY3RvcmllczogWwogICAgICAgICAgICBSb3V0ZURpcmVjdG9yeSgKICAgICAgICAgICAgICBuYW1lOiAnXycsCiAgICAgICAgICAgICAgcm91dGU6ICcvJywKICAgICAgICAgICAgICBtaWRkbGV3YXJlOiBbXSwKICAgICAgICAgICAgICBmaWxlczogWwogICAgICAgICAgICAgICAgUm91dGVGaWxlKAogICAgICAgICAgICAgICAgICBuYW1lOiAnaW5kZXgnLAogICAgICAgICAgICAgICAgICBwYXRoOiAnaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgICAgIHJvdXRlOiAnLycsCiAgICAgICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgICAgIHdpbGRjYXJkOiBmYWxzZSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgICAgIG5hbWU6ICdoZWxsbycsCiAgICAgICAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgKSwKICAgICAgICAgIF0sCiAgICAgICAgICByb3V0ZXM6IFsKICAgICAgICAgICAgUm91dGVGaWxlKAogICAgICAgICAgICAgIG5hbWU6ICdpbmRleCcsCiAgICAgICAgICAgICAgcGF0aDogJ2luZGV4LmRhcnQnLAogICAgICAgICAgICAgIHJvdXRlOiAnLycsCiAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICksCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy9oZWxsbycsCiAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICksCiAgICAgICAgICBdLAogICAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgICAgZW5kcG9pbnRzOiB7CiAgICAgICAgICAgICcvJzogWwogICAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICAgIG5hbWU6ICdpbmRleCcsCiAgICAgICAgICAgICAgICBwYXRoOiAnaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICAgIHdpbGRjYXJkOiBmYWxzZSwKICAgICAgICAgICAgICApLAogICAgICAgICAgICBdLAogICAgICAgICAgICAnL2hlbGxvJzogWwogICAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICAgIG5hbWU6ICdoZWxsbycsCiAgICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgICAgICByb3V0ZTogJy9oZWxsbycsCiAgICAgICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICAgICksCiAgICAgICAgICAgIF0sCiAgICAgICAgICB9LAogICAgICAgICAgc2VydmVTdGF0aWNGaWxlczogdHJ1ZSwKICAgICAgICApOwogICAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgICBydW5Qcm9jZXNzOiBzdWNjZXNzUnVuUHJvY2VzcywKICAgICAgICApOwogICAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICAgIHZlcmlmeU5ldmVyKCgpID0+IGxvZ2dlci5lcnIoYW55KCkpKTsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBjb250ZXh0LnZhcnMsCiAgICAgICAgICBlcXVhbHMoewogICAgICAgICAgICAnZGlyZWN0b3JpZXMnOiBbCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJ25hbWUnOiAnXycsCiAgICAgICAgICAgICAgICAncm91dGUnOiAnLycsCiAgICAgICAgICAgICAgICAnbWlkZGxld2FyZSc6IDxNYXA8U3RyaW5nLCBkeW5hbWljPj5bXSwKICAgICAgICAgICAgICAgICdmaWxlcyc6IFsKICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICduYW1lJzogJ2luZGV4JywKICAgICAgICAgICAgICAgICAgICAncGF0aCc6ICdpbmRleC5kYXJ0JywKICAgICAgICAgICAgICAgICAgICAncm91dGUnOiAnLycsCiAgICAgICAgICAgICAgICAgICAgJ2ZpbGVfcGFyYW1zJzogY29uc3QgPFN0cmluZz5bXSwKICAgICAgICAgICAgICAgICAgICAnd2lsZGNhcmQnOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICduYW1lJzogJ2hlbGxvJywKICAgICAgICAgICAgICAgICAgICAncGF0aCc6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICAgICAgICAncm91dGUnOiAnL2hlbGxvJywKICAgICAgICAgICAgICAgICAgICAnZmlsZV9wYXJhbXMnOiBjb25zdCA8U3RyaW5nPltdLAogICAgICAgICAgICAgICAgICAgICd3aWxkY2FyZCc6IGZhbHNlLAogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgJ2RpcmVjdG9yeV9wYXJhbXMnOiBjb25zdCA8U3RyaW5nPltdLAogICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgJ3JvdXRlcyc6IFsKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAnbmFtZSc6ICdpbmRleCcsCiAgICAgICAgICAgICAgICAncGF0aCc6ICdpbmRleC5kYXJ0JywKICAgICAgICAgICAgICAgICdyb3V0ZSc6ICcvJywKICAgICAgICAgICAgICAgICdmaWxlX3BhcmFtcyc6IGNvbnN0IDxTdHJpbmc+W10sCiAgICAgICAgICAgICAgICAnd2lsZGNhcmQnOiBmYWxzZSwKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICduYW1lJzogJ2hlbGxvJywKICAgICAgICAgICAgICAgICdwYXRoJzogJ2hlbGxvLmRhcnQnLAogICAgICAgICAgICAgICAgJ3JvdXRlJzogJy9oZWxsbycsCiAgICAgICAgICAgICAgICAnZmlsZV9wYXJhbXMnOiBjb25zdCA8U3RyaW5nPltdLAogICAgICAgICAgICAgICAgJ3dpbGRjYXJkJzogZmFsc2UsCiAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAnbWlkZGxld2FyZSc6IFsKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAnbmFtZSc6ICdoZWxsb19taWRkbGV3YXJlJywKICAgICAgICAgICAgICAgICdwYXRoJzogJ2hlbGxvL21pZGRsZXdhcmUuZGFydCcsCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgJ2dsb2JhbE1pZGRsZXdhcmUnOiB7CiAgICAgICAgICAgICAgJ25hbWUnOiAnbWlkZGxld2FyZScsCiAgICAgICAgICAgICAgJ3BhdGgnOiAnbWlkZGxld2FyZS5kYXJ0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ3NlcnZlU3RhdGljRmlsZXMnOiB0cnVlLAogICAgICAgICAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IGZhbHNlLAogICAgICAgICAgICAnaW52b2tlQ3VzdG9tSW5pdCc6IGZhbHNlLAogICAgICAgICAgICAnaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXMnOiBmYWxzZSwKICAgICAgICAgICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiA8U3RyaW5nPltdLAogICAgICAgICAgICAnZGFydFZlcnNpb24nOiAnc3RhYmxlJywKICAgICAgICAgICAgJ2FkZERvY2tlcmZpbGUnOiB0cnVlLAogICAgICAgICAgfSksCiAgICAgICAgKTsKICAgICAgfSwKICAgICk7CiAgfSk7Cn0K", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcKICAgIHNob3cgSG9va0NvbnRleHQsIExvZ2dlciwgUHJvZ3Jlc3MsIGRlZmF1bHRGb3JlZ3JvdW5kLCBsaWdodEN5YW47CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKaW1wb3J0ICcuLi9wcmVfZ2VuLmRhcnQnIGFzIHByZV9nZW47CmltcG9ydCAncHVic3BlY19sb2Nrcy5kYXJ0JzsKaW1wb3J0ICdwdWJzcGVjcy5kYXJ0JzsKCmNsYXNzIF9GYWtlSG9va0NvbnRleHQgZXh0ZW5kcyBGYWtlIGltcGxlbWVudHMgSG9va0NvbnRleHQgewogIF9GYWtlSG9va0NvbnRleHQoe0xvZ2dlcj8gbG9nZ2VyfSkgOiBfbG9nZ2VyID0gbG9nZ2VyID8/IF9Nb2NrTG9nZ2VyKCk7CgogIGZpbmFsIExvZ2dlciBfbG9nZ2VyOwoKICB2YXIgX3ZhcnMgPSA8U3RyaW5nLCBkeW5hbWljPnt9OwoKICBAb3ZlcnJpZGUKICBNYXA8U3RyaW5nLCBkeW5hbWljPiBnZXQgdmFycyA9PiBfdmFyczsKCiAgQG92ZXJyaWRlCiAgc2V0IHZhcnMoTWFwPFN0cmluZywgZHluYW1pYz4gdmFsdWUpID0+IF92YXJzID0gdmFsdWU7CgogIEBvdmVycmlkZQogIExvZ2dlciBnZXQgbG9nZ2VyID0+IF9sb2dnZXI7Cn0KCmNsYXNzIF9Nb2NrTG9nZ2VyIGV4dGVuZHMgTW9jayBpbXBsZW1lbnRzIExvZ2dlciB7fQoKY2xhc3MgX01vY2tQcm9ncmVzcyBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBQcm9ncmVzcyB7fQoKdm9pZCBtYWluKCkgewogIGdyb3VwKCdwcmVHZW4nLCAoKSB7CiAgICBsYXRlIEhvb2tDb250ZXh0IGNvbnRleHQ7CiAgICBsYXRlIExvZ2dlciBsb2dnZXI7CgogICAgRnV0dXJlPFByb2Nlc3NSZXN1bHQ+IHN1Y2Nlc3NSdW5Qcm9jZXNzKAogICAgICBleGVjdXRhYmxlLAogICAgICBhcmdzLCB7CiAgICAgIFN0cmluZz8gd29ya2luZ0RpcmVjdG9yeSwKICAgICAgYm9vbD8gcnVuSW5TaGVsbCwKICAgIH0pID0+CiAgICAgICAgRnV0dXJlLnZhbHVlKFByb2Nlc3NSZXN1bHQoMCwgMCwgJycsICcnKSk7CgogICAgc2V0VXAoKCkgewogICAgICBsb2dnZXIgPSBfTW9ja0xvZ2dlcigpOwogICAgICBjb250ZXh0ID0gX0Zha2VIb29rQ29udGV4dChsb2dnZXI6IGxvZ2dlcikKICAgICAgICAuLnZhcnNbJ2RhcnRWZXJzaW9uJ10gPSAnc3RhYmxlJzsKCiAgICAgIHdoZW4oKCkgPT4gbG9nZ2VyLnByb2dyZXNzKGFueSgpKSkudGhlblJldHVybihfTW9ja1Byb2dyZXNzKCkpOwogICAgfSk7CgogICAgdGVzdCgncnVuIGNvbXBsZXRlcycsICgpIHsKICAgICAgZXhwZWN0KAogICAgICAgIEV4aXRPdmVycmlkZXMucnVuWm9uZWQoCiAgICAgICAgICAoKSA9PiBwcmVfZ2VuLnJ1bihfRmFrZUhvb2tDb250ZXh0KGxvZ2dlcjogbG9nZ2VyKSksCiAgICAgICAgICBleGl0OiAoXykge30sCiAgICAgICAgKSwKICAgICAgICBjb21wbGV0ZXMsCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdleGl0KDEpIGlmIGJ1aWxkUm91dGVDb25maWd1cmF0aW9uIHRocm93cycsICgpIGFzeW5jIHsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgZmluYWwgZXhjZXB0aW9uID0gRXhjZXB0aW9uKCdvb3BzJyk7CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gdGhyb3cgZXhjZXB0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbMV0pKTsKICAgICAgdmVyaWZ5KCgpID0+IGxvZ2dlci5lcnIoZXhjZXB0aW9uLnRvU3RyaW5nKCkpKS5jYWxsZWQoMSk7CiAgICB9KTsKCiAgICB0ZXN0KCdleGl0KDEpIGZvciByb3V0ZSBjb25mbGljdHMnLCAoKSBhc3luYyB7CiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgZGlyZWN0b3JpZXM6IFtdLAogICAgICAgIHJvdXRlczogW10sCiAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgIGVuZHBvaW50czogewogICAgICAgICAgJy8nOiBbCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaW5kZXgnLAogICAgICAgICAgICAgIHBhdGg6ICdpbmRleC5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgXSwKICAgICAgICAgICcvaGVsbG8nOiBbCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy9oZWxsbycsCiAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICksCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG9faW5kZXgnLAogICAgICAgICAgICAgIHBhdGg6ICdoZWxsby9pbmRleC5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgXSwKICAgICAgICB9LAogICAgICApOwoKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CgogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmVycigKICAgICAgICAgICcnJ1JvdXRlIGNvbmZsaWN0IGRldGVjdGVkLiAke2xpZ2h0Q3lhbi53cmFwKCdyb3V0ZXMvaGVsbG8uZGFydCcpfSBhbmQgJHtsaWdodEN5YW4ud3JhcCgncm91dGVzL2hlbGxvL2luZGV4LmRhcnQnKX0gYm90aCByZXNvbHZlIHRvICR7bGlnaHRDeWFuLndyYXAoJy9oZWxsbycpfS4nJycsCiAgICAgICAgKSwKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgfSk7CgogICAgdGVzdCgnZXhpdCgxKSBmb3Igcm9ndWUgcm91dGVzJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbCiAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgIG5hbWU6ICdoZWxsbycsCiAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICApLAogICAgICAgIF0sCiAgICAgICAgZW5kcG9pbnRzOiB7fSwKICAgICAgICBpbnZva2VDdXN0b21FbnRyeXBvaW50OiB0cnVlLAogICAgICApOwoKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CgogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmVycigKICAgICAgICAgICcnJ1JvZ3VlIHJvdXRlIGRldGVjdGVkLiR7ZGVmYXVsdEZvcmVncm91bmQud3JhcCgnICcpfVJlbmFtZSAke2xpZ2h0Q3lhbi53cmFwKCdyb3V0ZXMvaGVsbG8uZGFydCcpfSB0byAke2xpZ2h0Q3lhbi53cmFwKCdyb3V0ZXMvaGVsbG8vaW5kZXguZGFydCcpfS4nJycsCiAgICAgICAgKSwKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgfSk7CgogICAgdGVzdCgnd29ya3Mgd2l0aCB3b3Jrc3BhY2VzJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICBlbmRwb2ludHM6IHt9LAogICAgICApOwoKICAgICAgZmluYWwgZGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoKTsKICAgICAgRmlsZSgKICAgICAgICBwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSwKICAgICAgKS53cml0ZUFzU3RyaW5nU3luYyh3b3Jrc3BhY2VSb290KTsKICAgICAgZmluYWwgc2VydmVyID0gRGlyZWN0b3J5KAogICAgICAgIHBhdGguam9pbihkaXJlY3RvcnkucGF0aCwgJ3NlcnZlcicpLAogICAgICApLi5jcmVhdGVTeW5jKCk7CiAgICAgIEZpbGUoCiAgICAgICAgcGF0aC5qb2luKHNlcnZlci5wYXRoLCAncHVic3BlYy55YW1sJyksCiAgICAgICkud3JpdGVBc1N0cmluZ1N5bmMod29ya3NwYWNlQ2hpbGQpOwogICAgICBGaWxlKAogICAgICAgIHBhdGguam9pbihzZXJ2ZXIucGF0aCwgJ3B1YnNwZWMubG9jaycpLAogICAgICApLndyaXRlQXNTdHJpbmdTeW5jKCcnJwojIEdlbmVyYXRlZCBieSBwdWIKIyBTZWUgaHR0cHM6Ly9kYXJ0LmRldi90b29scy9wdWIvZ2xvc3NhcnkjbG9ja2ZpbGUKcGFja2FnZXM6CiAgX2ZlX2FuYWx5emVyX3NoYXJlZDoKICAgIGRlcGVuZGVuY3k6IHRyYW5zaXRpdmUKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiBfZmVfYW5hbHl6ZXJfc2hhcmVkCiAgICAgIHNoYTI1NjogZGEwZDkyMDljYTc2YmRlNTc5ZjJkYTMzMGFlYjlkZjYyYjYzMTljODM0ZmE3YmFhZTA1MjAyMWIwNDYyNDAxZgogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjg1LjAuMCIKJycnKTsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgZGlyZWN0b3J5OiBzZXJ2ZXIsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICAgY29weVBhdGg6IChfLCBfXykgYXN5bmMge30sCiAgICAgICk7CgogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgZGlyZWN0b3J5LmRlbGV0ZShyZWN1cnNpdmU6IHRydWUpLmlnbm9yZSgpOwogICAgfSk7CgogICAgdGVzdCgnd29ya3Mgd2l0aCBleHRlcm5hbCBkZXBlbmRlbmNpZXMnLCAoKSBhc3luYyB7CiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgZGlyZWN0b3JpZXM6IFtdLAogICAgICAgIHJvdXRlczogW10sCiAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgIGVuZHBvaW50czoge30sCiAgICAgICk7CgogICAgICBmaW5hbCBkaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygpOwogICAgICBGaWxlKAogICAgICAgIHBhdGguam9pbihkaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMubG9jaycpLAogICAgICApLndyaXRlQXNTdHJpbmdTeW5jKGZvb1BhdGgpOwogICAgICBmaW5hbCBleGl0Q2FsbHMgPSA8aW50PltdOwogICAgICBhd2FpdCBwcmVfZ2VuLnByZUdlbigKICAgICAgICBjb250ZXh0LAogICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbjogKF8pID0+IGNvbmZpZ3VyYXRpb24sCiAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICBkaXJlY3Rvcnk6IGRpcmVjdG9yeSwKICAgICAgICBydW5Qcm9jZXNzOiBzdWNjZXNzUnVuUHJvY2VzcywKICAgICAgICBjb3B5UGF0aDogKGZyb20sIHRvKSBhc3luYyB7CiAgICAgICAgICBGaWxlKAogICAgICAgICAgICBwYXRoLmpvaW4odG8sICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgICAgICAgICApLmNyZWF0ZVN5bmMocmVjdXJzaXZlOiB0cnVlKTsKICAgICAgICB9LAogICAgICApOwoKICAgICAgZXhwZWN0KGV4aXRDYWxscywgaXNFbXB0eSk7CiAgICAgIGRpcmVjdG9yeS5kZWxldGUocmVjdXJzaXZlOiB0cnVlKS5pZ25vcmUoKTsKICAgIH0pOwoKICAgIHRlc3QoJ3JldGFpbnMgaW52b2tlQ3VzdG9tRW50cnlwb2ludCAodHJ1ZSknLCAoKSBhc3luYyB7CiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgZGlyZWN0b3JpZXM6IFtdLAogICAgICAgIHJvdXRlczogW10sCiAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgIGVuZHBvaW50czoge30sCiAgICAgICAgaW52b2tlQ3VzdG9tRW50cnlwb2ludDogdHJ1ZSwKICAgICAgKTsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICB2ZXJpZnlOZXZlcigoKSA9PiBsb2dnZXIuZXJyKGFueSgpKSk7CiAgICAgIGV4cGVjdCgKICAgICAgICBjb250ZXh0LnZhcnMsCiAgICAgICAgZXF1YWxzKHsKICAgICAgICAgICdkaXJlY3Rvcmllcyc6IDxSb3V0ZURpcmVjdG9yeT5bXSwKICAgICAgICAgICdyb3V0ZXMnOiA8Um91dGVGaWxlPltdLAogICAgICAgICAgJ21pZGRsZXdhcmUnOiA8TWlkZGxld2FyZUZpbGU+W10sCiAgICAgICAgICAnZ2xvYmFsTWlkZGxld2FyZSc6IGZhbHNlLAogICAgICAgICAgJ3NlcnZlU3RhdGljRmlsZXMnOiBmYWxzZSwKICAgICAgICAgICdpbnZva2VDdXN0b21FbnRyeXBvaW50JzogdHJ1ZSwKICAgICAgICAgICdpbnZva2VDdXN0b21Jbml0JzogZmFsc2UsCiAgICAgICAgICAncGF0aERlcGVuZGVuY2llcyc6IDxTdHJpbmc+W10sCiAgICAgICAgICAnaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXMnOiBmYWxzZSwKICAgICAgICAgICdkYXJ0VmVyc2lvbic6ICdzdGFibGUnLAogICAgICAgICAgJ2FkZERvY2tlcmZpbGUnOiB0cnVlLAogICAgICAgIH0pLAogICAgICApOwogICAgfSk7CgogICAgdGVzdCgiZG9uJ3QgY3JlYXRlIHRoZSBkb2NrZXJmaWxlIGlmIG9uZSBhbHJlYWR5IGV4aXN0cyBvbiB0aGUgZm9sZGVyLiIsCiAgICAgICAgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICBlbmRwb2ludHM6IHt9LAogICAgICApOwoKICAgICAgZmluYWwgZGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoKTsKICAgICAgRmlsZShwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSkud3JpdGVBc1N0cmluZ1N5bmMoCiAgICAgICAgJycnCm5hbWU6IGV4YW1wbGUKdmVyc2lvbjogMC4xLjAKZW52aXJvbm1lbnQ6CiAgc2RrOiBeMi4xNy4wCmRlcGVuZGVuY2llczoKICBtYXNvbjogYW55CiAgdGVzdDogYW55CicnJywKICAgICAgKTsKCiAgICAgIEZpbGUocGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAncHVic3BlYy5sb2NrJykpLndyaXRlQXNTdHJpbmdTeW5jKAogICAgICAgIG5vUGF0aERlcGVuZGVuY2llcywKICAgICAgKTsKICAgICAgRmlsZShwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdEb2NrZXJmaWxlJykpLndyaXRlQXNTdHJpbmdTeW5jKAogICAgICAgICcnLAogICAgICApOwoKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgZGlyZWN0b3J5OiBkaXJlY3RvcnksCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CgogICAgICBleHBlY3QoCiAgICAgICAgY29udGV4dC52YXJzLAogICAgICAgIGVxdWFscyh7CiAgICAgICAgICAnZGlyZWN0b3JpZXMnOiA8Um91dGVEaXJlY3Rvcnk+W10sCiAgICAgICAgICAncm91dGVzJzogPFJvdXRlRmlsZT5bXSwKICAgICAgICAgICdtaWRkbGV3YXJlJzogPE1pZGRsZXdhcmVGaWxlPltdLAogICAgICAgICAgJ2dsb2JhbE1pZGRsZXdhcmUnOiBmYWxzZSwKICAgICAgICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogZmFsc2UsCiAgICAgICAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IGZhbHNlLAogICAgICAgICAgJ2ludm9rZUN1c3RvbUluaXQnOiBmYWxzZSwKICAgICAgICAgICdoYXNFeHRlcm5hbERlcGVuZGVuY2llcyc6IGZhbHNlLAogICAgICAgICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiA8U3RyaW5nPltdLAogICAgICAgICAgJ2RhcnRWZXJzaW9uJzogJ3N0YWJsZScsCiAgICAgICAgICAnYWRkRG9ja2VyZmlsZSc6IGZhbHNlLAogICAgICAgIH0pLAogICAgICApOwogICAgICBkaXJlY3RvcnkuZGVsZXRlKHJlY3Vyc2l2ZTogdHJ1ZSkuaWdub3JlKCk7CiAgICB9KTsKCiAgICB0ZXN0KCdyZXRhaW5zIGludm9rZUN1c3RvbUluaXQgKHRydWUpJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICBlbmRwb2ludHM6IHt9LAogICAgICAgIGludm9rZUN1c3RvbUluaXQ6IHRydWUsCiAgICAgICk7CiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgIHJ1blByb2Nlc3M6IHN1Y2Nlc3NSdW5Qcm9jZXNzLAogICAgICApOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgICBleHBlY3QoCiAgICAgICAgY29udGV4dC52YXJzLAogICAgICAgIGVxdWFscyh7CiAgICAgICAgICAnZGlyZWN0b3JpZXMnOiA8Um91dGVEaXJlY3Rvcnk+W10sCiAgICAgICAgICAncm91dGVzJzogPFJvdXRlRmlsZT5bXSwKICAgICAgICAgICdtaWRkbGV3YXJlJzogPE1pZGRsZXdhcmVGaWxlPltdLAogICAgICAgICAgJ2dsb2JhbE1pZGRsZXdhcmUnOiBmYWxzZSwKICAgICAgICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogZmFsc2UsCiAgICAgICAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IGZhbHNlLAogICAgICAgICAgJ2ludm9rZUN1c3RvbUluaXQnOiB0cnVlLAogICAgICAgICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZmFsc2UsCiAgICAgICAgICAncGF0aERlcGVuZGVuY2llcyc6IDxTdHJpbmc+W10sCiAgICAgICAgICAnZGFydFZlcnNpb24nOiAnc3RhYmxlJywKICAgICAgICAgICdhZGREb2NrZXJmaWxlJzogdHJ1ZSwKICAgICAgICB9KSwKICAgICAgKTsKICAgIH0pOwoKICAgIHRlc3QoCiAgICAgICd1cGRhdGVzIGNvbnRleHQudmFycyB3aGVuIGJ1aWxkUm91dGVDb25maWd1cmF0aW9uIHN1Y2NlZWRzJywKICAgICAgKCkgYXN5bmMgewogICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgICBnbG9iYWxNaWRkbGV3YXJlOiBNaWRkbGV3YXJlRmlsZSgKICAgICAgICAgICAgbmFtZTogJ21pZGRsZXdhcmUnLAogICAgICAgICAgICBwYXRoOiAnbWlkZGxld2FyZS5kYXJ0JywKICAgICAgICAgICksCiAgICAgICAgICBtaWRkbGV3YXJlOiBbCiAgICAgICAgICAgIE1pZGRsZXdhcmVGaWxlKAogICAgICAgICAgICAgIG5hbWU6ICdoZWxsb19taWRkbGV3YXJlJywKICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8vbWlkZGxld2FyZS5kYXJ0JywKICAgICAgICAgICAgKSwKICAgICAgICAgIF0sCiAgICAgICAgICBkaXJlY3RvcmllczogWwogICAgICAgICAgICBSb3V0ZURpcmVjdG9yeSgKICAgICAgICAgICAgICBuYW1lOiAnXycsCiAgICAgICAgICAgICAgcm91dGU6ICcvJywKICAgICAgICAgICAgICBtaWRkbGV3YXJlOiBbXSwKICAgICAgICAgICAgICBmaWxlczogWwogICAgICAgICAgICAgICAgUm91dGVGaWxlKAogICAgICAgICAgICAgICAgICBuYW1lOiAnaW5kZXgnLAogICAgICAgICAgICAgICAgICBwYXRoOiAnaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgICAgIHJvdXRlOiAnLycsCiAgICAgICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgICAgIHdpbGRjYXJkOiBmYWxzZSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgICAgIG5hbWU6ICdoZWxsbycsCiAgICAgICAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgKSwKICAgICAgICAgIF0sCiAgICAgICAgICByb3V0ZXM6IFsKICAgICAgICAgICAgUm91dGVGaWxlKAogICAgICAgICAgICAgIG5hbWU6ICdpbmRleCcsCiAgICAgICAgICAgICAgcGF0aDogJ2luZGV4LmRhcnQnLAogICAgICAgICAgICAgIHJvdXRlOiAnLycsCiAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICksCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy9oZWxsbycsCiAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICksCiAgICAgICAgICBdLAogICAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgICAgZW5kcG9pbnRzOiB7CiAgICAgICAgICAgICcvJzogWwogICAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICAgIG5hbWU6ICdpbmRleCcsCiAgICAgICAgICAgICAgICBwYXRoOiAnaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICAgIHdpbGRjYXJkOiBmYWxzZSwKICAgICAgICAgICAgICApLAogICAgICAgICAgICBdLAogICAgICAgICAgICAnL2hlbGxvJzogWwogICAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICAgIG5hbWU6ICdoZWxsbycsCiAgICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgICAgICByb3V0ZTogJy9oZWxsbycsCiAgICAgICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICAgICksCiAgICAgICAgICAgIF0sCiAgICAgICAgICB9LAogICAgICAgICAgc2VydmVTdGF0aWNGaWxlczogdHJ1ZSwKICAgICAgICApOwogICAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgICBydW5Qcm9jZXNzOiBzdWNjZXNzUnVuUHJvY2VzcywKICAgICAgICApOwogICAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICAgIHZlcmlmeU5ldmVyKCgpID0+IGxvZ2dlci5lcnIoYW55KCkpKTsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBjb250ZXh0LnZhcnMsCiAgICAgICAgICBlcXVhbHMoewogICAgICAgICAgICAnZGlyZWN0b3JpZXMnOiBbCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJ25hbWUnOiAnXycsCiAgICAgICAgICAgICAgICAncm91dGUnOiAnLycsCiAgICAgICAgICAgICAgICAnbWlkZGxld2FyZSc6IDxNYXA8U3RyaW5nLCBkeW5hbWljPj5bXSwKICAgICAgICAgICAgICAgICdmaWxlcyc6IFsKICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICduYW1lJzogJ2luZGV4JywKICAgICAgICAgICAgICAgICAgICAncGF0aCc6ICdpbmRleC5kYXJ0JywKICAgICAgICAgICAgICAgICAgICAncm91dGUnOiAnLycsCiAgICAgICAgICAgICAgICAgICAgJ2ZpbGVfcGFyYW1zJzogY29uc3QgPFN0cmluZz5bXSwKICAgICAgICAgICAgICAgICAgICAnd2lsZGNhcmQnOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICduYW1lJzogJ2hlbGxvJywKICAgICAgICAgICAgICAgICAgICAncGF0aCc6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICAgICAgICAncm91dGUnOiAnL2hlbGxvJywKICAgICAgICAgICAgICAgICAgICAnZmlsZV9wYXJhbXMnOiBjb25zdCA8U3RyaW5nPltdLAogICAgICAgICAgICAgICAgICAgICd3aWxkY2FyZCc6IGZhbHNlLAogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgJ2RpcmVjdG9yeV9wYXJhbXMnOiBjb25zdCA8U3RyaW5nPltdLAogICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgJ3JvdXRlcyc6IFsKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAnbmFtZSc6ICdpbmRleCcsCiAgICAgICAgICAgICAgICAncGF0aCc6ICdpbmRleC5kYXJ0JywKICAgICAgICAgICAgICAgICdyb3V0ZSc6ICcvJywKICAgICAgICAgICAgICAgICdmaWxlX3BhcmFtcyc6IGNvbnN0IDxTdHJpbmc+W10sCiAgICAgICAgICAgICAgICAnd2lsZGNhcmQnOiBmYWxzZSwKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICduYW1lJzogJ2hlbGxvJywKICAgICAgICAgICAgICAgICdwYXRoJzogJ2hlbGxvLmRhcnQnLAogICAgICAgICAgICAgICAgJ3JvdXRlJzogJy9oZWxsbycsCiAgICAgICAgICAgICAgICAnZmlsZV9wYXJhbXMnOiBjb25zdCA8U3RyaW5nPltdLAogICAgICAgICAgICAgICAgJ3dpbGRjYXJkJzogZmFsc2UsCiAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAnbWlkZGxld2FyZSc6IFsKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAnbmFtZSc6ICdoZWxsb19taWRkbGV3YXJlJywKICAgICAgICAgICAgICAgICdwYXRoJzogJ2hlbGxvL21pZGRsZXdhcmUuZGFydCcsCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgJ2dsb2JhbE1pZGRsZXdhcmUnOiB7CiAgICAgICAgICAgICAgJ25hbWUnOiAnbWlkZGxld2FyZScsCiAgICAgICAgICAgICAgJ3BhdGgnOiAnbWlkZGxld2FyZS5kYXJ0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ3NlcnZlU3RhdGljRmlsZXMnOiB0cnVlLAogICAgICAgICAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IGZhbHNlLAogICAgICAgICAgICAnaW52b2tlQ3VzdG9tSW5pdCc6IGZhbHNlLAogICAgICAgICAgICAnaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXMnOiBmYWxzZSwKICAgICAgICAgICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiA8U3RyaW5nPltdLAogICAgICAgICAgICAnZGFydFZlcnNpb24nOiAnc3RhYmxlJywKICAgICAgICAgICAgJ2FkZERvY2tlcmZpbGUnOiB0cnVlLAogICAgICAgICAgfSksCiAgICAgICAgKTsKICAgICAgfSwKICAgICk7CiAgfSk7Cn0K", "type": "text" }, { @@ -109,6 +271,12 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ "Ly8vIEFuIGFydGlmaWNpYWxseSBjcmFmdGVkIGBwdWJzcGVjLmxvY2tgIGZpbGUgd2l0aDoKLy8vCi8vLyAqIEEgdHJhbnNpdGl2ZSBkZXBlbmRlbmN5LgovLy8gKiBBIGRpcmVjdCBtYWluIHBhdGggZGVwZW5kZW5jeSB0aGF0IGlzIG5vdCBhIGNoaWxkIG9mIHRoZSBwcm9qZWN0Ci8vLyBkaXJlY3RvcnkuCi8vLyAqIEEgZGlyZWN0IG1haW4gcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgbm90IGEgY2hpbGQgb2YgdGhlIHByb2plY3QKLy8vIGRpcmVjdG9yeSBhbmQgaGFzIGEgZGlmZmVyZW50IHBhY2thZ2UgbmFtZSB0aGFuIHRoZSBkaXJlY3RvcnkgbmFtZS4KLy8vICogQSBkaXJlY3QgbWFpbiBkZXBlbmRlbmN5IHRoYXQgaXMgaG9zdGVkLgovLy8gKiBBIGRpcmVjdCBkZXYgbWFpbiBkZXBlbmRlbmN5IHRoYXQgaXMgaG9zdGVkLgovLy8gKiBBIGRpcmVjdCBvdmVycmlkZGVuIGRlcGVuZGVuY3kgZnJvbSBnaXQuCmNvbnN0IGZvb1BhdGggPSAnJycKcGFja2FnZXM6CiAgYXJnczoKICAgIGRlcGVuZGVuY3k6IHRyYW5zaXRpdmUKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiBhcmdzCiAgICAgIHNoYTI1NjogZWVmNmM0NmI2MjJlMDQ5NGEzNmM1YTEyZDEwZDc3ZmI0ZTg1NTUwMWE5MWMxYjllZjkzMzkzMjZlNThmMDU5NgogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjIuNC4yIgogIGZvbzoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3QgbWFpbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBwYXRoOiAiLi4vLi4vZm9vIgogICAgICByZWxhdGl2ZTogdHJ1ZQogICAgc291cmNlOiBwYXRoCiAgICB2ZXJzaW9uOiAiMC4wLjAiCiAgc2Vjb25kX2ZvbzoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3QgbWFpbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBwYXRoOiAiLi4vLi4vZm9vMiIKICAgICAgcmVsYXRpdmU6IHRydWUKICAgIHNvdXJjZTogcGF0aAogICAgdmVyc2lvbjogIjAuMC4wIgogIGRpcmVjdF9tYWluOgogICAgZGVwZW5kZW5jeTogImRpcmVjdCBtYWluIgogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IGRpcmVjdF9tYWluCiAgICAgIHNoYTI1NjogZmRjOWVhOTA1ZTdjNjkwZmUzOWQyZjk5NDZiN2FlYWQ4NmZkOTc2ZjhlZGY5N2QyNTIxYTY1ZDI2MGJiZjUwOQogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjAuMS4wLWRldi41MCIKICB0ZXN0OgogICAgZGVwZW5kZW5jeTogImRpcmVjdCBkZXYiCiAgICBkZXNjcmlwdGlvbjoKICAgICAgbmFtZTogdGVzdAogICAgICBzaGEyNTY6ICI5YjBkZDhlMzZhZjRhNWIxNTY5MDI5OTQ5ZDUwYTUyY2IyYTJhMmZkYWEyMGNlYmI5NmU2NjAzYjlhZTI0MWY5IgogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjEuMjQuNiIKICBkaXJlY3Rfb3ZlcnJpZGRlbjoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3Qgb3ZlcnJpZGRlbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBwYXRoOiAicGFja2FnZXMvbWFzb24iCiAgICAgIHJlZjogIjcyYzMwNmE4ZDhhYmYzMDZiNWQwMjRmOTVhYWMyOWJhNWZkOTY1NzciCiAgICAgIHJlc29sdmVkLXJlZjogIjcyYzMwNmE4ZDhhYmYzMDZiNWQwMjRmOTVhYWMyOWJhNWZkOTY1NzciCiAgICAgIHVybDogImh0dHBzOi8vZ2l0aHViLmNvbS9hbGVzdGlhZ28vbWFzb24iCiAgICBzb3VyY2U6IGdpdAogICAgdmVyc2lvbjogIjAuMS4wLWRldi41MiIKc2RrczoKICBkYXJ0OiAiPj0zLjAuMCA8NC4wLjAiCicnJzsKCi8vLyBBbiBhcnRpZmljaWFsbHkgY3JhZnRlZCBgcHVic3BlYy5sb2NrYCBmaWxlIHdpdGg6Ci8vLwovLy8gKiBBIHRyYW5zaXRpdmUgZGVwZW5kZW5jeS4KLy8vICogQSBkaXJlY3QgbWFpbiBwYXRoIGRlcGVuZGVuY3kgdGhhdCBpcyBub3QgYSBjaGlsZCBvZiB0aGUgcHJvamVjdAovLy8gZGlyZWN0b3J5LgovLy8gKiBBIGRpcmVjdCBtYWluIHBhdGggZGVwZW5kZW5jeSB0aGF0IGlzIGEgY2hpbGQgb2YgdGhlIHByb2plY3QgZGlyZWN0b3J5LgovLy8gKiBBIGRpcmVjdCBtYWluIGRlcGVuZGVuY3kgdGhhdCBpcyBob3N0ZWQuCi8vLyAqIEEgZGlyZWN0IGRldiBtYWluIGRlcGVuZGVuY3kgdGhhdCBpcyBob3N0ZWQuCmNvbnN0IGZvb1BhdGhXaXRoSW50ZXJuYWxEZXBlbmRlbmN5ID0gJycnCnBhY2thZ2VzOgogIGFyZ3M6CiAgICBkZXBlbmRlbmN5OiB0cmFuc2l0aXZlCiAgICBkZXNjcmlwdGlvbjoKICAgICAgbmFtZTogYXJncwogICAgICBzaGEyNTY6IGVlZjZjNDZiNjIyZTA0OTRhMzZjNWExMmQxMGQ3N2ZiNGU4NTU1MDFhOTFjMWI5ZWY5MzM5MzI2ZTU4ZjA1OTYKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIyLjQuMiIKICBmb286CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IG1haW4iCiAgICBkZXNjcmlwdGlvbjoKICAgICAgcGF0aDogIi4uLy4uL2ZvbyIKICAgICAgcmVsYXRpdmU6IHRydWUKICAgIHNvdXJjZTogcGF0aAogICAgdmVyc2lvbjogIjAuMC4wIgogIGJhcjoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3QgbWFpbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBwYXRoOiAicGFja2FnZXMvYmFyIgogICAgICByZWxhdGl2ZTogdHJ1ZQogICAgc291cmNlOiBwYXRoCiAgICB2ZXJzaW9uOiAiMC4wLjAiCiAgbWFzb246CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IG1haW4iCiAgICBkZXNjcmlwdGlvbjoKICAgICAgbmFtZTogbWFzb24KICAgICAgc2hhMjU2OiBmZGM5ZWE5MDVlN2M2OTBmZTM5ZDJmOTk0NmI3YWVhZDg2ZmQ5NzZmOGVkZjk3ZDI1MjFhNjVkMjYwYmJmNTA5CiAgICAgIHVybDogImh0dHBzOi8vcHViLmRldiIKICAgIHNvdXJjZTogaG9zdGVkCiAgICB2ZXJzaW9uOiAiMC4xLjAtZGV2LjUwIgogIHRlc3Q6CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IGRldiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiB0ZXN0CiAgICAgIHNoYTI1NjogIjliMGRkOGUzNmFmNGE1YjE1NjkwMjk5NDlkNTBhNTJjYjJhMmEyZmRhYTIwY2ViYjk2ZTY2MDNiOWFlMjQxZjkiCiAgICAgIHVybDogImh0dHBzOi8vcHViLmRldiIKICAgIHNvdXJjZTogaG9zdGVkCiAgICB2ZXJzaW9uOiAiMS4yNC42IgpzZGtzOgogIGRhcnQ6ICI+PTMuMC4wIDw0LjAuMCIKJycnOwoKLy8vIEFuIGFydGlmaWNpYWxseSBjcmFmdGVkIGBwdWJzcGVjLmxvY2tgIGZpbGUgd2l0aDoKLy8vCi8vLyAqIEEgdHJhbnNpdGl2ZSBkZXBlbmRlbmN5LgovLy8gKiBBIGRpcmVjdCBtYWluIGRlcGVuZGVuY3kgdGhhdCBpcyBob3N0ZWQuCi8vLyAqIEEgZGlyZWN0IGRldiBtYWluIGRlcGVuZGVuY3kgdGhhdCBpcyBob3N0ZWQuCmNvbnN0IG5vUGF0aERlcGVuZGVuY2llcyA9ICcnJwpwYWNrYWdlczoKICBhcmdzOgogICAgZGVwZW5kZW5jeTogdHJhbnNpdGl2ZQogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IGFyZ3MKICAgICAgc2hhMjU2OiBlZWY2YzQ2YjYyMmUwNDk0YTM2YzVhMTJkMTBkNzdmYjRlODU1NTAxYTkxYzFiOWVmOTMzOTMyNmU1OGYwNTk2CiAgICAgIHVybDogImh0dHBzOi8vcHViLmRldiIKICAgIHNvdXJjZTogaG9zdGVkCiAgICB2ZXJzaW9uOiAiMi40LjIiCiAgbWFzb246CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IG1haW4iCiAgICBkZXNjcmlwdGlvbjoKICAgICAgbmFtZTogbWFzb24KICAgICAgc2hhMjU2OiBmZGM5ZWE5MDVlN2M2OTBmZTM5ZDJmOTk0NmI3YWVhZDg2ZmQ5NzZmOGVkZjk3ZDI1MjFhNjVkMjYwYmJmNTA5CiAgICAgIHVybDogImh0dHBzOi8vcHViLmRldiIKICAgIHNvdXJjZTogaG9zdGVkCiAgICB2ZXJzaW9uOiAiMC4xLjAtZGV2LjUwIgogIHRlc3Q6CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IGRldiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiB0ZXN0CiAgICAgIHNoYTI1NjogIjliMGRkOGUzNmFmNGE1YjE1NjkwMjk5NDlkNTBhNTJjYjJhMmEyZmRhYTIwY2ViYjk2ZTY2MDNiOWFlMjQxZjkiCiAgICAgIHVybDogImh0dHBzOi8vcHViLmRldiIKICAgIHNvdXJjZTogaG9zdGVkCiAgICB2ZXJzaW9uOiAiMS4yNC42IgpzZGtzOgogIGRhcnQ6ICI+PTMuMC4wIDw0LjAuMCIKJycnOwo=", "type": "text" }, + { + "path": "test/pubspecs.dart", + "data": + "Ly8vIEFuIGFydGlmaWNpYWxseSBjcmFmdGVkIGBwdWJzcGVjLnlhbWxgIGZpbGUgd2l0aDoKLy8vCi8vLyAqIEEgZGlyZWN0IG1haW4gcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgYSBjaGlsZCBvZiB0aGUgcHJvamVjdCBkaXJlY3RvcnkuCi8vLyAqIERhcnQgd29ya3NwYWNlcyBlbmFibGVkCmNvbnN0IHdvcmtzcGFjZVJvb3QgPSAnJycKbmFtZTogXwpkZXBlbmRlbmNpZXM6CiAgc2VydmVyOgogICAgcGF0aDogcGFja2FnZXMvc2VydmVyICAKd29ya3NwYWNlOgogIC0gcGFja2FnZXMvc2VydmVyCicnJzsKCi8vLyBBbiBhcnRpZmljaWFsbHkgY3JhZnRlZCBgcHVic3BlYy55YW1sYCBmaWxlIHdpdGg6Ci8vLwovLy8gKiBEYXJ0IHdvcmtzcGFjZXMgZW5hYmxlZApjb25zdCB3b3Jrc3BhY2VDaGlsZCA9ICcnJwpuYW1lOiBzZXJ2ZXIKcmVzb2x1dGlvbjogd29ya3NwYWNlCicnJzsK", + "type": "text" + }, { "path": "test/src/create_bundle_test.dart", "data": @@ -118,7 +286,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "test/src/create_external_packages_folder_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp0ZXN0L3Rlc3QuZGFydCc7CgppbXBvcnQgJy4uL3B1YnNwZWNfbG9ja3MuZGFydCc7Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2NyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXInLCAoKSB7CiAgICB0ZXN0KAogICAgICAnYnVuZGxlcyBleHRlcm5hbCBkZXBlbmRlbmNpZXMgd2l0aCBleHRlcm5hbCBkZXBlbmRlbmNpZXMnLAogICAgICAoKSBhc3luYyB7CiAgICAgICAgZmluYWwgcHJvamVjdERpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgICAgRmlsZShwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAncHVic3BlYy5sb2NrJykpCiAgICAgICAgICAgIC53cml0ZUFzU3RyaW5nU3luYyhmb29QYXRoKTsKICAgICAgICBmaW5hbCBjb3B5Q2FsbHMgPSA8U3RyaW5nPltdOwoKICAgICAgICBhd2FpdCBjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyKAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBEaXJlY3RvcnkocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJykpLAogICAgICAgICAgY29weVBhdGg6IChmcm9tLCB0bykgewogICAgICAgICAgICBjb3B5Q2FsbHMuYWRkKCckZnJvbSAtPiAkdG8nKTsKICAgICAgICAgICAgcmV0dXJuIEZ1dHVyZS52YWx1ZSgpOwogICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBmaW5hbCBmb29QYWNrYWdlRGlyZWN0b3J5ID0KICAgICAgICAgICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJy4uLy4uL2ZvbycpOwogICAgICAgIGZpbmFsIGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQgPSBwYXRoLmpvaW4oCiAgICAgICAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgICAgICAnYnVpbGQnLAogICAgICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgICAgICAgJ2ZvbycsCiAgICAgICAgKTsKCiAgICAgICAgZmluYWwgc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeSA9CiAgICAgICAgICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICcuLi8uLi9mb28yJyk7CiAgICAgICAgZmluYWwgc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeVRhcmdldCA9IHBhdGguam9pbigKICAgICAgICAgIHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAgICdidWlsZCcsCiAgICAgICAgICAnLmRhcnRfZnJvZ19wYXRoX2RlcGVuZGVuY2llcycsCiAgICAgICAgICAnc2Vjb25kX2ZvbycsCiAgICAgICAgKTsKICAgICAgICBleHBlY3QoY29weUNhbGxzLCBbCiAgICAgICAgICAnJGZvb1BhY2thZ2VEaXJlY3RvcnkgLT4gJGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQnLAogICAgICAgICAgJyRzZWNvbmRGb29QYWNrYWdlRGlyZWN0b3J5IC0+ICRzZWNvbmRGb29QYWNrYWdlRGlyZWN0b3J5VGFyZ2V0JywKICAgICAgICBdKTsKICAgICAgfSwKICAgICk7CgogICAgdGVzdCgKICAgICAgImRvbid0IGJ1bmRsZSBpbnRlcm5hbCBwYXRoIGRlcGVuZGVuY2llcyIsCiAgICAgICgpIGFzeW5jIHsKICAgICAgICBmaW5hbCBwcm9qZWN0RGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoKTsKICAgICAgICBGaWxlKHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLmxvY2snKSkKICAgICAgICAgICAgLndyaXRlQXNTdHJpbmdTeW5jKGZvb1BhdGhXaXRoSW50ZXJuYWxEZXBlbmRlbmN5KTsKICAgICAgICBmaW5hbCBjb3B5Q2FsbHMgPSA8U3RyaW5nPltdOwoKICAgICAgICBhd2FpdCBjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyKAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBEaXJlY3RvcnkocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJykpLAogICAgICAgICAgY29weVBhdGg6IChmcm9tLCB0bykgewogICAgICAgICAgICBjb3B5Q2FsbHMuYWRkKCckZnJvbSAtPiAkdG8nKTsKICAgICAgICAgICAgcmV0dXJuIEZ1dHVyZS52YWx1ZSgpOwogICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBmaW5hbCBmcm9tID0gcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJy4uLy4uL2ZvbycpOwogICAgICAgIGZpbmFsIHRvID0gcGF0aC5qb2luKAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICAgJ2J1aWxkJywKICAgICAgICAgICcuZGFydF9mcm9nX3BhdGhfZGVwZW5kZW5jaWVzJywKICAgICAgICAgICdmb28nLAogICAgICAgICk7CiAgICAgICAgZXhwZWN0KGNvcHlDYWxscywgWyckZnJvbSAtPiAkdG8nXSk7CiAgICAgIH0sCiAgICApOwogIH0pOwp9Cg==", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp0ZXN0L3Rlc3QuZGFydCc7CgppbXBvcnQgJy4uL3B1YnNwZWNfbG9ja3MuZGFydCc7Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2NyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXInLCAoKSB7CiAgICB0ZXN0KCdidW5kbGVzIGV4dGVybmFsIGRlcGVuZGVuY2llcyB3aXRoIGV4dGVybmFsIGRlcGVuZGVuY2llcycsICgpIGFzeW5jIHsKICAgICAgZmluYWwgcHJvamVjdERpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgIEZpbGUocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMubG9jaycpKQogICAgICAgICAgLndyaXRlQXNTdHJpbmdTeW5jKGZvb1BhdGgpOwogICAgICBmaW5hbCBjb3B5Q2FsbHMgPSA8U3RyaW5nPltdOwoKICAgICAgYXdhaXQgY3JlYXRlRXh0ZXJuYWxQYWNrYWdlc0ZvbGRlcigKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBEaXJlY3RvcnkocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJykpLAogICAgICAgIGNvcHlQYXRoOiAoZnJvbSwgdG8pIGFzeW5jIHsKICAgICAgICAgIGNvcHlDYWxscy5hZGQoJyRmcm9tIC0+ICR0bycpOwogICAgICAgICAgRmlsZSgKICAgICAgICAgICAgcGF0aC5qb2luKHRvLCAncHVic3BlY19vdmVycmlkZXMueWFtbCcpLAogICAgICAgICAgKS5jcmVhdGVTeW5jKHJlY3Vyc2l2ZTogdHJ1ZSk7CiAgICAgICAgfSwKICAgICAgKTsKCiAgICAgIGZpbmFsIGZvb1BhY2thZ2VEaXJlY3RvcnkgPSBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnLi4vLi4vZm9vJyk7CiAgICAgIGZpbmFsIGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQgPSBwYXRoLmpvaW4oCiAgICAgICAgcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICdidWlsZCcsCiAgICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgICAgICdmb28nLAogICAgICApOwoKICAgICAgZmluYWwgc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeSA9IHBhdGguam9pbigKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgICAgJy4uLy4uL2ZvbzInLAogICAgICApOwogICAgICBmaW5hbCBzZWNvbmRGb29QYWNrYWdlRGlyZWN0b3J5VGFyZ2V0ID0gcGF0aC5qb2luKAogICAgICAgIHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAnYnVpbGQnLAogICAgICAgICcuZGFydF9mcm9nX3BhdGhfZGVwZW5kZW5jaWVzJywKICAgICAgICAnc2Vjb25kX2ZvbycsCiAgICAgICk7CiAgICAgIGV4cGVjdChjb3B5Q2FsbHMsIFsKICAgICAgICAnJGZvb1BhY2thZ2VEaXJlY3RvcnkgLT4gJGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQnLAogICAgICAgICckc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeSAtPiAkc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeVRhcmdldCcsCiAgICAgIF0pOwogICAgfSk7CgogICAgdGVzdCgiZG9lc24ndCBidW5kbGUgaW50ZXJuYWwgcGF0aCBkZXBlbmRlbmNpZXMiLCAoKSBhc3luYyB7CiAgICAgIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygpOwogICAgICBGaWxlKHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLmxvY2snKSkKICAgICAgICAgIC53cml0ZUFzU3RyaW5nU3luYyhmb29QYXRoV2l0aEludGVybmFsRGVwZW5kZW5jeSk7CiAgICAgIGZpbmFsIGNvcHlDYWxscyA9IDxTdHJpbmc+W107CgogICAgICBhd2FpdCBjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyKAogICAgICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnksCiAgICAgICAgYnVpbGREaXJlY3Rvcnk6IERpcmVjdG9yeShwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnYnVpbGQnKSksCiAgICAgICAgY29weVBhdGg6IChmcm9tLCB0bykgYXN5bmMgewogICAgICAgICAgY29weUNhbGxzLmFkZCgnJGZyb20gLT4gJHRvJyk7CiAgICAgICAgICBGaWxlKAogICAgICAgICAgICBwYXRoLmpvaW4odG8sICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgICAgICAgICApLmNyZWF0ZVN5bmMocmVjdXJzaXZlOiB0cnVlKTsKICAgICAgICB9LAogICAgICApOwoKICAgICAgZmluYWwgZnJvbSA9IHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICcuLi8uLi9mb28nKTsKICAgICAgZmluYWwgdG8gPSBwYXRoLmpvaW4oCiAgICAgICAgcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICdidWlsZCcsCiAgICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgICAgICdmb28nLAogICAgICApOwogICAgICBleHBlY3QoY29weUNhbGxzLCBbJyRmcm9tIC0+ICR0byddKTsKICAgIH0pOwogIH0pOwp9Cg==", "type": "text" }, { @@ -127,6 +295,12 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnRlc3QvdGVzdC5kYXJ0JzsKCmNsYXNzIF9GYWtlSG9va0NvbnRleHQgZXh0ZW5kcyBGYWtlIGltcGxlbWVudHMgSG9va0NvbnRleHQgewogIF9GYWtlSG9va0NvbnRleHQoe0xvZ2dlcj8gbG9nZ2VyfSkgOiBfbG9nZ2VyID0gbG9nZ2VyID8/IF9Nb2NrTG9nZ2VyKCk7CgogIGZpbmFsIExvZ2dlciBfbG9nZ2VyOwoKICB2YXIgX3ZhcnMgPSA8U3RyaW5nLCBkeW5hbWljPnt9OwoKICBAb3ZlcnJpZGUKICBNYXA8U3RyaW5nLCBkeW5hbWljPiBnZXQgdmFycyA9PiBfdmFyczsKCiAgQG92ZXJyaWRlCiAgc2V0IHZhcnMoTWFwPFN0cmluZywgZHluYW1pYz4gdmFsdWUpID0+IF92YXJzID0gdmFsdWU7CgogIEBvdmVycmlkZQogIExvZ2dlciBnZXQgbG9nZ2VyID0+IF9sb2dnZXI7Cn0KCmNsYXNzIF9Nb2NrTG9nZ2VyIGV4dGVuZHMgTW9jayBpbXBsZW1lbnRzIExvZ2dlciB7fQoKY2xhc3MgX01vY2tQcm9ncmVzcyBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBQcm9ncmVzcyB7fQoKdm9pZCBtYWluKCkgewogIGdyb3VwKCdkYXJ0UHViR2V0JywgKCkgewogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwoKICAgIGNvbnN0IHByb2Nlc3NJZCA9IDQyOwogICAgZmluYWwgcHJvY2Vzc1Jlc3VsdCA9IFByb2Nlc3NSZXN1bHQoCiAgICAgIHByb2Nlc3NJZCwKICAgICAgRXhpdENvZGUuc3VjY2Vzcy5jb2RlLAogICAgICAnJywKICAgICAgJycsCiAgICApOwoKICAgIHNldFVwKCgpIHsKICAgICAgbG9nZ2VyID0gX01vY2tMb2dnZXIoKTsKICAgICAgY29udGV4dCA9IF9GYWtlSG9va0NvbnRleHQobG9nZ2VyOiBsb2dnZXIpOwoKICAgICAgd2hlbigoKSA9PiBsb2dnZXIucHJvZ3Jlc3MoYW55KCkpKS50aGVuUmV0dXJuKF9Nb2NrUHJvZ3Jlc3MoKSk7CiAgICB9KTsKCiAgICB0ZXN0KCdjb21wbGV0ZXMgd2hlbiBwcm9jZXNzIHN1Y2NlZWRzJywgKCkgYXN5bmMgewogICAgICBmaW5hbCBleGl0Q2FsbHMgPSA8aW50PltdOwoKICAgICAgYXdhaXQgZGFydFB1YkdldCgKICAgICAgICBjb250ZXh0LAogICAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6ICcuJywKICAgICAgICBydW5Qcm9jZXNzOiAoCiAgICAgICAgICBleGVjdXRhYmxlLAogICAgICAgICAgYXJncywgewogICAgICAgICAgU3RyaW5nPyB3b3JraW5nRGlyZWN0b3J5LAogICAgICAgICAgYm9vbD8gcnVuSW5TaGVsbCwKICAgICAgICB9KSBhc3luYyB7CiAgICAgICAgICBleHBlY3QoZXhlY3V0YWJsZSwgZXF1YWxzKCdkYXJ0JykpOwogICAgICAgICAgZXhwZWN0KGFyZ3MsIGVxdWFscyhbJ3B1YicsICdnZXQnXSkpOwogICAgICAgICAgZXhwZWN0KHdvcmtpbmdEaXJlY3RvcnksIGVxdWFscygnLicpKTsKICAgICAgICAgIGV4cGVjdChydW5JblNoZWxsLCBpc1RydWUpOwogICAgICAgICAgcmV0dXJuIHByb2Nlc3NSZXN1bHQ7CiAgICAgICAgfSwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICApOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgfSk7CgogICAgdGVzdCgnZXhpdHMgd2hlbiBwcm9jZXNzIGZhaWxzJywgKCkgYXN5bmMgewogICAgICBjb25zdCBlcnJvciA9ICdvb3BzIHNvbWV0aGluZyB3ZW50IHdyb25nJzsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKCiAgICAgIGZpbmFsIHByb2Nlc3NSZXN1bHQgPSBQcm9jZXNzUmVzdWx0KAogICAgICAgIHByb2Nlc3NJZCwKICAgICAgICBFeGl0Q29kZS5zb2Z0d2FyZS5jb2RlLAogICAgICAgICcnLAogICAgICAgIGVycm9yLAogICAgICApOwoKICAgICAgYXdhaXQgZGFydFB1YkdldCgKICAgICAgICBjb250ZXh0LAogICAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6ICcuJywKICAgICAgICBydW5Qcm9jZXNzOiAoCiAgICAgICAgICBleGVjdXRhYmxlLAogICAgICAgICAgYXJncywgewogICAgICAgICAgU3RyaW5nPyB3b3JraW5nRGlyZWN0b3J5LAogICAgICAgICAgYm9vbD8gcnVuSW5TaGVsbCwKICAgICAgICB9KSBhc3luYyB7CiAgICAgICAgICByZXR1cm4gcHJvY2Vzc1Jlc3VsdDsKICAgICAgICB9LAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbRXhpdENvZGUuc29mdHdhcmUuY29kZV0pKTsKICAgICAgdmVyaWZ5KCgpID0+IGxvZ2dlci5lcnIoZXJyb3IpKS5jYWxsZWQoMSk7CiAgICB9KTsKCiAgICB0ZXN0KCdleGl0cyB3aGVuIFByb2Nlc3NFeGNlcHRpb24gb2NjdXJzJywgKCkgYXN5bmMgewogICAgICBjb25zdCBlcnJvciA9ICdvb3BzIHNvbWV0aGluZyB3ZW50IHdyb25nJzsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgZGFydFB1YkdldCgKICAgICAgICBjb250ZXh0LAogICAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6ICcuJywKICAgICAgICBydW5Qcm9jZXNzOiAoCiAgICAgICAgICBleGVjdXRhYmxlLAogICAgICAgICAgYXJncywgewogICAgICAgICAgU3RyaW5nPyB3b3JraW5nRGlyZWN0b3J5LAogICAgICAgICAgYm9vbD8gcnVuSW5TaGVsbCwKICAgICAgICB9KSBhc3luYyB7CiAgICAgICAgICB0aHJvdyBQcm9jZXNzRXhjZXB0aW9uKAogICAgICAgICAgICAnZGFydCcsCiAgICAgICAgICAgIFsncHViJywgJ2dldCddLAogICAgICAgICAgICBlcnJvciwKICAgICAgICAgICAgRXhpdENvZGUuc29mdHdhcmUuY29kZSwKICAgICAgICAgICk7CiAgICAgICAgfSwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICApOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBlcXVhbHMoW0V4aXRDb2RlLnNvZnR3YXJlLmNvZGVdKSk7CiAgICAgIHZlcmlmeSgoKSA9PiBsb2dnZXIuZXJyKGVycm9yKSkuY2FsbGVkKDEpOwogICAgfSk7CiAgfSk7Cn0K", "type": "text" }, + { + "path": "test/src/disable_workspace_resolution_test.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKY2xhc3MgX01vY2tIb29rQ29udGV4dCBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBIb29rQ29udGV4dCB7fQoKY2xhc3MgX01vY2tMb2dnZXIgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgTG9nZ2VyIHt9Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2Rpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uJywgKCkgewogICAgbGF0ZSBMaXN0PGludD4gZXhpdENhbGxzOwogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwogICAgbGF0ZSBEaXJlY3RvcnkgcHJvamVjdERpcmVjdG9yeTsKCiAgICBzZXRVcCgoKSB7CiAgICAgIGV4aXRDYWxscyA9IFtdOwogICAgICBjb250ZXh0ID0gX01vY2tIb29rQ29udGV4dCgpOwogICAgICBsb2dnZXIgPSBfTW9ja0xvZ2dlcigpOwogICAgICBwcm9qZWN0RGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoJ3Byb2plY3QnKTsKCiAgICAgIHdoZW4oKCkgPT4gY29udGV4dC5sb2dnZXIpLnRoZW5SZXR1cm4obG9nZ2VyKTsKCiAgICAgIGFkZFRlYXJEb3duKCgpID0+IHByb2plY3REaXJlY3RvcnkuZGVsZXRlKCkuaWdub3JlKCkpOwogICAgfSk7CgogICAgZ3JvdXAoJ3doZW4gcHVic3BlY19vdmVycmlkZXMueWFtbCBkb2VzIG5vdCBleGlzdCcsICgpIHsKICAgICAgdGVzdCgnYWRkcyByZXNvbHV0aW9uOiBudWxsJywgKCkgewogICAgICAgIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgY29udGV4dCwKICAgICAgICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBjb250ZW50cyA9IHByb2plY3REaXJlY3RvcnkubGlzdFN5bmMoKTsKICAgICAgICBleHBlY3QoY29udGVudHMsIGhhc0xlbmd0aCgxKSk7CiAgICAgICAgZmluYWwgcHVic3BlY092ZXJyaWRlcyA9IGNvbnRlbnRzLmZpcnN0IGFzIEZpbGU7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgcHVic3BlY092ZXJyaWRlcy5yZWFkQXNTdHJpbmdTeW5jKCksCiAgICAgICAgICBlcXVhbHMoJ3Jlc29sdXRpb246IG51bGwnKSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWNfb3ZlcnJpZGVzLnlhbWwgZXhpc3RzJywgKCkgewogICAgICBjb25zdCBvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50ID0gJycnCmRlcGVuZGVuY3lfb3ZlcnJpZGVzOgogIGZvbzoKICAgIHBhdGg6IC4vcGF0aC90by9mb28nJyc7CgogICAgICBzZXRVcCgoKSB7CiAgICAgICAgRmlsZSgKICAgICAgICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgICAgICAgKS53cml0ZUFzU3RyaW5nU3luYyhvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50KTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdhZGRzIHJlc29sdXRpb246IG51bGwnLCAoKSB7CiAgICAgICAgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICApOwogICAgICAgIGZpbmFsIGNvbnRlbnRzID0gcHJvamVjdERpcmVjdG9yeS5saXN0U3luYygpOwogICAgICAgIGV4cGVjdChjb250ZW50cywgaGFzTGVuZ3RoKDEpKTsKICAgICAgICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gY29udGVudHMuZmlyc3QgYXMgRmlsZTsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBwdWJzcGVjT3ZlcnJpZGVzLnJlYWRBc1N0cmluZ1N5bmMoKSwKICAgICAgICAgIGVxdWFscygKICAgICAgICAgICAgJycnCiRvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50CnJlc29sdXRpb246IG51bGwKJycnLAogICAgICAgICAgKSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHVuYWJsZSB0byByZWFkIHB1YnNwZWNfb3ZlcnJpZGVzJywgKCkgewogICAgICBzZXRVcCgoKSB7CiAgICAgICAgZmluYWwgcHVic3BlY092ZXJyaWRlcyA9IEZpbGUoCiAgICAgICAgICBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAncHVic3BlY19vdmVycmlkZXMueWFtbCcpLAogICAgICAgICkuLmNyZWF0ZVN5bmMoKTsKICAgICAgICBQcm9jZXNzLnJ1blN5bmMoJ2NobW9kJywgWycwMDAnLCBwdWJzcGVjT3ZlcnJpZGVzLnBhdGhdKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdleGl0cyB3aXRoIGVycm9yJywgKCkgewogICAgICAgIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgY29udGV4dCwKICAgICAgICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBjb250ZW50cyA9IHByb2plY3REaXJlY3RvcnkubGlzdFN5bmMoKTsKICAgICAgICBleHBlY3QoY29udGVudHMsIGhhc0xlbmd0aCgxKSk7CiAgICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgICAgIHZlcmlmeSgKICAgICAgICAgICgpID0+IGxvZ2dlci5lcnIoYW55KHRoYXQ6IGNvbnRhaW5zKCdQZXJtaXNzaW9uIGRlbmllZCcpKSksCiAgICAgICAgKS5jYWxsZWQoMSk7CiAgICAgIH0pOwogICAgfSk7CiAgfSk7Cn0K", + "type": "text" + }, { "path": "test/src/exit_overrides_test.dart", "data": @@ -142,7 +316,13 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "test/src/pubspec_lock/pubspec_lock_test.dart", "data": - "Ly8gaWdub3JpbmcgZm9yIHRlc3RpbmcgcHVycG9zZXMKLy8gaWdub3JlX2Zvcl9maWxlOiBwcmVmZXJfY29uc3RfY29uc3RydWN0b3JzCgppbXBvcnQgJ3BhY2thZ2U6ZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzL3NyYy9wdWJzcGVjX2xvY2svcHVic3BlY19sb2NrLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6eWFtbC95YW1sLmRhcnQnOwoKdm9pZCBtYWluKCkgewogIGdyb3VwKCckUHVic3BlY0xvY2snLCAoKSB7CiAgICBncm91cCgnZnJvbVN0cmluZycsICgpIHsKICAgICAgdGVzdCgncGFyc2VzIGNvcnJlY3RseScsICgpIHsKICAgICAgICBmaW5hbCBwdWJzcGVjTG9jayA9IFB1YnNwZWNMb2NrLmZyb21TdHJpbmcoX3B1YnNwZWNMb2NrQ29udGVudCk7CgogICAgICAgIGV4cGVjdCgKICAgICAgICAgIHB1YnNwZWNMb2NrLnBhY2thZ2VzLAogICAgICAgICAgZXF1YWxzKAogICAgICAgICAgICBjb25zdCBbCiAgICAgICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlKAogICAgICAgICAgICAgICAgbmFtZTogJ3ZlcnlfZ29vZF90ZXN0X3J1bm5lcicsCiAgICAgICAgICAgICAgICB0eXBlOiBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5kaXJlY3RNYWluLAogICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlKAogICAgICAgICAgICAgICAgbmFtZTogJ3ZlcnlfZ29vZF9hbmFseXNpcycsCiAgICAgICAgICAgICAgICB0eXBlOiBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5kaXJlY3REZXYsCiAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgICAgICAgICBuYW1lOiAneWFtbCcsCiAgICAgICAgICAgICAgICB0eXBlOiBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS50cmFuc2l0aXZlLAogICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlKAogICAgICAgICAgICAgICAgbmFtZTogJ3BhdGgnLAogICAgICAgICAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0T3ZlcnJpZGRlbiwKICAgICAgICAgICAgICApLAogICAgICAgICAgICAgIFB1YnNwZWNMb2NrUGFja2FnZSgKICAgICAgICAgICAgICAgIG5hbWU6ICdmb28nLAogICAgICAgICAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiwKICAgICAgICAgICAgICAgIHBhdGhEZXNjcmlwdGlvbjogUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oCiAgICAgICAgICAgICAgICAgIHBhdGg6ICdwYWNrYWdlcy9mb28nLAogICAgICAgICAgICAgICAgICByZWxhdGl2ZTogdHJ1ZSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgICAgICAgICBuYW1lOiAneWFtbDInLAogICAgICAgICAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUudHJhbnNpdGl2ZSwKICAgICAgICAgICAgICApLAogICAgICAgICAgICBdLAogICAgICAgICAgKSwKICAgICAgICApOwogICAgICB9KTsKCiAgICAgIHRlc3QoJ3Rocm93cyBhICRQdWJzcGVjTG9ja1BhcnNlRXhjZXB0aW9uIHdoZW4gY29udGVudCBpcyBlbXB0eScsICgpIHsKICAgICAgICBleHBlY3QoCiAgICAgICAgICAoKSA9PiBQdWJzcGVjTG9jay5mcm9tU3RyaW5nKCcnKSwKICAgICAgICAgIHRocm93c0EoaXNBPFB1YnNwZWNMb2NrUGFyc2VFeGNlcHRpb24+KCkpLAogICAgICAgICk7CiAgICAgIH0pOwoKICAgICAgdGVzdCgncmV0dXJucyBlbXB0eSBQdWJzcGVjTG9jayB3aGVuIGNvbnRlbnQgaGFzIG5vIHBhY2thZ2VzIGVudHJ5JywgKCkgewogICAgICAgIGZpbmFsIHB1YnNwZWNMb2NrID0gUHVic3BlY0xvY2suZnJvbVN0cmluZyhfZW1wdHlQdWJzcGVjTG9ja0NvbnRlbnQpOwogICAgICAgIGV4cGVjdChwdWJzcGVjTG9jay5wYWNrYWdlcywgaXNFbXB0eSk7CiAgICAgIH0pOwogICAgfSk7CiAgfSk7CgogIGdyb3VwKCckUHVic3BlY0xvY2tQYWNrYWdlJywgKCkgewogICAgdGVzdCgnY2FuIGJlIGluc3RhbnRpYXRlZCcsICgpIHsKICAgICAgZXhwZWN0KAogICAgICAgIFB1YnNwZWNMb2NrUGFja2FnZSgKICAgICAgICAgIG5hbWU6ICdmb28nLAogICAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiwKICAgICAgICApLAogICAgICAgIGlzQTxQdWJzcGVjTG9ja1BhY2thZ2U+KCksCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdzdXBwb3J0cyB2YWx1ZSBlcXVhbGl0eScsICgpIHsKICAgICAgZmluYWwgcGFja2FnZTEgPSBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgbmFtZTogJ2ZvbycsCiAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiwKICAgICAgKTsKICAgICAgZmluYWwgcGFja2FnZTIgPSBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgbmFtZTogJ2ZvbycsCiAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiwKICAgICAgKTsKICAgICAgZmluYWwgcGFja2FnZTMgPSBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgbmFtZTogJ2JhcicsCiAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUudHJhbnNpdGl2ZSwKICAgICAgKTsKCiAgICAgIGV4cGVjdChwYWNrYWdlMSwgZXF1YWxzKHBhY2thZ2UyKSk7CiAgICAgIGV4cGVjdChwYWNrYWdlMSwgaXNOb3QoZXF1YWxzKHBhY2thZ2UzKSkpOwogICAgICBleHBlY3QocGFja2FnZTIsIGlzTm90KGVxdWFscyhwYWNrYWdlMykpKTsKICAgIH0pOwogIH0pOwoKICBncm91cCgnJFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlJywgKCkgewogICAgZ3JvdXAoJ3BhcnNlJywgKCkgewogICAgICB0ZXN0KCdwYXJzZXMgc3VjY2Vzc2Z1bGx5IGBkaXJlY3QgbWFpbmAnLCAoKSB7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUucGFyc2UoJ2RpcmVjdCBtYWluJyksCiAgICAgICAgICBlcXVhbHMoUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiksCiAgICAgICAgKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdwYXJzZXMgc3VjY2Vzc2Z1bGx5IGBkaXJlY3QgZGV2YCcsICgpIHsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5wYXJzZSgnZGlyZWN0IGRldicpLAogICAgICAgICAgZXF1YWxzKFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlLmRpcmVjdERldiksCiAgICAgICAgKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdwYXJzZXMgc3VjY2Vzc2Z1bGx5IGBkaXJlY3Qgb3ZlcnJpZGRlbmAnLCAoKSB7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUucGFyc2UoJ2RpcmVjdCBvdmVycmlkZGVuJyksCiAgICAgICAgICBlcXVhbHMoUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0T3ZlcnJpZGRlbiksCiAgICAgICAgKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdwYXJzZXMgc3VjY2Vzc2Z1bGx5IGB0cmFuc2l0aXZlYCcsICgpIHsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5wYXJzZSgndHJhbnNpdGl2ZScpLAogICAgICAgICAgZXF1YWxzKFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlLnRyYW5zaXRpdmUpLAogICAgICAgICk7CiAgICAgIH0pOwoKICAgICAgdGVzdCgndGhyb3dzIGEgJEFyZ3VtZW50RXJyb3Igd2hlbiB0eXBlIGlzIGludmFsaWQnLCAoKSB7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgKCkgPT4gUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUucGFyc2UoJ2ludmFsaWQnKSwKICAgICAgICAgIHRocm93c0EoaXNBPEFyZ3VtZW50RXJyb3I+KCkpLAogICAgICAgICk7CiAgICAgIH0pOwogICAgfSk7CiAgfSk7CgogIGdyb3VwKCckUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24nLCAoKSB7CiAgICB0ZXN0KCdjYW4gYmUgaW5zdGFudGlhdGVkJywgKCkgewogICAgICBleHBlY3QoCiAgICAgICAgUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oCiAgICAgICAgICBwYXRoOiAncGFja2FnZXMvZm9vJywKICAgICAgICAgIHJlbGF0aXZlOiB0cnVlLAogICAgICAgICksCiAgICAgICAgaXNBPFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uPigpLAogICAgICApOwogICAgfSk7CgogICAgdGVzdCgnc3VwcG9ydHMgdmFsdWUgZXF1YWxpdHknLCAoKSB7CiAgICAgIGZpbmFsIGRlc2NyaXB0aW9uMSA9IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uKAogICAgICAgIHBhdGg6ICdwYWNrYWdlcy9mb28nLAogICAgICAgIHJlbGF0aXZlOiB0cnVlLAogICAgICApOwogICAgICBmaW5hbCBkZXNjcmlwdGlvbjIgPSBQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbigKICAgICAgICBwYXRoOiAncGFja2FnZXMvZm9vJywKICAgICAgICByZWxhdGl2ZTogdHJ1ZSwKICAgICAgKTsKICAgICAgZmluYWwgZGVzY3JpcHRpb24zID0gUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oCiAgICAgICAgcGF0aDogJ3BhY2thZ2VzL2JhcicsCiAgICAgICAgcmVsYXRpdmU6IHRydWUsCiAgICAgICk7CiAgICAgIGZpbmFsIGRlc2NyaXB0aW9uNCA9IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uKAogICAgICAgIHBhdGg6ICdwYWNrYWdlcy9mb28nLAogICAgICAgIHJlbGF0aXZlOiBmYWxzZSwKICAgICAgKTsKCiAgICAgIGV4cGVjdChkZXNjcmlwdGlvbjEsIGVxdWFscyhkZXNjcmlwdGlvbjIpKTsKICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uMSwgaXNOb3QoZXF1YWxzKGRlc2NyaXB0aW9uMykpKTsKICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uMSwgaXNOb3QoZXF1YWxzKGRlc2NyaXB0aW9uNCkpKTsKICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uMywgaXNOb3QoZXF1YWxzKGRlc2NyaXB0aW9uNCkpKTsKICAgIH0pOwoKICAgIGdyb3VwKCd0cnlQYXJzZScsICgpIHsKICAgICAgdGVzdCgncGFyc2VzJywgKCkgewogICAgICAgIGZpbmFsIGRhdGEgPSBsb2FkWWFtbCgKICAgICAgICAgICcnJwpwYXRoOiAicGFja2FnZXMvZm9vIgpyZWxhdGl2ZTogdHJ1ZQogICAgICAgICAgICAnJycsCiAgICAgICAgKSBhcyBZYW1sTWFwOwoKICAgICAgICBmaW5hbCBkZXNjcmlwdGlvbiA9IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uLnRyeVBhcnNlKGRhdGEpOwoKICAgICAgICBleHBlY3QoCiAgICAgICAgICBkZXNjcmlwdGlvbiwKICAgICAgICAgIGVxdWFscygKICAgICAgICAgICAgUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oCiAgICAgICAgICAgICAgcGF0aDogJ3BhY2thZ2VzL2ZvbycsCiAgICAgICAgICAgICAgcmVsYXRpdmU6IHRydWUsCiAgICAgICAgICAgICksCiAgICAgICAgICApLAogICAgICAgICk7CiAgICAgIH0pOwoKICAgICAgZ3JvdXAoJ3JldHVybnMgbnVsbCcsICgpIHsKICAgICAgICB0ZXN0KCd3aGVuIG1pc3NpbmcgInBhdGgiJywgKCkgewogICAgICAgICAgZmluYWwgZGF0YSA9IGxvYWRZYW1sKAogICAgICAgICAgICAnJycKcmVsYXRpdmU6IHRydWUKICAgICAgICAgICAgJycnLAogICAgICAgICAgKSBhcyBZYW1sTWFwOwoKICAgICAgICAgIGZpbmFsIGRlc2NyaXB0aW9uID0gUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24udHJ5UGFyc2UoZGF0YSk7CgogICAgICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uLCBpc051bGwpOwogICAgICAgIH0pOwoKICAgICAgICB0ZXN0KCd3aGVuICJwYXRoIiBpcyBub3QgYSBTdHJpbmcnLCAoKSB7CiAgICAgICAgICBmaW5hbCBkYXRhID0gbG9hZFlhbWwoCiAgICAgICAgICAgICcnJwpwYXRoOiAxCnJlbGF0aXZlOiB0cnVlCiAgICAgICAgICAgICcnJywKICAgICAgICAgICkgYXMgWWFtbE1hcDsKCiAgICAgICAgICBmaW5hbCBkZXNjcmlwdGlvbiA9IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uLnRyeVBhcnNlKGRhdGEpOwoKICAgICAgICAgIGV4cGVjdChkZXNjcmlwdGlvbiwgaXNOdWxsKTsKICAgICAgICB9KTsKCiAgICAgICAgdGVzdCgnd2hlbiBtaXNzaW5nICJyZWxhdGl2ZSInLCAoKSB7CiAgICAgICAgICBmaW5hbCBkYXRhID0gbG9hZFlhbWwoCiAgICAgICAgICAgICcnJwpwYXRoOiAicGFja2FnZXMvZm9vIgogICAgICAgICAgICAnJycsCiAgICAgICAgICApIGFzIFlhbWxNYXA7CgogICAgICAgICAgZmluYWwgZGVzY3JpcHRpb24gPSBQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbi50cnlQYXJzZShkYXRhKTsKCiAgICAgICAgICBleHBlY3QoZGVzY3JpcHRpb24sIGlzTnVsbCk7CiAgICAgICAgfSk7CgogICAgICAgIHRlc3QoJ3doZW4gInJlbGF0aXZlIiBpcyBub3QgYSBib29sJywgKCkgewogICAgICAgICAgZmluYWwgZGF0YSA9IGxvYWRZYW1sKAogICAgICAgICAgICAnJycKcGF0aDogInBhY2thZ2VzL2ZvbyIKcmVsYXRpdmU6IDUKICAgICAgICAgICAgJycnLAogICAgICAgICAgKSBhcyBZYW1sTWFwOwoKICAgICAgICAgIGZpbmFsIGRlc2NyaXB0aW9uID0gUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24udHJ5UGFyc2UoZGF0YSk7CgogICAgICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uLCBpc051bGwpOwogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0pOwogIH0pOwp9CgovLy8gQW4gZXhhbXBsZSBwdWJzcGVjLmxvY2sgY29udGVudCB1c2VkIHRvIHRlc3QgdGhlIFtQdWJzcGVjTG9ja10gY2xhc3MuCi8vLwovLy8gSXQgaGFzIGJlZW4gYXJ0aWZpY2lhbGx5IGNyYWZ0ZWQgdG8gaW5jbHVkZToKLy8vIC0gb25lIHB1YiBob3N0ZWQgZGlyZWN0IG1haW4gcGFja2FnZSBlbnRyeQovLy8gLSBvbmUgcHViIGhvc3RlZCBkaXJlY3QgZGV2IHBhY2thZ2UgZW50cnkKLy8vIC0gb25lIHB1YiBob3N0ZWQgdHJhbnNpdGl2ZSBwYWNrYWdlIGVudHJ5Ci8vLyAtIG9uZSBwdWIgaG9zdGVkIG92ZXJyaWRkZW4gcGFja2FnZSBlbnRyeQovLy8gLSBvbmUgcGF0aCBkaXJlY3QgbWFpbiBwYWNrYWdlIGVudHJ5Ci8vLyAtIG9uZSBub3QgcHViIGhvc3RlZCB0cmFuc2l0aXZlIHBhY2thZ2UgZW50cnkKLy8vIC0gb25lIGludmFsaWQgcGFja2FnZSBlbnRyeQpjb25zdCBfcHVic3BlY0xvY2tDb250ZW50ID0gJycnCnBhY2thZ2VzOgogIHZlcnlfZ29vZF90ZXN0X3J1bm5lcjoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3QgbWFpbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiB2ZXJ5X2dvb2RfdGVzdF9ydW5uZXIKICAgICAgc2hhMjU2OiAiNGQ0MWU1ZDc2NzdkMjU5YjlhMTU5OWM3ODY0NWFjMmQzNmJjMmJkNmZmNzc3MzUwN2JjYjBiYWI0MTQxN2ZlMiIKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIwLjEuMiIKICB2ZXJ5X2dvb2RfYW5hbHlzaXM6CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IGRldiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiB2ZXJ5X2dvb2RfYW5hbHlzaXMKICAgICAgc2hhMjU2OiAiOWFlN2YzYTNiZDU3NjRmYjAyMWIzMzVjYTI4YTM0ZjA0MGNkMGFiNmVlYzAwYTFiMjEzYjQ0NWRhZTU4YTRiOCIKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICI1LjEuMCIKICB5YW1sOgogICAgZGVwZW5kZW5jeTogdHJhbnNpdGl2ZQogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IHlhbWwKICAgICAgc2hhMjU2OiAiNzU3Njk1MDFlYTM0ODlmY2E1NjYwMWZmMzM0NTRmZTQ1NTA3ZWEzYmZiMDE0MTYxYWJjM2I0M2FlMjU5ODlkNSIKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIzLjEuMiIKICBwYXRoOgogICAgZGVwZW5kZW5jeTogImRpcmVjdCBvdmVycmlkZGVuIgogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IHBhdGgKICAgICAgc2hhMjU2OiAiMDg3Y2U0OWMzZjBkYzM5MTgwYmVmZWZjNjBmZGI0YWNkOGY4NjIwZTU2ODJmZTI0NzZhZmQwYjM2ODhiYjRhZiIKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIxLjkuMCIKICBmb286CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IG1haW4iCiAgICBkZXNjcmlwdGlvbjoKICAgICAgcGF0aDogInBhY2thZ2VzL2ZvbyIKICAgICAgcmVsYXRpdmU6IHRydWUKICAgIHNvdXJjZTogcGF0aAogICAgdmVyc2lvbjogIjEuMC4wKzEiCiAgeWFtbDI6CiAgICBkZXBlbmRlbmN5OiB0cmFuc2l0aXZlCiAgICBkZXNjcmlwdGlvbjoKICAgICAgbmFtZTogeWFtbAogICAgICBzaGEyNTY6ICI3NTc2OTUwMWVhMzQ4OWZjYTU2NjAxZmYzMzQ1NGZlNDU1MDdlYTNiZmIwMTQxNjFhYmMzYjQzYWUyNTk4OWQ1IgogICAgICB1cmw6ICJodHRwczovL25vdC1wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIzLjEuMiIKICBiYWRfcGFja2FnZToKICAgIG5vdF9kZXBlbmRlbmN5OiAiYmFkIgpzZGtzOgogIGRhcnQ6ICI+PTMuMS4wIDw0LjAuMCIKCicnJzsKCi8vLyBBIHZhbGlkIHB1YnNwZWMgbG9jayBmaWxlIHdpdGggbm8gcGFja2FnZXMuCmNvbnN0IF9lbXB0eVB1YnNwZWNMb2NrQ29udGVudCA9ICcnJwpzZGtzOgogIGRhcnQ6ICI+PTMuMS4wIDw0LjAuMCIKCicnJzsK", + "Ly8gaWdub3JpbmcgZm9yIHRlc3RpbmcgcHVycG9zZXMKLy8gaWdub3JlX2Zvcl9maWxlOiBwcmVmZXJfY29uc3RfY29uc3RydWN0b3JzCgppbXBvcnQgJ3BhY2thZ2U6ZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzL3NyYy9wdWJzcGVjX2xvY2svcHVic3BlY19sb2NrLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6eWFtbC95YW1sLmRhcnQnOwoKdm9pZCBtYWluKCkgewogIGdyb3VwKCckUHVic3BlY0xvY2snLCAoKSB7CiAgICBncm91cCgnZnJvbVN0cmluZycsICgpIHsKICAgICAgdGVzdCgncGFyc2VzIGNvcnJlY3RseScsICgpIHsKICAgICAgICBmaW5hbCBwdWJzcGVjTG9jayA9IFB1YnNwZWNMb2NrLmZyb21TdHJpbmcoX3B1YnNwZWNMb2NrQ29udGVudCk7CgogICAgICAgIGV4cGVjdCgKICAgICAgICAgIHB1YnNwZWNMb2NrLnBhY2thZ2VzLAogICAgICAgICAgZXF1YWxzKAogICAgICAgICAgICBjb25zdCBbCiAgICAgICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlKAogICAgICAgICAgICAgICAgbmFtZTogJ3ZlcnlfZ29vZF90ZXN0X3J1bm5lcicsCiAgICAgICAgICAgICAgICB0eXBlOiBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5kaXJlY3RNYWluLAogICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlKAogICAgICAgICAgICAgICAgbmFtZTogJ3ZlcnlfZ29vZF9hbmFseXNpcycsCiAgICAgICAgICAgICAgICB0eXBlOiBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5kaXJlY3REZXYsCiAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgICAgICAgICBuYW1lOiAneWFtbCcsCiAgICAgICAgICAgICAgICB0eXBlOiBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS50cmFuc2l0aXZlLAogICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlKAogICAgICAgICAgICAgICAgbmFtZTogJ3BhdGgnLAogICAgICAgICAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0T3ZlcnJpZGRlbiwKICAgICAgICAgICAgICApLAogICAgICAgICAgICAgIFB1YnNwZWNMb2NrUGFja2FnZSgKICAgICAgICAgICAgICAgIG5hbWU6ICdmb28nLAogICAgICAgICAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiwKICAgICAgICAgICAgICAgIHBhdGhEZXNjcmlwdGlvbjogUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oCiAgICAgICAgICAgICAgICAgIHBhdGg6ICdwYWNrYWdlcy9mb28nLAogICAgICAgICAgICAgICAgICByZWxhdGl2ZTogdHJ1ZSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgICAgICAgICBuYW1lOiAneWFtbDInLAogICAgICAgICAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUudHJhbnNpdGl2ZSwKICAgICAgICAgICAgICApLAogICAgICAgICAgICBdLAogICAgICAgICAgKSwKICAgICAgICApOwogICAgICB9KTsKCiAgICAgIHRlc3QoJ3Rocm93cyBhICRQdWJzcGVjTG9ja1BhcnNlRXhjZXB0aW9uIHdoZW4gY29udGVudCBpcyBlbXB0eScsICgpIHsKICAgICAgICBleHBlY3QoCiAgICAgICAgICAoKSA9PiBQdWJzcGVjTG9jay5mcm9tU3RyaW5nKCcnKSwKICAgICAgICAgIHRocm93c0EoaXNBPFB1YnNwZWNMb2NrUGFyc2VFeGNlcHRpb24+KCkpLAogICAgICAgICk7CiAgICAgIH0pOwoKICAgICAgdGVzdCgncmV0dXJucyBlbXB0eSBQdWJzcGVjTG9jayB3aGVuIGNvbnRlbnQgaGFzIG5vIHBhY2thZ2VzIGVudHJ5JywgKCkgewogICAgICAgIGZpbmFsIHB1YnNwZWNMb2NrID0gUHVic3BlY0xvY2suZnJvbVN0cmluZyhfZW1wdHlQdWJzcGVjTG9ja0NvbnRlbnQpOwogICAgICAgIGV4cGVjdChwdWJzcGVjTG9jay5wYWNrYWdlcywgaXNFbXB0eSk7CiAgICAgIH0pOwogICAgfSk7CiAgfSk7CgogIGdyb3VwKCckUHVic3BlY0xvY2tQYWNrYWdlJywgKCkgewogICAgdGVzdCgnY2FuIGJlIGluc3RhbnRpYXRlZCcsICgpIHsKICAgICAgZXhwZWN0KAogICAgICAgIFB1YnNwZWNMb2NrUGFja2FnZSgKICAgICAgICAgIG5hbWU6ICdmb28nLAogICAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiwKICAgICAgICApLAogICAgICAgIGlzQTxQdWJzcGVjTG9ja1BhY2thZ2U+KCksCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdzdXBwb3J0cyB2YWx1ZSBlcXVhbGl0eScsICgpIHsKICAgICAgZmluYWwgcGFja2FnZTEgPSBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgbmFtZTogJ2ZvbycsCiAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiwKICAgICAgKTsKICAgICAgZmluYWwgcGFja2FnZTIgPSBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgbmFtZTogJ2ZvbycsCiAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiwKICAgICAgKTsKICAgICAgZmluYWwgcGFja2FnZTMgPSBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgbmFtZTogJ2JhcicsCiAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUudHJhbnNpdGl2ZSwKICAgICAgKTsKCiAgICAgIGV4cGVjdChwYWNrYWdlMSwgZXF1YWxzKHBhY2thZ2UyKSk7CiAgICAgIGV4cGVjdChwYWNrYWdlMSwgaXNOb3QoZXF1YWxzKHBhY2thZ2UzKSkpOwogICAgICBleHBlY3QocGFja2FnZTIsIGlzTm90KGVxdWFscyhwYWNrYWdlMykpKTsKICAgIH0pOwogIH0pOwoKICBncm91cCgnJFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlJywgKCkgewogICAgZ3JvdXAoJ3BhcnNlJywgKCkgewogICAgICB0ZXN0KCdwYXJzZXMgc3VjY2Vzc2Z1bGx5IGBkaXJlY3QgbWFpbmAnLCAoKSB7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUucGFyc2UoJ2RpcmVjdCBtYWluJyksCiAgICAgICAgICBlcXVhbHMoUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiksCiAgICAgICAgKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdwYXJzZXMgc3VjY2Vzc2Z1bGx5IGBkaXJlY3QgZGV2YCcsICgpIHsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5wYXJzZSgnZGlyZWN0IGRldicpLAogICAgICAgICAgZXF1YWxzKFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlLmRpcmVjdERldiksCiAgICAgICAgKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdwYXJzZXMgc3VjY2Vzc2Z1bGx5IGBkaXJlY3Qgb3ZlcnJpZGRlbmAnLCAoKSB7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUucGFyc2UoJ2RpcmVjdCBvdmVycmlkZGVuJyksCiAgICAgICAgICBlcXVhbHMoUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0T3ZlcnJpZGRlbiksCiAgICAgICAgKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdwYXJzZXMgc3VjY2Vzc2Z1bGx5IGB0cmFuc2l0aXZlYCcsICgpIHsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5wYXJzZSgndHJhbnNpdGl2ZScpLAogICAgICAgICAgZXF1YWxzKFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlLnRyYW5zaXRpdmUpLAogICAgICAgICk7CiAgICAgIH0pOwoKICAgICAgdGVzdCgndGhyb3dzIGEgJEFyZ3VtZW50RXJyb3Igd2hlbiB0eXBlIGlzIGludmFsaWQnLCAoKSB7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgKCkgPT4gUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUucGFyc2UoJ2ludmFsaWQnKSwKICAgICAgICAgIHRocm93c0EoaXNBPEFyZ3VtZW50RXJyb3I+KCkpLAogICAgICAgICk7CiAgICAgIH0pOwogICAgfSk7CiAgfSk7CgogIGdyb3VwKCckUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24nLCAoKSB7CiAgICB0ZXN0KCdjYW4gYmUgaW5zdGFudGlhdGVkJywgKCkgewogICAgICBleHBlY3QoCiAgICAgICAgUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oCiAgICAgICAgICBwYXRoOiAncGFja2FnZXMvZm9vJywKICAgICAgICAgIHJlbGF0aXZlOiB0cnVlLAogICAgICAgICksCiAgICAgICAgaXNBPFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uPigpLAogICAgICApOwogICAgfSk7CgogICAgdGVzdCgnc3VwcG9ydHMgdmFsdWUgZXF1YWxpdHknLCAoKSB7CiAgICAgIGZpbmFsIGRlc2NyaXB0aW9uMSA9IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uKAogICAgICAgIHBhdGg6ICdwYWNrYWdlcy9mb28nLAogICAgICAgIHJlbGF0aXZlOiB0cnVlLAogICAgICApOwogICAgICBmaW5hbCBkZXNjcmlwdGlvbjIgPSBQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbigKICAgICAgICBwYXRoOiAncGFja2FnZXMvZm9vJywKICAgICAgICByZWxhdGl2ZTogdHJ1ZSwKICAgICAgKTsKICAgICAgZmluYWwgZGVzY3JpcHRpb24zID0gUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oCiAgICAgICAgcGF0aDogJ3BhY2thZ2VzL2JhcicsCiAgICAgICAgcmVsYXRpdmU6IHRydWUsCiAgICAgICk7CiAgICAgIGZpbmFsIGRlc2NyaXB0aW9uNCA9IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uKAogICAgICAgIHBhdGg6ICdwYWNrYWdlcy9mb28nLAogICAgICAgIHJlbGF0aXZlOiBmYWxzZSwKICAgICAgKTsKCiAgICAgIGV4cGVjdChkZXNjcmlwdGlvbjEsIGVxdWFscyhkZXNjcmlwdGlvbjIpKTsKICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uMSwgaXNOb3QoZXF1YWxzKGRlc2NyaXB0aW9uMykpKTsKICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uMSwgaXNOb3QoZXF1YWxzKGRlc2NyaXB0aW9uNCkpKTsKICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uMywgaXNOb3QoZXF1YWxzKGRlc2NyaXB0aW9uNCkpKTsKICAgIH0pOwoKICAgIGdyb3VwKCd0cnlQYXJzZScsICgpIHsKICAgICAgdGVzdCgncGFyc2VzJywgKCkgewogICAgICAgIGZpbmFsIGRhdGEgPSBsb2FkWWFtbCgKICAgICAgICAgICcnJwpwYXRoOiAicGFja2FnZXMvZm9vIgpyZWxhdGl2ZTogdHJ1ZQogICAgICAgICAgICAnJycsCiAgICAgICAgKSBhcyBZYW1sTWFwOwoKICAgICAgICBmaW5hbCBkZXNjcmlwdGlvbiA9IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uLnRyeVBhcnNlKGRhdGEpOwoKICAgICAgICBleHBlY3QoCiAgICAgICAgICBkZXNjcmlwdGlvbiwKICAgICAgICAgIGVxdWFscygKICAgICAgICAgICAgUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oCiAgICAgICAgICAgICAgcGF0aDogJ3BhY2thZ2VzL2ZvbycsCiAgICAgICAgICAgICAgcmVsYXRpdmU6IHRydWUsCiAgICAgICAgICAgICksCiAgICAgICAgICApLAogICAgICAgICk7CiAgICAgIH0pOwoKICAgICAgZ3JvdXAoJ3JldHVybnMgbnVsbCcsICgpIHsKICAgICAgICB0ZXN0KCd3aGVuIG1pc3NpbmcgInBhdGgiJywgKCkgewogICAgICAgICAgZmluYWwgZGF0YSA9IGxvYWRZYW1sKAogICAgICAgICAgICAnJycKcmVsYXRpdmU6IHRydWUKICAgICAgICAgICAgJycnLAogICAgICAgICAgKSBhcyBZYW1sTWFwOwoKICAgICAgICAgIGZpbmFsIGRlc2NyaXB0aW9uID0gUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24udHJ5UGFyc2UoZGF0YSk7CgogICAgICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uLCBpc051bGwpOwogICAgICAgIH0pOwoKICAgICAgICB0ZXN0KCd3aGVuICJwYXRoIiBpcyBub3QgYSBTdHJpbmcnLCAoKSB7CiAgICAgICAgICBmaW5hbCBkYXRhID0gbG9hZFlhbWwoCiAgICAgICAgICAgICcnJwpwYXRoOiAxCnJlbGF0aXZlOiB0cnVlCiAgICAgICAgICAgICcnJywKICAgICAgICAgICkgYXMgWWFtbE1hcDsKCiAgICAgICAgICBmaW5hbCBkZXNjcmlwdGlvbiA9IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uLnRyeVBhcnNlKGRhdGEpOwoKICAgICAgICAgIGV4cGVjdChkZXNjcmlwdGlvbiwgaXNOdWxsKTsKICAgICAgICB9KTsKCiAgICAgICAgdGVzdCgnd2hlbiBtaXNzaW5nICJyZWxhdGl2ZSInLCAoKSB7CiAgICAgICAgICBmaW5hbCBkYXRhID0gbG9hZFlhbWwoCiAgICAgICAgICAgICcnJwpwYXRoOiAicGFja2FnZXMvZm9vIgogICAgICAgICAgICAnJycsCiAgICAgICAgICApIGFzIFlhbWxNYXA7CgogICAgICAgICAgZmluYWwgZGVzY3JpcHRpb24gPSBQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbi50cnlQYXJzZShkYXRhKTsKCiAgICAgICAgICBleHBlY3QoZGVzY3JpcHRpb24sIGlzTnVsbCk7CiAgICAgICAgfSk7CgogICAgICAgIHRlc3QoJ3doZW4gInJlbGF0aXZlIiBpcyBub3QgYSBib29sJywgKCkgewogICAgICAgICAgZmluYWwgZGF0YSA9IGxvYWRZYW1sKAogICAgICAgICAgICAnJycKcGF0aDogInBhY2thZ2VzL2ZvbyIKcmVsYXRpdmU6IDUKICAgICAgICAgICAgJycnLAogICAgICAgICAgKSBhcyBZYW1sTWFwOwoKICAgICAgICAgIGZpbmFsIGRlc2NyaXB0aW9uID0gUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24udHJ5UGFyc2UoZGF0YSk7CgogICAgICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uLCBpc051bGwpOwogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0pOwogIH0pOwp9CgovLy8gQW4gZXhhbXBsZSBwdWJzcGVjLmxvY2sgY29udGVudCB1c2VkIHRvIHRlc3QgdGhlIFtQdWJzcGVjTG9ja10gY2xhc3MuCi8vLwovLy8gSXQgaGFzIGJlZW4gYXJ0aWZpY2lhbGx5IGNyYWZ0ZWQgdG8gaW5jbHVkZToKLy8vIC0gb25lIHB1YiBob3N0ZWQgZGlyZWN0IG1haW4gcGFja2FnZSBlbnRyeQovLy8gLSBvbmUgcHViIGhvc3RlZCBkaXJlY3QgZGV2IHBhY2thZ2UgZW50cnkKLy8vIC0gb25lIHB1YiBob3N0ZWQgdHJhbnNpdGl2ZSBwYWNrYWdlIGVudHJ5Ci8vLyAtIG9uZSBwdWIgaG9zdGVkIG92ZXJyaWRkZW4gcGFja2FnZSBlbnRyeQovLy8gLSBvbmUgcGF0aCBkaXJlY3QgbWFpbiBwYWNrYWdlIGVudHJ5Ci8vLyAtIG9uZSBub3QgcHViIGhvc3RlZCB0cmFuc2l0aXZlIHBhY2thZ2UgZW50cnkKLy8vIC0gb25lIGludmFsaWQgcGFja2FnZSBlbnRyeQpjb25zdCBfcHVic3BlY0xvY2tDb250ZW50ID0gJycnCnBhY2thZ2VzOgogIHZlcnlfZ29vZF90ZXN0X3J1bm5lcjoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3QgbWFpbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiB2ZXJ5X2dvb2RfdGVzdF9ydW5uZXIKICAgICAgc2hhMjU2OiAiNGQ0MWU1ZDc2NzdkMjU5YjlhMTU5OWM3ODY0NWFjMmQzNmJjMmJkNmZmNzc3MzUwN2JjYjBiYWI0MTQxN2ZlMiIKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIwLjEuMiIKICB2ZXJ5X2dvb2RfYW5hbHlzaXM6CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IGRldiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiB2ZXJ5X2dvb2RfYW5hbHlzaXMKICAgICAgc2hhMjU2OiAiOWFlN2YzYTNiZDU3NjRmYjAyMWIzMzVjYTI4YTM0ZjA0MGNkMGFiNmVlYzAwYTFiMjEzYjQ0NWRhZTU4YTRiOCIKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICI1LjEuMCIKICB5YW1sOgogICAgZGVwZW5kZW5jeTogdHJhbnNpdGl2ZQogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IHlhbWwKICAgICAgc2hhMjU2OiAiNzU3Njk1MDFlYTM0ODlmY2E1NjYwMWZmMzM0NTRmZTQ1NTA3ZWEzYmZiMDE0MTYxYWJjM2I0M2FlMjU5ODlkNSIKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIzLjEuMiIKICBwYXRoOgogICAgZGVwZW5kZW5jeTogImRpcmVjdCBvdmVycmlkZGVuIgogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IHBhdGgKICAgICAgc2hhMjU2OiAiMDg3Y2U0OWMzZjBkYzM5MTgwYmVmZWZjNjBmZGI0YWNkOGY4NjIwZTU2ODJmZTI0NzZhZmQwYjM2ODhiYjRhZiIKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIxLjkuMCIKICBmb286CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IG1haW4iCiAgICBkZXNjcmlwdGlvbjoKICAgICAgcGF0aDogInBhY2thZ2VzL2ZvbyIKICAgICAgcmVsYXRpdmU6IHRydWUKICAgIHNvdXJjZTogcGF0aAogICAgdmVyc2lvbjogIjEuMC4wKzEiCiAgeWFtbDI6CiAgICBkZXBlbmRlbmN5OiB0cmFuc2l0aXZlCiAgICBkZXNjcmlwdGlvbjoKICAgICAgbmFtZTogeWFtbAogICAgICBzaGEyNTY6ICI3NTc2OTUwMWVhMzQ4OWZjYTU2NjAxZmYzMzQ1NGZlNDU1MDdlYTNiZmIwMTQxNjFhYmMzYjQzYWUyNTk4OWQ1IgogICAgICB1cmw6ICJodHRwczovL25vdC1wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIzLjEuMiIKICBiYWRfcGFja2FnZToKICAgIG5vdF9kZXBlbmRlbmN5OiAiYmFkIgpzZGtzOgogIGRhcnQ6ICI+PTMuMS4wIDw0LjAuMCIKJycnOwoKLy8vIEEgdmFsaWQgcHVic3BlYyBsb2NrIGZpbGUgd2l0aCBubyBwYWNrYWdlcy4KY29uc3QgX2VtcHR5UHVic3BlY0xvY2tDb250ZW50ID0gJycnCnNka3M6CiAgZGFydDogIj49My4xLjAgPDQuMC4wIgonJyc7Cg==", + "type": "text" + }, + { + "path": "test/src/uses_workspace_resolution_test.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKY2xhc3MgX01vY2tIb29rQ29udGV4dCBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBIb29rQ29udGV4dCB7fQoKY2xhc3MgX01vY2tMb2dnZXIgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgTG9nZ2VyIHt9Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ3VzZXNXb3Jrc3BhY2VSZXNvbHV0aW9uJywgKCkgewogICAgbGF0ZSBMaXN0PGludD4gZXhpdENhbGxzOwogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwogICAgbGF0ZSBEaXJlY3RvcnkgYnVpbGREaXJlY3Rvcnk7CiAgICBsYXRlIERpcmVjdG9yeSB3b3JraW5nRGlyZWN0b3J5OwoKICAgIHNldFVwKCgpIHsKICAgICAgZXhpdENhbGxzID0gW107CiAgICAgIGNvbnRleHQgPSBfTW9ja0hvb2tDb250ZXh0KCk7CiAgICAgIGxvZ2dlciA9IF9Nb2NrTG9nZ2VyKCk7CiAgICAgIGJ1aWxkRGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoJ2J1aWxkJyk7CiAgICAgIHdvcmtpbmdEaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygnd29ya2luZycpOwoKICAgICAgd2hlbigoKSA9PiBjb250ZXh0LmxvZ2dlcikudGhlblJldHVybihsb2dnZXIpOwoKICAgICAgYWRkVGVhckRvd24oKCkgewogICAgICAgIGJ1aWxkRGlyZWN0b3J5LmRlbGV0ZSgpLmlnbm9yZSgpOwogICAgICAgIHdvcmtpbmdEaXJlY3RvcnkuZGVsZXRlKCkuaWdub3JlKCk7CiAgICAgIH0pOwogICAgfSk7CgogICAgZ3JvdXAoJ3doZW4gcHVic3BlYy55YW1sIGRvZXMgbm90IGV4aXN0JywgKCkgewogICAgICB0ZXN0KCdyZXR1cm5zIGZhbHNlJywgKCkgewogICAgICAgIGV4cGVjdCgKICAgICAgICAgIHVzZXNXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgICB3b3JraW5nRGlyZWN0b3J5OiB3b3JraW5nRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgICApLAogICAgICAgICAgaXNGYWxzZSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWMueWFtbCBpcyBtYWxmb3JtZWQnLCAoKSB7CiAgICAgIGxhdGUgRmlsZSBwdWJzcGVjRmlsZTsKICAgICAgc2V0VXAoKCkgewogICAgICAgIHB1YnNwZWNGaWxlID0gRmlsZSgKICAgICAgICAgIHBhdGguam9pbih3b3JraW5nRGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSwKICAgICAgICApLi53cml0ZUFzU3RyaW5nU3luYygnaW52YWxpZCBwdWJzcGVjLnlhbWwnKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdyZXR1cm5zIGZhbHNlJywgKCkgewogICAgICAgIGV4cGVjdCgKICAgICAgICAgIHVzZXNXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgICB3b3JraW5nRGlyZWN0b3J5OiB3b3JraW5nRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgICApLAogICAgICAgICAgaXNGYWxzZSwKICAgICAgICApOwogICAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbMV0pKTsKICAgICAgICB2ZXJpZnkoCiAgICAgICAgICAoKSA9PiBsb2dnZXIuZXJyKAogICAgICAgICAgICBhbnkodGhhdDogY29udGFpbnMoJ1VuYWJsZSB0byBwYXJzZSAke3B1YnNwZWNGaWxlLnBhdGh9JykpLAogICAgICAgICAgKSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWMueWFtbCBpcyB2YWxpZCB3aXRoIG5vIHJlc29sdXRpb24nLCAoKSB7CiAgICAgIHNldFVwKCgpIHsKICAgICAgICBGaWxlKAogICAgICAgICAgcGF0aC5qb2luKHdvcmtpbmdEaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMueWFtbCcpLAogICAgICAgICkud3JpdGVBc1N0cmluZ1N5bmMoJycnCm5hbWU6IF8KJycnKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdyZXR1cm5zIGZhbHNlJywgKCkgewogICAgICAgIGV4cGVjdCgKICAgICAgICAgIHVzZXNXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgICB3b3JraW5nRGlyZWN0b3J5OiB3b3JraW5nRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgICApLAogICAgICAgICAgaXNGYWxzZSwKICAgICAgICApOwogICAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICAgIHZlcmlmeU5ldmVyKCgpID0+IGxvZ2dlci5lcnIoYW55KCkpKTsKICAgICAgfSk7CiAgICB9KTsKCiAgICBncm91cCgnd2hlbiBwdWJzcGVjLnlhbWwgaXMgdmFsaWQgd2l0aCByZXNvbHV0aW9uIHdvcmtzcGFjZScsICgpIHsKICAgICAgc2V0VXAoKCkgewogICAgICAgIEZpbGUoCiAgICAgICAgICBwYXRoLmpvaW4od29ya2luZ0RpcmVjdG9yeS5wYXRoLCAncHVic3BlYy55YW1sJyksCiAgICAgICAgKS53cml0ZUFzU3RyaW5nU3luYygnJycKbmFtZTogXwpyZXNvbHV0aW9uOiB3b3Jrc3BhY2UKJycnKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdyZXR1cm5zIHRydWUnLCAoKSB7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgdXNlc1dvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgICAgICAgIGNvbnRleHQsCiAgICAgICAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHdvcmtpbmdEaXJlY3RvcnkucGF0aCwKICAgICAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICAgICksCiAgICAgICAgICBpc1RydWUsCiAgICAgICAgKTsKICAgICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgICB2ZXJpZnlOZXZlcigoKSA9PiBsb2dnZXIuZXJyKGFueSgpKSk7CiAgICAgIH0pOwogICAgfSk7CiAgfSk7Cn0K", "type": "text" } ],