UNPKG

@lapidist/cv-generator

Version:

Lapidist cv-generator

144 lines 21.3 kB
const SUMMARY = [ 'Staff-level Frontend Engineer in Glasgow with 10+ years leading large-scale React and TypeScript platforms across fintech and SaaS.', 'Combines architectural leadership with hands-on delivery, owning design systems, automation, accessibility, and developer experience.', 'Partners across product, design, and risk to standardise journeys, mentor engineers, and ship fast, compliant, observable systems.', ]; const SELECTED_ACHIEVEMENTS = [ 'Rebuilt Encompass’s low-code platform as a composable React system, boosting release cadence ~40% with WCAG AA+ compliance.', 'Led design-system modernisation and TypeScript migration at LendInvest, boosting engineering throughput ~40% and cutting borrower drop-off 20–25%.', 'Led frontend for Markup’s commerce platform, driving checkout conversion beyond 35% through experimentation and performance tuning.', ]; const EXPERIENCES = [ { title: 'Senior Software Engineer', company: 'Encompass Corporation', location: 'Glasgow, UK (hybrid)', from: '05/2024', to: '08/2025', summary: 'Global regtech platform automating KYC and AML onboarding for financial institutions (circa 450 employees).', bullets: [ 'Stabilised the acquired low-code onboarding estate by defining reusable React and TypeScript flow templates, accelerating delivery by about 40%.', 'Governed the organisation-wide design system in Storybook, aligning squads on accessible components and sustaining WCAG AA+ compliance.', 'Embedded telemetry, accessibility, and automated health gates into pipelines to prevent regressions and reduce production fixes.', 'Partnered with product and design leadership to translate KYC roadmap priorities into measurable iteration plans and predictable stakeholder updates.', 'Mentored engineers and co-led hiring, shaping a quality-focused culture across frontend, UX, and product teams.', ], }, { title: 'Senior Software Engineer', company: 'LendInvest', location: 'London, UK (remote)', from: '04/2021', to: '11/2023', summary: 'Property-finance fintech delivering digital mortgage and investment products for retail and institutional clients (around 350 employees).', bullets: [ 'Directed design-system modernisation across underwriting, legal, and finance journeys, aligning squads on a single React component baseline.', 'Led the migration to modular TypeScript libraries with shared contracts, boosting engineering throughput by roughly 40% and improving release quality.', 'Set performance budgets, lazy loading, and asset optimisation that reduced borrower drop-off by 20–25%.', 'Authored accessibility, contract-testing, and release-governance standards adopted across engineering.', 'Coached squads through discovery and prioritisation workshops to sustain incremental delivery in regulated environments.', ], }, { title: 'Software Consultant (contract)', company: 'Golden Charter', location: 'Glasgow, UK (remote)', from: '02/2020', to: '04/2021', summary: 'UK funeral-planning provider supporting independent funeral directors nationwide (circa 500 employees).', bullets: [ 'Rebuilt customer planning tools around an accessible component architecture, securing stakeholder confidence for regulated releases.', 'Established a reusable component library and design rituals so multiple product teams shipped consistent interfaces faster.', 'Standardised CI pipelines and end-to-end automation to stabilise release reliability and cadence.', 'Refactored core C# APIs to improve response times by around 100x and strengthen downstream integrations.', 'Mentored engineers on accessibility and testing craft, raising overall frontend capability across teams.', ], }, { title: 'Team Lead (Front End)', company: 'Markup', location: 'Glasgow, UK (hybrid)', from: '01/2018', to: '12/2019', summary: 'Retail technology startup delivering multi-brand commerce experiences for international fashion clients (around 40 employees).', bullets: [ 'Led the frontend team launching a multi-brand commerce platform, improving checkout conversion by over 35% through optimised payment flows.', 'Defined a reusable design system with product and design leaders, enabling rapid storefront iteration without sacrificing consistency.', 'Introduced agile rituals, performance budgets, and observability to keep releases fast and predictable.', 'Represented engineering in client meetings, aligning technical strategy with commercial outcomes.', ], }, { title: 'Developer', company: 'Everyone', location: 'Glasgow, UK', from: '11/2016', to: '12/2017', summary: 'Product-focused digital agency delivering cross-platform applications and bespoke platforms for commercial clients.', bullets: [ 'Owned project delivery end-to-end, managing scope, timelines, and technical direction to ensure cost-effective and reliable outcomes.', 'Built a cross-platform mobile application ensuring consistent behaviour and performance across devices.', 'Engineered a multi-feature social platform combining job boards, user profiles, e-commerce storefronts, and custom CMS tooling.', ], }, { title: 'Senior Digital Designer', company: 'Ibiza Digital Media', location: 'Glasgow, UK', from: '10/2014', to: '09/2016', summary: 'Creative digital studio producing commercial websites, applications, and editorial platforms for print and online media.', bullets: [ 'Led multidisciplinary teams delivering websites, applications, and visual assets across web, print, and social channels.', 'Designed and developed mobile-first e-commerce platforms that materially improved client sales and online presence.', 'Created and scaled an online magazine from concept to operation, reaching over 85K monthly readers.', 'Worked directly with stakeholders to scope requirements, manage budgets and timelines, and translate commercial goals into shipped products.', ], }, ]; const KEY_PROJECTS = [ 'Author of the Design Token Interchange Format (DTIF), enabling typed, interoperable token exchange between design and engineering platforms.', 'Created the DTIFx toolkit (CLI, SDK, audit, and diff utilities) to automate token validation, governance, and reporting in CI pipelines.', ]; const SKILL_CATEGORIES = [ { title: 'Architecture & Systems', skills: [ 'React, TypeScript, Node.js', 'Design-system architecture and token pipelines', 'Modular platform patterns for multi-product SaaS.', ], }, { title: 'Leadership & Delivery', skills: [ 'Mentorship, hiring, and capability building', 'Roadmap ownership and technical strategy', 'Cross-functional alignment with product and design.', ], }, { title: 'Quality & Reliability', skills: [ 'Jest, Vitest, Playwright automation', 'Accessibility, contract, and performance governance', 'Observability and release readiness standards.', ], }, { title: 'Platform Tooling', skills: [ 'GitHub Actions, Docker, CI/CD orchestration', 'Telemetry with OpenTelemetry and Grafana', 'Storybook, design tokens, and documentation workflows.', ], }, ]; export const copy = { SUMMARY, SELECTED_ACHIEVEMENTS, KEY_PROJECTS, EXPERIENCES, SKILL_CATEGORIES, }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29weS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3B5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxHQUFHO0lBQ2QscUlBQXFJO0lBQ3JJLHVJQUF1STtJQUN2SSxvSUFBb0k7Q0FDckksQ0FBQztBQUVGLE1BQU0scUJBQXFCLEdBQUc7SUFDNUIsNkhBQTZIO0lBQzdILG9KQUFvSjtJQUNwSixxSUFBcUk7Q0FDdEksQ0FBQztBQUVGLE1BQU0sV0FBVyxHQUFHO0lBQ2xCO1FBQ0UsS0FBSyxFQUFFLDBCQUEwQjtRQUNqQyxPQUFPLEVBQUUsdUJBQXVCO1FBQ2hDLFFBQVEsRUFBRSxzQkFBc0I7UUFDaEMsSUFBSSxFQUFFLFNBQVM7UUFDZixFQUFFLEVBQUUsU0FBUztRQUNiLE9BQU8sRUFDTCw2R0FBNkc7UUFDL0csT0FBTyxFQUFFO1lBQ1Asa0pBQWtKO1lBQ2xKLHlJQUF5STtZQUN6SSxrSUFBa0k7WUFDbEksdUpBQXVKO1lBQ3ZKLGlIQUFpSDtTQUNsSDtLQUNGO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsMEJBQTBCO1FBQ2pDLE9BQU8sRUFBRSxZQUFZO1FBQ3JCLFFBQVEsRUFBRSxxQkFBcUI7UUFDL0IsSUFBSSxFQUFFLFNBQVM7UUFDZixFQUFFLEVBQUUsU0FBUztRQUNiLE9BQU8sRUFDTCwySUFBMkk7UUFDN0ksT0FBTyxFQUFFO1lBQ1AsOElBQThJO1lBQzlJLHdKQUF3SjtZQUN4Six5R0FBeUc7WUFDekcsd0dBQXdHO1lBQ3hHLDBIQUEwSDtTQUMzSDtLQUNGO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsZ0NBQWdDO1FBQ3ZDLE9BQU8sRUFBRSxnQkFBZ0I7UUFDekIsUUFBUSxFQUFFLHNCQUFzQjtRQUNoQyxJQUFJLEVBQUUsU0FBUztRQUNmLEVBQUUsRUFBRSxTQUFTO1FBQ2IsT0FBTyxFQUNMLHlHQUF5RztRQUMzRyxPQUFPLEVBQUU7WUFDUCxzSUFBc0k7WUFDdEksNkhBQTZIO1lBQzdILG1HQUFtRztZQUNuRywwR0FBMEc7WUFDMUcsMEdBQTBHO1NBQzNHO0tBQ0Y7SUFDRDtRQUNFLEtBQUssRUFBRSx1QkFBdUI7UUFDOUIsT0FBTyxFQUFFLFFBQVE7UUFDakIsUUFBUSxFQUFFLHNCQUFzQjtRQUNoQyxJQUFJLEVBQUUsU0FBUztRQUNmLEVBQUUsRUFBRSxTQUFTO1FBQ2IsT0FBTyxFQUNMLGdJQUFnSTtRQUNsSSxPQUFPLEVBQUU7WUFDUCw2SUFBNkk7WUFDN0ksd0lBQXdJO1lBQ3hJLHlHQUF5RztZQUN6RyxtR0FBbUc7U0FDcEc7S0FDRjtJQUNEO1FBQ0UsS0FBSyxFQUFFLFdBQVc7UUFDbEIsT0FBTyxFQUFFLFVBQVU7UUFDbkIsUUFBUSxFQUFFLGFBQWE7UUFDdkIsSUFBSSxFQUFFLFNBQVM7UUFDZixFQUFFLEVBQUUsU0FBUztRQUNiLE9BQU8sRUFDTCxxSEFBcUg7UUFDdkgsT0FBTyxFQUFFO1lBQ1AsdUlBQXVJO1lBQ3ZJLHlHQUF5RztZQUN6RyxpSUFBaUk7U0FDbEk7S0FDRjtJQUNEO1FBQ0UsS0FBSyxFQUFFLHlCQUF5QjtRQUNoQyxPQUFPLEVBQUUscUJBQXFCO1FBQzlCLFFBQVEsRUFBRSxhQUFhO1FBQ3ZCLElBQUksRUFBRSxTQUFTO1FBQ2YsRUFBRSxFQUFFLFNBQVM7UUFDYixPQUFPLEVBQ0wsMEhBQTBIO1FBQzVILE9BQU8sRUFBRTtZQUNQLDBIQUEwSDtZQUMxSCxxSEFBcUg7WUFDckgscUdBQXFHO1lBQ3JHLDhJQUE4STtTQUMvSTtLQUNGO0NBQ0YsQ0FBQztBQUVGLE1BQU0sWUFBWSxHQUFHO0lBQ25CLDhJQUE4STtJQUM5SSwwSUFBMEk7Q0FDM0ksQ0FBQztBQUVGLE1BQU0sZ0JBQWdCLEdBQUc7SUFDdkI7UUFDRSxLQUFLLEVBQUUsd0JBQXdCO1FBQy9CLE1BQU0sRUFBRTtZQUNOLDRCQUE0QjtZQUM1QixnREFBZ0Q7WUFDaEQsbURBQW1EO1NBQ3BEO0tBQ0Y7SUFDRDtRQUNFLEtBQUssRUFBRSx1QkFBdUI7UUFDOUIsTUFBTSxFQUFFO1lBQ04sNkNBQTZDO1lBQzdDLDBDQUEwQztZQUMxQyxxREFBcUQ7U0FDdEQ7S0FDRjtJQUNEO1FBQ0UsS0FBSyxFQUFFLHVCQUF1QjtRQUM5QixNQUFNLEVBQUU7WUFDTixxQ0FBcUM7WUFDckMscURBQXFEO1lBQ3JELGdEQUFnRDtTQUNqRDtLQUNGO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsa0JBQWtCO1FBQ3pCLE1BQU0sRUFBRTtZQUNOLDZDQUE2QztZQUM3QywwQ0FBMEM7WUFDMUMsd0RBQXdEO1NBQ3pEO0tBQ0Y7Q0FDRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHO0lBQ2xCLE9BQU87SUFDUCxxQkFBcUI7SUFDckIsWUFBWTtJQUNaLFdBQVc7SUFDWCxnQkFBZ0I7Q0FDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IFNVTU1BUlkgPSBbXG4gICdTdGFmZi1sZXZlbCBGcm9udGVuZCBFbmdpbmVlciBpbiBHbGFzZ293IHdpdGggMTArIHllYXJzIGxlYWRpbmcgbGFyZ2Utc2NhbGUgUmVhY3QgYW5kIFR5cGVTY3JpcHQgcGxhdGZvcm1zIGFjcm9zcyBmaW50ZWNoIGFuZCBTYWFTLicsXG4gICdDb21iaW5lcyBhcmNoaXRlY3R1cmFsIGxlYWRlcnNoaXAgd2l0aCBoYW5kcy1vbiBkZWxpdmVyeSwgb3duaW5nIGRlc2lnbiBzeXN0ZW1zLCBhdXRvbWF0aW9uLCBhY2Nlc3NpYmlsaXR5LCBhbmQgZGV2ZWxvcGVyIGV4cGVyaWVuY2UuJyxcbiAgJ1BhcnRuZXJzIGFjcm9zcyBwcm9kdWN0LCBkZXNpZ24sIGFuZCByaXNrIHRvIHN0YW5kYXJkaXNlIGpvdXJuZXlzLCBtZW50b3IgZW5naW5lZXJzLCBhbmQgc2hpcCBmYXN0LCBjb21wbGlhbnQsIG9ic2VydmFibGUgc3lzdGVtcy4nLFxuXTtcblxuY29uc3QgU0VMRUNURURfQUNISUVWRU1FTlRTID0gW1xuICAnUmVidWlsdCBFbmNvbXBhc3PigJlzIGxvdy1jb2RlIHBsYXRmb3JtIGFzIGEgY29tcG9zYWJsZSBSZWFjdCBzeXN0ZW0sIGJvb3N0aW5nIHJlbGVhc2UgY2FkZW5jZSB+NDAlIHdpdGggV0NBRyBBQSsgY29tcGxpYW5jZS4nLFxuICAnTGVkIGRlc2lnbi1zeXN0ZW0gbW9kZXJuaXNhdGlvbiBhbmQgVHlwZVNjcmlwdCBtaWdyYXRpb24gYXQgTGVuZEludmVzdCwgYm9vc3RpbmcgZW5naW5lZXJpbmcgdGhyb3VnaHB1dCB+NDAlIGFuZCBjdXR0aW5nIGJvcnJvd2VyIGRyb3Atb2ZmIDIw4oCTMjUlLicsXG4gICdMZWQgZnJvbnRlbmQgZm9yIE1hcmt1cOKAmXMgY29tbWVyY2UgcGxhdGZvcm0sIGRyaXZpbmcgY2hlY2tvdXQgY29udmVyc2lvbiBiZXlvbmQgMzUlIHRocm91Z2ggZXhwZXJpbWVudGF0aW9uIGFuZCBwZXJmb3JtYW5jZSB0dW5pbmcuJyxcbl07XG5cbmNvbnN0IEVYUEVSSUVOQ0VTID0gW1xuICB7XG4gICAgdGl0bGU6ICdTZW5pb3IgU29mdHdhcmUgRW5naW5lZXInLFxuICAgIGNvbXBhbnk6ICdFbmNvbXBhc3MgQ29ycG9yYXRpb24nLFxuICAgIGxvY2F0aW9uOiAnR2xhc2dvdywgVUsgKGh5YnJpZCknLFxuICAgIGZyb206ICcwNS8yMDI0JyxcbiAgICB0bzogJzA4LzIwMjUnLFxuICAgIHN1bW1hcnk6XG4gICAgICAnR2xvYmFsIHJlZ3RlY2ggcGxhdGZvcm0gYXV0b21hdGluZyBLWUMgYW5kIEFNTCBvbmJvYXJkaW5nIGZvciBmaW5hbmNpYWwgaW5zdGl0dXRpb25zIChjaXJjYSA0NTAgZW1wbG95ZWVzKS4nLFxuICAgIGJ1bGxldHM6IFtcbiAgICAgICdTdGFiaWxpc2VkIHRoZSBhY3F1aXJlZCBsb3ctY29kZSBvbmJvYXJkaW5nIGVzdGF0ZSBieSBkZWZpbmluZyByZXVzYWJsZSBSZWFjdCBhbmQgVHlwZVNjcmlwdCBmbG93IHRlbXBsYXRlcywgYWNjZWxlcmF0aW5nIGRlbGl2ZXJ5IGJ5IGFib3V0IDQwJS4nLFxuICAgICAgJ0dvdmVybmVkIHRoZSBvcmdhbmlzYXRpb24td2lkZSBkZXNpZ24gc3lzdGVtIGluIFN0b3J5Ym9vaywgYWxpZ25pbmcgc3F1YWRzIG9uIGFjY2Vzc2libGUgY29tcG9uZW50cyBhbmQgc3VzdGFpbmluZyBXQ0FHIEFBKyBjb21wbGlhbmNlLicsXG4gICAgICAnRW1iZWRkZWQgdGVsZW1ldHJ5LCBhY2Nlc3NpYmlsaXR5LCBhbmQgYXV0b21hdGVkIGhlYWx0aCBnYXRlcyBpbnRvIHBpcGVsaW5lcyB0byBwcmV2ZW50IHJlZ3Jlc3Npb25zIGFuZCByZWR1Y2UgcHJvZHVjdGlvbiBmaXhlcy4nLFxuICAgICAgJ1BhcnRuZXJlZCB3aXRoIHByb2R1Y3QgYW5kIGRlc2lnbiBsZWFkZXJzaGlwIHRvIHRyYW5zbGF0ZSBLWUMgcm9hZG1hcCBwcmlvcml0aWVzIGludG8gbWVhc3VyYWJsZSBpdGVyYXRpb24gcGxhbnMgYW5kIHByZWRpY3RhYmxlIHN0YWtlaG9sZGVyIHVwZGF0ZXMuJyxcbiAgICAgICdNZW50b3JlZCBlbmdpbmVlcnMgYW5kIGNvLWxlZCBoaXJpbmcsIHNoYXBpbmcgYSBxdWFsaXR5LWZvY3VzZWQgY3VsdHVyZSBhY3Jvc3MgZnJvbnRlbmQsIFVYLCBhbmQgcHJvZHVjdCB0ZWFtcy4nLFxuICAgIF0sXG4gIH0sXG4gIHtcbiAgICB0aXRsZTogJ1NlbmlvciBTb2Z0d2FyZSBFbmdpbmVlcicsXG4gICAgY29tcGFueTogJ0xlbmRJbnZlc3QnLFxuICAgIGxvY2F0aW9uOiAnTG9uZG9uLCBVSyAocmVtb3RlKScsXG4gICAgZnJvbTogJzA0LzIwMjEnLFxuICAgIHRvOiAnMTEvMjAyMycsXG4gICAgc3VtbWFyeTpcbiAgICAgICdQcm9wZXJ0eS1maW5hbmNlIGZpbnRlY2ggZGVsaXZlcmluZyBkaWdpdGFsIG1vcnRnYWdlIGFuZCBpbnZlc3RtZW50IHByb2R1Y3RzIGZvciByZXRhaWwgYW5kIGluc3RpdHV0aW9uYWwgY2xpZW50cyAoYXJvdW5kIDM1MCBlbXBsb3llZXMpLicsXG4gICAgYnVsbGV0czogW1xuICAgICAgJ0RpcmVjdGVkIGRlc2lnbi1zeXN0ZW0gbW9kZXJuaXNhdGlvbiBhY3Jvc3MgdW5kZXJ3cml0aW5nLCBsZWdhbCwgYW5kIGZpbmFuY2Ugam91cm5leXMsIGFsaWduaW5nIHNxdWFkcyBvbiBhIHNpbmdsZSBSZWFjdCBjb21wb25lbnQgYmFzZWxpbmUuJyxcbiAgICAgICdMZWQgdGhlIG1pZ3JhdGlvbiB0byBtb2R1bGFyIFR5cGVTY3JpcHQgbGlicmFyaWVzIHdpdGggc2hhcmVkIGNvbnRyYWN0cywgYm9vc3RpbmcgZW5naW5lZXJpbmcgdGhyb3VnaHB1dCBieSByb3VnaGx5IDQwJSBhbmQgaW1wcm92aW5nIHJlbGVhc2UgcXVhbGl0eS4nLFxuICAgICAgJ1NldCBwZXJmb3JtYW5jZSBidWRnZXRzLCBsYXp5IGxvYWRpbmcsIGFuZCBhc3NldCBvcHRpbWlzYXRpb24gdGhhdCByZWR1Y2VkIGJvcnJvd2VyIGRyb3Atb2ZmIGJ5IDIw4oCTMjUlLicsXG4gICAgICAnQXV0aG9yZWQgYWNjZXNzaWJpbGl0eSwgY29udHJhY3QtdGVzdGluZywgYW5kIHJlbGVhc2UtZ292ZXJuYW5jZSBzdGFuZGFyZHMgYWRvcHRlZCBhY3Jvc3MgZW5naW5lZXJpbmcuJyxcbiAgICAgICdDb2FjaGVkIHNxdWFkcyB0aHJvdWdoIGRpc2NvdmVyeSBhbmQgcHJpb3JpdGlzYXRpb24gd29ya3Nob3BzIHRvIHN1c3RhaW4gaW5jcmVtZW50YWwgZGVsaXZlcnkgaW4gcmVndWxhdGVkIGVudmlyb25tZW50cy4nLFxuICAgIF0sXG4gIH0sXG4gIHtcbiAgICB0aXRsZTogJ1NvZnR3YXJlIENvbnN1bHRhbnQgKGNvbnRyYWN0KScsXG4gICAgY29tcGFueTogJ0dvbGRlbiBDaGFydGVyJyxcbiAgICBsb2NhdGlvbjogJ0dsYXNnb3csIFVLIChyZW1vdGUpJyxcbiAgICBmcm9tOiAnMDIvMjAyMCcsXG4gICAgdG86ICcwNC8yMDIxJyxcbiAgICBzdW1tYXJ5OlxuICAgICAgJ1VLIGZ1bmVyYWwtcGxhbm5pbmcgcHJvdmlkZXIgc3VwcG9ydGluZyBpbmRlcGVuZGVudCBmdW5lcmFsIGRpcmVjdG9ycyBuYXRpb253aWRlIChjaXJjYSA1MDAgZW1wbG95ZWVzKS4nLFxuICAgIGJ1bGxldHM6IFtcbiAgICAgICdSZWJ1aWx0IGN1c3RvbWVyIHBsYW5uaW5nIHRvb2xzIGFyb3VuZCBhbiBhY2Nlc3NpYmxlIGNvbXBvbmVudCBhcmNoaXRlY3R1cmUsIHNlY3VyaW5nIHN0YWtlaG9sZGVyIGNvbmZpZGVuY2UgZm9yIHJlZ3VsYXRlZCByZWxlYXNlcy4nLFxuICAgICAgJ0VzdGFibGlzaGVkIGEgcmV1c2FibGUgY29tcG9uZW50IGxpYnJhcnkgYW5kIGRlc2lnbiByaXR1YWxzIHNvIG11bHRpcGxlIHByb2R1Y3QgdGVhbXMgc2hpcHBlZCBjb25zaXN0ZW50IGludGVyZmFjZXMgZmFzdGVyLicsXG4gICAgICAnU3RhbmRhcmRpc2VkIENJIHBpcGVsaW5lcyBhbmQgZW5kLXRvLWVuZCBhdXRvbWF0aW9uIHRvIHN0YWJpbGlzZSByZWxlYXNlIHJlbGlhYmlsaXR5IGFuZCBjYWRlbmNlLicsXG4gICAgICAnUmVmYWN0b3JlZCBjb3JlIEMjIEFQSXMgdG8gaW1wcm92ZSByZXNwb25zZSB0aW1lcyBieSBhcm91bmQgMTAweCBhbmQgc3RyZW5ndGhlbiBkb3duc3RyZWFtIGludGVncmF0aW9ucy4nLFxuICAgICAgJ01lbnRvcmVkIGVuZ2luZWVycyBvbiBhY2Nlc3NpYmlsaXR5IGFuZCB0ZXN0aW5nIGNyYWZ0LCByYWlzaW5nIG92ZXJhbGwgZnJvbnRlbmQgY2FwYWJpbGl0eSBhY3Jvc3MgdGVhbXMuJyxcbiAgICBdLFxuICB9LFxuICB7XG4gICAgdGl0bGU6ICdUZWFtIExlYWQgKEZyb250IEVuZCknLFxuICAgIGNvbXBhbnk6ICdNYXJrdXAnLFxuICAgIGxvY2F0aW9uOiAnR2xhc2dvdywgVUsgKGh5YnJpZCknLFxuICAgIGZyb206ICcwMS8yMDE4JyxcbiAgICB0bzogJzEyLzIwMTknLFxuICAgIHN1bW1hcnk6XG4gICAgICAnUmV0YWlsIHRlY2hub2xvZ3kgc3RhcnR1cCBkZWxpdmVyaW5nIG11bHRpLWJyYW5kIGNvbW1lcmNlIGV4cGVyaWVuY2VzIGZvciBpbnRlcm5hdGlvbmFsIGZhc2hpb24gY2xpZW50cyAoYXJvdW5kIDQwIGVtcGxveWVlcykuJyxcbiAgICBidWxsZXRzOiBbXG4gICAgICAnTGVkIHRoZSBmcm9udGVuZCB0ZWFtIGxhdW5jaGluZyBhIG11bHRpLWJyYW5kIGNvbW1lcmNlIHBsYXRmb3JtLCBpbXByb3ZpbmcgY2hlY2tvdXQgY29udmVyc2lvbiBieSBvdmVyIDM1JSB0aHJvdWdoIG9wdGltaXNlZCBwYXltZW50IGZsb3dzLicsXG4gICAgICAnRGVmaW5lZCBhIHJldXNhYmxlIGRlc2lnbiBzeXN0ZW0gd2l0aCBwcm9kdWN0IGFuZCBkZXNpZ24gbGVhZGVycywgZW5hYmxpbmcgcmFwaWQgc3RvcmVmcm9udCBpdGVyYXRpb24gd2l0aG91dCBzYWNyaWZpY2luZyBjb25zaXN0ZW5jeS4nLFxuICAgICAgJ0ludHJvZHVjZWQgYWdpbGUgcml0dWFscywgcGVyZm9ybWFuY2UgYnVkZ2V0cywgYW5kIG9ic2VydmFiaWxpdHkgdG8ga2VlcCByZWxlYXNlcyBmYXN0IGFuZCBwcmVkaWN0YWJsZS4nLFxuICAgICAgJ1JlcHJlc2VudGVkIGVuZ2luZWVyaW5nIGluIGNsaWVudCBtZWV0aW5ncywgYWxpZ25pbmcgdGVjaG5pY2FsIHN0cmF0ZWd5IHdpdGggY29tbWVyY2lhbCBvdXRjb21lcy4nLFxuICAgIF0sXG4gIH0sXG4gIHtcbiAgICB0aXRsZTogJ0RldmVsb3BlcicsXG4gICAgY29tcGFueTogJ0V2ZXJ5b25lJyxcbiAgICBsb2NhdGlvbjogJ0dsYXNnb3csIFVLJyxcbiAgICBmcm9tOiAnMTEvMjAxNicsXG4gICAgdG86ICcxMi8yMDE3JyxcbiAgICBzdW1tYXJ5OlxuICAgICAgJ1Byb2R1Y3QtZm9jdXNlZCBkaWdpdGFsIGFnZW5jeSBkZWxpdmVyaW5nIGNyb3NzLXBsYXRmb3JtIGFwcGxpY2F0aW9ucyBhbmQgYmVzcG9rZSBwbGF0Zm9ybXMgZm9yIGNvbW1lcmNpYWwgY2xpZW50cy4nLFxuICAgIGJ1bGxldHM6IFtcbiAgICAgICdPd25lZCBwcm9qZWN0IGRlbGl2ZXJ5IGVuZC10by1lbmQsIG1hbmFnaW5nIHNjb3BlLCB0aW1lbGluZXMsIGFuZCB0ZWNobmljYWwgZGlyZWN0aW9uIHRvIGVuc3VyZSBjb3N0LWVmZmVjdGl2ZSBhbmQgcmVsaWFibGUgb3V0Y29tZXMuJyxcbiAgICAgICdCdWlsdCBhIGNyb3NzLXBsYXRmb3JtIG1vYmlsZSBhcHBsaWNhdGlvbiBlbnN1cmluZyBjb25zaXN0ZW50IGJlaGF2aW91ciBhbmQgcGVyZm9ybWFuY2UgYWNyb3NzIGRldmljZXMuJyxcbiAgICAgICdFbmdpbmVlcmVkIGEgbXVsdGktZmVhdHVyZSBzb2NpYWwgcGxhdGZvcm0gY29tYmluaW5nIGpvYiBib2FyZHMsIHVzZXIgcHJvZmlsZXMsIGUtY29tbWVyY2Ugc3RvcmVmcm9udHMsIGFuZCBjdXN0b20gQ01TIHRvb2xpbmcuJyxcbiAgICBdLFxuICB9LFxuICB7XG4gICAgdGl0bGU6ICdTZW5pb3IgRGlnaXRhbCBEZXNpZ25lcicsXG4gICAgY29tcGFueTogJ0liaXphIERpZ2l0YWwgTWVkaWEnLFxuICAgIGxvY2F0aW9uOiAnR2xhc2dvdywgVUsnLFxuICAgIGZyb206ICcxMC8yMDE0JyxcbiAgICB0bzogJzA5LzIwMTYnLFxuICAgIHN1bW1hcnk6XG4gICAgICAnQ3JlYXRpdmUgZGlnaXRhbCBzdHVkaW8gcHJvZHVjaW5nIGNvbW1lcmNpYWwgd2Vic2l0ZXMsIGFwcGxpY2F0aW9ucywgYW5kIGVkaXRvcmlhbCBwbGF0Zm9ybXMgZm9yIHByaW50IGFuZCBvbmxpbmUgbWVkaWEuJyxcbiAgICBidWxsZXRzOiBbXG4gICAgICAnTGVkIG11bHRpZGlzY2lwbGluYXJ5IHRlYW1zIGRlbGl2ZXJpbmcgd2Vic2l0ZXMsIGFwcGxpY2F0aW9ucywgYW5kIHZpc3VhbCBhc3NldHMgYWNyb3NzIHdlYiwgcHJpbnQsIGFuZCBzb2NpYWwgY2hhbm5lbHMuJyxcbiAgICAgICdEZXNpZ25lZCBhbmQgZGV2ZWxvcGVkIG1vYmlsZS1maXJzdCBlLWNvbW1lcmNlIHBsYXRmb3JtcyB0aGF0IG1hdGVyaWFsbHkgaW1wcm92ZWQgY2xpZW50IHNhbGVzIGFuZCBvbmxpbmUgcHJlc2VuY2UuJyxcbiAgICAgICdDcmVhdGVkIGFuZCBzY2FsZWQgYW4gb25saW5lIG1hZ2F6aW5lIGZyb20gY29uY2VwdCB0byBvcGVyYXRpb24sIHJlYWNoaW5nIG92ZXIgODVLIG1vbnRobHkgcmVhZGVycy4nLFxuICAgICAgJ1dvcmtlZCBkaXJlY3RseSB3aXRoIHN0YWtlaG9sZGVycyB0byBzY29wZSByZXF1aXJlbWVudHMsIG1hbmFnZSBidWRnZXRzIGFuZCB0aW1lbGluZXMsIGFuZCB0cmFuc2xhdGUgY29tbWVyY2lhbCBnb2FscyBpbnRvIHNoaXBwZWQgcHJvZHVjdHMuJyxcbiAgICBdLFxuICB9LFxuXTtcblxuY29uc3QgS0VZX1BST0pFQ1RTID0gW1xuICAnQXV0aG9yIG9mIHRoZSBEZXNpZ24gVG9rZW4gSW50ZXJjaGFuZ2UgRm9ybWF0IChEVElGKSwgZW5hYmxpbmcgdHlwZWQsIGludGVyb3BlcmFibGUgdG9rZW4gZXhjaGFuZ2UgYmV0d2VlbiBkZXNpZ24gYW5kIGVuZ2luZWVyaW5nIHBsYXRmb3Jtcy4nLFxuICAnQ3JlYXRlZCB0aGUgRFRJRnggdG9vbGtpdCAoQ0xJLCBTREssIGF1ZGl0LCBhbmQgZGlmZiB1dGlsaXRpZXMpIHRvIGF1dG9tYXRlIHRva2VuIHZhbGlkYXRpb24sIGdvdmVybmFuY2UsIGFuZCByZXBvcnRpbmcgaW4gQ0kgcGlwZWxpbmVzLicsXG5dO1xuXG5jb25zdCBTS0lMTF9DQVRFR09SSUVTID0gW1xuICB7XG4gICAgdGl0bGU6ICdBcmNoaXRlY3R1cmUgJiBTeXN0ZW1zJyxcbiAgICBza2lsbHM6IFtcbiAgICAgICdSZWFjdCwgVHlwZVNjcmlwdCwgTm9kZS5qcycsXG4gICAgICAnRGVzaWduLXN5c3RlbSBhcmNoaXRlY3R1cmUgYW5kIHRva2VuIHBpcGVsaW5lcycsXG4gICAgICAnTW9kdWxhciBwbGF0Zm9ybSBwYXR0ZXJucyBmb3IgbXVsdGktcHJvZHVjdCBTYWFTLicsXG4gICAgXSxcbiAgfSxcbiAge1xuICAgIHRpdGxlOiAnTGVhZGVyc2hpcCAmIERlbGl2ZXJ5JyxcbiAgICBza2lsbHM6IFtcbiAgICAgICdNZW50b3JzaGlwLCBoaXJpbmcsIGFuZCBjYXBhYmlsaXR5IGJ1aWxkaW5nJyxcbiAgICAgICdSb2FkbWFwIG93bmVyc2hpcCBhbmQgdGVjaG5pY2FsIHN0cmF0ZWd5JyxcbiAgICAgICdDcm9zcy1mdW5jdGlvbmFsIGFsaWdubWVudCB3aXRoIHByb2R1Y3QgYW5kIGRlc2lnbi4nLFxuICAgIF0sXG4gIH0sXG4gIHtcbiAgICB0aXRsZTogJ1F1YWxpdHkgJiBSZWxpYWJpbGl0eScsXG4gICAgc2tpbGxzOiBbXG4gICAgICAnSmVzdCwgVml0ZXN0LCBQbGF5d3JpZ2h0IGF1dG9tYXRpb24nLFxuICAgICAgJ0FjY2Vzc2liaWxpdHksIGNvbnRyYWN0LCBhbmQgcGVyZm9ybWFuY2UgZ292ZXJuYW5jZScsXG4gICAgICAnT2JzZXJ2YWJpbGl0eSBhbmQgcmVsZWFzZSByZWFkaW5lc3Mgc3RhbmRhcmRzLicsXG4gICAgXSxcbiAgfSxcbiAge1xuICAgIHRpdGxlOiAnUGxhdGZvcm0gVG9vbGluZycsXG4gICAgc2tpbGxzOiBbXG4gICAgICAnR2l0SHViIEFjdGlvbnMsIERvY2tlciwgQ0kvQ0Qgb3JjaGVzdHJhdGlvbicsXG4gICAgICAnVGVsZW1ldHJ5IHdpdGggT3BlblRlbGVtZXRyeSBhbmQgR3JhZmFuYScsXG4gICAgICAnU3Rvcnlib29rLCBkZXNpZ24gdG9rZW5zLCBhbmQgZG9jdW1lbnRhdGlvbiB3b3JrZmxvd3MuJyxcbiAgICBdLFxuICB9LFxuXTtcblxuZXhwb3J0IGNvbnN0IGNvcHkgPSB7XG4gIFNVTU1BUlksXG4gIFNFTEVDVEVEX0FDSElFVkVNRU5UUyxcbiAgS0VZX1BST0pFQ1RTLFxuICBFWFBFUklFTkNFUyxcbiAgU0tJTExfQ0FURUdPUklFUyxcbn07XG4iXX0=