<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>Will Golledge</title>
    <subtitle>Will Golledge&#39;s homepage</subtitle>
    <link rel="self" type="application/atom+xml" href="https://willg.dev/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://willg.dev"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2020-07-31T00:00:00+00:00</updated>
    <id>https://willg.dev/atom.xml</id>
    <entry xml:lang="en">
        <title>Adapting Team Dynamics in Response to Change</title>
        <published>2020-07-31T00:00:00+00:00</published>
        <updated>2020-07-31T00:00:00+00:00</updated>
        
        <author>
          <name>Will Golledge</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://willg.dev/writing/adapting-team-dynamics-in-response-to-change/"/>
        <id>https://willg.dev/writing/adapting-team-dynamics-in-response-to-change/</id>
        
        <content type="html" xml:base="https://willg.dev/writing/adapting-team-dynamics-in-response-to-change/">&lt;p&gt;Team dynamics are definitively more of an art than a science, however they are crucial to collaborative and organisational success. In this post I look at &lt;strong&gt;adapting a team’s dynamic as a direct response to change&lt;/strong&gt;: specifically a change in personnel, or a change in working styles in light of the new remote-first lifestyles many of us have undertaken.&lt;/p&gt;
&lt;p&gt;The dynamic of a team (primarily a &lt;em&gt;software engineering&lt;/em&gt; team in this context) has a tremendous effect on that team’s ability to be effective, produce quality outputs, sustain motivation, and stay in high spirits. You can select five of the best individuals in any particular field and ask them to work on a combined project/product: if their cohesion and team dynamic is lacking, then the final result is going to suffer no matter the prowess of each individual. Different teams (even within the same sector) are likely to have substantially varied team dynamics. Some might be markedly &lt;em&gt;static&lt;/em&gt;, lacking any sort of dynamism.&lt;/p&gt;
&lt;p&gt;As a consultant I’ve had the benefit of being in a variety of teams working on different products. While there are many similarities that can be drawn between teams, there are many major and nuanced differences in the way that they function. Often, well-established teams have some of the best team dynamics, however they are still susceptible to changes in circumstances and need to be willing to adapt/evolve.&lt;/p&gt;
&lt;p&gt;It’s no secret that high performing teams are almost always motivated and have managed to cultivate an advantageous team dynamic. Dan Fabulich has talked about how at Redfin &lt;a rel=&quot;external&quot; href=&quot;https://redfin.engineering/measure-job-satisfaction-instead-of-software-engineering-productivity-418779ce3451&quot;&gt;they used NPS scores to measure engineer motivation&lt;/a&gt; (a metric often used to evaluate client satisfaction and loyalty). Engineer motivation and happiness (and by proxy the wider team dynamic) is found to have a &lt;a rel=&quot;external&quot; href=&quot;https://pubmed.ncbi.nlm.nih.gov/24688866/&quot;&gt;direct correlation with productivity and problem solving&lt;/a&gt; (Graziotin, Daniel &amp;amp; Wang, Xiaofeng &amp;amp; Abrahamsson, Pekka. 2014).&lt;/p&gt;
&lt;p&gt;Improving a team’s dynamic will doubtlessly improve the motivation of the individual team members. There are lots of ways to do this and this post will only scratch the surface — I&#39;ll be focussing on how you can adapt to a new team, followed by adapting to changes in working locations.&lt;/p&gt;
&lt;h2 id=&quot;adapting-to-a-new-team&quot;&gt;Adapting to a New Team&lt;/h2&gt;
&lt;p&gt;Joining a new or existing team can be daunting. It is something virtually everyone working in software engineering will have faced at some point. Here at Formidable it’s a commonplace experience: we work with a variety of clients, integrating into their own teams to help them deliver the best products possible.&lt;/p&gt;
&lt;p&gt;As a new team member to an existing team, it is imperative that you are open to integrating with the team’s dynamic. Being dismissive or resistant to how things currently work will hinder teamwork and potentially perpetuate the aspects of the team dynamic that you find unfavourable. I’m sure we’ve all been there (“why do we have so many meetings, it’s interrupting my flow!”) — here it’s important to remember that decisions have legacies. Though a team might not be using what you consider to be the most efficient way of working, they’ve likely incremented in a way that works for &lt;em&gt;them&lt;/em&gt; (although that’s not to say that there’s no room for change).&lt;/p&gt;
&lt;p&gt;In Robert Greene’s book, &lt;em&gt;Mastery&lt;/em&gt;, he elegantly investigates the path to honing one&#39;s &lt;em&gt;craft&lt;/em&gt;. In part II of the book, Greene describes “The Apprenticeship Phase” as a crucial step. This particular section was enlightening: being an apprentice, taking a step back to reflect and absorb, is a crucial phase of self-development that is often not given enough credit.&lt;/p&gt;
&lt;p&gt;When the participants of a team change (or when a new team is formed) it’s valuable to allow for a period of apprenticeship to find out how to collaborate best as a team. So, while on the surface you may think something along the lines of “well, that doesn’t apply to me — I’m a senior, not an apprentice”, this phase helps with finding out how best to collaborate and grow as a team, setting the stage for a successful team dynamic.&lt;/p&gt;
&lt;p&gt;Two of the apprenticeship steps Greene outlines are Deep Observation and Experimentation. I feel that Deep Observation is the most important when joining an existing team, while focusing on Experimentation makes more sense when forming a new team.&lt;/p&gt;
&lt;h3 id=&quot;deep-observation&quot;&gt;Deep Observation&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;When you enter a career or new environment, you move into a world with its own rules, procedures, and social dynamic […] every workplace has its own conventions, rules of behavior, and work standards. […] And so your task upon entering this world is to observe and absorb its reality as deeply as possible. […] These procedural and political rules may be dysfunctional or counterproductive, but your job is not to moralize about this or complain, but merely to understand them, to get a complete lay of the land.&lt;/p&gt;
&lt;p&gt;&lt;cite&gt;Robert Greene, &lt;em&gt;&lt;a rel=&quot;external&quot; href=&quot;http://powerseductionandwar.com/books/#Mastery&quot;&gt;Mastery&lt;/a&gt;&lt;/em&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Directing energy towards an initial phase of observation (rather than an attempt to change processes or workflows) can provide insight into the underlying way that a team works. Then, once a level of understanding is reached, changes can be suggested and introduced that are backed by qualitative evidence as opposed to instinct.&lt;/p&gt;
&lt;p&gt;In the case of:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;A new team member joining a team, there should be a degree of flexibility afforded by that person. Whether that&#39;s by following the programming styles or paradigms that are in place, or the way that pull requests and code reviews are conducted — ideally all teammates will be comfortable with what’s in place, and if not, feel comfortable asking for help. The new teammate should be willing to observe and adapt, only suggesting change once they understand the dynamics at play.&lt;/li&gt;
&lt;li&gt;A new team forming, it’s prudent to observe your new teammates to try and understand how they enjoy working: having a base level of understanding will help you to work cooperatively and towards a shared goal. One of GitLab’s excellent values is that &lt;a rel=&quot;external&quot; href=&quot;https://about.gitlab.com/handbook/values/#everything-is-in-draft&quot;&gt;Everything is in draft&lt;/a&gt;; adhering to this allows them to continually observe and be poised to make changes.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;experimentation&quot;&gt;Experimentation&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Most people wait too long to take this step, generally out of fear. It is always easier to learn the rules and stay within your comfort zone. Often you must force yourself to initiate such actions or experiments before you think you are ready.&lt;/p&gt;
&lt;p&gt;&lt;cite&gt;Robert Greene, &lt;em&gt;&lt;a rel=&quot;external&quot; href=&quot;http://powerseductionandwar.com/books/#Mastery&quot;&gt;Mastery&lt;/a&gt;&lt;/em&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;A team that is constantly willing to observe, interpret, and adapt, will reap the rewards. With the world today being so focussed on continuous improvement and optimisation, remaining static is a sure way to get left behind. This is the reason that agile frameworks place such emphasis on short feedback loops and reflection.&lt;/p&gt;
&lt;p&gt;By treating meetings like retrospectives (in Scrum) with the deserved significance, it will help to ensure that maintaining/improving team dynamic isn’t regarded as a “nice to have”, but is instead considered paramount to the success and productivity of the team in the long run. These type meetings are good times to plan/initiate/measure experiments.&lt;/p&gt;
&lt;p&gt;Once the team has &lt;em&gt;collectively&lt;/em&gt; decided on an experiment (whether process, code, or communication based), there are measures that can be put in place to make sure it’s likely to be beneficial, rather than desultory:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Defining success criteria prior to starting will help discern whether the experiment has been a success or is worth continuing. Setting a fixed timeframe prevents experiments dragging on too long.&lt;/li&gt;
&lt;li&gt;Taking note of how the team’s dynamic and resulting output has been affected means you can celebrate learnings (either bad or good).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Underpinning all of this is the fact that we don’t want to experiment to the point where changes become overly frequent and onerous. Changing ways of working too regularly will keep things unsettled and hinder any chances of getting into a productive rhythm.&lt;/p&gt;
&lt;p&gt;If you’re interested in learning more, Catherine Louis has written a &lt;a rel=&quot;external&quot; href=&quot;https://opensource.com/article/18/5/cultivating-attitude-experimentation-team&quot;&gt;great article about cultivating an experimental attitude within a team&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;adapting-to-working-remotely&quot;&gt;Adapting to Working Remotely&lt;/h2&gt;
&lt;p&gt;Some teams are already well-versed with remote working; at Formidable we work on a largely-remote basis so have been thankfully well-prepped for the seismic shift to remote-working. However, losing face-to-face time with colleagues means that we have to focus on making sure that our other communication methods are as productive as they can be.&lt;/p&gt;
&lt;p&gt;Not only do teams have to respond to changes in teammates, they also have to respond to changes in their physical working environment: in the current climate this means that teams that have built a favourable team dynamic working side by side are having to adapt. For some of us who enjoy having face-to-face time with colleagues, being fully remote can be demoralising — it can be hard to feel as valued and recognised for the work you do. &lt;a rel=&quot;external&quot; href=&quot;https://www.perkbox.com/uk/platform/recognition/maintaining-staff-morale-in-remote-work-environment&quot;&gt;Maintaining team morale&lt;/a&gt; can be helped by going out of your way to show others that you care.&lt;/p&gt;
&lt;p&gt;There’s no golden ticket to “solving” remote working. Different teams will have different ways of approaching it that work for them. Linking back to the experimentation mentioned prior, the important thing to do is try and recognise when something isn’t working as well as it could, then actively make a change (or changes).&lt;/p&gt;
&lt;h3 id=&quot;set-the-stage-for-success&quot;&gt;Set the Stage for Success&lt;/h3&gt;
&lt;p&gt;As software engineers we could refer to workstations/desks as our “stage” in a sense. If you’re working somewhere that doesn’t promote calm, productivity, and happiness, that could well be the first blocker to maintaining a team dynamic that had been working well in an office (or face-to-face) environment. Obviously there are some aspects completely out of our control, though there are still likely to be improvements and tweaks that can be made:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Having consistency in your daily routine and home (/remote) setup is the first step towards having consistency within the team. I personally feel like there&#39;s more time in the day when I&#39;m following some sort of daily structure/routine. The more team members who fall into a routine/consistent rhythm, the more aligned the team is likely to be as a result.&lt;/li&gt;
&lt;li&gt;Having a dedicated workspace with physical separation from your &quot;leisure&quot; area. This could be accomplished by having your work setup in a different room, or, by something as simple as having one piece of furniture reserved for relaxation and one for work. The physical change is a nice way to signal the end of a work day.&lt;/li&gt;
&lt;li&gt;Communicating! Communication is &lt;em&gt;the&lt;/em&gt; most important factor in maintaining or improving team dynamics in light of change. It’s often noted that &lt;a rel=&quot;external&quot; href=&quot;https://medium.com/@neurodatalab/experts-say-is-communication-really-only-7-verbal-truth-vs-marketing-9a8e7428fd0f&quot;&gt;93% of communication is nonverbal&lt;/a&gt;. I’m dubious that the percentage is as dramatic as that, but I think it’s fair to say that it’s harder to convey information purely over text than with the help of body language/tone — one of the reasons that video calls should be used frequently if possible. If sending a message solely via text, depending on the context, emojis and gifs can be used as a replacement for tone.&lt;/li&gt;
&lt;li&gt;Building trust and rapport with teammates. Creating designated opportunities for team members to chat, work-related or otherwise, can help to build trust and encourage free-flowing communication (as mentioned above!). Earlier this year Sam Morrison, a fellow Formidable, wrote about how important it is to &lt;a rel=&quot;external&quot; href=&quot;https://nearform.com/digital-community/managing-remote/#building-connection&quot;&gt;build connections while working remotely&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;working-remotely-across-timezones&quot;&gt;Working Remotely Across Timezones&lt;/h3&gt;
&lt;p&gt;While people working remotely don’t always span different timezones, people in teams spanning different timezones will almost always have an element of remote working. Shifting from being in the same timezone as your colleagues to being cross-timezone is another change lots of us will have to adapt to at some point, bringing with it another set of challenges and benefits. If the challenges are well dealt with, then there are notable perks from having members of a team in different areas of the world: customers/clients benefit from the extended hours of support and there is likely to be a greater range of perspectives and viewpoints.&lt;/p&gt;
&lt;p&gt;On projects I’ve worked on with teams split between timezones, &lt;a rel=&quot;external&quot; href=&quot;https://auriga.com/blog/2019/agile-distributed-remote-teams/#golden-hours&quot;&gt;golden hours&lt;/a&gt; have been integral to their success. Golden hours in this context refer to the “overlap” between timezones; it’s important to make use of this time in the best way possible. &lt;a rel=&quot;external&quot; href=&quot;https://djangostars.com/blog/how-to-manage-a-software-development-team-across-time-zones/#header5&quot;&gt;Organising team schedules for structured overlaps&lt;/a&gt; will help to keep communication across timezones in good shape. It should also help relieve pressure on team members to work outside of their preferred hours in order to make progress as a team and resolve blockers. There are a bunch of tools out there that can help with accommodating time differences: I’d recommend &lt;a rel=&quot;external&quot; href=&quot;https://whentochat.co/&quot;&gt;When To Chat&lt;/a&gt;, or &lt;a rel=&quot;external&quot; href=&quot;https://apps.apple.com/us/app/clocker/id1056643111&quot;&gt;Clocker&lt;/a&gt; if on macOS.&lt;/p&gt;
&lt;p&gt;These overlaps between timezones are often a useful way for to sync up progress and resolve blockers, although they shouldn’t be relied upon. It almost goes without saying but leaving appropriate detail in tickets and PRs as well as including bug reproductions where applicable will make it much easier for that work to be picked up asynchronously (this is always good practice, not just when working across timezones!).&lt;/p&gt;
&lt;h2 id=&quot;don-t-let-your-team-become-static&quot;&gt;Don’t Let Your Team Become Static&lt;/h2&gt;
&lt;p&gt;Nurturing an uplifting and motivational team dynamic is crucial not only for stakeholders concerned about the final deliverables, but also for the members of the team themselves. I&#39;ve found that working in a team that feels arduous or out of sync (for example) feels discouraging, leading to less productivity as a result; and on the contrary, working in a collaborative and non-judgemental team can feel hugely rewarding and motivating.&lt;/p&gt;
&lt;p&gt;It’s worth recognising that change is inevitable, and while recent change has far surpassed anything that most of us have encountered before, we can be sure that change will continue to happen in different forms. When change does happen, remember to focus on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Being flexible when joining a new team — not only will this help you align with your teammates, it will also steer you away from rigidity.&lt;/li&gt;
&lt;li&gt;Making changes and experimenting — even if things seem to be going fairly well, who wants to settle for &quot;fairly well&quot; when they could be going great.&lt;/li&gt;
&lt;li&gt;Communication — transparent and free-flowing communication will help your team to pivot and respond to change (particularly when remote). While structure is often seen as something we should avoid, if a little structure aids communication then in my opinion it&#39;s worth the trade-off.&lt;/li&gt;
&lt;li&gt;Prioritising team morale — a happy team is more productive. Do what you can to help make your teammates feel comfortable and motivated.&lt;/li&gt;
&lt;/ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>An Overview of Performance in JavaScript Applications</title>
        <published>2020-02-21T00:00:00+00:00</published>
        <updated>2020-02-21T00:00:00+00:00</updated>
        
        <author>
          <name>Will Golledge</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://willg.dev/writing/performance-in-javascript-applications/"/>
        <id>https://willg.dev/writing/performance-in-javascript-applications/</id>
        
        <content type="html" xml:base="https://willg.dev/writing/performance-in-javascript-applications/">&lt;p&gt;Warning ⚠ - this is not a short post, though I hope it can serve as a useful point of reference to those looking to enhance the performance of their app(s).&lt;/p&gt;
&lt;p&gt;Performance on the web is a vast and sprawling topic. There are so many facets to performance that can be considered; each project will have a different set of requirements and may need to focus on performance more or less depending on what is trying to be achieved. As the web evolves and more layers of logic and computation get added, it can be easy for performance to take a hit.&lt;/p&gt;
&lt;p&gt;This post will just scratch the surface and give an overview into some of the ways that performance can be affected; it won&#39;t go too in-depth into any particular region of performance or library - instead it will be primarily focussed around different aspects of performance to be aware of. Due to the focus being a high-level overview, there also aren&#39;t many specific code examples.&lt;/p&gt;
&lt;p&gt;There are always some aspects to frontend performance that are out of your control; particularly when using JavaScript - the most performant sites will be ones with little/no JavaScript (though that isn&#39;t realistic with the requirements of many websites):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The site&#39;s resources still have to be downloaded by the client. Even though you can help mitigate this with the way that you &lt;a href=&quot;https://willg.dev/writing/performance-in-javascript-applications/#bundling&quot;&gt;bundle the app&lt;/a&gt;, the performance is ultimately determined by network speed.&lt;/li&gt;
&lt;li&gt;JavaScript often interfaces with a variety of API&#39;s. While network speed is a factor here as well, the performance is also impacted by how long an API takes to handle the request and send a response.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;table-of-contents&quot;&gt;Table of Contents&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://willg.dev/writing/performance-in-javascript-applications/#initial-load&quot;&gt;Initial Load&lt;/a&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://willg.dev/writing/performance-in-javascript-applications/#downloading-the-js&quot;&gt;Downloading the JS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://willg.dev/writing/performance-in-javascript-applications/#bundling&quot;&gt;Bundling&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://willg.dev/writing/performance-in-javascript-applications/#images&quot;&gt;Images&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://willg.dev/writing/performance-in-javascript-applications/#javascript-execution&quot;&gt;JavaScript Execution&lt;/a&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://willg.dev/writing/performance-in-javascript-applications/#memoization&quot;&gt;Memoization&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://willg.dev/writing/performance-in-javascript-applications/#execution-time&quot;&gt;Execution Time&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://willg.dev/writing/performance-in-javascript-applications/#memory-problems&quot;&gt;Memory Problems&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://willg.dev/writing/performance-in-javascript-applications/#offloading-work&quot;&gt;Offloading Work&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://willg.dev/writing/performance-in-javascript-applications/#renders&quot;&gt;Renders&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://willg.dev/writing/performance-in-javascript-applications/#performance-measuring&quot;&gt;Performance Measuring&lt;/a&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://willg.dev/writing/performance-in-javascript-applications/#rail&quot;&gt;RAIL&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://willg.dev/writing/performance-in-javascript-applications/#painting&quot;&gt;Painting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://willg.dev/writing/performance-in-javascript-applications/#tools-to-measure-performance&quot;&gt;Tools to Measure Performance&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://willg.dev/writing/performance-in-javascript-applications/#conclusion&quot;&gt;Conclusion&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;initial-load&quot;&gt;Initial Load&lt;/h2&gt;
&lt;p&gt;One of the most impactful performance factors in an app is how long it takes for the initial resources to load (/download). Generally, the more complex an app is, the larger the resources are that must be loaded.&lt;/p&gt;
&lt;p&gt;Resource download is particularly critical for users on lower-end networks that don&#39;t have the same level of speed and consistency as 4G and 5G. The &lt;a rel=&quot;external&quot; href=&quot;https://www.speedtest.net/global-index&quot;&gt;Speedtest Global Index&lt;/a&gt; gives an insight into the disparity between network speeds across the world. Helping to improve the performance and load-times for our applications can have a massive benefit to users with slower network connections, and is an important step towards ensuring that we&#39;re making the web as accessible as possible.&lt;/p&gt;
&lt;p&gt;It is going to become increasingly easier for developers to serve their applications in a different manner depending on the users &lt;a rel=&quot;external&quot; href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/NetworkInformation/effectiveType&quot;&gt;connection speed&lt;/a&gt;, via a technique known as &lt;a rel=&quot;external&quot; href=&quot;https://web.dev/adaptive-serving-based-on-network-quality/&quot;&gt;adaptive serving&lt;/a&gt;. Based on the users connection speed, the assets that are being sent to the user are adapted (such as high quality video compared to low quality video).&lt;/p&gt;
&lt;p&gt;There is a myriad of statistics available showing how significant initial load times are, but here&#39;s some of the highlights:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;53% of mobile users abandon websites that take longer than 3 seconds to load - &lt;a rel=&quot;external&quot; href=&quot;https://www.thinkwithgoogle.com/marketing-resources/data-measurement/mobile-page-speed-new-industry-benchmarks/&quot;&gt;Google, 2016&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;For every additional second a page takes to load, 10 percent of users leave - &lt;a rel=&quot;external&quot; href=&quot;https://www.creativebloq.com/features/how-the-bbc-builds-websites-that-scale&quot;&gt;BBC, 2016&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;90% increase in bounce probability when page load speed dropped from 1 to 5 seconds, according to Google’s neural-network predictive model - &lt;a rel=&quot;external&quot; href=&quot;https://www.thinkwithgoogle.com/marketing-resources/data-measurement/mobile-page-speed-new-industry-benchmarks/&quot;&gt;Google, 2017&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https://www.hobo-web.co.uk/your-website-design-should-load-in-4-seconds/&quot;&gt;Shaun Anderson&lt;/a&gt; has compiled a great list of resources and statistics that detail the importance and benefits of fast load times.&lt;/p&gt;
&lt;p&gt;If the above statistics weren&#39;t enough to convince you of how important initial load is, improving a site&#39;s load speed is also reported to have a positive effect on its &lt;a rel=&quot;external&quot; href=&quot;https://developers.google.com/web/updates/2018/07/search-ads-speed&quot;&gt;SEO rankings&lt;/a&gt;, though Google hasn&#39;t disclosed how major the impact is.&lt;/p&gt;
&lt;p&gt;An easy way to improve load speeds for your web page is to utilise &lt;em&gt;caching&lt;/em&gt;. Two of the main ways that resources/assets are cached is via &lt;code&gt;browser caching&lt;/code&gt; and &lt;code&gt;CDN caching&lt;/code&gt;.&lt;/p&gt;
&lt;h4 id=&quot;browser-caching&quot;&gt;Browser Caching&lt;/h4&gt;
&lt;p&gt;This is where the user&#39;s browser will store resources in a &lt;em&gt;cache&lt;/em&gt; so that the next time the same user visits the site it is able to retrieve the resources from local data rather than via HTTP. Because resources are stored locally, a user has to visit a site before its resources can be cached.&lt;/p&gt;
&lt;p&gt;Increasingly, developers are becoming able to have more granular control over what resources are cached, and under what circumstances they would like the cache to be invalidated. One good example of an API to do this, is via Google&#39;s &lt;a rel=&quot;external&quot; href=&quot;https://developers.google.com/web/tools/workbox&quot;&gt;Workbox&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A user can choose to delete their local/browser cache at any time.&lt;/p&gt;
&lt;h4 id=&quot;cdn-caching&quot;&gt;CDN Caching&lt;/h4&gt;
&lt;p&gt;Caching is one of the main advantages a CDN (content delivery network) has to offer. Sharing similarities with browser caching, a CDN cache aims to store resources for a particular app. The main difference being that a CDN stores the resources on a server in a geographically close location to a user, instead of on their local computer - meaning that there is less distance for the resources to travel, giving users accelerated access to the app&#39;s content.&lt;/p&gt;
&lt;h4 id=&quot;link-prefetching&quot;&gt;Link Prefetching&lt;/h4&gt;
&lt;p&gt;Browser&#39;s have the ability to &lt;em&gt;prefetch&lt;/em&gt; specified resources that the user might need in the future, storing them in the cache. This means that when a user visits one of the prefetched resources, it can be quickly retrieved from the cache, aiding performance and reducing the dependency on a consistent network connection. Ivan Akulov has written a great &lt;a rel=&quot;external&quot; href=&quot;https://3perf.com/blog/link-rels/#prefetch&quot;&gt;article&lt;/a&gt; on the different &lt;code&gt;&amp;lt;link rel&amp;gt;&lt;/code&gt; tags that are available in order to bolster performance by retrieving resources in advance.&lt;/p&gt;
&lt;h3 id=&quot;downloading-the-js&quot;&gt;Downloading the JS&lt;/h3&gt;
&lt;p&gt;How you choose to download the necessary JS can have an knock-on performance impact. Ideally, you want start with the JS that is needed for the first few actions, delaying the download of other JS so that the user experience is as smooth as possible.&lt;/p&gt;
&lt;p&gt;When embedding/referring to scripts in HTML there are some performance focussed attributes that can be used (as per the below image):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;script&lt;/code&gt; - the use of a regular script tag will &lt;strong&gt;block HTML parsing&lt;/strong&gt; while the script is downloaded and executed.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;script async&lt;/code&gt; - HTML5 added the &lt;code&gt;async&lt;/code&gt; attribute which allows for JS to be downloaded in parallel to parsing. If being used in conjunction with a JS &lt;a rel=&quot;external&quot; href=&quot;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules&quot;&gt;module script&lt;/a&gt; the entire dependency tree will be fetched in parallel. As soon as fetching of the JS is finished, it will be executed.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;script defer&lt;/code&gt; - similar to the &lt;code&gt;async&lt;/code&gt; attribute, this provides an alternative to blocking the parser with JS, the difference being that it waits for parsing to complete before execution.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;
  &lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 512 240&quot; role=&quot;img&quot; aria-labelledby=&quot;t&quot;&gt;
&lt;title id=&quot;t&quot;&gt;Timelines comparing script, script async and script defer&lt;/title&gt;
&lt;style&gt;text{font-family:sans-serif;fill:#292929}.n{font-weight:700}.s{font-size:11px;fill-opacity:.6}&lt;/style&gt;
&lt;text x=&quot;0&quot; y=&quot;16&quot; class=&quot;n&quot; font-size=&quot;13&quot;&gt;&amp;lt;script&amp;gt;&lt;/text&gt;
&lt;text x=&quot;0&quot; y=&quot;37&quot; class=&quot;s&quot;&gt;HTML&lt;/text&gt;
&lt;rect x=&quot;44.0&quot; y=&quot;28&quot; width=&quot;93.6&quot; height=&quot;12&quot; fill=&quot;#292929&quot; fill-opacity=&quot;.18&quot;/&gt;
&lt;rect x=&quot;137.6&quot; y=&quot;28&quot; width=&quot;187.2&quot; height=&quot;12&quot; fill=&quot;none&quot; stroke=&quot;#292929&quot; stroke-opacity=&quot;.3&quot; stroke-dasharray=&quot;3 3&quot;/&gt;
&lt;rect x=&quot;324.8&quot; y=&quot;28&quot; width=&quot;187.2&quot; height=&quot;12&quot; fill=&quot;#292929&quot; fill-opacity=&quot;.18&quot;/&gt;
&lt;text x=&quot;0&quot; y=&quot;55&quot; class=&quot;s&quot;&gt;JS&lt;/text&gt;
&lt;rect x=&quot;137.6&quot; y=&quot;46&quot; width=&quot;140.4&quot; height=&quot;12&quot; fill=&quot;#292929&quot; fill-opacity=&quot;.42&quot;/&gt;
&lt;rect x=&quot;278.0&quot; y=&quot;46&quot; width=&quot;46.8&quot; height=&quot;12&quot; style=&quot;fill:var(--accent)&quot;/&gt;
&lt;text x=&quot;0&quot; y=&quot;82&quot; class=&quot;n&quot; font-size=&quot;13&quot;&gt;&amp;lt;script async&amp;gt;&lt;/text&gt;
&lt;text x=&quot;0&quot; y=&quot;103&quot; class=&quot;s&quot;&gt;HTML&lt;/text&gt;
&lt;rect x=&quot;44.0&quot; y=&quot;94&quot; width=&quot;234.0&quot; height=&quot;12&quot; fill=&quot;#292929&quot; fill-opacity=&quot;.18&quot;/&gt;
&lt;rect x=&quot;278.0&quot; y=&quot;94&quot; width=&quot;46.8&quot; height=&quot;12&quot; fill=&quot;none&quot; stroke=&quot;#292929&quot; stroke-opacity=&quot;.3&quot; stroke-dasharray=&quot;3 3&quot;/&gt;
&lt;rect x=&quot;324.8&quot; y=&quot;94&quot; width=&quot;187.2&quot; height=&quot;12&quot; fill=&quot;#292929&quot; fill-opacity=&quot;.18&quot;/&gt;
&lt;text x=&quot;0&quot; y=&quot;121&quot; class=&quot;s&quot;&gt;JS&lt;/text&gt;
&lt;rect x=&quot;137.6&quot; y=&quot;112&quot; width=&quot;140.4&quot; height=&quot;12&quot; fill=&quot;#292929&quot; fill-opacity=&quot;.42&quot;/&gt;
&lt;rect x=&quot;278.0&quot; y=&quot;112&quot; width=&quot;46.8&quot; height=&quot;12&quot; style=&quot;fill:var(--accent)&quot;/&gt;
&lt;text x=&quot;0&quot; y=&quot;148&quot; class=&quot;n&quot; font-size=&quot;13&quot;&gt;&amp;lt;script defer&amp;gt;&lt;/text&gt;
&lt;text x=&quot;0&quot; y=&quot;169&quot; class=&quot;s&quot;&gt;HTML&lt;/text&gt;
&lt;rect x=&quot;44.0&quot; y=&quot;160&quot; width=&quot;374.4&quot; height=&quot;12&quot; fill=&quot;#292929&quot; fill-opacity=&quot;.18&quot;/&gt;
&lt;text x=&quot;0&quot; y=&quot;187&quot; class=&quot;s&quot;&gt;JS&lt;/text&gt;
&lt;rect x=&quot;137.6&quot; y=&quot;178&quot; width=&quot;140.4&quot; height=&quot;12&quot; fill=&quot;#292929&quot; fill-opacity=&quot;.42&quot;/&gt;
&lt;rect x=&quot;418.4&quot; y=&quot;178&quot; width=&quot;46.8&quot; height=&quot;12&quot; style=&quot;fill:var(--accent)&quot;/&gt;
&lt;line x1=&quot;0&quot; y1=&quot;210&quot; x2=&quot;512&quot; y2=&quot;210&quot; stroke=&quot;#292929&quot; stroke-opacity=&quot;.15&quot;/&gt;
&lt;rect x=&quot;0&quot; y=&quot;223&quot; width=&quot;11&quot; height=&quot;11&quot; fill=&quot;#292929&quot; fill-opacity=&quot;.18&quot;/&gt;
&lt;text x=&quot;17&quot; y=&quot;232&quot; class=&quot;s&quot;&gt;parsing&lt;/text&gt;
&lt;rect x=&quot;67.4&quot; y=&quot;223&quot; width=&quot;11&quot; height=&quot;11&quot; fill=&quot;#292929&quot; fill-opacity=&quot;.42&quot;/&gt;
&lt;text x=&quot;84.4&quot; y=&quot;232&quot; class=&quot;s&quot;&gt;download&lt;/text&gt;
&lt;rect x=&quot;141.0&quot; y=&quot;223&quot; width=&quot;11&quot; height=&quot;11&quot; style=&quot;fill:var(--accent);fill-opacity:1&quot;/&gt;
&lt;text x=&quot;158.0&quot; y=&quot;232&quot; class=&quot;s&quot;&gt;execution&lt;/text&gt;
&lt;text x=&quot;512&quot; y=&quot;232&quot; class=&quot;s&quot; text-anchor=&quot;end&quot;&gt;time &amp;#8594;&lt;/text&gt;
&lt;/svg&gt;
  &lt;figcaption&gt;How each attribute interleaves parsing, download and execution. After &lt;a href=&quot;https://www.growingwiththeweb.com/2014/02/async-vs-defer-attributes.html&quot;&gt;Growing with the Web&lt;/a&gt;.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h4 id=&quot;streams&quot;&gt;Streams&lt;/h4&gt;
&lt;p&gt;The &lt;a rel=&quot;external&quot; href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Streams_API&quot;&gt;Streams API&lt;/a&gt; includes a really exciting set of new tools for performance. They allow JavaScript to receive data via a readable stream instead of having to receive it all at once. The potential for utilising the Streams API is huge and can allow for much faster initial renders while remaining data is then received progressively over time.&lt;/p&gt;
&lt;p&gt;Streams form part of a change in perspective towards how we think about data processing (UI&#39;s should be fluid and stream-driven rather than overly structured and static, though that is a &lt;em&gt;whole&lt;/em&gt; other topic) and can be applied to help with both initial load performance and ongoing performance.&lt;/p&gt;
&lt;p&gt;Jake Archibald&#39;s &lt;a rel=&quot;external&quot; href=&quot;https://jakearchibald.com/2016/streams-ftw/&quot;&gt;streams demo&lt;/a&gt; is worth a watch to see the difference it makes in practice.&lt;/p&gt;
&lt;h4 id=&quot;third-party-scripts&quot;&gt;Third Party Scripts&lt;/h4&gt;
&lt;p&gt;No matter how much control you have over your JavaScript that the client downloads, as soon as a third-party script is added to the page - that control is lost. Examples of widely-used third-party scripts are Google Tag Manager and Facebook Pixel.&lt;/p&gt;
&lt;p&gt;Third party scripts can be of any size, and can drastically impact the performance of your app. They are often deemed as a requirement for large projects, however, their performance impact should be well evaluated and considered before a decision is made.&lt;/p&gt;
&lt;p&gt;If using third party scripts - it may be prudent to load them with the above &lt;code&gt;async&lt;/code&gt; or &lt;code&gt;defer&lt;/code&gt; attributes so that they do not interrupt the page&#39;s parsing. If you&#39;re looking for other ways to improve third party script performance check out &lt;a rel=&quot;external&quot; href=&quot;https://web.dev/efficiently-load-third-party-javascript/&quot;&gt;this article&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;bundling&quot;&gt;Bundling&lt;/h3&gt;
&lt;p&gt;When it comes to improving initial load/download performance (and metrics such as Time To Interactive) in modern apps; bundling is key.  Bundling, is a technique used to put your code, resources, and dependencies into one or more &lt;em&gt;bundles&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;These bundles can combine a number of different resources (JS, CSS, HTML, images etc.) and transform them into a smaller number of performant bundles. Depending on the bundler being used, lots of configurability can be applied to the bundling process in order to emit bundles that suit the needs of your app.&lt;/p&gt;
&lt;p&gt;Initially, one of the main selling points of bundling was that there were a smaller number of files to download. However, seeing as all evergreen browsers now utilise HTTP/2, this is no longer problematic as sending data in parallel is now possible without having to use multiple TCP connections via &lt;a rel=&quot;external&quot; href=&quot;https://developers.google.com/web/fundamentals/performance/http2#request_and_response_multiplexing&quot;&gt;multiplexing&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In modern development - bundling is primarily used to transform the beautiful code we write into ugly, performant, and executable code made available to our users.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Most modern apps require code to be transpiled before it can be ran on a browser. CSS-in-JS/SASS needs to be converted to CSS, JSX (if using React) needs to be converted to JS, Svelte components have to be compiled.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;bundle-size&quot;&gt;Bundle Size&lt;/h4&gt;
&lt;p&gt;Bundle size (&lt;em&gt;collective&lt;/em&gt; bundle size as opposed to single bundle size) is one of the most quantifiable ways to estimate performance/initial load times. This is because it is quite simple to compare bundle sizes and evaluate how long it might take to download that amount of data at a certain network speed.&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https://bundlephobia.com/&quot;&gt;BundlePhobia&lt;/a&gt; is a great tool that can visually detail the (bundle size) cost by adding an NPM package; allowing you to make a more informed decision about the benefit of adding the package vs the performance/bundle cost.&lt;/p&gt;
&lt;p&gt;Addy Osmani &lt;a rel=&quot;external&quot; href=&quot;https://v8.dev/blog/cost-of-javascript-2019&quot;&gt;recommends&lt;/a&gt; splitting bundles that are larger than  &lt;code&gt;50-100kb&lt;/code&gt;. When code splitting in this manner, &lt;a rel=&quot;external&quot; href=&quot;https://webpack.js.org/guides/lazy-loading/&quot;&gt;lazy loading&lt;/a&gt; becomes much more beneficial - essentially delaying the import of certain bundles/functionality until a certain trigger event has been performed. Code-splitting and lazy-loading can be very finely tuned if required and I urge you to read about them both in detail to see how they might be able to help with your app.&lt;/p&gt;
&lt;p&gt;So, knowing how important load times and bundle sizes are, how can you actually reduce the bundle size...?&lt;/p&gt;
&lt;h4 id=&quot;tree-shaking&quot;&gt;Tree Shaking&lt;/h4&gt;
&lt;p&gt;Tree shaking is all about &lt;em&gt;dead code elimination -&lt;/em&gt; with the goal of tree shaking being to only include the code that is required for the app to run. Tree shaking has been made possible by the &lt;a rel=&quot;external&quot; href=&quot;https://exploringjs.com/es6/ch_modules.html#static-module-structure&quot;&gt;static structure&lt;/a&gt; of ES2015 modules; meaning that the the dependencies of an app can be determined by the static syntax, no code execution required. For the same reason, when you use &lt;a rel=&quot;external&quot; href=&quot;https://v8.dev/features/dynamic-import&quot;&gt;dynamic import&lt;/a&gt; it makes the module ineligible for tree shaking.&lt;/p&gt;
&lt;p&gt;In the below example we import a function &lt;code&gt;sum&lt;/code&gt; from &lt;code&gt;math.js&lt;/code&gt; . &lt;code&gt;math.js&lt;/code&gt; also includes other utility functions such as &lt;code&gt;square&lt;/code&gt; and &lt;code&gt;divide&lt;/code&gt; . However, because JS bundlers can statically scan the code to see which exports are being used, only the &lt;code&gt;sum&lt;/code&gt; function will be included in the production bundle.&lt;/p&gt;
&lt;figure&gt;
  &lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 512 164&quot; role=&quot;img&quot; aria-labelledby=&quot;t&quot;&gt;
&lt;title id=&quot;t&quot;&gt;Only the imported sum function survives into the production bundle&lt;/title&gt;
&lt;style&gt;text{font-family:sans-serif;fill:#292929}.n{font-weight:700}.s{font-size:11px;fill-opacity:.6}.m{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px}&lt;/style&gt;
&lt;text x=&quot;0&quot; y=&quot;12&quot; class=&quot;n m&quot;&gt;math.js&lt;/text&gt;
&lt;rect x=&quot;0&quot; y=&quot;22&quot; width=&quot;196&quot; height=&quot;100&quot; fill=&quot;none&quot; stroke=&quot;#292929&quot; stroke-opacity=&quot;.2&quot;/&gt;
&lt;rect x=&quot;14&quot; y=&quot;27&quot; width=&quot;3&quot; height=&quot;16&quot; style=&quot;fill:var(--accent);fill-opacity:1&quot;/&gt;
&lt;text x=&quot;26&quot; y=&quot;40&quot; class=&quot;m&quot; style=&quot;fill:var(--accent);fill-opacity:1&quot;&gt;export sum&lt;/text&gt;
&lt;rect x=&quot;14&quot; y=&quot;55&quot; width=&quot;3&quot; height=&quot;16&quot; fill=&quot;#292929&quot; fill-opacity=&quot;.28&quot;/&gt;
&lt;text x=&quot;26&quot; y=&quot;68&quot; class=&quot;m&quot; fill=&quot;#292929&quot; fill-opacity=&quot;.28&quot;&gt;export square&lt;/text&gt;
&lt;rect x=&quot;14&quot; y=&quot;83&quot; width=&quot;3&quot; height=&quot;16&quot; fill=&quot;#292929&quot; fill-opacity=&quot;.28&quot;/&gt;
&lt;text x=&quot;26&quot; y=&quot;96&quot; class=&quot;m&quot; fill=&quot;#292929&quot; fill-opacity=&quot;.28&quot;&gt;export divide&lt;/text&gt;
&lt;text x=&quot;316&quot; y=&quot;12&quot; class=&quot;n m&quot;&gt;bundle.js&lt;/text&gt;
&lt;rect x=&quot;316&quot; y=&quot;22&quot; width=&quot;196&quot; height=&quot;44&quot; fill=&quot;none&quot; stroke=&quot;#292929&quot; stroke-opacity=&quot;.2&quot;/&gt;
&lt;rect x=&quot;330&quot; y=&quot;27&quot; width=&quot;3&quot; height=&quot;16&quot; style=&quot;fill:var(--accent);fill-opacity:1&quot;/&gt;
&lt;text x=&quot;342&quot; y=&quot;40&quot; class=&quot;m&quot; style=&quot;fill:var(--accent);fill-opacity:1&quot;&gt;sum&lt;/text&gt;
&lt;line x1=&quot;212&quot; y1=&quot;64&quot; x2=&quot;300&quot; y2=&quot;64&quot; stroke=&quot;#292929&quot; stroke-opacity=&quot;.35&quot;/&gt;
&lt;path d=&quot;M300 64 l-7 -4 v8 z&quot; fill=&quot;#292929&quot; fill-opacity=&quot;.35&quot;/&gt;
&lt;text x=&quot;256&quot; y=&quot;55&quot; class=&quot;s&quot; text-anchor=&quot;middle&quot;&gt;bundle&lt;/text&gt;
&lt;text x=&quot;0&quot; y=&quot;150&quot; class=&quot;m&quot; fill-opacity=&quot;.55&quot;&gt;import { sum } from &quot;./math.js&quot;&lt;/text&gt;
&lt;text x=&quot;512&quot; y=&quot;150&quot; class=&quot;s&quot; text-anchor=&quot;end&quot;&gt;square and divide are never referenced&lt;/text&gt;
&lt;/svg&gt;
  &lt;figcaption&gt;&lt;code&gt;square&lt;/code&gt; and &lt;code&gt;divide&lt;/code&gt; are never imported, so the bundler drops them.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Different bundlers perform tree shaking differently. For more info about tree shaking and how it is implemented in Webpack, take a look &lt;a rel=&quot;external&quot; href=&quot;https://webpack.js.org/guides/tree-shaking/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id=&quot;backwards-compatibility-untranspiling&quot;&gt;Backwards Compatibility / &quot;Untranspiling&quot;&lt;/h4&gt;
&lt;p&gt;Backwards compatibility is always a major factor to consider in relation to bundle sizes. As a rule of thumb, the more browsers and browser versions a site has to support, the larger the bundled code will be; this is due to newer syntax being less verbose than the backwards-compatible versions of JavaScript. If you are able to focus on evergreen browsers and drop support for browsers such as IE, this could have a solid impact on your bundle size.&lt;/p&gt;
&lt;p&gt;Recently, there has been more traction around &lt;code&gt;untranspiling&lt;/code&gt; (I&#39;m not sure if that has yet been coined as an official term), which essentially aims to do the opposite of what  &lt;a rel=&quot;external&quot; href=&quot;https://babeljs.io/&quot;&gt;Babel&lt;/a&gt; does - converting older &lt;code&gt;ES5&lt;/code&gt; JavaScript code to &lt;code&gt;ES2015&lt;/code&gt; and newer. This could reduce the bundle sizes of most libraries by as much as 20-30%.&lt;/p&gt;
&lt;p&gt;Jovi De Croock has created a &lt;a rel=&quot;external&quot; href=&quot;https://github.com/JoviDeCroock/POC-ModularLegacyBuild&quot;&gt;brilliant POC app&lt;/a&gt; to showcase how major the differences in bundle sizes can be between a modern module build vs a legacy one. Spoiler: the built size of the module build is almost 50% smaller than the legacy one; if that differential is extrapolated to a larger-size application, the impact on load times could be dramatic.&lt;/p&gt;
&lt;p&gt;As syntax evolves and becomes less verbose, if you are able to ship bundled code full of syntactic sugar (with less polyfilling/backwards-compatibility support), this will in turn have a positive effect on your final bundle size.&lt;/p&gt;
&lt;h3 id=&quot;images&quot;&gt;Images&lt;/h3&gt;
&lt;p&gt;In 2018, images made up a substantial &lt;a rel=&quot;external&quot; href=&quot;https://httparchive.org/reports/page-weight&quot;&gt;21%&lt;/a&gt; of the average site&#39;s content/weight; since then, the impact of images on a site&#39;s size has &lt;a rel=&quot;external&quot; href=&quot;https://almanac.httparchive.org/en/2019/page-weight&quot;&gt;increased sharply&lt;/a&gt; putting the number today closer to a whopping &lt;strong&gt;40%&lt;/strong&gt; of the downloaded content on the modern web. Small image optimisations could have a remarkable knock-on effect to your app&#39;s performance.&lt;/p&gt;
&lt;p&gt;The designated size of the image on the page should dictate the size of the image that is downloaded, saving unnecessarily large images from being downloaded and bloating the bundle size. DPR (Device Pixel Ratio) is the preferred technique for determining image size as regular pixel measurements are now often far too inaccurate with the wide range of pixel densities on modern devices.&lt;/p&gt;
&lt;p&gt;HTML has a bunch of built-in functionality to help with image optimisation, so no need to write lots of funky complex code to do it manually. The &lt;code&gt;srcset&lt;/code&gt; attribute on an &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; element allows you to specify a designated set of image sizes, allowing the browser to select the appropriate one for the current viewport.&lt;/p&gt;
&lt;p&gt;There are progressive (enhancement) techniques that can be used so that a low quality image is initially downloaded, and then replaced with higher quality versions over time. This is great as it means the core content of the page is available on the user&#39;s browser more quickly, before being replaced or complimented with more nuanced and aesthetically pleasing features over time. One example of a utility for this is the &lt;a rel=&quot;external&quot; href=&quot;https://www.gatsbyjs.org/docs/gatsby-image/&quot;&gt;gatsby-image&lt;/a&gt; &lt;em&gt;blur up&lt;/em&gt; technique. If you did decide to build your web app with Gatsby, &lt;code&gt;gatsby-image&lt;/code&gt; also has a ton of other functionality to help make images performant.&lt;/p&gt;
&lt;figure&gt;
  &lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 512 132&quot; role=&quot;img&quot; aria-labelledby=&quot;t&quot;&gt;
&lt;title id=&quot;t&quot;&gt;An image sharpening across four progressive passes&lt;/title&gt;
&lt;style&gt;text{font-family:sans-serif;fill:#292929}.n{font-weight:700}.s{font-size:11px;fill-opacity:.6}.m{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px}&lt;/style&gt;
&lt;rect x=&quot;0.00&quot; y=&quot;0.00&quot; width=&quot;27.50&quot; height=&quot;27.50&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;27.50&quot; y=&quot;0.00&quot; width=&quot;27.50&quot; height=&quot;27.50&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;55.00&quot; y=&quot;0.00&quot; width=&quot;27.50&quot; height=&quot;27.50&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;82.50&quot; y=&quot;0.00&quot; width=&quot;27.50&quot; height=&quot;27.50&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;0.00&quot; y=&quot;27.50&quot; width=&quot;27.50&quot; height=&quot;27.50&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;27.50&quot; y=&quot;27.50&quot; width=&quot;27.50&quot; height=&quot;27.50&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;55.00&quot; y=&quot;27.50&quot; width=&quot;27.50&quot; height=&quot;27.50&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;82.50&quot; y=&quot;27.50&quot; width=&quot;27.50&quot; height=&quot;27.50&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;0.00&quot; y=&quot;55.00&quot; width=&quot;27.50&quot; height=&quot;27.50&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.44&quot;/&gt;
&lt;rect x=&quot;27.50&quot; y=&quot;55.00&quot; width=&quot;27.50&quot; height=&quot;27.50&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;55.00&quot; y=&quot;55.00&quot; width=&quot;27.50&quot; height=&quot;27.50&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.44&quot;/&gt;
&lt;rect x=&quot;82.50&quot; y=&quot;55.00&quot; width=&quot;27.50&quot; height=&quot;27.50&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.16&quot;/&gt;
&lt;rect x=&quot;0.00&quot; y=&quot;82.50&quot; width=&quot;27.50&quot; height=&quot;27.50&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.49&quot;/&gt;
&lt;rect x=&quot;27.50&quot; y=&quot;82.50&quot; width=&quot;27.50&quot; height=&quot;27.50&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.49&quot;/&gt;
&lt;rect x=&quot;55.00&quot; y=&quot;82.50&quot; width=&quot;27.50&quot; height=&quot;27.50&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;82.50&quot; y=&quot;82.50&quot; width=&quot;27.50&quot; height=&quot;27.50&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;0&quot; y=&quot;0&quot; width=&quot;110&quot; height=&quot;110&quot; fill=&quot;none&quot; stroke=&quot;#292929&quot; stroke-opacity=&quot;0.2&quot;/&gt;
&lt;text x=&quot;0&quot; y=&quot;126&quot; class=&quot;s&quot; text-anchor=&quot;start&quot;&gt;first bytes&lt;/text&gt;
&lt;rect x=&quot;134.00&quot; y=&quot;0.00&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;149.71&quot; y=&quot;0.00&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;165.43&quot; y=&quot;0.00&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;181.14&quot; y=&quot;0.00&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;196.86&quot; y=&quot;0.00&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;212.57&quot; y=&quot;0.00&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;228.29&quot; y=&quot;0.00&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;134.00&quot; y=&quot;15.71&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;149.71&quot; y=&quot;15.71&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;165.43&quot; y=&quot;15.71&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;181.14&quot; y=&quot;15.71&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;196.86&quot; y=&quot;15.71&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;212.57&quot; y=&quot;15.71&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;228.29&quot; y=&quot;15.71&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;134.00&quot; y=&quot;31.43&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;149.71&quot; y=&quot;31.43&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;165.43&quot; y=&quot;31.43&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;181.14&quot; y=&quot;31.43&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;196.86&quot; y=&quot;31.43&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;212.57&quot; y=&quot;31.43&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;228.29&quot; y=&quot;31.43&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;134.00&quot; y=&quot;47.14&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;149.71&quot; y=&quot;47.14&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.42&quot;/&gt;
&lt;rect x=&quot;165.43&quot; y=&quot;47.14&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;181.14&quot; y=&quot;47.14&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.42&quot;/&gt;
&lt;rect x=&quot;196.86&quot; y=&quot;47.14&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;212.57&quot; y=&quot;47.14&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;228.29&quot; y=&quot;47.14&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;134.00&quot; y=&quot;62.86&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.44&quot;/&gt;
&lt;rect x=&quot;149.71&quot; y=&quot;62.86&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;165.43&quot; y=&quot;62.86&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;181.14&quot; y=&quot;62.86&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;196.86&quot; y=&quot;62.86&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.44&quot;/&gt;
&lt;rect x=&quot;212.57&quot; y=&quot;62.86&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;228.29&quot; y=&quot;62.86&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.16&quot;/&gt;
&lt;rect x=&quot;134.00&quot; y=&quot;78.57&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;149.71&quot; y=&quot;78.57&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.47&quot;/&gt;
&lt;rect x=&quot;165.43&quot; y=&quot;78.57&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;181.14&quot; y=&quot;78.57&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;196.86&quot; y=&quot;78.57&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.47&quot;/&gt;
&lt;rect x=&quot;212.57&quot; y=&quot;78.57&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;228.29&quot; y=&quot;78.57&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.44&quot;/&gt;
&lt;rect x=&quot;134.00&quot; y=&quot;94.29&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.49&quot;/&gt;
&lt;rect x=&quot;149.71&quot; y=&quot;94.29&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.50&quot;/&gt;
&lt;rect x=&quot;165.43&quot; y=&quot;94.29&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.50&quot;/&gt;
&lt;rect x=&quot;181.14&quot; y=&quot;94.29&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.50&quot;/&gt;
&lt;rect x=&quot;196.86&quot; y=&quot;94.29&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.49&quot;/&gt;
&lt;rect x=&quot;212.57&quot; y=&quot;94.29&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;228.29&quot; y=&quot;94.29&quot; width=&quot;15.71&quot; height=&quot;15.71&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;134&quot; y=&quot;0&quot; width=&quot;110&quot; height=&quot;110&quot; fill=&quot;none&quot; stroke=&quot;#292929&quot; stroke-opacity=&quot;0.2&quot;/&gt;
&lt;rect x=&quot;268.00&quot; y=&quot;0.00&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.10&quot;/&gt;
&lt;rect x=&quot;277.17&quot; y=&quot;0.00&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.10&quot;/&gt;
&lt;rect x=&quot;286.33&quot; y=&quot;0.00&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.10&quot;/&gt;
&lt;rect x=&quot;295.50&quot; y=&quot;0.00&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.10&quot;/&gt;
&lt;rect x=&quot;304.67&quot; y=&quot;0.00&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.10&quot;/&gt;
&lt;rect x=&quot;313.83&quot; y=&quot;0.00&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.10&quot;/&gt;
&lt;rect x=&quot;323.00&quot; y=&quot;0.00&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.10&quot;/&gt;
&lt;rect x=&quot;332.17&quot; y=&quot;0.00&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.10&quot;/&gt;
&lt;rect x=&quot;341.33&quot; y=&quot;0.00&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.10&quot;/&gt;
&lt;rect x=&quot;350.50&quot; y=&quot;0.00&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.10&quot;/&gt;
&lt;rect x=&quot;359.67&quot; y=&quot;0.00&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.10&quot;/&gt;
&lt;rect x=&quot;368.83&quot; y=&quot;0.00&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.10&quot;/&gt;
&lt;rect x=&quot;268.00&quot; y=&quot;9.17&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;277.17&quot; y=&quot;9.17&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;286.33&quot; y=&quot;9.17&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;295.50&quot; y=&quot;9.17&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;304.67&quot; y=&quot;9.17&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;313.83&quot; y=&quot;9.17&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;323.00&quot; y=&quot;9.17&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;332.17&quot; y=&quot;9.17&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;341.33&quot; y=&quot;9.17&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;350.50&quot; y=&quot;9.17&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;359.67&quot; y=&quot;9.17&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;368.83&quot; y=&quot;9.17&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;268.00&quot; y=&quot;18.33&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;277.17&quot; y=&quot;18.33&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;286.33&quot; y=&quot;18.33&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;295.50&quot; y=&quot;18.33&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;304.67&quot; y=&quot;18.33&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;313.83&quot; y=&quot;18.33&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;323.00&quot; y=&quot;18.33&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;332.17&quot; y=&quot;18.33&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;341.33&quot; y=&quot;18.33&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;350.50&quot; y=&quot;18.33&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;359.67&quot; y=&quot;18.33&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;368.83&quot; y=&quot;18.33&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;268.00&quot; y=&quot;27.50&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;277.17&quot; y=&quot;27.50&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;286.33&quot; y=&quot;27.50&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;295.50&quot; y=&quot;27.50&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;304.67&quot; y=&quot;27.50&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;313.83&quot; y=&quot;27.50&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;323.00&quot; y=&quot;27.50&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;332.17&quot; y=&quot;27.50&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;341.33&quot; y=&quot;27.50&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;350.50&quot; y=&quot;27.50&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;359.67&quot; y=&quot;27.50&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;368.83&quot; y=&quot;27.50&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;268.00&quot; y=&quot;36.67&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;277.17&quot; y=&quot;36.67&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;286.33&quot; y=&quot;36.67&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;295.50&quot; y=&quot;36.67&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;304.67&quot; y=&quot;36.67&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;313.83&quot; y=&quot;36.67&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;323.00&quot; y=&quot;36.67&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;332.17&quot; y=&quot;36.67&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;341.33&quot; y=&quot;36.67&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;350.50&quot; y=&quot;36.67&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;359.67&quot; y=&quot;36.67&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;368.83&quot; y=&quot;36.67&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;268.00&quot; y=&quot;45.83&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;277.17&quot; y=&quot;45.83&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;286.33&quot; y=&quot;45.83&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;295.50&quot; y=&quot;45.83&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;304.67&quot; y=&quot;45.83&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;313.83&quot; y=&quot;45.83&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;323.00&quot; y=&quot;45.83&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;332.17&quot; y=&quot;45.83&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;341.33&quot; y=&quot;45.83&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;350.50&quot; y=&quot;45.83&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;359.67&quot; y=&quot;45.83&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;368.83&quot; y=&quot;45.83&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;268.00&quot; y=&quot;55.00&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;277.17&quot; y=&quot;55.00&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;286.33&quot; y=&quot;55.00&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;295.50&quot; y=&quot;55.00&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;304.67&quot; y=&quot;55.00&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;313.83&quot; y=&quot;55.00&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;323.00&quot; y=&quot;55.00&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;332.17&quot; y=&quot;55.00&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.42&quot;/&gt;
&lt;rect x=&quot;341.33&quot; y=&quot;55.00&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;350.50&quot; y=&quot;55.00&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;359.67&quot; y=&quot;55.00&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;368.83&quot; y=&quot;55.00&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;268.00&quot; y=&quot;64.17&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;277.17&quot; y=&quot;64.17&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.44&quot;/&gt;
&lt;rect x=&quot;286.33&quot; y=&quot;64.17&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;295.50&quot; y=&quot;64.17&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;304.67&quot; y=&quot;64.17&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;313.83&quot; y=&quot;64.17&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;323.00&quot; y=&quot;64.17&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;332.17&quot; y=&quot;64.17&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.44&quot;/&gt;
&lt;rect x=&quot;341.33&quot; y=&quot;64.17&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;350.50&quot; y=&quot;64.17&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.42&quot;/&gt;
&lt;rect x=&quot;359.67&quot; y=&quot;64.17&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.16&quot;/&gt;
&lt;rect x=&quot;368.83&quot; y=&quot;64.17&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.16&quot;/&gt;
&lt;rect x=&quot;268.00&quot; y=&quot;73.33&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;277.17&quot; y=&quot;73.33&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;286.33&quot; y=&quot;73.33&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;295.50&quot; y=&quot;73.33&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;304.67&quot; y=&quot;73.33&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;313.83&quot; y=&quot;73.33&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;323.00&quot; y=&quot;73.33&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;332.17&quot; y=&quot;73.33&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;341.33&quot; y=&quot;73.33&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;350.50&quot; y=&quot;73.33&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.44&quot;/&gt;
&lt;rect x=&quot;359.67&quot; y=&quot;73.33&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;368.83&quot; y=&quot;73.33&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.42&quot;/&gt;
&lt;rect x=&quot;268.00&quot; y=&quot;82.50&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;277.17&quot; y=&quot;82.50&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.47&quot;/&gt;
&lt;rect x=&quot;286.33&quot; y=&quot;82.50&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;295.50&quot; y=&quot;82.50&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;304.67&quot; y=&quot;82.50&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;313.83&quot; y=&quot;82.50&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;323.00&quot; y=&quot;82.50&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;332.17&quot; y=&quot;82.50&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.47&quot;/&gt;
&lt;rect x=&quot;341.33&quot; y=&quot;82.50&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;350.50&quot; y=&quot;82.50&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;359.67&quot; y=&quot;82.50&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;368.83&quot; y=&quot;82.50&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.44&quot;/&gt;
&lt;rect x=&quot;268.00&quot; y=&quot;91.67&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;277.17&quot; y=&quot;91.67&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.49&quot;/&gt;
&lt;rect x=&quot;286.33&quot; y=&quot;91.67&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.49&quot;/&gt;
&lt;rect x=&quot;295.50&quot; y=&quot;91.67&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.49&quot;/&gt;
&lt;rect x=&quot;304.67&quot; y=&quot;91.67&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.49&quot;/&gt;
&lt;rect x=&quot;313.83&quot; y=&quot;91.67&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.49&quot;/&gt;
&lt;rect x=&quot;323.00&quot; y=&quot;91.67&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.49&quot;/&gt;
&lt;rect x=&quot;332.17&quot; y=&quot;91.67&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;341.33&quot; y=&quot;91.67&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;350.50&quot; y=&quot;91.67&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.47&quot;/&gt;
&lt;rect x=&quot;359.67&quot; y=&quot;91.67&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;368.83&quot; y=&quot;91.67&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;268.00&quot; y=&quot;100.83&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.49&quot;/&gt;
&lt;rect x=&quot;277.17&quot; y=&quot;100.83&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.50&quot;/&gt;
&lt;rect x=&quot;286.33&quot; y=&quot;100.83&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.51&quot;/&gt;
&lt;rect x=&quot;295.50&quot; y=&quot;100.83&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.51&quot;/&gt;
&lt;rect x=&quot;304.67&quot; y=&quot;100.83&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.51&quot;/&gt;
&lt;rect x=&quot;313.83&quot; y=&quot;100.83&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.51&quot;/&gt;
&lt;rect x=&quot;323.00&quot; y=&quot;100.83&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.51&quot;/&gt;
&lt;rect x=&quot;332.17&quot; y=&quot;100.83&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.50&quot;/&gt;
&lt;rect x=&quot;341.33&quot; y=&quot;100.83&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.49&quot;/&gt;
&lt;rect x=&quot;350.50&quot; y=&quot;100.83&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;359.67&quot; y=&quot;100.83&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;368.83&quot; y=&quot;100.83&quot; width=&quot;9.17&quot; height=&quot;9.17&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.47&quot;/&gt;
&lt;rect x=&quot;268&quot; y=&quot;0&quot; width=&quot;110&quot; height=&quot;110&quot; fill=&quot;none&quot; stroke=&quot;#292929&quot; stroke-opacity=&quot;0.2&quot;/&gt;
&lt;rect x=&quot;402.00&quot; y=&quot;0.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.10&quot;/&gt;
&lt;rect x=&quot;407.00&quot; y=&quot;0.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.10&quot;/&gt;
&lt;rect x=&quot;412.00&quot; y=&quot;0.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.10&quot;/&gt;
&lt;rect x=&quot;417.00&quot; y=&quot;0.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.10&quot;/&gt;
&lt;rect x=&quot;422.00&quot; y=&quot;0.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.10&quot;/&gt;
&lt;rect x=&quot;427.00&quot; y=&quot;0.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.10&quot;/&gt;
&lt;rect x=&quot;432.00&quot; y=&quot;0.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.10&quot;/&gt;
&lt;rect x=&quot;437.00&quot; y=&quot;0.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.10&quot;/&gt;
&lt;rect x=&quot;442.00&quot; y=&quot;0.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.10&quot;/&gt;
&lt;rect x=&quot;447.00&quot; y=&quot;0.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.10&quot;/&gt;
&lt;rect x=&quot;452.00&quot; y=&quot;0.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.10&quot;/&gt;
&lt;rect x=&quot;457.00&quot; y=&quot;0.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.10&quot;/&gt;
&lt;rect x=&quot;462.00&quot; y=&quot;0.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.10&quot;/&gt;
&lt;rect x=&quot;467.00&quot; y=&quot;0.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.10&quot;/&gt;
&lt;rect x=&quot;472.00&quot; y=&quot;0.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.10&quot;/&gt;
&lt;rect x=&quot;477.00&quot; y=&quot;0.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.10&quot;/&gt;
&lt;rect x=&quot;482.00&quot; y=&quot;0.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.10&quot;/&gt;
&lt;rect x=&quot;487.00&quot; y=&quot;0.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.10&quot;/&gt;
&lt;rect x=&quot;492.00&quot; y=&quot;0.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.10&quot;/&gt;
&lt;rect x=&quot;497.00&quot; y=&quot;0.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.10&quot;/&gt;
&lt;rect x=&quot;502.00&quot; y=&quot;0.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.10&quot;/&gt;
&lt;rect x=&quot;507.00&quot; y=&quot;0.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.10&quot;/&gt;
&lt;rect x=&quot;402.00&quot; y=&quot;5.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;407.00&quot; y=&quot;5.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;412.00&quot; y=&quot;5.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;417.00&quot; y=&quot;5.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;422.00&quot; y=&quot;5.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;427.00&quot; y=&quot;5.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;432.00&quot; y=&quot;5.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;437.00&quot; y=&quot;5.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;442.00&quot; y=&quot;5.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;447.00&quot; y=&quot;5.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;452.00&quot; y=&quot;5.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;457.00&quot; y=&quot;5.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;462.00&quot; y=&quot;5.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;467.00&quot; y=&quot;5.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;472.00&quot; y=&quot;5.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;477.00&quot; y=&quot;5.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;482.00&quot; y=&quot;5.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;487.00&quot; y=&quot;5.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;492.00&quot; y=&quot;5.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;497.00&quot; y=&quot;5.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;502.00&quot; y=&quot;5.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;507.00&quot; y=&quot;5.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;402.00&quot; y=&quot;10.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;407.00&quot; y=&quot;10.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;412.00&quot; y=&quot;10.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;417.00&quot; y=&quot;10.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;422.00&quot; y=&quot;10.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;427.00&quot; y=&quot;10.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;432.00&quot; y=&quot;10.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;437.00&quot; y=&quot;10.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;442.00&quot; y=&quot;10.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;447.00&quot; y=&quot;10.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;452.00&quot; y=&quot;10.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;457.00&quot; y=&quot;10.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;462.00&quot; y=&quot;10.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;467.00&quot; y=&quot;10.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;472.00&quot; y=&quot;10.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;477.00&quot; y=&quot;10.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;482.00&quot; y=&quot;10.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;487.00&quot; y=&quot;10.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;492.00&quot; y=&quot;10.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;497.00&quot; y=&quot;10.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;502.00&quot; y=&quot;10.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;507.00&quot; y=&quot;10.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.11&quot;/&gt;
&lt;rect x=&quot;402.00&quot; y=&quot;15.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;407.00&quot; y=&quot;15.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;412.00&quot; y=&quot;15.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;417.00&quot; y=&quot;15.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;422.00&quot; y=&quot;15.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;427.00&quot; y=&quot;15.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;432.00&quot; y=&quot;15.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;437.00&quot; y=&quot;15.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;442.00&quot; y=&quot;15.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;447.00&quot; y=&quot;15.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;452.00&quot; y=&quot;15.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;457.00&quot; y=&quot;15.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;462.00&quot; y=&quot;15.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;467.00&quot; y=&quot;15.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;472.00&quot; y=&quot;15.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;477.00&quot; y=&quot;15.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;482.00&quot; y=&quot;15.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;487.00&quot; y=&quot;15.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;492.00&quot; y=&quot;15.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;497.00&quot; y=&quot;15.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;502.00&quot; y=&quot;15.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;507.00&quot; y=&quot;15.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;402.00&quot; y=&quot;20.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;407.00&quot; y=&quot;20.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;412.00&quot; y=&quot;20.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;417.00&quot; y=&quot;20.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;422.00&quot; y=&quot;20.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;427.00&quot; y=&quot;20.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;432.00&quot; y=&quot;20.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;437.00&quot; y=&quot;20.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;442.00&quot; y=&quot;20.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;447.00&quot; y=&quot;20.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;452.00&quot; y=&quot;20.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;457.00&quot; y=&quot;20.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;462.00&quot; y=&quot;20.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;467.00&quot; y=&quot;20.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;472.00&quot; y=&quot;20.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;477.00&quot; y=&quot;20.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;482.00&quot; y=&quot;20.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;487.00&quot; y=&quot;20.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;492.00&quot; y=&quot;20.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;497.00&quot; y=&quot;20.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;502.00&quot; y=&quot;20.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;507.00&quot; y=&quot;20.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;402.00&quot; y=&quot;25.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;407.00&quot; y=&quot;25.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;412.00&quot; y=&quot;25.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;417.00&quot; y=&quot;25.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;422.00&quot; y=&quot;25.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;427.00&quot; y=&quot;25.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;432.00&quot; y=&quot;25.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;437.00&quot; y=&quot;25.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;442.00&quot; y=&quot;25.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;447.00&quot; y=&quot;25.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;452.00&quot; y=&quot;25.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;457.00&quot; y=&quot;25.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;462.00&quot; y=&quot;25.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;467.00&quot; y=&quot;25.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;472.00&quot; y=&quot;25.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;477.00&quot; y=&quot;25.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;482.00&quot; y=&quot;25.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;487.00&quot; y=&quot;25.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;492.00&quot; y=&quot;25.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;497.00&quot; y=&quot;25.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;502.00&quot; y=&quot;25.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;507.00&quot; y=&quot;25.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.12&quot;/&gt;
&lt;rect x=&quot;402.00&quot; y=&quot;30.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;407.00&quot; y=&quot;30.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;412.00&quot; y=&quot;30.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;417.00&quot; y=&quot;30.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;422.00&quot; y=&quot;30.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;427.00&quot; y=&quot;30.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;432.00&quot; y=&quot;30.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;437.00&quot; y=&quot;30.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;442.00&quot; y=&quot;30.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;447.00&quot; y=&quot;30.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;452.00&quot; y=&quot;30.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;457.00&quot; y=&quot;30.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;462.00&quot; y=&quot;30.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;467.00&quot; y=&quot;30.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;472.00&quot; y=&quot;30.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;477.00&quot; y=&quot;30.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;482.00&quot; y=&quot;30.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;487.00&quot; y=&quot;30.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;492.00&quot; y=&quot;30.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;497.00&quot; y=&quot;30.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;502.00&quot; y=&quot;30.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;507.00&quot; y=&quot;30.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;402.00&quot; y=&quot;35.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;407.00&quot; y=&quot;35.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;412.00&quot; y=&quot;35.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;417.00&quot; y=&quot;35.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;422.00&quot; y=&quot;35.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;427.00&quot; y=&quot;35.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;432.00&quot; y=&quot;35.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;437.00&quot; y=&quot;35.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;442.00&quot; y=&quot;35.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;447.00&quot; y=&quot;35.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;452.00&quot; y=&quot;35.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;457.00&quot; y=&quot;35.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;462.00&quot; y=&quot;35.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;467.00&quot; y=&quot;35.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;472.00&quot; y=&quot;35.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;477.00&quot; y=&quot;35.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;482.00&quot; y=&quot;35.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;487.00&quot; y=&quot;35.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;492.00&quot; y=&quot;35.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;497.00&quot; y=&quot;35.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;502.00&quot; y=&quot;35.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;507.00&quot; y=&quot;35.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.13&quot;/&gt;
&lt;rect x=&quot;402.00&quot; y=&quot;40.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;407.00&quot; y=&quot;40.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;412.00&quot; y=&quot;40.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;417.00&quot; y=&quot;40.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;422.00&quot; y=&quot;40.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;427.00&quot; y=&quot;40.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;432.00&quot; y=&quot;40.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;437.00&quot; y=&quot;40.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;442.00&quot; y=&quot;40.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;447.00&quot; y=&quot;40.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;452.00&quot; y=&quot;40.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;457.00&quot; y=&quot;40.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;462.00&quot; y=&quot;40.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;467.00&quot; y=&quot;40.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;472.00&quot; y=&quot;40.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;477.00&quot; y=&quot;40.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;482.00&quot; y=&quot;40.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;487.00&quot; y=&quot;40.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;492.00&quot; y=&quot;40.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;497.00&quot; y=&quot;40.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;502.00&quot; y=&quot;40.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;507.00&quot; y=&quot;40.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;402.00&quot; y=&quot;45.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;407.00&quot; y=&quot;45.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;412.00&quot; y=&quot;45.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;417.00&quot; y=&quot;45.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;422.00&quot; y=&quot;45.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;427.00&quot; y=&quot;45.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;432.00&quot; y=&quot;45.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;437.00&quot; y=&quot;45.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;442.00&quot; y=&quot;45.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;447.00&quot; y=&quot;45.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;452.00&quot; y=&quot;45.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;457.00&quot; y=&quot;45.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;462.00&quot; y=&quot;45.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;467.00&quot; y=&quot;45.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;472.00&quot; y=&quot;45.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;477.00&quot; y=&quot;45.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;482.00&quot; y=&quot;45.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.95&quot;/&gt;
&lt;rect x=&quot;487.00&quot; y=&quot;45.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;492.00&quot; y=&quot;45.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;497.00&quot; y=&quot;45.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;502.00&quot; y=&quot;45.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;507.00&quot; y=&quot;45.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.14&quot;/&gt;
&lt;rect x=&quot;402.00&quot; y=&quot;50.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;407.00&quot; y=&quot;50.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;412.00&quot; y=&quot;50.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;417.00&quot; y=&quot;50.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;422.00&quot; y=&quot;50.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;427.00&quot; y=&quot;50.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.42&quot;/&gt;
&lt;rect x=&quot;432.00&quot; y=&quot;50.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.42&quot;/&gt;
&lt;rect x=&quot;437.00&quot; y=&quot;50.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.42&quot;/&gt;
&lt;rect x=&quot;442.00&quot; y=&quot;50.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.42&quot;/&gt;
&lt;rect x=&quot;447.00&quot; y=&quot;50.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.42&quot;/&gt;
&lt;rect x=&quot;452.00&quot; y=&quot;50.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.42&quot;/&gt;
&lt;rect x=&quot;457.00&quot; y=&quot;50.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;462.00&quot; y=&quot;50.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;467.00&quot; y=&quot;50.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;472.00&quot; y=&quot;50.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;477.00&quot; y=&quot;50.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;482.00&quot; y=&quot;50.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;487.00&quot; y=&quot;50.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;492.00&quot; y=&quot;50.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;497.00&quot; y=&quot;50.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;502.00&quot; y=&quot;50.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;507.00&quot; y=&quot;50.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;402.00&quot; y=&quot;55.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;407.00&quot; y=&quot;55.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;412.00&quot; y=&quot;55.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.42&quot;/&gt;
&lt;rect x=&quot;417.00&quot; y=&quot;55.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.42&quot;/&gt;
&lt;rect x=&quot;422.00&quot; y=&quot;55.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;427.00&quot; y=&quot;55.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;432.00&quot; y=&quot;55.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;437.00&quot; y=&quot;55.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;442.00&quot; y=&quot;55.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;447.00&quot; y=&quot;55.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;452.00&quot; y=&quot;55.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;457.00&quot; y=&quot;55.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;462.00&quot; y=&quot;55.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;467.00&quot; y=&quot;55.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.42&quot;/&gt;
&lt;rect x=&quot;472.00&quot; y=&quot;55.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;477.00&quot; y=&quot;55.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;482.00&quot; y=&quot;55.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;487.00&quot; y=&quot;55.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;492.00&quot; y=&quot;55.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;497.00&quot; y=&quot;55.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;502.00&quot; y=&quot;55.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;507.00&quot; y=&quot;55.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.15&quot;/&gt;
&lt;rect x=&quot;402.00&quot; y=&quot;60.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.42&quot;/&gt;
&lt;rect x=&quot;407.00&quot; y=&quot;60.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;412.00&quot; y=&quot;60.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;417.00&quot; y=&quot;60.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;422.00&quot; y=&quot;60.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;427.00&quot; y=&quot;60.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.44&quot;/&gt;
&lt;rect x=&quot;432.00&quot; y=&quot;60.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.44&quot;/&gt;
&lt;rect x=&quot;437.00&quot; y=&quot;60.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.44&quot;/&gt;
&lt;rect x=&quot;442.00&quot; y=&quot;60.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.44&quot;/&gt;
&lt;rect x=&quot;447.00&quot; y=&quot;60.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.44&quot;/&gt;
&lt;rect x=&quot;452.00&quot; y=&quot;60.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.44&quot;/&gt;
&lt;rect x=&quot;457.00&quot; y=&quot;60.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.44&quot;/&gt;
&lt;rect x=&quot;462.00&quot; y=&quot;60.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;467.00&quot; y=&quot;60.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;472.00&quot; y=&quot;60.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;477.00&quot; y=&quot;60.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.42&quot;/&gt;
&lt;rect x=&quot;482.00&quot; y=&quot;60.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.16&quot;/&gt;
&lt;rect x=&quot;487.00&quot; y=&quot;60.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.16&quot;/&gt;
&lt;rect x=&quot;492.00&quot; y=&quot;60.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.16&quot;/&gt;
&lt;rect x=&quot;497.00&quot; y=&quot;60.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.16&quot;/&gt;
&lt;rect x=&quot;502.00&quot; y=&quot;60.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.16&quot;/&gt;
&lt;rect x=&quot;507.00&quot; y=&quot;60.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.16&quot;/&gt;
&lt;rect x=&quot;402.00&quot; y=&quot;65.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;407.00&quot; y=&quot;65.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;412.00&quot; y=&quot;65.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.44&quot;/&gt;
&lt;rect x=&quot;417.00&quot; y=&quot;65.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.44&quot;/&gt;
&lt;rect x=&quot;422.00&quot; y=&quot;65.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.44&quot;/&gt;
&lt;rect x=&quot;427.00&quot; y=&quot;65.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;432.00&quot; y=&quot;65.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;437.00&quot; y=&quot;65.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;442.00&quot; y=&quot;65.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;447.00&quot; y=&quot;65.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;452.00&quot; y=&quot;65.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;457.00&quot; y=&quot;65.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.44&quot;/&gt;
&lt;rect x=&quot;462.00&quot; y=&quot;65.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.44&quot;/&gt;
&lt;rect x=&quot;467.00&quot; y=&quot;65.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.44&quot;/&gt;
&lt;rect x=&quot;472.00&quot; y=&quot;65.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.44&quot;/&gt;
&lt;rect x=&quot;477.00&quot; y=&quot;65.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;482.00&quot; y=&quot;65.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;487.00&quot; y=&quot;65.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.42&quot;/&gt;
&lt;rect x=&quot;492.00&quot; y=&quot;65.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.16&quot;/&gt;
&lt;rect x=&quot;497.00&quot; y=&quot;65.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.16&quot;/&gt;
&lt;rect x=&quot;502.00&quot; y=&quot;65.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.16&quot;/&gt;
&lt;rect x=&quot;507.00&quot; y=&quot;65.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.16&quot;/&gt;
&lt;rect x=&quot;402.00&quot; y=&quot;70.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.44&quot;/&gt;
&lt;rect x=&quot;407.00&quot; y=&quot;70.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.44&quot;/&gt;
&lt;rect x=&quot;412.00&quot; y=&quot;70.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;417.00&quot; y=&quot;70.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;422.00&quot; y=&quot;70.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;427.00&quot; y=&quot;70.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;432.00&quot; y=&quot;70.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;437.00&quot; y=&quot;70.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;442.00&quot; y=&quot;70.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;447.00&quot; y=&quot;70.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;452.00&quot; y=&quot;70.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;457.00&quot; y=&quot;70.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;462.00&quot; y=&quot;70.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;467.00&quot; y=&quot;70.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;472.00&quot; y=&quot;70.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.44&quot;/&gt;
&lt;rect x=&quot;477.00&quot; y=&quot;70.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.44&quot;/&gt;
&lt;rect x=&quot;482.00&quot; y=&quot;70.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.44&quot;/&gt;
&lt;rect x=&quot;487.00&quot; y=&quot;70.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;492.00&quot; y=&quot;70.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;497.00&quot; y=&quot;70.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.42&quot;/&gt;
&lt;rect x=&quot;502.00&quot; y=&quot;70.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.17&quot;/&gt;
&lt;rect x=&quot;507.00&quot; y=&quot;70.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.17&quot;/&gt;
&lt;rect x=&quot;402.00&quot; y=&quot;75.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;407.00&quot; y=&quot;75.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;412.00&quot; y=&quot;75.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;417.00&quot; y=&quot;75.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;422.00&quot; y=&quot;75.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;427.00&quot; y=&quot;75.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;432.00&quot; y=&quot;75.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;437.00&quot; y=&quot;75.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;442.00&quot; y=&quot;75.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;447.00&quot; y=&quot;75.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;452.00&quot; y=&quot;75.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;457.00&quot; y=&quot;75.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;462.00&quot; y=&quot;75.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;467.00&quot; y=&quot;75.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;472.00&quot; y=&quot;75.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;477.00&quot; y=&quot;75.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;482.00&quot; y=&quot;75.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.44&quot;/&gt;
&lt;rect x=&quot;487.00&quot; y=&quot;75.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.44&quot;/&gt;
&lt;rect x=&quot;492.00&quot; y=&quot;75.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;497.00&quot; y=&quot;75.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;502.00&quot; y=&quot;75.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.42&quot;/&gt;
&lt;rect x=&quot;507.00&quot; y=&quot;75.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.17&quot;/&gt;
&lt;rect x=&quot;402.00&quot; y=&quot;80.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;407.00&quot; y=&quot;80.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;412.00&quot; y=&quot;80.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;417.00&quot; y=&quot;80.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;422.00&quot; y=&quot;80.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.47&quot;/&gt;
&lt;rect x=&quot;427.00&quot; y=&quot;80.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.47&quot;/&gt;
&lt;rect x=&quot;432.00&quot; y=&quot;80.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.47&quot;/&gt;
&lt;rect x=&quot;437.00&quot; y=&quot;80.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.47&quot;/&gt;
&lt;rect x=&quot;442.00&quot; y=&quot;80.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.47&quot;/&gt;
&lt;rect x=&quot;447.00&quot; y=&quot;80.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.47&quot;/&gt;
&lt;rect x=&quot;452.00&quot; y=&quot;80.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.47&quot;/&gt;
&lt;rect x=&quot;457.00&quot; y=&quot;80.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.47&quot;/&gt;
&lt;rect x=&quot;462.00&quot; y=&quot;80.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.47&quot;/&gt;
&lt;rect x=&quot;467.00&quot; y=&quot;80.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;472.00&quot; y=&quot;80.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;477.00&quot; y=&quot;80.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;482.00&quot; y=&quot;80.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;487.00&quot; y=&quot;80.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;492.00&quot; y=&quot;80.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.44&quot;/&gt;
&lt;rect x=&quot;497.00&quot; y=&quot;80.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.44&quot;/&gt;
&lt;rect x=&quot;502.00&quot; y=&quot;80.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;507.00&quot; y=&quot;80.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.43&quot;/&gt;
&lt;rect x=&quot;402.00&quot; y=&quot;85.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;407.00&quot; y=&quot;85.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.47&quot;/&gt;
&lt;rect x=&quot;412.00&quot; y=&quot;85.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.47&quot;/&gt;
&lt;rect x=&quot;417.00&quot; y=&quot;85.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.47&quot;/&gt;
&lt;rect x=&quot;422.00&quot; y=&quot;85.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;427.00&quot; y=&quot;85.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;432.00&quot; y=&quot;85.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;437.00&quot; y=&quot;85.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;442.00&quot; y=&quot;85.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;447.00&quot; y=&quot;85.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;452.00&quot; y=&quot;85.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;457.00&quot; y=&quot;85.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;462.00&quot; y=&quot;85.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.47&quot;/&gt;
&lt;rect x=&quot;467.00&quot; y=&quot;85.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.47&quot;/&gt;
&lt;rect x=&quot;472.00&quot; y=&quot;85.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.47&quot;/&gt;
&lt;rect x=&quot;477.00&quot; y=&quot;85.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;482.00&quot; y=&quot;85.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;487.00&quot; y=&quot;85.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;492.00&quot; y=&quot;85.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;497.00&quot; y=&quot;85.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;502.00&quot; y=&quot;85.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.44&quot;/&gt;
&lt;rect x=&quot;507.00&quot; y=&quot;85.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.44&quot;/&gt;
&lt;rect x=&quot;402.00&quot; y=&quot;90.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.47&quot;/&gt;
&lt;rect x=&quot;407.00&quot; y=&quot;90.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.47&quot;/&gt;
&lt;rect x=&quot;412.00&quot; y=&quot;90.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;417.00&quot; y=&quot;90.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;422.00&quot; y=&quot;90.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;427.00&quot; y=&quot;90.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.49&quot;/&gt;
&lt;rect x=&quot;432.00&quot; y=&quot;90.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.49&quot;/&gt;
&lt;rect x=&quot;437.00&quot; y=&quot;90.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.49&quot;/&gt;
&lt;rect x=&quot;442.00&quot; y=&quot;90.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.49&quot;/&gt;
&lt;rect x=&quot;447.00&quot; y=&quot;90.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.49&quot;/&gt;
&lt;rect x=&quot;452.00&quot; y=&quot;90.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.49&quot;/&gt;
&lt;rect x=&quot;457.00&quot; y=&quot;90.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.49&quot;/&gt;
&lt;rect x=&quot;462.00&quot; y=&quot;90.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;467.00&quot; y=&quot;90.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;472.00&quot; y=&quot;90.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;477.00&quot; y=&quot;90.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.47&quot;/&gt;
&lt;rect x=&quot;482.00&quot; y=&quot;90.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.47&quot;/&gt;
&lt;rect x=&quot;487.00&quot; y=&quot;90.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;492.00&quot; y=&quot;90.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;497.00&quot; y=&quot;90.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;502.00&quot; y=&quot;90.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;507.00&quot; y=&quot;90.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.44&quot;/&gt;
&lt;rect x=&quot;402.00&quot; y=&quot;95.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;407.00&quot; y=&quot;95.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;412.00&quot; y=&quot;95.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.49&quot;/&gt;
&lt;rect x=&quot;417.00&quot; y=&quot;95.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.49&quot;/&gt;
&lt;rect x=&quot;422.00&quot; y=&quot;95.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.49&quot;/&gt;
&lt;rect x=&quot;427.00&quot; y=&quot;95.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.49&quot;/&gt;
&lt;rect x=&quot;432.00&quot; y=&quot;95.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.50&quot;/&gt;
&lt;rect x=&quot;437.00&quot; y=&quot;95.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.50&quot;/&gt;
&lt;rect x=&quot;442.00&quot; y=&quot;95.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.50&quot;/&gt;
&lt;rect x=&quot;447.00&quot; y=&quot;95.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.50&quot;/&gt;
&lt;rect x=&quot;452.00&quot; y=&quot;95.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.50&quot;/&gt;
&lt;rect x=&quot;457.00&quot; y=&quot;95.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.49&quot;/&gt;
&lt;rect x=&quot;462.00&quot; y=&quot;95.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.49&quot;/&gt;
&lt;rect x=&quot;467.00&quot; y=&quot;95.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.49&quot;/&gt;
&lt;rect x=&quot;472.00&quot; y=&quot;95.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;477.00&quot; y=&quot;95.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;482.00&quot; y=&quot;95.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;487.00&quot; y=&quot;95.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.47&quot;/&gt;
&lt;rect x=&quot;492.00&quot; y=&quot;95.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.47&quot;/&gt;
&lt;rect x=&quot;497.00&quot; y=&quot;95.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;502.00&quot; y=&quot;95.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;507.00&quot; y=&quot;95.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.45&quot;/&gt;
&lt;rect x=&quot;402.00&quot; y=&quot;100.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.49&quot;/&gt;
&lt;rect x=&quot;407.00&quot; y=&quot;100.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.49&quot;/&gt;
&lt;rect x=&quot;412.00&quot; y=&quot;100.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.49&quot;/&gt;
&lt;rect x=&quot;417.00&quot; y=&quot;100.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.50&quot;/&gt;
&lt;rect x=&quot;422.00&quot; y=&quot;100.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.50&quot;/&gt;
&lt;rect x=&quot;427.00&quot; y=&quot;100.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.50&quot;/&gt;
&lt;rect x=&quot;432.00&quot; y=&quot;100.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.50&quot;/&gt;
&lt;rect x=&quot;437.00&quot; y=&quot;100.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.50&quot;/&gt;
&lt;rect x=&quot;442.00&quot; y=&quot;100.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.50&quot;/&gt;
&lt;rect x=&quot;447.00&quot; y=&quot;100.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.50&quot;/&gt;
&lt;rect x=&quot;452.00&quot; y=&quot;100.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.50&quot;/&gt;
&lt;rect x=&quot;457.00&quot; y=&quot;100.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.50&quot;/&gt;
&lt;rect x=&quot;462.00&quot; y=&quot;100.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.50&quot;/&gt;
&lt;rect x=&quot;467.00&quot; y=&quot;100.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.50&quot;/&gt;
&lt;rect x=&quot;472.00&quot; y=&quot;100.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.49&quot;/&gt;
&lt;rect x=&quot;477.00&quot; y=&quot;100.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.49&quot;/&gt;
&lt;rect x=&quot;482.00&quot; y=&quot;100.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;487.00&quot; y=&quot;100.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;492.00&quot; y=&quot;100.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.47&quot;/&gt;
&lt;rect x=&quot;497.00&quot; y=&quot;100.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.47&quot;/&gt;
&lt;rect x=&quot;502.00&quot; y=&quot;100.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.47&quot;/&gt;
&lt;rect x=&quot;507.00&quot; y=&quot;100.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.46&quot;/&gt;
&lt;rect x=&quot;402.00&quot; y=&quot;105.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.49&quot;/&gt;
&lt;rect x=&quot;407.00&quot; y=&quot;105.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.50&quot;/&gt;
&lt;rect x=&quot;412.00&quot; y=&quot;105.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.50&quot;/&gt;
&lt;rect x=&quot;417.00&quot; y=&quot;105.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.51&quot;/&gt;
&lt;rect x=&quot;422.00&quot; y=&quot;105.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.51&quot;/&gt;
&lt;rect x=&quot;427.00&quot; y=&quot;105.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.51&quot;/&gt;
&lt;rect x=&quot;432.00&quot; y=&quot;105.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.51&quot;/&gt;
&lt;rect x=&quot;437.00&quot; y=&quot;105.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.51&quot;/&gt;
&lt;rect x=&quot;442.00&quot; y=&quot;105.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.51&quot;/&gt;
&lt;rect x=&quot;447.00&quot; y=&quot;105.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.51&quot;/&gt;
&lt;rect x=&quot;452.00&quot; y=&quot;105.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.51&quot;/&gt;
&lt;rect x=&quot;457.00&quot; y=&quot;105.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.51&quot;/&gt;
&lt;rect x=&quot;462.00&quot; y=&quot;105.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.51&quot;/&gt;
&lt;rect x=&quot;467.00&quot; y=&quot;105.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.50&quot;/&gt;
&lt;rect x=&quot;472.00&quot; y=&quot;105.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.50&quot;/&gt;
&lt;rect x=&quot;477.00&quot; y=&quot;105.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.50&quot;/&gt;
&lt;rect x=&quot;482.00&quot; y=&quot;105.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.49&quot;/&gt;
&lt;rect x=&quot;487.00&quot; y=&quot;105.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.49&quot;/&gt;
&lt;rect x=&quot;492.00&quot; y=&quot;105.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;497.00&quot; y=&quot;105.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.48&quot;/&gt;
&lt;rect x=&quot;502.00&quot; y=&quot;105.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.47&quot;/&gt;
&lt;rect x=&quot;507.00&quot; y=&quot;105.00&quot; width=&quot;5.00&quot; height=&quot;5.00&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.47&quot;/&gt;
&lt;rect x=&quot;402&quot; y=&quot;0&quot; width=&quot;110&quot; height=&quot;110&quot; fill=&quot;none&quot; style=&quot;stroke:var(--accent);stroke-opacity:1&quot;/&gt;
&lt;text x=&quot;512&quot; y=&quot;126&quot; class=&quot;s&quot; text-anchor=&quot;end&quot;&gt;fully decoded&lt;/text&gt;
&lt;text x=&quot;256.0&quot; y=&quot;126&quot; class=&quot;s&quot; text-anchor=&quot;middle&quot;&gt;&amp;#8594;&lt;/text&gt;
&lt;/svg&gt;
  &lt;figcaption&gt;Progressive rendering: a low-quality placeholder is replaced as more data arrives.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id=&quot;javascript-execution&quot;&gt;JavaScript Execution&lt;/h2&gt;
&lt;p&gt;While a site&#39;s initial load is majorly impactful to performance, as the word implies it is primarily related to the performance at the start of a session.&lt;/p&gt;
&lt;p&gt;To help aid a smooth UI experience throughout a session (especially in larger/more complex apps) it is imperative that the execution of the JS is optimised.&lt;/p&gt;
&lt;h3 id=&quot;memoization&quot;&gt;Memoization&lt;/h3&gt;
&lt;p&gt;In simple terms, &lt;em&gt;memoization&lt;/em&gt; is essentially storing the result of an expensive computation in some sort of cache so that when the computation (or function call) is ran again with the same data/inputs, the cached result can be returned. As a rule of thumb it&#39;s generally more performant to memoize everything that will be called many times during the session (this is especially important in component driven development).&lt;/p&gt;
&lt;p&gt;The below code shows a basic implementation of a memoized function generator. The specified computation function will only be ran again if the parameters change (or are passed in a different order in this case), if not, the value will just be returned from the cache.&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-11&quot;&gt;let&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; createMemoizedFunc&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt; =&lt;/span&gt;&lt;span&gt; func&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt; =&amp;gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-11&quot;&gt;  let&lt;/span&gt;&lt;span&gt; cache&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt; =&lt;/span&gt;&lt;span&gt; {}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-11&quot;&gt;  return&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt;...&lt;/span&gt;&lt;span&gt;args)&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt; =&amp;gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-8&quot;&gt;    // doesn&amp;#39;t account for same args in a different order&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-11&quot;&gt;    let&lt;/span&gt;&lt;span&gt; key&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; args&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt;.join&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-3&quot;&gt;&amp;quot;-&amp;quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-11&quot;&gt;    if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt;cache&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt;.hasOwnProperty&lt;/span&gt;&lt;span&gt;(key)) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-11&quot;&gt;      return&lt;/span&gt;&lt;span&gt; cache[key]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-11&quot;&gt;    let&lt;/span&gt;&lt;span&gt; newVal&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; func&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt;...&lt;/span&gt;&lt;span&gt;args)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    cache[key]&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt; =&lt;/span&gt;&lt;span&gt; newVal&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-11&quot;&gt;    return&lt;/span&gt;&lt;span&gt; newVal&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-11&quot;&gt;let&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; findMax&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt; =&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt;...&lt;/span&gt;&lt;span&gt;args)&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt; =&amp;gt;&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; Math&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt;max&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt;.apply&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt;,&lt;/span&gt;&lt;span&gt; args)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-11&quot;&gt;let&lt;/span&gt;&lt;span&gt; memoizedFindMax&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; createMemoizedFunc&lt;/span&gt;&lt;span&gt;(findMax)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-6&quot;&gt;memoizedFindMax&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; 7&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; 5&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; 6&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt; // 7&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-8&quot;&gt;// returned from cache&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-6&quot;&gt;memoizedFindMax&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; 7&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; 5&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; 6&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span class=&quot;z-8&quot;&gt; // 7&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;There are already a ton of articles that go into more details on how you might be able to memoize your JavaScript; or if you&#39;re working with a UI library or framework, how to utilise the memoization API&#39;s that are likely exposed for you to use.&lt;/p&gt;
&lt;h3 id=&quot;execution-time&quot;&gt;Execution Time&lt;/h3&gt;
&lt;p&gt;As a rule of thumb, most heavy lifting shouldn&#39;t be performed by the client-side JavaScript. Based on this, processing speed will usually have very little impact on the usability of your app. However, if client-side expensive computations are a necessity - such as as nested loops - then it can have a substantial and blocking impact on your JavaScript&#39;s execution.&lt;/p&gt;
&lt;h4 id=&quot;algorithmic-complexity&quot;&gt;Algorithmic Complexity&lt;/h4&gt;
&lt;p&gt;Algorithmic complexity is often described using something known as &lt;code&gt;Big O notation&lt;/code&gt;
(if that&#39;s something you&#39;re interested in learning more about take a look at &lt;a rel=&quot;external&quot; href=&quot;https://dev.to/sarah_chima/the-big-o-notation-an-introduction-34f7&quot;&gt;this article&lt;/a&gt; by Sarah Chima). Reducing algorithmic complexity cuts out on &lt;em&gt;computational baggage&lt;/em&gt; - unnecessary calculations/time spent in order to retrieve the same result.&lt;/p&gt;
&lt;p&gt;Depending on the size of data you&#39;re working with, it can often be prudent to compare manipulation methods. Even if you&#39;re only saving a few milliseconds, if each operation is repeated potentially hundreds of time in a session, it could have a noticeable cumulative effect for the user. &lt;a rel=&quot;external&quot; href=&quot;https://perf.link&quot;&gt;Perflink&lt;/a&gt; by Luke Jackson is a great website for analysing the performance of code blocks.&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-11&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; data&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt; =&lt;/span&gt;&lt;span&gt; [&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt;Array&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt;100&lt;/span&gt;&lt;span&gt;)]&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt;.map&lt;/span&gt;&lt;span&gt;(()&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt; =&amp;gt;&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; Math&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt;.floor&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt;Math&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt;.random&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt; *&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; 100&lt;/span&gt;&lt;span&gt;))&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-11&quot;&gt;let&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; bubbleSort&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt; =&lt;/span&gt;&lt;span&gt; arr&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt; =&amp;gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-11&quot;&gt;  let&lt;/span&gt;&lt;span&gt; sorted&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; Array&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt;.from&lt;/span&gt;&lt;span&gt;(arr)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-11&quot;&gt;  let&lt;/span&gt;&lt;span&gt; hasSwapped&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-11&quot;&gt;  do&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    hasSwapped&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; false&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-11&quot;&gt;    for&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt;let&lt;/span&gt;&lt;span&gt; i&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; 0&lt;/span&gt;&lt;span&gt;; i&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt; &amp;lt;&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; sorted&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt;length&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; 1&lt;/span&gt;&lt;span&gt;; i&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt;++&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-11&quot;&gt;      if&lt;/span&gt;&lt;span&gt; (sorted[i]&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt; &amp;gt;&lt;/span&gt;&lt;span&gt; sorted[i&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; 1&lt;/span&gt;&lt;span&gt;]) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        [sorted[i]&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt;,&lt;/span&gt;&lt;span&gt; sorted[i&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; 1&lt;/span&gt;&lt;span&gt;]]&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt; =&lt;/span&gt;&lt;span&gt; [sorted[i&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt; +&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; 1&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt;,&lt;/span&gt;&lt;span&gt; sorted[i]]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;        hasSwapped&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; true&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  }&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt; while&lt;/span&gt;&lt;span&gt; (hasSwapped)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-11&quot;&gt;  return&lt;/span&gt;&lt;span&gt; sorted&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-11&quot;&gt;let&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; builtInSort&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt; =&lt;/span&gt;&lt;span&gt; arr&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt; =&amp;gt;&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-11&quot;&gt;  let&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; compare&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt; =&lt;/span&gt;&lt;span&gt; (a&lt;/span&gt;&lt;span class=&quot;z-2&quot;&gt;,&lt;/span&gt;&lt;span&gt; b)&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt; =&amp;gt;&lt;/span&gt;&lt;span&gt; a&lt;/span&gt;&lt;span class=&quot;z-11&quot;&gt; -&lt;/span&gt;&lt;span&gt; b&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-11&quot;&gt;  return&lt;/span&gt;&lt;span class=&quot;z-1&quot;&gt; arr&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt;.sort&lt;/span&gt;&lt;span&gt;(compare)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;figure&gt;
  &lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 512 122&quot; role=&quot;img&quot; aria-labelledby=&quot;t&quot;&gt;
&lt;title id=&quot;t&quot;&gt;Bubble sort at 20 microseconds against the built-in sort at 15 microseconds&lt;/title&gt;
&lt;style&gt;text{font-family:sans-serif;fill:#292929}.n{font-weight:700}.s{font-size:11px;fill-opacity:.6}&lt;/style&gt;
&lt;text x=&quot;0&quot; y=&quot;41&quot; class=&quot;n&quot; font-size=&quot;13&quot;&gt;bubbleSort&lt;/text&gt;
&lt;rect x=&quot;118&quot; y=&quot;26&quot; width=&quot;330.0&quot; height=&quot;20&quot; fill=&quot;#292929&quot; fill-opacity=&quot;1&quot;/&gt;
&lt;text x=&quot;457.0&quot; y=&quot;41&quot; font-size=&quot;12&quot; class=&quot;n&quot; fill=&quot;#292929&quot;&gt;20 &amp;#181;s&lt;/text&gt;
&lt;text x=&quot;0&quot; y=&quot;87&quot; class=&quot;n&quot; font-size=&quot;13&quot;&gt;builtInSort&lt;/text&gt;
&lt;rect x=&quot;118&quot; y=&quot;72&quot; width=&quot;247.5&quot; height=&quot;20&quot; style=&quot;fill:var(--accent);fill-opacity:1&quot;/&gt;
&lt;text x=&quot;374.5&quot; y=&quot;87&quot; font-size=&quot;12&quot; class=&quot;n&quot; style=&quot;fill:var(--accent)&quot;&gt;15 &amp;#181;s&lt;/text&gt;
&lt;text x=&quot;0&quot; y=&quot;14&quot; class=&quot;s&quot;&gt;100 random integers, lower is faster&lt;/text&gt;
&lt;/svg&gt;
  &lt;figcaption&gt;A &lt;a href=&quot;https://perf.link/&quot;&gt;Perflink&lt;/a&gt; comparison of a bubble sort against the built-in numerical sort, over 100 random integers.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;I don&#39;t want to focus on this section too heavily as (with UI-based JavaScript at least) there is little need to have heavy computational tasks running in the JavaScript browser thread that can&#39;t be handled elsewhere.&lt;/p&gt;
&lt;p&gt;If gaining a deeper understanding of algorithms in JavaScript is something that does interest you - Bianca Gandolfo has a &lt;a rel=&quot;external&quot; href=&quot;https://frontendmasters.com/courses/practical-algorithms/&quot;&gt;great talk&lt;/a&gt; in relation to it on Frontend Masters.&lt;/p&gt;
&lt;h3 id=&quot;memory-problems&quot;&gt;Memory Problems&lt;/h3&gt;
&lt;p&gt;Browsers are now excellent at performing optimised garbage collection. This means that things such as &lt;em&gt;memory leaks&lt;/em&gt; &lt;em&gt;unused event listeners&lt;/em&gt; are very rarely problematic as modern browsers now automatically remove the linked handler once the observed object becomes unreachable.&lt;/p&gt;
&lt;p&gt;While the effects of memory problems and leaks are often negligible it is important to be aware of them, because in some circumstances they can cause massive performance problems. Seeing as the way in which memory is managed can vary so much per application, I think it is outside the scope of this overview. If memory problems are something you&#39;d like to look into further Kayce Basques has written a &lt;a rel=&quot;external&quot; href=&quot;https://developers.google.com/web/tools/chrome-devtools/memory-problems&quot;&gt;great analysis&lt;/a&gt; on how to identify and fix memory problems.&lt;/p&gt;
&lt;h3 id=&quot;offloading-work&quot;&gt;Offloading Work&lt;/h3&gt;
&lt;p&gt;Well if we want our apps to be more performant we should just do less &quot;stuff&quot;... right? Any work that can be done prior to or in parallel to the client side script is often a no brainer for larger apps or apps where performance is key.&lt;/p&gt;
&lt;h4 id=&quot;web-workers&quot;&gt;Web Workers&lt;/h4&gt;
&lt;p&gt;Leveraging Web Workers allow scripts to be run in background threads, relieving pressure from the main thread. While a worker can be slow to start, inter-thread communication is extremely quick. Their usage is still very much situational and they haven&#39;t as of yet received widespread adoption. James Milner has &lt;a rel=&quot;external&quot; href=&quot;https://www.loxodrome.io/post/web-worker-performance/&quot;&gt;written a post&lt;/a&gt; about the performance of web workers and in what situations the trade off may be work it.&lt;/p&gt;
&lt;p&gt;The JS main thread can spawn an unlimited number of web workers until the user&#39;s resources are fully consumed. A perfect example of a situation to use a Web Worker is an &lt;a rel=&quot;external&quot; href=&quot;https://developers.google.com/web/updates/2018/08/offscreen-canvas&quot;&gt;OffscreenCanvas&lt;/a&gt;, since canvas logic can often be computationally heavy it may be best to just offload it from the main thread entirely.&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https://developers.google.com/web/updates/2020/02/nic80&quot;&gt;Chrome 80&lt;/a&gt; has just added support for &lt;em&gt;&lt;a rel=&quot;external&quot; href=&quot;https://developers.google.com/web/updates/2020/02/nic80&quot;&gt;module workers&lt;/a&gt;&lt;/em&gt;. This mean that workers can now run with all the benefits of JS modules: &lt;a rel=&quot;external&quot; href=&quot;https://v8.dev/features/dynamic-import&quot;&gt;dynamic import&lt;/a&gt;, parallel dependency loading, optimised execution etc. Since a lot of new JS is now being written as modules, it&#39;s nice for workers to have this functionality as well.&lt;/p&gt;
&lt;h5 id=&quot;worklets&quot;&gt;Worklets&lt;/h5&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Worklet&quot;&gt;Worklets&lt;/a&gt; are essentially lightweight versions of Web Workers that are restricted to performing specific functionality.&lt;/p&gt;
&lt;p&gt;If your requirements are solve-able by one of the available Worklets, it may make sense to use one of them in place of a full-weight Worker.&lt;/p&gt;
&lt;h4 id=&quot;web-api-s&quot;&gt;Web API&#39;s&lt;/h4&gt;
&lt;p&gt;While Web API&#39;s have been mentioned above, they can also be utilised to offload work onto. There are a large number of Web API&#39;s available - they allow the task to be handled by the browser, while the JavaScript thread continues uninterrupted. Once the task has been completed, it may trigger a callback to re-enter the JavaScript thread.&lt;/p&gt;
&lt;p&gt;For example, instead of writing a complex custom piece of logic store and retrieve data in client side JS, it might make more sense to interface with the &lt;a rel=&quot;external&quot; href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API&quot;&gt;IndexedDB&lt;/a&gt; API and abstract the logic and read/write performance.&lt;/p&gt;
&lt;h4 id=&quot;service-workers&quot;&gt;Service Workers&lt;/h4&gt;
&lt;p&gt;Sharing some similarities to a &lt;a href=&quot;https://willg.dev/writing/performance-in-javascript-applications/#web-workers&quot;&gt;Web Worker&lt;/a&gt;, a &lt;a rel=&quot;external&quot; href=&quot;https://developers.google.com/web/fundamentals/primers/service-workers&quot;&gt;Service Worker&lt;/a&gt; is a script that runs in the background, separate from page. The main difference is that service workers are designed to be used as a proxy between the application and the network.&lt;/p&gt;
&lt;p&gt;Due to their core usage being to interface with the network and modify responses, service workers are often talked about in conjunction with offline apps. Service workers are able to do this by utilising the &lt;a rel=&quot;external&quot; href=&quot;https://developers.google.com/web/fundamentals/instant-and-offline/web-storage/cache-api&quot;&gt;Cache API&lt;/a&gt; in order to store and retrieve network requests and their associated responses.&lt;/p&gt;
&lt;p&gt;In the context of performance; having specific network cache rules set up so that if the app is offline, or if the resource doesn&#39;t need to be re-fetched yet, means that the desired resource/content can be returned instantly from the cache without waiting on a network response.&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https://developers.google.com/web/fundamentals/instant-and-offline/offline-cookbook&quot;&gt;The Offline Cookbook&lt;/a&gt; by Jake Archibald defines all of the different cache rules that can be used with service workers and the Cache API. Such as, whether the resource should always be returned from cache or whether it should prioritise the network but then fall back to the cache if unavailable.&lt;/p&gt;
&lt;h4 id=&quot;ssr&quot;&gt;SSR&lt;/h4&gt;
&lt;p&gt;If the app you&#39;re building is dependent on JavaScript performing updates to the DOM, then SSR can have a substantial effect on performance and initial load times. I wasn&#39;t sure what section to place this under as it has changes the way that both initial load and ongoing execution is performed in JS-based applications.&lt;/p&gt;
&lt;p&gt;In a &lt;em&gt;server side rendered&lt;/em&gt; app, pre-rendered HTML is downloaded by the client and can is viewable as soon as it is rendered by the browser, eliminating the need to wait for JS to be downloaded and executed before the user can view content. Amongst other things this helps with metrics such as &lt;a href=&quot;https://willg.dev/writing/performance-in-javascript-applications/#painting&quot;&gt;&lt;em&gt;Largest Contentful Paint&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;figure&gt;
  &lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 512 200&quot; role=&quot;img&quot; aria-labelledby=&quot;t&quot;&gt;
&lt;title id=&quot;t&quot;&gt;Timelines comparing client-side and server-side rendering&lt;/title&gt;
&lt;style&gt;text{font-family:sans-serif;fill:#292929}.n{font-weight:700}.s{font-size:11px;fill-opacity:.6}.m{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px}&lt;/style&gt;
&lt;text x=&quot;0&quot; y=&quot;36&quot; class=&quot;n&quot; font-size=&quot;13&quot;&gt;client-rendered&lt;/text&gt;
&lt;rect x=&quot;96.0&quot; y=&quot;22&quot; width=&quot;41.6&quot; height=&quot;20&quot; fill=&quot;#292929&quot; fill-opacity=&quot;.18&quot;/&gt;
&lt;rect x=&quot;137.6&quot; y=&quot;22&quot; width=&quot;166.4&quot; height=&quot;20&quot; fill=&quot;#292929&quot; fill-opacity=&quot;.42&quot;/&gt;
&lt;rect x=&quot;304.0&quot; y=&quot;22&quot; width=&quot;83.2&quot; height=&quot;20&quot; fill=&quot;#292929&quot; fill-opacity=&quot;.62&quot;/&gt;
&lt;line x1=&quot;387.2&quot; y1=&quot;14&quot; x2=&quot;387.2&quot; y2=&quot;50&quot; style=&quot;stroke:var(--accent);stroke-width:2&quot;/&gt;
&lt;text x=&quot;394.2&quot; y=&quot;63&quot; class=&quot;n&quot; font-size=&quot;11&quot; style=&quot;fill:var(--accent)&quot;&gt;content visible&lt;/text&gt;
&lt;text x=&quot;0&quot; y=&quot;106&quot; class=&quot;n&quot; font-size=&quot;13&quot;&gt;server-rendered&lt;/text&gt;
&lt;rect x=&quot;96.0&quot; y=&quot;92&quot; width=&quot;104.0&quot; height=&quot;20&quot; fill=&quot;#292929&quot; fill-opacity=&quot;.18&quot;/&gt;
&lt;rect x=&quot;200.0&quot; y=&quot;92&quot; width=&quot;166.4&quot; height=&quot;20&quot; fill=&quot;#292929&quot; fill-opacity=&quot;.42&quot;/&gt;
&lt;rect x=&quot;366.4&quot; y=&quot;92&quot; width=&quot;62.4&quot; height=&quot;20&quot; fill=&quot;#292929&quot; fill-opacity=&quot;.62&quot;/&gt;
&lt;line x1=&quot;200.0&quot; y1=&quot;84&quot; x2=&quot;200.0&quot; y2=&quot;120&quot; style=&quot;stroke:var(--accent);stroke-width:2&quot;/&gt;
&lt;text x=&quot;207.0&quot; y=&quot;133&quot; class=&quot;n&quot; font-size=&quot;11&quot; style=&quot;fill:var(--accent)&quot;&gt;content visible&lt;/text&gt;
&lt;line x1=&quot;0&quot; y1=&quot;170&quot; x2=&quot;512&quot; y2=&quot;170&quot; stroke=&quot;#292929&quot; stroke-opacity=&quot;.15&quot;/&gt;
&lt;rect x=&quot;0&quot; y=&quot;181&quot; width=&quot;11&quot; height=&quot;11&quot; fill=&quot;#292929&quot; fill-opacity=&quot;.18&quot;/&gt;
&lt;text x=&quot;17&quot; y=&quot;190&quot; class=&quot;s&quot;&gt;HTML&lt;/text&gt;
&lt;rect x=&quot;50.8&quot; y=&quot;181&quot; width=&quot;11&quot; height=&quot;11&quot; fill=&quot;#292929&quot; fill-opacity=&quot;.42&quot;/&gt;
&lt;text x=&quot;67.8&quot; y=&quot;190&quot; class=&quot;s&quot;&gt;JS download&lt;/text&gt;
&lt;rect x=&quot;145.0&quot; y=&quot;181&quot; width=&quot;11&quot; height=&quot;11&quot; fill=&quot;#292929&quot; fill-opacity=&quot;.62&quot;/&gt;
&lt;text x=&quot;162.0&quot; y=&quot;190&quot; class=&quot;s&quot;&gt;JS execution&lt;/text&gt;
&lt;text x=&quot;512&quot; y=&quot;190&quot; class=&quot;s&quot; text-anchor=&quot;end&quot;&gt;time &amp;#8594;&lt;/text&gt;
&lt;/svg&gt;
  &lt;figcaption&gt;Server-rendered HTML is visible before the JS has downloaded. Further reading: &lt;a href=&quot;https://medium.com/walmartlabs/the-benefits-of-server-side-rendering-over-client-side-rendering-5d07ff2cefe8&quot;&gt;Alex Grigoryan on the benefits of SSR&lt;/a&gt;.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;While SSR&#39;d apps will still technically &quot;work&quot; and display content without the presence of JS, in order to have any sort of useful functionality JS is still required. The advantage being that the HTML and content can be rendered and displayed prior to downloading or executing the JS.&lt;/p&gt;
&lt;p&gt;Most frameworks and UI libraries will expose utility functions to convert your app into static HTML on the server, which can then be &lt;em&gt;hydrated&lt;/em&gt; on the client.&lt;/p&gt;
&lt;p&gt;To improve this even further, the rendered HTML can be &lt;em&gt;streamed&lt;/em&gt; to the browser in chunks, helping reduce the Time To First Byte (TTFB). In React, this is via the the &lt;a rel=&quot;external&quot; href=&quot;https://reactjs.org/docs/react-dom-server.html#rendertonodestream&quot;&gt;renderToNodeStream&lt;/a&gt; method.&lt;/p&gt;
&lt;h3 id=&quot;renders&quot;&gt;Renders&lt;/h3&gt;
&lt;p&gt;Nowadays devices are becoming available that have refresh rates as high as &lt;em&gt;120Hz&lt;/em&gt;. This means that to ensure a smooth/fluid UI experience, renders matter. This section is especially relevant if you&#39;re working with &lt;a rel=&quot;external&quot; href=&quot;https://itnext.io/a-guide-to-component-driven-development-cdd-1516f65d8b55&quot;&gt;Component Driven Development&lt;/a&gt; where whole components are &lt;em&gt;re-rendered&lt;/em&gt; as opposed to changes targeted at individual DOM nodes.&lt;/p&gt;
&lt;p&gt;It&#39;s extremely common in modern (web app) development to experience situations where components render undesirably, often rendering more times than intended. This can have a knock-on effect to the children in the tree, meaning a top-level &lt;em&gt;re-render&lt;/em&gt; not handled correctly &lt;strong&gt;can cause every component in the app to render again, performing a lot of unnecessary render logic and DOM updates&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Speaking specifically in terms of React - Pure Components (or function components wrapped with &lt;code&gt;React.memo&lt;/code&gt;) won&#39;t re-render unless their props change. In the world of hooks, helper methods such as &lt;code&gt;React.useCallback&lt;/code&gt; and &lt;code&gt;React.useMemo&lt;/code&gt; perform automatic &lt;a href=&quot;https://willg.dev/writing/performance-in-javascript-applications/#memoization&quot;&gt;memoization&lt;/a&gt; so that render items don&#39;t change unless they need to. Check out Andy Richardson&#39;s &lt;a rel=&quot;external&quot; href=&quot;https://dev.to/andyrichardsonn/why-i-almost-always-usememo-and-usecallback-4776&quot;&gt;post&lt;/a&gt; on their benefits.&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https://github.com/welldone-software/why-did-you-render&quot;&gt;Why Did You Render&lt;/a&gt; is a super helpful package that you can plug into your React application and it&#39;ll thank you by giving you data about each of the component&#39;s renders, helping you to diagnose unnecessary ones. Eliminating unnecessary renders can alleviate resources to focus on renders that are needed, and have a beneficial effect on the user.&lt;/p&gt;
&lt;h2 id=&quot;performance-measuring&quot;&gt;Performance Measuring&lt;/h2&gt;
&lt;p&gt;So you think you&#39;ve made your app performant? Great! But how can you actually quantify that performance and monitor for improvements and impediments?&lt;/p&gt;
&lt;p&gt;Performance measurements/metrics can be very subjective - partly in terms of whether you measure the app externals, or the resulting user- experience. Google has compiled a &lt;a rel=&quot;external&quot; href=&quot;https://developers.google.com/web/fundamentals/performance/user-centric-performance-metrics&quot;&gt;list&lt;/a&gt; of the user-centric metrics it considers to be the most important.&lt;/p&gt;
&lt;h3 id=&quot;rail&quot;&gt;RAIL&lt;/h3&gt;
&lt;p&gt;The RAIL Model was coined by the Chrome team back in 2015; they refer to it as a &lt;a rel=&quot;external&quot; href=&quot;https://developers.google.com/web/fundamentals/performance/rail&quot;&gt;user-centric performance model for that breaks down the user&#39;s experience into key actions&lt;/a&gt;. Goals of RAIL are all focused around user-centric metrics, measuring your app by user&#39;s perceptions of it.&lt;/p&gt;
&lt;figure&gt;
  &lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 512 216&quot; role=&quot;img&quot; aria-labelledby=&quot;t&quot;&gt;
&lt;title id=&quot;t&quot;&gt;The four RAIL budgets: response, animation, idle and load&lt;/title&gt;
&lt;style&gt;text{font-family:sans-serif;fill:#292929}.n{font-weight:700}.s{font-size:11px;fill-opacity:.6}.m{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px}&lt;/style&gt;
&lt;text x=&quot;0&quot; y=&quot;34&quot; font-family=&quot;Geneva,sans-serif&quot; font-weight=&quot;700&quot; font-size=&quot;30&quot; fill=&quot;#292929&quot; fill-opacity=&quot;.22&quot;&gt;R&lt;/text&gt;
&lt;text x=&quot;42&quot; y=&quot;20&quot; class=&quot;n&quot; font-size=&quot;13&quot;&gt;Response&lt;/text&gt;
&lt;text x=&quot;42&quot; y=&quot;37&quot; class=&quot;s&quot;&gt;react to input within&lt;/text&gt;
&lt;text x=&quot;512&quot; y=&quot;30&quot; class=&quot;n&quot; font-size=&quot;17&quot; style=&quot;fill:var(--accent)&quot; text-anchor=&quot;end&quot;&gt;100 ms&lt;/text&gt;
&lt;line x1=&quot;0&quot; y1=&quot;48&quot; x2=&quot;512&quot; y2=&quot;48&quot; stroke=&quot;#292929&quot; stroke-opacity=&quot;.12&quot;/&gt;
&lt;text x=&quot;0&quot; y=&quot;90&quot; font-family=&quot;Geneva,sans-serif&quot; font-weight=&quot;700&quot; font-size=&quot;30&quot; fill=&quot;#292929&quot; fill-opacity=&quot;.22&quot;&gt;A&lt;/text&gt;
&lt;text x=&quot;42&quot; y=&quot;76&quot; class=&quot;n&quot; font-size=&quot;13&quot;&gt;Animation&lt;/text&gt;
&lt;text x=&quot;42&quot; y=&quot;93&quot; class=&quot;s&quot;&gt;produce each frame in&lt;/text&gt;
&lt;text x=&quot;512&quot; y=&quot;86&quot; class=&quot;n&quot; font-size=&quot;17&quot; style=&quot;fill:var(--accent)&quot; text-anchor=&quot;end&quot;&gt;10 ms&lt;/text&gt;
&lt;line x1=&quot;0&quot; y1=&quot;104&quot; x2=&quot;512&quot; y2=&quot;104&quot; stroke=&quot;#292929&quot; stroke-opacity=&quot;.12&quot;/&gt;
&lt;text x=&quot;0&quot; y=&quot;146&quot; font-family=&quot;Geneva,sans-serif&quot; font-weight=&quot;700&quot; font-size=&quot;30&quot; fill=&quot;#292929&quot; fill-opacity=&quot;.22&quot;&gt;I&lt;/text&gt;
&lt;text x=&quot;42&quot; y=&quot;132&quot; class=&quot;n&quot; font-size=&quot;13&quot;&gt;Idle&lt;/text&gt;
&lt;text x=&quot;42&quot; y=&quot;149&quot; class=&quot;s&quot;&gt;use idle time in chunks of&lt;/text&gt;
&lt;text x=&quot;512&quot; y=&quot;142&quot; class=&quot;n&quot; font-size=&quot;17&quot; style=&quot;fill:var(--accent)&quot; text-anchor=&quot;end&quot;&gt;50 ms&lt;/text&gt;
&lt;line x1=&quot;0&quot; y1=&quot;160&quot; x2=&quot;512&quot; y2=&quot;160&quot; stroke=&quot;#292929&quot; stroke-opacity=&quot;.12&quot;/&gt;
&lt;text x=&quot;0&quot; y=&quot;202&quot; font-family=&quot;Geneva,sans-serif&quot; font-weight=&quot;700&quot; font-size=&quot;30&quot; fill=&quot;#292929&quot; fill-opacity=&quot;.22&quot;&gt;L&lt;/text&gt;
&lt;text x=&quot;42&quot; y=&quot;188&quot; class=&quot;n&quot; font-size=&quot;13&quot;&gt;Load&lt;/text&gt;
&lt;text x=&quot;42&quot; y=&quot;205&quot; class=&quot;s&quot;&gt;deliver content within&lt;/text&gt;
&lt;text x=&quot;512&quot; y=&quot;198&quot; class=&quot;n&quot; font-size=&quot;17&quot; style=&quot;fill:var(--accent)&quot; text-anchor=&quot;end&quot;&gt;1000 ms&lt;/text&gt;
&lt;/svg&gt;
  &lt;figcaption&gt;The four RAIL budgets, each expressed as the time the user will tolerate.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3 id=&quot;painting&quot;&gt;Painting&lt;/h3&gt;
&lt;p&gt;Different metrics relating to how quickly a given web page &lt;em&gt;paints&lt;/em&gt; its content so that it can be digested by a user of said web page. Google has been the main proprietor of Paint performance metrics (as with lots of other aspects of web performance. Thanks, Google!) and has introduced a number of different ones, all centred around the user. All paint metrics report on how quickly certain content is rendered and visible to a user.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://web.dev/lcp/&quot;&gt;Largest Contentful Paint (LCP)&lt;/a&gt; - reports the time taken to render the largest content element that is visible in the users viewport. LCP is the most recent and recommended paint metric at the time of writing this post.&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https://web.dev/fcp/&quot;&gt;First Contentful Paint (FCP)&lt;/a&gt; - this is the time taken to render any part of the page&#39;s content.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Using metrics such as these can give a great indication into how quickly a user can see the important content of the page. Being able to see content (and in the case of LCP, &lt;em&gt;core content&lt;/em&gt;) more quickly will increase user satisfaction and reduce bounce rate.&lt;/p&gt;
&lt;h3 id=&quot;tools-to-measure-performance&quot;&gt;Tools to Measure Performance&lt;/h3&gt;
&lt;h4 id=&quot;lighthouse&quot;&gt;Lighthouse&lt;/h4&gt;
&lt;p&gt;Lighthouse is a great &lt;a rel=&quot;external&quot; href=&quot;https://github.com/GoogleChrome/lighthouse&quot;&gt;open-source&lt;/a&gt; tool that can be utilised in order to get a visual overview of a site&#39;s performance - it can be easily run against any site either using Chrome DevTools or via a Chrome Extension. A cut-down version of the Lighthouse test can be ran using Google&#39;s &lt;a rel=&quot;external&quot; href=&quot;https://developers.google.com/speed/pagespeed&quot;&gt;PageSpeed Insights&lt;/a&gt; that accepts any URL.&lt;/p&gt;
&lt;p&gt;First Meaningful Paint (FMP) has been deprecated and will likely be replaced with LCP in newer versions of Lighthouse.&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https://developers.google.com/web/tools/lighthouse/audits/time-to-interactive&quot;&gt;TimeToInteractive&lt;/a&gt; is a great metric to assess the performance of a web page as it measures the time required for a page to display useful content (FCP), register event handlers, and start responding to user interactions in a timely manner.&lt;/p&gt;
&lt;h4 id=&quot;webpagetest&quot;&gt;WebPageTest&lt;/h4&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https://www.webpagetest.org/&quot;&gt;WebPageTest&lt;/a&gt; is another service that you can use (for free) to perform analysis on any given website.&lt;/p&gt;
&lt;p&gt;While the results and metrics are similar to those in Lighthouse, it&#39;s another great tool to use in order to get a breakdown of high-level performance.&lt;/p&gt;
&lt;h4 id=&quot;browser-profilers&quot;&gt;Browser Profilers&lt;/h4&gt;
&lt;p&gt;All major browsers have profilers that allow you to record analyse the performance and responsiveness of a UI during a user session. These profiles are extremely detailed and allow you inspect (amongst other things) execution times, JS call stacks, paint metrics, and the content visible at any time during the session.&lt;/p&gt;
&lt;figure&gt;
  &lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 512 130&quot; role=&quot;img&quot; aria-labelledby=&quot;t&quot;&gt;
&lt;title id=&quot;t&quot;&gt;A flame chart showing a deep call stack with one wide blocking function&lt;/title&gt;
&lt;style&gt;text{font-family:sans-serif;fill:#292929}.n{font-weight:700}.s{font-size:11px;fill-opacity:.6}.m{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px}&lt;/style&gt;
&lt;rect x=&quot;0.0&quot; y=&quot;0.0&quot; width=&quot;510.5&quot; height=&quot;15&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.3&quot;/&gt;
&lt;rect x=&quot;10.2&quot; y=&quot;17.0&quot; width=&quot;157.2&quot; height=&quot;15&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.3&quot;/&gt;
&lt;rect x=&quot;184.3&quot; y=&quot;17.0&quot; width=&quot;285.2&quot; height=&quot;15&quot; style=&quot;fill:var(--accent);fill-opacity:0.85&quot;/&gt;
&lt;rect x=&quot;481.3&quot; y=&quot;17.0&quot; width=&quot;24.1&quot; height=&quot;15&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.3&quot;/&gt;
&lt;rect x=&quot;20.5&quot; y=&quot;34.0&quot; width=&quot;59.9&quot; height=&quot;15&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.3&quot;/&gt;
&lt;rect x=&quot;92.2&quot; y=&quot;34.0&quot; width=&quot;65.1&quot; height=&quot;15&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.3&quot;/&gt;
&lt;rect x=&quot;194.6&quot; y=&quot;34.0&quot; width=&quot;259.6&quot; height=&quot;15&quot; style=&quot;fill:var(--accent);fill-opacity:0.85&quot;/&gt;
&lt;rect x=&quot;30.7&quot; y=&quot;51.0&quot; width=&quot;34.3&quot; height=&quot;15&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.3&quot;/&gt;
&lt;rect x=&quot;102.4&quot; y=&quot;51.0&quot; width=&quot;44.6&quot; height=&quot;15&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.3&quot;/&gt;
&lt;rect x=&quot;204.8&quot; y=&quot;51.0&quot; width=&quot;49.7&quot; height=&quot;15&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.3&quot;/&gt;
&lt;rect x=&quot;266.2&quot; y=&quot;51.0&quot; width=&quot;177.7&quot; height=&quot;15&quot; style=&quot;fill:var(--accent);fill-opacity:0.85&quot;/&gt;
&lt;rect x=&quot;276.5&quot; y=&quot;68.0&quot; width=&quot;70.2&quot; height=&quot;15&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.3&quot;/&gt;
&lt;rect x=&quot;358.4&quot; y=&quot;68.0&quot; width=&quot;80.4&quot; height=&quot;15&quot; style=&quot;fill:var(--accent);fill-opacity:0.85&quot;/&gt;
&lt;rect x=&quot;368.6&quot; y=&quot;85.0&quot; width=&quot;59.9&quot; height=&quot;15&quot; fill=&quot;#292929&quot; fill-opacity=&quot;0.3&quot;/&gt;
&lt;line x1=&quot;266.2&quot; y1=&quot;51&quot; x2=&quot;266.2&quot; y2=&quot;108&quot; style=&quot;stroke:var(--accent);stroke-opacity:.5;stroke-dasharray:2 3&quot;/&gt;
&lt;line x1=&quot;445.4&quot; y1=&quot;51&quot; x2=&quot;445.4&quot; y2=&quot;108&quot; style=&quot;stroke:var(--accent);stroke-opacity:.5;stroke-dasharray:2 3&quot;/&gt;
&lt;text x=&quot;355.8&quot; y=&quot;122&quot; class=&quot;n&quot; font-size=&quot;11&quot; style=&quot;fill:var(--accent)&quot; text-anchor=&quot;middle&quot;&gt;one wide bar blocks the thread&lt;/text&gt;
&lt;text x=&quot;0&quot; y=&quot;122&quot; class=&quot;s&quot;&gt;call depth &amp;#8595;&lt;/text&gt;
&lt;text x=&quot;512&quot; y=&quot;122&quot; class=&quot;s&quot; text-anchor=&quot;end&quot;&gt;time &amp;#8594;&lt;/text&gt;
&lt;/svg&gt;
  &lt;figcaption&gt;A flame chart is the JS call stack over time. Thin tips are good; wide bars block the thread.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;While the above image can be daunting to look at initially, knowing the basics of how to navigate it can really help when debugging performance issues.&lt;/p&gt;
&lt;p&gt;In particular I&#39;d like to draw your attention to what&#39;s known as a &lt;em&gt;flame chart&lt;/em&gt; (the colourful midsection that almost looks like upside-down flames). The flame chart is essentially a depiction of the JS call stack over time and can provide you great insight into what might be under-performing or blocking the thread.&lt;/p&gt;
&lt;p&gt;An anecdotal piece of advice I can give is that flame charts should ideally have very thin-tipped flames - meaning that while the call stack may be tall, each function call is executed quickly and doesn&#39;t block for long. If you have wide bars indicating slow function executions, looking at what function is the culprit may be a good starting point for improving performance.&lt;/p&gt;
&lt;p&gt;For a less visual way of finding out what&#39;s taking a long time to run, you could also try and use the experimental &lt;a rel=&quot;external&quot; href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Long_Tasks_API&quot;&gt;Long Tasks API&lt;/a&gt; to identify tasks that block that main thread for &lt;em&gt;50ms&lt;/em&gt; or longer.&lt;/p&gt;
&lt;h3 id=&quot;monitoring-performance-over-time&quot;&gt;Monitoring Performance Over Time&lt;/h3&gt;
&lt;p&gt;Once you have an idea of your current app&#39;s performance, it can be important to keep track of performance over time. This is so that you can work on incremental improvements to your app, and be able to correlate those to changes in the performance of your app. For example, your LCP has just risen sharply - has there been a recent code change that could&#39;ve caused the slowdown?&lt;/p&gt;
&lt;p&gt;Usually you will hook up performance monitoring tools to your client-side JS so that they can run alongside your app and provide data to whatever logging or data visualisation tool you&#39;ve chosen to use. One example of such a tool is &lt;a rel=&quot;external&quot; href=&quot;https://zizzamia.github.io/perfume/&quot;&gt;perfume&lt;/a&gt;, which is both open-source and free to use.&lt;/p&gt;
&lt;p&gt;There are many competing tools in this space, and I assume each of them will have their own advantages and disadvantages. It&#39;s important to evaluate the requirements of your app against the tool&#39;s offerings; keep in mind that seeing as these tools generally run on the client side JS, they themselves can actually have a negative (/blocking) performance impact.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Hopefully this has helped to give you a very high-level overview of why focussing effort on the performance of our apps is important, as well as outlining some suggestions and guidelines to keep in mind when trying to bolster performance.&lt;/p&gt;
&lt;p&gt;There is a lot of information out there about the multitude of ways that performance is improved; starting small and incrementally setting new goals will help you to track progress and feel rewarded.&lt;/p&gt;
&lt;p&gt;All resources used are mentioned/linked inline. Apologies for the mix of British and American spelling.&lt;/p&gt;
</content>
        
    </entry>
</feed>
