<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>80774</bug_id>
          
          <creation_ts>2012-03-10 20:15:00 -0800</creation_ts>
          <short_desc>REGRESSION(r110384): compile failed on Chromium Win Release (Requested by ukai_home on #webkit).</short_desc>
          <delta_ts>2012-03-10 20:23:45 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>80613</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>danakj</cc>
    
    <cc>enne</cc>
    
    <cc>ukai</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>575619</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-10 20:15:00 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/110384 broke the build:
compile failed on Chromium Win Release (Requested by ukai_home on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575620</commentid>
    <comment_count>1</comment_count>
      <attachid>131202</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-10 20:15:30 -0800</bug_when>
    <thetext>Created attachment 131202
ROLLOUT of r110384

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575622</commentid>
    <comment_count>2</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2012-03-10 20:17:59 -0800</bug_when>
    <thetext>http://build.webkit.org/builders/Chromium%20Win%20Release/builds/41433/steps/compile-webkit/logs/stdio

1&gt;CCOcclusionTrackerTest.cpp
1&gt;.\tests\CCOcclusionTrackerTest.cpp(354) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestIdentityTransformsMainThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(354) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestIdentityTransformsMainThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(354) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestIdentityTransformsImplThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(354) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestIdentityTransformsImplThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(406) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestRotatedChildMainThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(406) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestRotatedChildMainThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(406) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestRotatedChildImplThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(406) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestRotatedChildImplThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(468) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestTranslatedChildMainThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(468) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestTranslatedChildMainThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(468) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestTranslatedChildImplThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(468) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestTranslatedChildImplThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(562) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestChildInRotatedChildMainThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(562) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestChildInRotatedChildMainThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(562) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestChildInRotatedChildImplThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(562) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestChildInRotatedChildImplThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(709) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestVisitTargetTwoTimesMainThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(709) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestVisitTargetTwoTimesMainThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(709) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestVisitTargetTwoTimesImplThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(709) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestVisitTargetTwoTimesImplThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(776) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestSurfaceRotatedOffAxisMainThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(776) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestSurfaceRotatedOffAxisMainThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(776) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestSurfaceRotatedOffAxisImplThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(776) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestSurfaceRotatedOffAxisImplThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(865) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestSurfaceWithTwoOpaqueChildrenMainThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(865) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestSurfaceWithTwoOpaqueChildrenMainThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(865) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestSurfaceWithTwoOpaqueChildrenImplThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(865) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestSurfaceWithTwoOpaqueChildrenImplThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(971) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestOverlappingSurfaceSiblingsMainThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(971) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestOverlappingSurfaceSiblingsMainThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(971) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestOverlappingSurfaceSiblingsImplThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(971) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestOverlappingSurfaceSiblingsImplThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1070) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestOverlappingSurfaceSiblingsWithTwoTransformsMainThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1070) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestOverlappingSurfaceSiblingsWithTwoTransformsMainThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1070) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestOverlappingSurfaceSiblingsWithTwoTransformsImplThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1070) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestOverlappingSurfaceSiblingsWithTwoTransformsImplThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1154) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestFiltersMainThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1154) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestFiltersMainThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1154) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestFiltersImplThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1154) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestFiltersImplThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1197) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestLayerScissorRectOutsideChildMainThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1197) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestLayerScissorRectOutsideChildMainThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1197) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestLayerScissorRectOutsideChildImplThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1197) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestLayerScissorRectOutsideChildImplThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1240) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestScreenScissorRectOutsideChildMainThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1240) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestScreenScissorRectOutsideChildMainThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1240) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestScreenScissorRectOutsideChildImplThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1240) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestScreenScissorRectOutsideChildImplThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1265) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestDamageRectOutsideChildMainThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1265) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestDamageRectOutsideChildMainThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1265) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestDamageRectOutsideChildImplThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1265) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestDamageRectOutsideChildImplThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1303) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestLayerScissorRectOverChildMainThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1303) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestLayerScissorRectOverChildMainThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1303) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestLayerScissorRectOverChildImplThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1303) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestLayerScissorRectOverChildImplThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1341) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestScreenScissorRectOverChildMainThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1341) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestScreenScissorRectOverChildMainThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1341) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestScreenScissorRectOverChildImplThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1341) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestScreenScissorRectOverChildImplThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1366) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestDamageRectOverChildMainThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1366) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestDamageRectOverChildMainThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1366) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestDamageRectOverChildImplThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1366) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestDamageRectOverChildImplThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1408) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestLayerScissorRectPartlyOverChildMainThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1408) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestLayerScissorRectPartlyOverChildMainThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1408) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestLayerScissorRectPartlyOverChildImplThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1408) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestLayerScissorRectPartlyOverChildImplThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1450) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestScreenScissorRectPartlyOverChildMainThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1450) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestScreenScissorRectPartlyOverChildMainThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1450) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestScreenScissorRectPartlyOverChildImplThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1450) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestScreenScissorRectPartlyOverChildImplThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1475) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestDamageRectPartlyOverChildMainThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1475) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestDamageRectPartlyOverChildMainThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1475) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestDamageRectPartlyOverChildImplThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1475) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestDamageRectPartlyOverChildImplThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1517) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestLayerScissorRectOverNothingMainThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1517) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestLayerScissorRectOverNothingMainThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1517) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestLayerScissorRectOverNothingImplThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1517) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestLayerScissorRectOverNothingImplThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1559) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestScreenScissorRectOverNothingMainThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1559) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestScreenScissorRectOverNothingMainThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1559) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestScreenScissorRectOverNothingImplThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1559) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestScreenScissorRectOverNothingImplThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1584) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestDamageRectOverNothingMainThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1584) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestDamageRectOverNothingMainThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1584) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestDamageRectOverNothingImplThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1584) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestDamageRectOverNothingImplThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1608) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestLayerScissorRectForLayerOffOriginMainThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1608) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestLayerScissorRectForLayerOffOriginMainThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1608) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestLayerScissorRectForLayerOffOriginImplThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1608) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestLayerScissorRectForLayerOffOriginImplThreadOpaquePaints&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1643) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestOpaqueContentsRegionEmptyMainThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1643) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestOpaqueContentsRegionEmptyImplThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1701) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestOpaqueContentsRegionNonEmptyMainThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;.\tests\CCOcclusionTrackerTest.cpp(1701) : error C2512: &apos;`anonymous-namespace&apos;::CCOcclusionTrackerTestOpaqueContentsRegionNonEmptyImplThreadOpaqueLayers&apos; : no appropriate default constructor available
1&gt;Build log was saved at &quot;file://e:\google-windows-1\chromium-win-release\build\Source\WebKit\chromium\build\Release\obj\webkit_unit_tests\BuildLog.htm&quot;
1&gt;webkit_unit_tests - 96 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 141 up-to-date, 0 skipped ==========</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575623</commentid>
    <comment_count>3</comment_count>
      <attachid>131202</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-10 20:23:41 -0800</bug_when>
    <thetext>Comment on attachment 131202
ROLLOUT of r110384

Clearing flags on attachment: 131202

Committed r110386: &lt;http://trac.webkit.org/changeset/110386&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575624</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-10 20:23:45 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131202</attachid>
            <date>2012-03-10 20:15:30 -0800</date>
            <delta_ts>2012-03-10 20:23:41 -0800</delta_ts>
            <desc>ROLLOUT of r110384</desc>
            <filename>bug-80774-20120311041754.patch</filename>
            <type>text/plain</type>
            <size>222932</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGQxMDgwMjZjNmQwYWIzODFjZjIzNDQwNjIyNmYwMzVhM2JlYTYzYjUuLmJlNDgzY2MzOWY5ZGRj
YTVlZDFiN2NkNmQ1ZWMwMGUxNTQ3N2QzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNTIgQEAKKzIwMTItMDMtMTAgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5i
b3RAZ21haWwuY29tPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMTAzODQu
CisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzExMDM4NAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA3NzQKKworICAgICAg
ICBjb21waWxlIGZhaWxlZCBvbiBDaHJvbWl1bSBXaW4gUmVsZWFzZSAoUmVxdWVzdGVkIGJ5IHVr
YWlfaG9tZQorICAgICAgICBvbiAjd2Via2l0KS4KKworICAgICAgICAqIHRlc3RzL0NDT2NjbHVz
aW9uVHJhY2tlclRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bVdpdGhG
b3JjZWREcmF3c0NvbnRlbnQ6OkxheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50Ojpv
cGFxdWVDb250ZW50c1JlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtV2l0
aEZvcmNlZERyYXdzQ29udGVudDo6c2V0T3BhcXVlUGFpbnRSZWN0KToKKyAgICAgICAgKExheWVy
Q2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnNldExh
eWVyUHJvcGVydGllc0ZvclRlc3RpbmcpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0Q0NPY2NsdXNpb25UcmFja2VyOjpUZXN0Q0NPY2NsdXNpb25UcmFja2VyKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RDQ09jY2x1c2lvblRyYWNrZXI6Om9jY2x1c2lvbkluU2Ny
ZWVuU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdENDT2NjbHVzaW9uVHJhY2tlcjo6b2Nj
bHVzaW9uSW5UYXJnZXRTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RDQ09jY2x1c2lv
blRyYWNrZXI6OnNldE9jY2x1c2lvbkluU2NyZWVuU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdENDT2NjbHVzaW9uVHJhY2tlcjo6c2V0T2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RDQ09jY2x1c2lvblRyYWNrZXI6OmxheWVyU2Npc3NvclJlY3RJ
blRhcmdldFN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERhbWFnZUNsaWVudDo6ZGFt
YWdlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhSb3RhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhUcmFu
c2xhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldp
dGhSb3RhdGVkU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpsYXllckFkZGVkVG9PY2NsdWRl
ZFJlZ2lvbldpdGhTdXJmYWNlQWxyZWFkeU9uU3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6bGF5
ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoUm90YXRlZE9mZkF4aXNTdXJmYWNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aE11bHRpcGxlT3BhcXVl
TGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OnN1cmZhY2VPY2NsdXNpb25XaXRoT3ZlcmxhcHBp
bmdTaWJsaW5nU3VyZmFjZXMpOgorICAgICAgICAoV2ViQ29yZTo6c3VyZmFjZU9jY2x1c2lvbklu
U2NyZWVuU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6c3VyZmFjZU9jY2x1c2lvbkluU2NyZWVu
U3BhY2VEaWZmZXJlbnRUcmFuc2Zvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6Om9jY2x1c2lvbklu
dGVyYWN0aW9uV2l0aEZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6bGF5ZXJTY2lzc29yUmVj
dE92ZXJUaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlblNjaXNzb3JSZWN0T3ZlclRpbGUp
OgorICAgICAgICAoV2ViQ29yZTo6bGF5ZXJTY2lzc29yUmVjdE92ZXJDdWxsZWRUaWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNjcmVlblNjaXNzb3JSZWN0T3ZlckN1bGxlZFRpbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6bGF5ZXJTY2lzc29yUmVjdE92ZXJQYXJ0aWFsVGlsZXMpOgorICAgICAgICAo
V2ViQ29yZTo6c2NyZWVuU2Npc3NvclJlY3RPdmVyUGFydGlhbFRpbGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OmxheWVyU2Npc3NvclJlY3RPdmVyTm9UaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpz
Y3JlZW5TY2lzc29yUmVjdE92ZXJOb1RpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmxheWVyU2Np
c3NvclJlY3RGb3JMYXllck9mZk9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpkYW1hZ2VSZWN0
T3ZlclRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6ZGFtYWdlUmVjdE92ZXJDdWxsZWRUaWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OmRhbWFnZVJlY3RPdmVyUGFydGlhbFRpbGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OmRhbWFnZVJlY3RPdmVyTm9UaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpURVNU
KToKKwogMjAxMi0wMy0xMCAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbY2hyb21pdW1dIENsZWFuIHVwIGN1bGxpbmcgdGVzdHMgYW5kIHRlbXBsYXRpemUg
dG8gdGVzdCBpbXBsIGNvbnN0cnVjdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NPY2NsdXNpb25UcmFja2VyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDT2NjbHVzaW9uVHJhY2tlclRlc3QuY3BwCmluZGV4IGJkODRjOGRjOTQyY2I5
MzM1OWFlZWM1OTMwYmM0OTNlZWMzYjA4NGIuLjI2ZDUyNTIzYmUxMzRjMmVmYzk3OGIzNGEwYmQ0
YzMzMjA1MDljYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NP
Y2NsdXNpb25UcmFja2VyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ09jY2x1c2lvblRyYWNrZXJUZXN0LmNwcApAQCAtMzAsOSArMzAsNyBAQAogI2luY2x1ZGUg
IkxheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJUcmFuc2Zv
cm1hdGlvbk1hdHJpeC5oIgotI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmgiCi0jaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQ
cm94eS5oIgogCiAjaW5jbHVkZSA8Z21vY2svZ21vY2suaD4KICNpbmNsdWRlIDxndGVzdC9ndGVz
dC5oPgpAQCAtNDcsNjYgKzQ1LDg0IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1l
c3BhY2UgewogCi1jbGFzcyBUZXN0Q29udGVudExheWVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJD
aHJvbWl1bSB7CitjbGFzcyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCA6IHB1
YmxpYyBMYXllckNocm9taXVtIHsKIHB1YmxpYzoKLSAgICBUZXN0Q29udGVudExheWVyQ2hyb21p
dW0oKSA6IExheWVyQ2hyb21pdW0oKSB7IH0KKyAgICBMYXllckNocm9taXVtV2l0aEZvcmNlZERy
YXdzQ29udGVudCgpCisgICAgICAgIDogTGF5ZXJDaHJvbWl1bSgpCisgICAgeworICAgIH0KIAog
ICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgdmlydHVhbCBSZWdpb24gb3BhcXVlQ29udGVudHNSZWdpb24oKSBjb25zdCB7IHJldHVybiBp
bnRlcnNlY3Rpb24obV9vcGFxdWVDb250ZW50c1JlY3QsIHZpc2libGVMYXllclJlY3QoKSk7IH0K
LSAgICB2b2lkIHNldE9wYXF1ZUNvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiBvcGFxdWVDb250
ZW50c1JlY3QpIHsgbV9vcGFxdWVDb250ZW50c1JlY3QgPSBvcGFxdWVDb250ZW50c1JlY3Q7IH0K
LQotcHJpdmF0ZToKLSAgICBJbnRSZWN0IG1fb3BhcXVlQ29udGVudHNSZWN0OwotfTsKKyAgICB2
aXJ0dWFsIFJlZ2lvbiBvcGFxdWVDb250ZW50c1JlZ2lvbigpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gaW50ZXJzZWN0aW9uKG1fb3BhcXVlUGFpbnRSZWN0LCB2aXNpYmxlTGF5ZXJSZWN0
KCkpOworICAgIH0KIAotY2xhc3MgVGVzdENvbnRlbnRMYXllckltcGwgOiBwdWJsaWMgQ0NMYXll
ckltcGwgewotcHVibGljOgotICAgIFRlc3RDb250ZW50TGF5ZXJJbXBsKGludCBpZCkgOiBDQ0xh
eWVySW1wbChpZCkgeyBzZXREcmF3c0NvbnRlbnQodHJ1ZSk7IH0KKyAgICB2b2lkIHNldE9wYXF1
ZVBhaW50UmVjdChjb25zdCBJbnRSZWN0JiBvcGFxdWVQYWludFJlY3QpIHsgbV9vcGFxdWVQYWlu
dFJlY3QgPSBvcGFxdWVQYWludFJlY3Q7IH0KIAotICAgIHZpcnR1YWwgUmVnaW9uIG9wYXF1ZUNv
bnRlbnRzUmVnaW9uKCkgY29uc3QgeyByZXR1cm4gaW50ZXJzZWN0aW9uKG1fb3BhcXVlQ29udGVu
dHNSZWN0LCB2aXNpYmxlTGF5ZXJSZWN0KCkpOyB9Ci0gICAgdm9pZCBzZXRPcGFxdWVDb250ZW50
c1JlY3QoY29uc3QgSW50UmVjdCYgb3BhcXVlQ29udGVudHNSZWN0KSB7IG1fb3BhcXVlQ29udGVu
dHNSZWN0ID0gb3BhcXVlQ29udGVudHNSZWN0OyB9CiBwcml2YXRlOgotICAgIEludFJlY3QgbV9v
cGFxdWVDb250ZW50c1JlY3Q7CisgICAgSW50UmVjdCBtX29wYXF1ZVBhaW50UmVjdDsKIH07CiAK
K3ZvaWQgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhMYXllckNocm9taXVtKiBsYXllciwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cG9zaXRpb24sIGNvbnN0IEludFNpemUmIGJvdW5kcykKK3sKKyAgICBsYXllci0+c2V0VHJhbnNm
b3JtKHRyYW5zZm9ybSk7CisgICAgbGF5ZXItPnNldFN1YmxheWVyVHJhbnNmb3JtKFRyYW5zZm9y
bWF0aW9uTWF0cml4KCkpOworICAgIGxheWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAs
IDApKTsKKyAgICBsYXllci0+c2V0UG9zaXRpb24ocG9zaXRpb24pOworICAgIGxheWVyLT5zZXRC
b3VuZHMoYm91bmRzKTsKK30KKwordm9pZCBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKExh
eWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KiBsYXllciwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIGNvbnN0
IEludFNpemUmIGJvdW5kcywgYm9vbCBvcGFxdWUsIGJvb2wgb3BhcXVlTGF5ZXJzKQoreworICAg
IHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIsIHRyYW5zZm9ybSwgcG9zaXRpb24s
IGJvdW5kcyk7CisgICAgaWYgKG9wYXF1ZUxheWVycykKKyAgICAgICAgbGF5ZXItPnNldE9wYXF1
ZShvcGFxdWUpOworICAgIGVsc2UgeworICAgICAgICBsYXllci0+c2V0T3BhcXVlKGZhbHNlKTsK
KyAgICAgICAgaWYgKG9wYXF1ZSkKKyAgICAgICAgICAgIGxheWVyLT5zZXRPcGFxdWVQYWludFJl
Y3QoSW50UmVjdChJbnRQb2ludCgpLCBib3VuZHMpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbGF5ZXItPnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KCkpOworICAgIH0KK30KKwogLy8g
QSBzdWJjbGFzcyB0byBleHBvc2UgdGhlIHRvdGFsIGN1cnJlbnQgb2NjbHVzaW9uLgotdGVtcGxh
dGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KLWNsYXNz
IFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlckJh
c2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT4geworY2xhc3MgVGVzdENDT2NjbHVzaW9u
VHJhY2tlciA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXIgewogcHVibGljOgotICAgIFRlc3RD
Q09jY2x1c2lvblRyYWNrZXJCYXNlKEludFJlY3Qgc2NyZWVuU2Npc3NvclJlY3QpCi0gICAgICAg
IDogQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPihz
Y3JlZW5TY2lzc29yUmVjdCkKKyAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyKEludFJlY3Qgc2Ny
ZWVuU2Npc3NvclJlY3QpCisgICAgICAgIDogQ0NPY2NsdXNpb25UcmFja2VyKHNjcmVlblNjaXNz
b3JSZWN0KQogICAgICAgICAsIG1fb3ZlcnJpZGVMYXllclNjaXNzb3JSZWN0KGZhbHNlKQogICAg
IHsKICAgICB9CiAKLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZShJbnRSZWN0IHNjcmVl
blNjaXNzb3JSZWN0LCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXJEYW1hZ2VDbGllbnRCYXNlPFJl
bmRlclN1cmZhY2VUeXBlPiogZGFtYWdlQ2xpZW50KQotICAgICAgICA6IENDT2NjbHVzaW9uVHJh
Y2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT4oc2NyZWVuU2Npc3NvclJlY3Qs
IGRhbWFnZUNsaWVudCkKKyAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyKEludFJlY3Qgc2NyZWVu
U2Npc3NvclJlY3QsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlckRhbWFnZUNsaWVudCogZGFtYWdl
Q2xpZW50KQorICAgICAgICA6IENDT2NjbHVzaW9uVHJhY2tlcihzY3JlZW5TY2lzc29yUmVjdCwg
ZGFtYWdlQ2xpZW50KQogICAgICAgICAsIG1fb3ZlcnJpZGVMYXllclNjaXNzb3JSZWN0KGZhbHNl
KQogICAgIHsKICAgICB9CiAKLSAgICBSZWdpb24gb2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpIGNv
bnN0IHsgcmV0dXJuIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJm
YWNlVHlwZT46Om1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuOyB9Ci0gICAgUmVnaW9u
IG9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpIGNvbnN0IHsgcmV0dXJuIENDT2NjbHVzaW9uVHJh
Y2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46Om1fc3RhY2subGFzdCgpLm9j
Y2x1c2lvbkluVGFyZ2V0OyB9CisgICAgUmVnaW9uIG9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKSBj
b25zdCB7IHJldHVybiBDQ09jY2x1c2lvblRyYWNrZXI6Om1fc3RhY2subGFzdCgpLm9jY2x1c2lv
bkluU2NyZWVuOyB9CisgICAgUmVnaW9uIG9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpIGNvbnN0
IHsgcmV0dXJuIENDT2NjbHVzaW9uVHJhY2tlcjo6bV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5U
YXJnZXQ7IH0KIAotICAgIHZvaWQgc2V0T2NjbHVzaW9uSW5TY3JlZW5TcGFjZShjb25zdCBSZWdp
b24mIHJlZ2lvbikgeyBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3Vy
ZmFjZVR5cGU+OjptX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblNjcmVlbiA9IHJlZ2lvbjsgfQot
ICAgIHZvaWQgc2V0T2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKGNvbnN0IFJlZ2lvbiYgcmVnaW9u
KSB7IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46
Om1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluVGFyZ2V0ID0gcmVnaW9uOyB9CisgICAgdm9pZCBz
ZXRPY2NsdXNpb25JblNjcmVlblNwYWNlKGNvbnN0IFJlZ2lvbiYgcmVnaW9uKSB7IENDT2NjbHVz
aW9uVHJhY2tlcjo6bV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3JlZW4gPSByZWdpb247IH0K
KyAgICB2b2lkIHNldE9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZShjb25zdCBSZWdpb24mIHJlZ2lv
bikgeyBDQ09jY2x1c2lvblRyYWNrZXI6Om1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluVGFyZ2V0
ID0gcmVnaW9uOyB9CiAKICAgICB2b2lkIHNldExheWVyU2Npc3NvclJlY3QoY29uc3QgSW50UmVj
dCYgcmVjdCkgeyBtX292ZXJyaWRlTGF5ZXJTY2lzc29yUmVjdCA9IHRydWU7IG1fbGF5ZXJTY2lz
c29yUmVjdCA9IHJlY3Q7fQogICAgIHZvaWQgdXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKSB7
IG1fb3ZlcnJpZGVMYXllclNjaXNzb3JSZWN0ID0gZmFsc2U7IH0KIAogcHJvdGVjdGVkOgotICAg
IHZpcnR1YWwgSW50UmVjdCBsYXllclNjaXNzb3JSZWN0SW5UYXJnZXRTdXJmYWNlKGNvbnN0IExh
eWVyVHlwZSogbGF5ZXIpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGVMYXllclNjaXNzb3JSZWN0
ID8gbV9sYXllclNjaXNzb3JSZWN0IDogQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUs
IFJlbmRlclN1cmZhY2VUeXBlPjo6bGF5ZXJTY2lzc29yUmVjdEluVGFyZ2V0U3VyZmFjZShsYXll
cik7IH0KKyAgICB2aXJ0dWFsIEludFJlY3QgbGF5ZXJTY2lzc29yUmVjdEluVGFyZ2V0U3VyZmFj
ZShjb25zdCBMYXllckNocm9taXVtKiBsYXllcikgY29uc3QgeyByZXR1cm4gbV9vdmVycmlkZUxh
eWVyU2Npc3NvclJlY3QgPyBtX2xheWVyU2Npc3NvclJlY3QgOiBDQ09jY2x1c2lvblRyYWNrZXI6
OmxheWVyU2Npc3NvclJlY3RJblRhcmdldFN1cmZhY2UobGF5ZXIpOyB9CiAKIHByaXZhdGU6CiAg
ICAgYm9vbCBtX292ZXJyaWRlTGF5ZXJTY2lzc29yUmVjdDsKICAgICBJbnRSZWN0IG1fbGF5ZXJT
Y2lzc29yUmVjdDsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlPgot
Y2xhc3MgVGVzdERhbWFnZUNsaWVudCA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJEYW1hZ2VD
bGllbnRCYXNlPFJlbmRlclN1cmZhY2VUeXBlPiB7CitjbGFzcyBUZXN0RGFtYWdlQ2xpZW50IDog
cHVibGljIENDT2NjbHVzaW9uVHJhY2tlckRhbWFnZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgLy8g
VGhlIGludGVyZmFjZQotICAgIHZpcnR1YWwgRmxvYXRSZWN0IGRhbWFnZVJlY3QoY29uc3QgUmVu
ZGVyU3VyZmFjZVR5cGUqKSBjb25zdCB7IHJldHVybiBtX2RhbWFnZVJlY3Q7IH0KKyAgICB2aXJ0
dWFsIEZsb2F0UmVjdCBkYW1hZ2VSZWN0KGNvbnN0IFJlbmRlclN1cmZhY2VDaHJvbWl1bSopIGNv
bnN0IHsgcmV0dXJuIG1fZGFtYWdlUmVjdDsgfQogCiAgICAgLy8gVGVzdGluZyBzdHVmZgogICAg
IFRlc3REYW1hZ2VDbGllbnQoY29uc3QgRmxvYXRSZWN0JiBkYW1hZ2VSZWN0KSA6IG1fZGFtYWdl
UmVjdChkYW1hZ2VSZWN0KSB7IH0KQEAgLTExNiwxNTg4ICsxMzIsMjA4MSBAQCBwcml2YXRlOgog
ICAgIEZsb2F0UmVjdCBtX2RhbWFnZVJlY3Q7CiB9OwogCi1zdHJ1Y3QgQ0NPY2NsdXNpb25UcmFj
a2VyVGVzdE1haW5UaHJlYWRUeXBlcyB7Ci0gICAgdHlwZWRlZiBMYXllckNocm9taXVtIExheWVy
VHlwZTsKLSAgICB0eXBlZGVmIFJlbmRlclN1cmZhY2VDaHJvbWl1bSBSZW5kZXJTdXJmYWNlVHlw
ZTsKLSAgICB0eXBlZGVmIFRlc3RDb250ZW50TGF5ZXJDaHJvbWl1bSBDb250ZW50TGF5ZXJUeXBl
OwotICAgIHR5cGVkZWYgUmVmUHRyPExheWVyQ2hyb21pdW0+IExheWVyUHRyVHlwZTsKLSAgICB0
eXBlZGVmIFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gUGFzc0xheWVyUHRyVHlwZTsKLSAgICB0
eXBlZGVmIFJlZlB0cjxDb250ZW50TGF5ZXJUeXBlPiBDb250ZW50TGF5ZXJQdHJUeXBlOwotICAg
IHR5cGVkZWYgUGFzc1JlZlB0cjxDb250ZW50TGF5ZXJUeXBlPiBQYXNzQ29udGVudExheWVyUHRy
VHlwZTsKLQotICAgIHN0YXRpYyBQYXNzTGF5ZXJQdHJUeXBlIGNyZWF0ZUxheWVyKCkgeyByZXR1
cm4gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7IH0KLSAgICBzdGF0aWMgUGFzc0NvbnRlbnRMYXll
clB0clR5cGUgY3JlYXRlQ29udGVudExheWVyKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRl
bnRMYXllclR5cGUoKSk7IH0KLX07Ci0KLXN0cnVjdCBDQ09jY2x1c2lvblRyYWNrZXJUZXN0SW1w
bFRocmVhZFR5cGVzIHsKLSAgICB0eXBlZGVmIENDTGF5ZXJJbXBsIExheWVyVHlwZTsKLSAgICB0
eXBlZGVmIENDUmVuZGVyU3VyZmFjZSBSZW5kZXJTdXJmYWNlVHlwZTsKLSAgICB0eXBlZGVmIFRl
c3RDb250ZW50TGF5ZXJJbXBsIENvbnRlbnRMYXllclR5cGU7Ci0gICAgdHlwZWRlZiBPd25QdHI8
Q0NMYXllckltcGw+IExheWVyUHRyVHlwZTsKLSAgICB0eXBlZGVmIFBhc3NPd25QdHI8Q0NMYXll
ckltcGw+IFBhc3NMYXllclB0clR5cGU7Ci0gICAgdHlwZWRlZiBPd25QdHI8Q29udGVudExheWVy
VHlwZT4gQ29udGVudExheWVyUHRyVHlwZTsKLSAgICB0eXBlZGVmIFBhc3NPd25QdHI8Q29udGVu
dExheWVyVHlwZT4gUGFzc0NvbnRlbnRMYXllclB0clR5cGU7Ci0KLSAgICBzdGF0aWMgUGFzc0xh
eWVyUHRyVHlwZSBjcmVhdGVMYXllcigpIHsgcmV0dXJuIENDTGF5ZXJJbXBsOjpjcmVhdGUobmV4
dENDTGF5ZXJJbXBsSWQrKyk7IH0KLSAgICBzdGF0aWMgUGFzc0NvbnRlbnRMYXllclB0clR5cGUg
Y3JlYXRlQ29udGVudExheWVyKCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IENvbnRlbnRMYXllclR5
cGUobmV4dENDTGF5ZXJJbXBsSWQrKykpOyB9Ci0gICAgc3RhdGljIGludCBuZXh0Q0NMYXllcklt
cGxJZDsKLX07Ci0KLWludCBDQ09jY2x1c2lvblRyYWNrZXJUZXN0SW1wbFRocmVhZFR5cGVzOjpu
ZXh0Q0NMYXllckltcGxJZCA9IDA7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFR5cGVzLCBib29sIG9w
YXF1ZUxheWVycz4KLWNsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3QgOiBwdWJsaWMgdGVzdGlu
Zzo6VGVzdCB7Ci1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIHJ1bk15VGVzdCgpID0gMDsK
LQotICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpCi0gICAgewotICAgICAgICBtX3Jvb3QuY2xl
YXIoKTsKLSAgICAgICAgbV9yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0Q2hyb21pdW0uY2xlYXIoKTsK
LSAgICAgICAgbV9yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0SW1wbC5jbGVhcigpOworI2RlZmluZSBU
RVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoRlVMTFRFU1ROQU1FLCBTSE9SVFRFU1ROQU1F
KSBcCisgICAgVEVTVChGVUxMVEVTVE5BTUUsIG9wYXF1ZUxheWVyKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBTSE9SVFRFU1ROQU1FKHRy
dWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICBURVNUKEZVTExURVNUTkFNRSwgb3BhcXVlUGFpbnRSZWN0KSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFNIT1JUVEVTVE5BTUUoZmFs
c2UpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9CiAKLSAg
ICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogY3JlYXRlUm9vdChjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwg
Y29uc3QgSW50U2l6ZSYgYm91bmRzKQotICAgIHsKLSAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNv
bnRlbnRMYXllclB0clR5cGUgbGF5ZXIgPSBUeXBlczo6Y3JlYXRlQ29udGVudExheWVyKCk7Ci0g
ICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllclB0ciA9IGxheWVy
LmdldCgpOwotICAgICAgICBzZXRQcm9wZXJ0aWVzKGxheWVyUHRyLCB0cmFuc2Zvcm0sIHBvc2l0
aW9uLCBib3VuZHMpOwotCi0gICAgICAgIEFTU0VSVCghbV9yb290KTsKLSAgICAgICAgbV9yb290
ID0gbGF5ZXIucmVsZWFzZSgpOwotICAgICAgICByZXR1cm4gbGF5ZXJQdHI7Ci0gICAgfQotCi0g
ICAgdHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSogY3JlYXRlTGF5ZXIodHlwZW5hbWUgVHlwZXM6
OkxheWVyVHlwZSogcGFyZW50LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3Jt
LCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50U2l6ZSYgYm91bmRzKQotICAg
IHsKLSAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkxheWVyUHRyVHlwZSBsYXllciA9IFR5cGVzOjpj
cmVhdGVMYXllcigpOwotICAgICAgICB0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlKiBsYXllclB0
ciA9IGxheWVyLmdldCgpOwotICAgICAgICBzZXRQcm9wZXJ0aWVzKGxheWVyUHRyLCB0cmFuc2Zv
cm0sIHBvc2l0aW9uLCBib3VuZHMpOwotICAgICAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVyLnJl
bGVhc2UoKSk7Ci0gICAgICAgIHJldHVybiBsYXllclB0cjsKLSAgICB9Cit2b2lkIGxheWVyQWRk
ZWRUb09jY2x1ZGVkUmVnaW9uKGJvb2wgb3BhcXVlTGF5ZXJzKQoreworICAgIC8vIFRoaXMgdGVz
dHMgdGhhdCB0aGUgcmlnaHQgdHJhbnNmb3JtcyBhcmUgYmVpbmcgdXNlZC4KKyAgICBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKKyAgICBSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPExheWVy
Q2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllciA9IGFkb3B0UmVmKG5ldyBMYXll
ckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKKyAgICBwYXJlbnQtPmNyZWF0ZVJl
bmRlclN1cmZhY2UoKTsKKyAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVyKTsKKworICAgIHNldExh
eWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxv
YXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpOworICAgIHNldExheWVyUHJvcGVydGll
c0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDMwLCAz
MCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOworCisgICAgVmVjdG9y
PFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CisgICAgVmVj
dG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OworICAgIGludCBkdW1t
eU1heFRleHR1cmVTaXplID0gNTEyOworCisgICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNl
dENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkp
OworICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJl
bnQtPmJvdW5kcygpKSk7CisgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50
KTsKKworICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNB
bmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwg
aWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBk
dW1teU1heFRleHR1cmVTaXplKTsKKworICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVz
aW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgIG9jY2x1c2lvbi5zZXRMYXllclNj
aXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworCisgICAgb2NjbHVzaW9uLmVu
dGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgb2Nj
bHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyLmdldCgpKTsKKyAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2Ny
ZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVz
aW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFj
ZSgpLmJvdW5kcygpKTsKKyAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRh
cmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSkpOworICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDI5
LCAzMCwgNzAsIDcwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LmdldCgpLCBJbnRSZWN0KDMwLCAyOSwgNzAsIDcwKSkpOworICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMxLCAzMCwgNzAsIDcwKSkp
OworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDMwLCAzMSwgNzAsIDcwKSkpOworCisgICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNj
aXNzb3JSZWN0KCk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5n
ZXQoKSwgSW50UmVjdCgzMCwgMzAsIDcwLCA3MCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgyOSwgMzAsIDcwLCA3MCkpKTsKKyAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgz
MCwgMjksIDcwLCA3MCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LmdldCgpLCBJbnRSZWN0KDMxLCAzMCwgNzAsIDcwKSkpOworICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDMxLCA3MCwgNzApKSk7
CisgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAx
MDAwKSk7CisKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0
KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMzAsIDcwLCA3MCkpLmlzRW1wdHkoKSk7CisgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwgMzAsIDEsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVk
ZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjksIDMwLCA3MCwgNzApKSk7Cisg
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwgMjksIDcwLCA3MCksIG9jY2x1c2lvbi51bm9j
Y2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCAyOSwgNzAsIDcwKSkp
OworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDI5LCA3MCwgMSksIG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAyOSwgNzAsIDcw
KSkpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzEsIDI5LCA3MCwgNzApLCBvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMSwgMjksIDcw
LCA3MCkpKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgMzAsIDEsIDcwKSwgb2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzEsIDMw
LCA3MCwgNzApKSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMSwgMzEsIDcwLCA3MCks
IG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDMx
LCAzMSwgNzAsIDcwKSkpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDEwMCwgNzAs
IDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVj
dCgzMCwgMzEsIDcwLCA3MCkpKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDI5LCAzMSwg
NzAsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIElu
dFJlY3QoMjksIDMxLCA3MCwgNzApKSk7Cit9CisKK1RFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09Q
QVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2xheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uLCBs
YXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbik7CisKK3ZvaWQgbGF5ZXJBZGRlZFRvT2NjbHVkZWRS
ZWdpb25XaXRoUm90YXRpb24oYm9vbCBvcGFxdWVMYXllcnMpCit7CisgICAgLy8gVGhpcyB0ZXN0
cyB0aGF0IHRoZSByaWdodCB0cmFuc2Zvcm1zIGFyZSBiZWluZyB1c2VkLgorICAgIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OworICAgIFJlZlB0cjxMYXllckNocm9t
aXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJD
aHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVy
Q2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOworICAgIHBhcmVudC0+Y3JlYXRlUmVu
ZGVyU3VyZmFjZSgpOworICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOworCisgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggbGF5ZXJUcmFuc2Zvcm07CisgICAgbGF5ZXJUcmFuc2Zvcm0udHJhbnNs
YXRlKDI1MCwgMjUwKTsKKyAgICBsYXllclRyYW5zZm9ybS5yb3RhdGUoOTApOworICAgIGxheWVy
VHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKKworICAgIHNldExheWVyUHJvcGVydGll
c0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAw
KSwgSW50U2l6ZSgxMDAsIDEwMCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rpbmco
bGF5ZXIuZ2V0KCksIGxheWVyVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUo
NTAwLCA1MDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOworCisgICAgVmVjdG9yPFJlZlB0cjxMYXll
ckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CisgICAgVmVjdG9yPFJlZlB0cjxM
YXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OworICAgIGludCBkdW1teU1heFRleHR1cmVT
aXplID0gNTEyOworCisgICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0
KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOworICAgIHBhcmVu
dC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygp
KSk7CisgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKKworICAgIEND
TGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5
KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRy
aXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1
cmVTaXplKTsKKworICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9uKEludFJlY3Qo
MCwgMCwgMTAwMCwgMTAwMCkpOworICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KElu
dFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworCisgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVu
ZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgb2NjbHVzaW9uLm1hcmtP
Y2NsdWRlZEJlaGluZExheWVyKGxheWVyLmdldCgpKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5i
b3VuZHMoKSk7CisgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5T
cGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAz
MCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygp
KTsKKyAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2Uo
KS5yZWN0cygpLnNpemUoKSk7CisKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSkpOworICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCAzMCwgNzAsIDcw
KSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJ
bnRSZWN0KDMwLCAyOSwgNzAsIDcwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMxLCAzMCwgNzAsIDcwKSkpOworICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAzMSwg
NzAsIDcwKSkpOworCisgICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7
CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVj
dCgzMCwgMzAsIDcwLCA3MCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVk
KHBhcmVudC5nZXQoKSwgSW50UmVjdCgyOSwgMzAsIDcwLCA3MCkpKTsKKyAgICBFWFBFQ1RfRkFM
U0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMjksIDcwLCA3
MCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJ
bnRSZWN0KDMxLCAzMCwgNzAsIDcwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDMxLCA3MCwgNzApKSk7CisgICAgb2NjbHVz
aW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisKKyAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQo
KSwgSW50UmVjdCgzMCwgMzAsIDcwLCA3MCkpLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgyOSwgMzAsIDEsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjksIDMwLCA3MCwgNzApKSk7CisgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgyOSwgMjksIDcwLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVu
dFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCAyOSwgNzAsIDcwKSkpOworICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoMzAsIDI5LCA3MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAyOSwgNzAsIDcwKSkpOworICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoMzEsIDI5LCA3MCwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRl
ZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMSwgMjksIDcwLCA3MCkpKTsKKyAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgMzAsIDEsIDcwKSwgb2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzEsIDMwLCA3MCwgNzApKSk7
CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMSwgMzEsIDcwLCA3MCksIG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDMxLCAzMSwgNzAsIDcw
KSkpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDEwMCwgNzAsIDEpLCBvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMzEsIDcw
LCA3MCkpKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDI5LCAzMSwgNzAsIDcwKSwgb2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjksIDMx
LCA3MCwgNzApKSk7Cit9CisKK1RFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1
c2lvblRyYWNrZXJUZXN0X2xheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFJvdGF0aW9uLCBs
YXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhSb3RhdGlvbik7CisKK3ZvaWQgbGF5ZXJBZGRl
ZFRvT2NjbHVkZWRSZWdpb25XaXRoVHJhbnNsYXRpb24oYm9vbCBvcGFxdWVMYXllcnMpCit7Cisg
ICAgLy8gVGhpcyB0ZXN0cyB0aGF0IHRoZSByaWdodCB0cmFuc2Zvcm1zIGFyZSBiZWluZyB1c2Vk
LgorICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OworICAgIFJl
ZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAg
ICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRv
cHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOworICAgIHBh
cmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOworICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIp
OworCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJUcmFuc2Zvcm07CisgICAgbGF5ZXJU
cmFuc2Zvcm0udHJhbnNsYXRlKDIwLCAyMCk7CisKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JU
ZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIElu
dFNpemUoMTAwLCAxMDApKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVy
LmdldCgpLCBsYXllclRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwg
NTAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKKworICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OworICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKKyAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9
IDUxMjsKKworICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRS
ZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKKyAgICBwYXJlbnQtPnNl
dENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwor
ICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7CisKKyAgICBDQ0xheWVy
VHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJl
bnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6
ZSk7CisKKyAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAs
IDEwMDAsIDEwMDApKTsKKyAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0
KDAsIDAsIDEwMDAsIDEwMDApKTsKKworICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1
cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVk
ZWRCZWhpbmRMYXllcihsYXllci5nZXQoKSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1
MCwgNTAsIDUwLCA1MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRz
KCkpOworICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2Uo
KS5yZWN0cygpLnNpemUoKSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwgNTAsIDUw
LCA1MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7Cisg
ICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVj
dHMoKS5zaXplKCkpOworCisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dC5nZXQoKSwgSW50UmVjdCg1MCwgNTAsIDUwLCA1MCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCg0OSwgNTAsIDUwLCA1MCkpKTsK
KyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVj
dCg1MCwgNDksIDUwLCA1MCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVk
KHBhcmVudC5nZXQoKSwgSW50UmVjdCg1MSwgNTAsIDUwLCA1MCkpKTsKKyAgICBFWFBFQ1RfRkFM
U0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCg1MCwgNTEsIDUwLCA1
MCkpKTsKKworICAgIG9jY2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJTY2lzc29yUmVjdCgpOworICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoNTAs
IDUwLCA1MCwgNTApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnQuZ2V0KCksIEludFJlY3QoNDksIDUwLCA1MCwgNTApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoNTAsIDQ5LCA1MCwgNTApKSk7
CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVj
dCg1MSwgNTAsIDUwLCA1MCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50LmdldCgpLCBJbnRSZWN0KDUwLCA1MSwgNTAsIDUwKSkpOworICAgIG9jY2x1c2lvbi5z
ZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworCisgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIElu
dFJlY3QoNTAsIDUwLCA1MCwgNTApKS5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoNDksIDUwLCAxLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFy
ZW50LmdldCgpLCBJbnRSZWN0KDQ5LCA1MCwgNTAsIDUwKSkpOworICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoNDksIDQ5LCA1MCwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0
KHBhcmVudC5nZXQoKSwgSW50UmVjdCg0OSwgNDksIDUwLCA1MCkpKTsKKyAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDUwLCA0OSwgNTAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg1MCwgNDksIDUwLCA1MCkpKTsKKyAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDUxLCA0OSwgNTAsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoNTEsIDQ5LCA1MCwgNTApKSk7CisgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDUwLCAxLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVk
Q29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDUxLCA1MCwgNTAsIDUwKSkpOworICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTEsIDUxLCA1MCwgNTApLCBvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg1MSwgNTEsIDUwLCA1MCkpKTsK
KyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUwLCAxMDAsIDUwLCAxKSwgb2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoNTAsIDUxLCA1MCwgNTAp
KSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg0OSwgNTEsIDUwLCA1MCksIG9jY2x1c2lv
bi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDQ5LCA1MSwgNTAs
IDUwKSkpOworCisgICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7Cisg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0
KCksIEludFJlY3QoNTAsIDUwLCA1MCwgNTApKS5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoNDksIDUwLCAxLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJl
Y3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDQ5LCA1MCwgNTAsIDUwKSkpOworICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoNDksIDQ5LCA1MCwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRl
bnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg0OSwgNDksIDUwLCA1MCkpKTsKKyAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDUwLCA0OSwgNTAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg1MCwgNDksIDUwLCA1MCkpKTsKKyAgICBF
WFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUxLCA0OSwgNDksIDEpLCBvY2NsdXNpb24udW5vY2NsdWRl
ZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg1MSwgNDksIDUwLCA1MCkpKTsKKyAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQo
KSwgSW50UmVjdCg1MSwgNTAsIDUwLCA1MCkpLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoNTEs
IDUxLCA1MCwgNTApKS5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9j
Y2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDUwLCA1MSwgNTAsIDUwKSku
aXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDQ5LCA1MSwgMSwgNDkpLCBv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg0OSwg
NTEsIDUwLCA1MCkpKTsKKyAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0
KDAsIDAsIDEwMDAsIDEwMDApKTsKK30KKworVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVF
KENDT2NjbHVzaW9uVHJhY2tlclRlc3RfbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoVHJh
bnNsYXRpb24sIGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFRyYW5zbGF0aW9uKTsKKwor
dm9pZCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhSb3RhdGVkU3VyZmFjZShib29sIG9w
YXF1ZUxheWVycykKK3sKKyAgICAvLyBUaGlzIHRlc3RzIHRoYXQgdGhlIHJpZ2h0IHRyYW5zZm9y
bXMgYXJlIGJlaW5nIHVzZWQuCisgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRp
dHlNYXRyaXg7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21p
dW06OmNyZWF0ZSgpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZCA9IExheWVyQ2hy
b21pdW06OmNyZWF0ZSgpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdz
Q29udGVudD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3
c0NvbnRlbnQoKSk7CisgICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CisgICAgcGFy
ZW50LT5hZGRDaGlsZChjaGlsZCk7CisgICAgY2hpbGQtPmFkZENoaWxkKGxheWVyKTsKKworICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxkVHJhbnNmb3JtOworICAgIGNoaWxkVHJhbnNmb3Jt
LnRyYW5zbGF0ZSgyNTAsIDI1MCk7CisgICAgY2hpbGRUcmFuc2Zvcm0ucm90YXRlKDkwKTsKKyAg
ICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7CisKKyAgICBzZXRMYXllclBy
b3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JU
ZXN0aW5nKGNoaWxkLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJ
bnRTaXplKDUwMCwgNTAwKSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXll
ci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMTAsIDEwKSwgSW50U2l6ZSg1MDAs
IDUwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7CisKKyAgICBjaGlsZC0+c2V0TWFza3NUb0JvdW5k
cyh0cnVlKTsKKworICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0OworICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxh
eWVyTGlzdDsKKyAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKKworICAgIHBhcmVu
dC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJv
KCksIHBhcmVudC0+Ym91bmRzKCkpKTsKKyAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3Qo
SW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOworICAgIHJlbmRlclN1cmZhY2VM
YXllckxpc3QuYXBwZW5kKHBhcmVudCk7CisKKyAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNh
bGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5n
ZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7CisKKyAgICBUZXN0Q0NP
Y2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAg
ICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDAp
KTsKKworICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQtPnJlbmRl
clN1cmZhY2UoKSk7CisgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVy
LmdldCgpKTsKKworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDQwLCA3MCwgNjApLCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICBFWFBFQ1Rf
RVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkp
OworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSwgb2NjbHVzaW9u
Lm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICBFWFBFQ1RfRVEoMXUs
IG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisK
KyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3Qo
MTAsIDQzMCwgNjAsIDcwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQo
Y2hpbGQuZ2V0KCksIEludFJlY3QoOSwgNDMwLCA2MCwgNzApKSk7CisgICAgRVhQRUNUX0ZBTFNF
KG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDI5LCA2MCwgNzAp
KSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50
UmVjdCgxMCwgNDMwLCA2MSwgNzApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2Ns
dWRlZChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzEpKSk7CisKKyAgICBvY2Ns
dXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKKyAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSkpOwor
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVjdCg5
LCA0MzAsIDYwLCA3MCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hp
bGQuZ2V0KCksIEludFJlY3QoMTAsIDQyOSwgNjAsIDcwKSkpOworICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDMwLCA2MSwgNzApKSk7
CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0
KDEwLCA0MzAsIDYwLCA3MSkpKTsKKyAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJ
bnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKworICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRC
ZWhpbmRMYXllcihjaGlsZC5nZXQoKSk7CisgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVu
ZGVyU3VyZmFjZShjaGlsZC5nZXQoKSwgY2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgb2Nj
bHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgp
KTsKKworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDQwLCA3MCwgNjApLCBvY2NsdXNp
b24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICBFWFBFQ1RfRVEoMXUs
IG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOworICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDQwLCA3MCwgNjApLCBvY2NsdXNpb24ub2NjbHVz
aW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOworICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKworICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDQw
LCA3MCwgNjApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQu
Z2V0KCksIEludFJlY3QoMjksIDQwLCA3MCwgNjApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDM5LCA3MCwgNjApKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3Qo
MzEsIDQwLCA3MCwgNjApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDQxLCA3MCwgNjApKSk7CisKKyAgICBvY2NsdXNpb24u
dXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSkpOworICAgIEVY
UEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCA0
MCwgNzAsIDYwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LmdldCgpLCBJbnRSZWN0KDMwLCAzOSwgNzAsIDYwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzEsIDQwLCA3MCwgNjApKSk7Cisg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgz
MCwgNDEsIDcwLCA2MCkpKTsKKyAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRS
ZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKworCisgICAgLyogSnVzdGlmaWNhdGlvbiBmb3IgdGhl
IGFib3ZlIG9jY2x1c2lvbiBmcm9tIHxsYXllcnw6CisgICAgICAgICAgICAgICAxMDAKKyAgICAg
ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgfCAgICAgICAgICAgICAgICAgICAg
IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAg
ICAgICB8MzAgIFZpc2libGUgcmVnaW9uIG9mIHxsYXllcnw6IC8vLy8vCisgICAgICB8ICAgIDMw
ICAgICAgICAgICAgICAgfCAgICAgICAgICAgcm90YXRlKDkwKSAgICAgICAgICAgICAgICAgfCAg
ICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgMzAgKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICB8ICAgICArLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKworICAxMDAgfCAgICB8ICAxMCAgICAgICAgICAgIHwgICAgICAgICAg
ICAgICAgIHwgICAgICAgICAgICA9PT4gICAgIHwgICAgIHwgICAgICAgICAgICAgICB8MTAgICAg
ICAgICAgICAgICB8CisgICAgICB8ICAgIHwxMCstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0rICAgICAgICAgICAgICAgICAgfCAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSsgIHwKKyAgICAgIHwgICAgfCAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8
IHwgICAgICAgICAgICAgICAgICB8ICB8ICB8Ly8vLy8vLy8vLy8vLy8vfCAgICAgNDIwICAgICAg
fCAgfAorICAgICAgfCAgICB8ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgfCAg
ICAgICAgICAgICAgICAgIHwgIHwgIHwvLy8vLy8vLy8vLy8vLy98NjAgICAgICAgICAgICB8ICB8
CisgICAgICB8ICAgIHwgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCB8ICAgICAg
ICAgICAgICAgICAgfCAgfCAgfC8vLy8vLy8vLy8vLy8vL3wgICAgICAgICAgICAgIHwgIHwKKyAg
ICAgICstLS0tfC0tfC0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAg
ICAgICAgICArLS18LS18LS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgfCAgfAorICAgICAg
ICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAg
ICAgICAyMHwxMHwgICAgIDcwICAgICAgICAgICAgICAgICAgICAgICB8ICB8CisgICAgICAgICAg
IHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAg
ICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKKyAgICAgICAgICAgfCAg
fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHw1MDAgICAgICAgICAgICAgICAgICB8
ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICB8ICB8ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgIHwgIHwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8CisgICAgICAgICAgIHwgIHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAgfCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKKyAgICAgICAgICAgfCAgfCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8MTB8CisgICAgICAgICAgICstLXwtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKyB8ICAgICAgICAgICAgICAgICAgICAgfCAgKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLXwtLSsKKyAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICA0OTAgICAg
ICAgICAgICAgfAorICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKyAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUwMCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTAwCisgICAgICovCit9CisKK1RFU1Rf
T1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2xheWVyQWRk
ZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFJvdGF0ZWRTdXJmYWNlLCBsYXllckFkZGVkVG9PY2NsdWRl
ZFJlZ2lvbldpdGhSb3RhdGVkU3VyZmFjZSk7CisKK3ZvaWQgbGF5ZXJBZGRlZFRvT2NjbHVkZWRS
ZWdpb25XaXRoU3VyZmFjZUFscmVhZHlPblN0YWNrKGJvb2wgb3BhcXVlTGF5ZXJzKQoreworICAg
IC8vIFRoaXMgdGVzdHMgdGhhdCB0aGUgcmlnaHQgdHJhbnNmb3JtcyBhcmUgYmVpbmcgdXNlZC4K
KyAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKKyAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisgICAg
UmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Cisg
ICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBjaGlsZDIgPSBh
ZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7CisgICAg
UmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllciA9IGFkb3B0
UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKKyAgICBwYXJl
bnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKKyAgICBwYXJlbnQtPmFkZENoaWxkKGNoaWxkKTsK
KyAgICBjaGlsZC0+YWRkQ2hpbGQobGF5ZXIpOworICAgIHBhcmVudC0+YWRkQ2hpbGQoY2hpbGQy
KTsKKworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxkVHJhbnNmb3JtOworICAgIGNoaWxk
VHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7CisgICAgY2hpbGRUcmFuc2Zvcm0ucm90YXRl
KDkwKTsKKyAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7CisKKyAgICBz
ZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgs
IEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKKyAgICBzZXRMYXllclByb3Bl
cnRpZXNGb3JUZXN0aW5nKGNoaWxkLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgRmxvYXRQb2ludCgz
MCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVz
dGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMTAsIDEwKSwgSW50
U2l6ZSg1MDAsIDUwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7CisKKyAgICAvLyB8Y2hpbGQyfCBt
YWtlcyB8cGFyZW50fCdzIHN1cmZhY2UgZ2V0IGNvbnNpZGVyZWQgYnkgQ0NPY2NsdXNpb25UcmFj
a2VyIGZpcnN0LCBpbnN0ZWFkIG9mIHxjaGlsZHwncy4gVGhpcyBleGVyY2lzZXMgZGlmZmVyZW50
IGNvZGUgaW4KKyAgICAvLyBsZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZSwgYXMgdGhlIHRhcmdl
dCBzdXJmYWNlIGhhcyBhbHJlYWR5IGJlZW4gc2Vlbi4KKyAgICBzZXRMYXllclByb3BlcnRpZXNG
b3JUZXN0aW5nKGNoaWxkMi5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMzAsIDMw
KSwgSW50U2l6ZSg2MCwgMjApLCB0cnVlLCBvcGFxdWVMYXllcnMpOworCisgICAgY2hpbGQtPnNl
dE1hc2tzVG9Cb3VuZHModHJ1ZSk7CisKKyAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+
ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKKyAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21p
dW0+ID4gZHVtbXlMYXllckxpc3Q7CisgICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7
CisKKyAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJ
bnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7CisgICAgcGFyZW50LT5zZXRDbGlw
UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKKyAgICBy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOworCisgICAgQ0NMYXllclRyZWVI
b3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50Lmdl
dCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVy
U3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOwor
CisgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAw
LCAxMDAwKSk7CisgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgtMTAs
IC0xMCwgMTAwMCwgMTAwMCkpOworCisgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3Vy
ZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRl
ZEJlaGluZExheWVyKGNoaWxkMi5nZXQoKSk7CisKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0
KDMwLCAzMCwgNjAsIDIwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3Vu
ZHMoKSk7CisgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFj
ZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwg
NjAsIDIwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsK
KyAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5y
ZWN0cygpLnNpemUoKSk7CisKKyAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNl
KGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOworICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhp
bmRMYXllcihsYXllci5nZXQoKSk7CisKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAz
MCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7
CisgICAgRVhQRUNUX0VRKDJ1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJl
Y3RzKCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCA0MzAsIDYwLCA3
MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAg
RVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMo
KS5zaXplKCkpOworCisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdl
dCgpLCBJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0KDksIDQzMCwgNjAsIDcwKSkpOworICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAs
IDQyOSwgNjAsIDcwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hp
bGQuZ2V0KCksIEludFJlY3QoMTEsIDQzMCwgNjAsIDcwKSkpOworICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQzMSwgNjAsIDcwKSkp
OworCisgICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7CisgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0MzAs
IDYwLCA3MCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0
KCksIEludFJlY3QoOSwgNDMwLCA2MCwgNzApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0MjksIDYwLCA3MCkpKTsKKyAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoMTEsIDQz
MCwgNjAsIDcwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5n
ZXQoKSwgSW50UmVjdCgxMCwgNDMxLCA2MCwgNzApKSk7CisgICAgb2NjbHVzaW9uLnNldExheWVy
U2Npc3NvclJlY3QoSW50UmVjdCgtMTAsIC0xMCwgMTAwMCwgMTAwMCkpOworCisgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVj
dCgxMCwgNDMwLCA2MCwgNzApKS5pc0VtcHR5KCkpOworICAgIC8vIFRoaXMgaXMgdGhlIGxpdHRs
ZSBwaWVjZSBub3Qgb2NjbHVkZWQgYnkgY2hpbGQyCisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCg5LCA0MzAsIDEsIDEwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5n
ZXQoKSwgSW50UmVjdCg5LCA0MzAsIDYwLCA3MCkpKTsKKyAgICAvLyBUaGlzIGV4dGVuZHMgcGFz
dCBib3RoIHNpZGVzIG9mIGNoaWxkMiwgc28gaXQgd2lsbCBiZSB0aGUgb3JpZ2luYWwgcmVjdC4K
KyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDksIDQzMCwgNjAsIDgwKSwgb2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVjdCg5LCA0MzAsIDYwLCA4MCkp
KTsKKyAgICAvLyBUaGlzIGV4dGVuZHMgcGFzdCB0d28gYWRqYWNlbnQgc2lkZXMgb2YgY2hpbGQy
LCBhbmQgc2hvdWxkIGluY2x1ZGVkIHRoZSB1bm9jY2x1ZGVkIHBhcnRzIG9mIGVhY2ggc2lkZS4K
KyAgICAvLyBUaGlzIGFsc28gZGVtb25zdHJhdGVzIHRoYXQgdGhlIHJlY3QgY2FuIGJlIGFyYml0
cmFyeSBhbmQgZG9lcyBub3QgZ2V0IGNsaXBwZWQgdG8gdGhlIGxheWVyJ3MgdmlzaWJsZUxheWVy
UmVjdCgpLgorICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoLTEwLCA0MzAsIDIwLCA3MCksIG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQuZ2V0KCksIEludFJlY3QoLTEwLCA0
MzAsIDYwLCA3MCkpKTsKKyAgICAvLyBUaGlzIGV4dGVuZHMgcGFzdCB0aHJlZSBhZGphY2VudCBz
aWRlcyBvZiBjaGlsZDIsIHNvIGl0IHNob3VsZCBjb250YWluIHRoZSB1bm9jY2x1ZGVkIHBhcnRz
IG9mIGVhY2ggc2lkZS4gVGhlIGxlZnQKKyAgICAvLyBhbmQgYm90dG9tIGVkZ2VzIGFyZSBjb21w
bGV0ZWx5IHVub2NjbHVkZWQgZm9yIHNvbWUgcm93L2NvbHVtbiBzbyB3ZSBnZXQgYmFjayB0aGUg
b3JpZ2luYWwgcXVlcnkgcmVjdC4KKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KC0xMCwgNDMw
LCA2MCwgODApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLmdldCgpLCBJ
bnRSZWN0KC0xMCwgNDMwLCA2MCwgODApKSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgx
MCwgNDI5LCA2MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQuZ2V0
KCksIEludFJlY3QoMTAsIDQyOSwgNjAsIDcwKSkpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoNzAsIDQzMCwgMSwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxk
LmdldCgpLCBJbnRSZWN0KDExLCA0MzAsIDYwLCA3MCkpKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDEwLCA1MDAsIDYwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChj
aGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDMxLCA2MCwgNzApKSk7CisKKyAgICBvY2NsdXNpb24u
dXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0MzAsIDYwLCA3
MCkpLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVjdCg5LCA0MzAsIDYwLCA3MCkpLmlzRW1wdHkoKSk7
CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5n
ZXQoKSwgSW50UmVjdCg5LCA0MzAsIDYwLCA4MCkpLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVjdCgt
MTAsIDQzMCwgNjAsIDcwKSkuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLmdldCgpLCBJbnRSZWN0KC0xMCwgNDMwLCA2MCwg
ODApKS5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dGVudFJlY3QoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQyOSwgNjAsIDcwKSkuaXNFbXB0eSgp
KTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxk
LmdldCgpLCBJbnRSZWN0KDExLCA0MzAsIDYwLCA3MCkpLmlzRW1wdHkoKSk7CisgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVj
dCgxMCwgNDMxLCA2MCwgNzApKS5pc0VtcHR5KCkpOworICAgIG9jY2x1c2lvbi5zZXRMYXllclNj
aXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworCisgICAgb2NjbHVzaW9uLm1h
cmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkLmdldCgpKTsKKyAgICAvLyB8Y2hpbGQyfCBzaG91
bGQgZ2V0IG1lcmdlZCB3aXRoIHRoZSBzdXJmYWNlIHdlIGFyZSBsZWF2aW5nIG5vdworICAgIG9j
Y2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQuZ2V0KCksIGNoaWxkLT5y
ZW5kZXJTdXJmYWNlKCkpOworICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFj
ZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0
KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3Vu
ZHMoKSk7CisgICAgRVhQRUNUX0VRKDJ1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFj
ZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwg
NzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsK
KyAgICBFWFBFQ1RfRVEoMnUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5y
ZWN0cygpLnNpemUoKSk7CisKKyAgICBWZWN0b3I8SW50UmVjdD4gc2NyZWVuID0gb2NjbHVzaW9u
Lm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpOworICAgIFZlY3RvcjxJbnRSZWN0PiB0
YXJnZXQgPSBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKTsKKwor
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0
KDMwLCAzMCwgNzAsIDcwKSkpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoOTAsIDMwLCAx
MCwgMTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50
UmVjdCgzMCwgMzAsIDcwLCA3MCkpKTsKKworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDMwLCA2MCwgMTApKSk7CisgICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjksIDMwLCA2
MCwgMTApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0
KCksIEludFJlY3QoMzAsIDI5LCA2MCwgMTApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzEsIDMwLCA2MCwgMTApKSk7CisgICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwg
MzEsIDYwLCAxMCkpKTsKKworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnQuZ2V0KCksIEludFJlY3QoMzAsIDQwLCA3MCwgNjApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjksIDQwLCA3MCwgNjApKSk7
CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJl
Y3QoMzAsIDM5LCA3MCwgNjApKSk7CisKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMzAsIDYwLCAxMCkpLmlz
RW1wdHkoKSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwgMzAsIDEsIDEwKSwgb2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjksIDMw
LCA2MCwgMTApKSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMjksIDYwLCAxKSwg
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAs
IDI5LCA2MCwgMTApKSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg5MCwgMzAsIDEsIDEw
KSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3Qo
MzEsIDMwLCA2MCwgMTApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDMxLCA2MCwgMTApKS5pc0VtcHR5
KCkpOworCisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChw
YXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDQwLCA3MCwgNjApKS5pc0VtcHR5KCkpOworICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoMjksIDQwLCAxLCA2MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVk
Q29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCA0MCwgNzAsIDYwKSkpOworICAg
IC8vIFRoaXMgcmVjdCBpcyBtb3N0bHkgb2NjbHVkZWQgYnkgfGNoaWxkMnwuCisgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCg5MCwgMzksIDEwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDM5LCA3MCwgNjApKSk7CisgICAgLy8g
VGhpcyByZWN0IGV4dGVuZHMgcGFzdCB0b3AvcmlnaHQgZW5kcyBvZiB8Y2hpbGQyfC4KKyAgICBF
WFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAyOSwgNzAsIDExKSwgb2NjbHVzaW9uLnVub2NjbHVk
ZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDI5LCA3MCwgNzApKSk7Cisg
ICAgLy8gVGhpcyByZWN0IGV4dGVuZHMgcGFzdCBsZWZ0L3JpZ2h0IGVuZHMgb2YgfGNoaWxkMnwu
CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMCwgMzksIDgwLCA2MCksIG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDIwLCAzOSwgODAsIDYw
KSkpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCA0MCwgMSwgNjApLCBvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMSwgNDAsIDcw
LCA2MCkpKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAxMDAsIDcwLCAxKSwgb2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDQx
LCA3MCwgNjApKSk7CisKKyAgICAvKiBKdXN0aWZpY2F0aW9uIGZvciB0aGUgYWJvdmUgb2NjbHVz
aW9uIGZyb20gfGxheWVyfDoKKyAgICAgICAgICAgICAgIDEwMAorICAgICAgKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0t
LS0tLS0tLS0tLS0tLS0rCisgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwzMCAgVmlz
aWJsZSByZWdpb24gb2YgfGxheWVyfDogLy8vLy8KKyAgICAgIHwgICAgMzAgICAgICAgICAgICAg
ICB8ICAgICAgICAgICByb3RhdGUoOTApICAgICAgICAgICAgICAgICB8ICAgICAzMCAgIDYwICAg
ICAgICAgfCAgICB8Y2hpbGQyfDogXFxcXFwKKyAgICAgIHwgMzAgKyAtLS0tLS0tLS0tLS0rLS0t
LS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICB8ICAzMCArLS0tLS0tLS0tLS0t
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAxMDAgfCAgICB8ICAxMCAgICAgICAgIHwgIHwgICAg
ICAgICAgICAgICAgIHwgICAgICAgICAgICA9PT4gICAgIHwgICAgIHxcXFxcXFxcXFxcXFx8ICB8
MTAgICAgICAgICAgICAgICB8CisgICAgICB8ICAgIHwxMCstLS0tLS0tLS0tfC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgfCAgKy0tfFxcXFxcXFxcXFxcXHwtLS0tLS0t
LS0tLS0tLS0tLSsgIHwKKyAgICAgIHwgICAgKyAtLS0tLS0tLS0tLS0rICB8ICAgICAgICAgICAg
ICAgICB8IHwgICAgICAgICAgICAgICAgICB8ICB8ICArLS0tLS0tLS0tLS0tKy8vfCAgICAgNDIw
ICAgICAgfCAgfAorICAgICAgfCAgICB8ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAg
IHwgfCAgICAgICAgICAgICAgICAgIHwgIHwgIHwvLy8vLy8vLy8vLy8vLy98NjAgICAgICAgICAg
ICB8ICB8CisgICAgICB8ICAgIHwgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCB8
ICAgICAgICAgICAgICAgICAgfCAgfCAgfC8vLy8vLy8vLy8vLy8vL3wgICAgICAgICAgICAgIHwg
IHwKKyAgICAgICstLS0tfC0tfC0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICB8IHwgICAg
ICAgICAgICAgICAgICArLS18LS18LS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgfCAgfAor
ICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAg
ICAgICAgICAgICAyMHwxMHwgICAgIDcwICAgICAgICAgICAgICAgICAgICAgICB8ICB8CisgICAg
ICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAg
ICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKKyAgICAgICAg
ICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHw1MDAgICAgICAgICAgICAg
ICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICB8
ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAg
IHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8CisgICAgICAgICAgIHwgIHwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAg
fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKKyAgICAgICAgICAgfCAgfCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICB8ICB8ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgIHwgIHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8MTB8CisgICAgICAgICAgICstLXwtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKyB8ICAgICAgICAgICAgICAgICAgICAgfCAgKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLXwtLSsKKyAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICA0
OTAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0rCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUwMCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTAwCisgICAgICovCit9CisK
K1RFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2xh
eWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFN1cmZhY2VBbHJlYWR5T25TdGFjaywgbGF5ZXJB
ZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoU3VyZmFjZUFscmVhZHlPblN0YWNrKTsKKwordm9pZCBs
YXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhSb3RhdGVkT2ZmQXhpc1N1cmZhY2UoYm9vbCBv
cGFxdWVMYXllcnMpCit7CisgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlN
YXRyaXg7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06
OmNyZWF0ZSgpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZCA9IExheWVyQ2hyb21p
dW06OmNyZWF0ZSgpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29u
dGVudD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0Nv
bnRlbnQoKSk7CisgICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CisgICAgcGFyZW50
LT5hZGRDaGlsZChjaGlsZCk7CisgICAgY2hpbGQtPmFkZENoaWxkKGxheWVyKTsKKworICAgIC8v
IE5vdyByb3RhdGUgdGhlIGNoaWxkIGEgbGl0dGxlIG1vcmUgc28gaXQgaXMgbm90IGF4aXMtYWxp
Z25lZC4gVGhlIHBhcmVudCB3aWxsIG5vIGxvbmdlciBiZSBvY2NsdWRlZCBieSB8bGF5ZXJ8LCBi
dXQKKyAgICAvLyB0aGUgY2hpbGQncyBvY2NsdXNpb24gc2hvdWxkIGJlIHVuY2hhbmdlZC4KKwor
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxkVHJhbnNmb3JtOworICAgIGNoaWxkVHJhbnNm
b3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7CisgICAgY2hpbGRUcmFuc2Zvcm0ucm90YXRlKDk1KTsK
KyAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7CisKKyAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBsYXllclRyYW5zZm9ybTsKKyAgICBsYXllclRyYW5zZm9ybS50cmFuc2xh
dGUoMTAsIDEwKTsKKworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50Lmdl
dCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkp
OworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoY2hpbGQuZ2V0KCksIGNoaWxkVHJh
bnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApKTsKKyAgICBzZXRM
YXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBsYXllclRyYW5zZm9ybSwgRmxv
YXRQb2ludCgwLCAwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7CisK
KyAgICBjaGlsZC0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKKworICAgIFZlY3RvcjxSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OworICAgIFZlY3RvcjxSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKKyAgICBpbnQgZHVtbXlNYXhUZXh0
dXJlU2l6ZSA9IDUxMjsKKworICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50
UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKKyAgICBw
YXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3Vu
ZHMoKSkpOworICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7CisKKyAg
ICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJp
bGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5
TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhU
ZXh0dXJlU2l6ZSk7CisKKyAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRS
ZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVj
dChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKworICAgIEludFJlY3QgY2xpcHBlZExheWVy
SW5DaGlsZCA9IGxheWVyVHJhbnNmb3JtLm1hcFJlY3QobGF5ZXItPnZpc2libGVMYXllclJlY3Qo
KSk7CisKKyAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkLT5yZW5k
ZXJTdXJmYWNlKCkpOworICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXll
ci5nZXQoKSk7CisKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIG9jY2x1c2lvbi5vY2Ns
dXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgIEVYUEVDVF9FUSgwdSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAgRVhQRUNU
X0VRX1JFQ1QoY2xpcHBlZExheWVySW5DaGlsZCwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0
U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNp
b25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisKKyAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIGNsaXBwZWRMYXllckluQ2hpbGQpKTsKKyAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQo
KSwgY2xpcHBlZExheWVySW5DaGlsZCkuaXNFbXB0eSgpKTsKKyAgICBjbGlwcGVkTGF5ZXJJbkNo
aWxkLm1vdmUoLTEsIDApOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hp
bGQuZ2V0KCksIGNsaXBwZWRMYXllckluQ2hpbGQpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIGNsaXBwZWRMYXllckluQ2hp
bGQpLmlzRW1wdHkoKSk7CisgICAgY2xpcHBlZExheWVySW5DaGlsZC5tb3ZlKDEsIDApOworICAg
IGNsaXBwZWRMYXllckluQ2hpbGQubW92ZSgxLCAwKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBjbGlwcGVkTGF5ZXJJbkNoaWxkKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBj
bGlwcGVkTGF5ZXJJbkNoaWxkKS5pc0VtcHR5KCkpOworICAgIGNsaXBwZWRMYXllckluQ2hpbGQu
bW92ZSgtMSwgMCk7CisgICAgY2xpcHBlZExheWVySW5DaGlsZC5tb3ZlKDAsIC0xKTsKKyAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBjbGlwcGVkTGF5ZXJJ
bkNoaWxkKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJl
Y3QocGFyZW50LmdldCgpLCBjbGlwcGVkTGF5ZXJJbkNoaWxkKS5pc0VtcHR5KCkpOworICAgIGNs
aXBwZWRMYXllckluQ2hpbGQubW92ZSgwLCAxKTsKKyAgICBjbGlwcGVkTGF5ZXJJbkNoaWxkLm1v
dmUoMCwgMSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQo
KSwgY2xpcHBlZExheWVySW5DaGlsZCkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24udW5v
Y2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgY2xpcHBlZExheWVySW5DaGlsZCkuaXNF
bXB0eSgpKTsKKyAgICBjbGlwcGVkTGF5ZXJJbkNoaWxkLm1vdmUoMCwgLTEpOworCisgICAgb2Nj
bHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkLmdldCgpKTsKKyAgICBvY2NsdXNp
b24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkLmdldCgpLCBjaGlsZC0+cmVuZGVy
U3VyZmFjZSgpKTsKKyAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFy
ZW50LT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICBFWFBFQ1Rf
RVEoMHUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkp
OworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFy
Z2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICBFWFBFQ1RfRVEoMHUsIG9jY2x1c2lvbi5vY2Ns
dXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisKKyAgICBFWFBFQ1RfRkFM
U0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCg3NSwgNTUsIDEsIDEp
KSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg3NSwgNTUsIDEsIDEpLCBvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg3NSwgNTUsIDEsIDEp
KSk7Cit9CisKK1RFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNr
ZXJUZXN0X2xheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFJvdGF0ZWRPZmZBeGlzU3VyZmFj
ZSwgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoUm90YXRlZE9mZkF4aXNTdXJmYWNlKTsK
Kwordm9pZCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhNdWx0aXBsZU9wYXF1ZUxheWVy
cyhib29sIG9wYXF1ZUxheWVycykKK3sKKyAgICAvLyBUaGlzIGlzIHNpbWlsYXIgdG8gdGhlIHBy
ZXZpb3VzIHRlc3QgYnV0IG5vdyB3ZSBtYWtlIGEgZmV3IG9wYXF1ZSBsYXllcnMgaW5zaWRlIG9m
IHxjaGlsZHwgc28gdGhhdCB0aGUgb2NjbHVkZWQgcGFydHMgb2YgY2hpbGQgYXJlIG5vdCBhIHNp
bXBsZSByZWN0LgorICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4
OworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVh
dGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQgPSBMYXllckNocm9taXVtOjpj
cmVhdGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+
IGxheWVyMSA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVu
dCgpKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxh
eWVyMiA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgp
KTsKKyAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKKyAgICBwYXJlbnQtPmFkZENo
aWxkKGNoaWxkKTsKKyAgICBjaGlsZC0+YWRkQ2hpbGQobGF5ZXIxKTsKKyAgICBjaGlsZC0+YWRk
Q2hpbGQobGF5ZXIyKTsKKworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxkVHJhbnNmb3Jt
OworICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7CisgICAgY2hpbGRUcmFu
c2Zvcm0ucm90YXRlKDkwKTsKKyAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1
MCk7CisKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRl
bnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKKyAgICBz
ZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwg
RmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSk7CisgICAgc2V0TGF5ZXJQcm9w
ZXJ0aWVzRm9yVGVzdGluZyhsYXllcjEuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KDEwLCAxMCksIEludFNpemUoNTAwLCA0NDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOworICAgIHNl
dExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwg
RmxvYXRQb2ludCgxMCwgNDUwKSwgSW50U2l6ZSg1MDAsIDYwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJz
KTsKKworICAgIGNoaWxkLT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOworCisgICAgVmVjdG9yPFJl
ZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CisgICAgVmVjdG9y
PFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OworICAgIGludCBkdW1teU1h
eFRleHR1cmVTaXplID0gNTEyOworCisgICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENv
bnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwor
ICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQt
PmJvdW5kcygpKSk7CisgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsK
KworICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRW
aXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRl
bnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1t
eU1heFRleHR1cmVTaXplKTsKKworICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9u
KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNz
b3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworCisgICAgb2NjbHVzaW9uLmVudGVy
VGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBvY2NsdXNp
b24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIyLmdldCgpKTsKKyAgICBvY2NsdXNpb24u
bWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIxLmdldCgpKTsKKworICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoMzAsIDQwLCA3MCwgNjApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5T
cGFjZSgpLmJvdW5kcygpKTsKKyAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25J
blNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMTAsIDQzMCwgNjAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgp
LmJvdW5kcygpKTsKKyAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdl
dFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSkpOworICAgIEVY
UEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoOSwgNDMw
LCA2MCwgNzApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5n
ZXQoKSwgSW50UmVjdCgxMCwgNDI5LCA2MCwgNzApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMSwgNDMwLCA2MCwgNzApKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVjdCgx
MCwgNDMxLCA2MCwgNzApKSk7CisKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRl
ZENvbnRlbnRSZWN0KGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MCkpLmlzRW1w
dHkoKSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg5LCA0MzAsIDEsIDcwKSwgb2NjbHVz
aW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVjdCg5LCA0MzAsIDYw
LCA3MCkpKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCA0MjksIDYwLCAxKSwgb2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDI5
LCA2MCwgNzApKSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg3MCwgNDMwLCAxLCA3MCks
IG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQuZ2V0KCksIEludFJlY3QoMTEs
IDQzMCwgNjAsIDcwKSkpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDUwMCwgNjAs
IDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLmdldCgpLCBJbnRSZWN0
KDEwLCA0MzEsIDYwLCA3MCkpKTsKKworICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRM
YXllcihjaGlsZC5nZXQoKSk7CisgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3Vy
ZmFjZShjaGlsZC5nZXQoKSwgY2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgb2NjbHVzaW9u
LmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKwor
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDQwLCA3MCwgNjApLCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1
c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOworICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoMzAsIDQwLCA3MCwgNjApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5U
YXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOworICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKworICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDQwLCA3MCwg
NjApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCks
IEludFJlY3QoMjksIDQwLCA3MCwgNjApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDM5LCA3MCwgNjApKSk7CisKKyAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwg
SW50UmVjdCgzMCwgNDAsIDcwLCA2MCkpLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCgyOSwgNDAsIDEsIDYwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChw
YXJlbnQuZ2V0KCksIEludFJlY3QoMjksIDQwLCA3MCwgNjApKSk7CisgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgzMCwgMzksIDcwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDM5LCA3MCwgNjApKSk7CisgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgxMDAsIDQwLCAxLCA2MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVu
dFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDMxLCA0MCwgNzAsIDYwKSkpOworICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoMzAsIDEwMCwgNzAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgNDEsIDcwLCA2MCkpKTsKKworICAg
IC8qIEp1c3RpZmljYXRpb24gZm9yIHRoZSBhYm92ZSBvY2NsdXNpb24gZnJvbSB8bGF5ZXIxfCBh
bmQgfGxheWVyMnw6CisKKyAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgIHwg
ICAgICAgICAgICAgICAgICAgICB8MzAgIFZpc2libGUgcmVnaW9uIG9mIHxsYXllcjF8OiAvLy8v
LworICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgIFZpc2libGUgcmVnaW9uIG9mIHxs
YXllcjJ8OiBcXFxcXAorICAgICAgIHwgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0rCisgICAgICAgfCAgICAgfCAgICAgICAgICAgICAgIHwxMCAgICAgICAgICAgICAgIHwK
KyAgICAgICB8ICArLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKyAgfAorICAgICAg
IHwgIHwgIHxcXFxcXFxcXFxcXFx8Ly98ICAgICA0MjAgICAgICB8ICB8CisgICAgICAgfCAgfCAg
fFxcXFxcXFxcXFxcXHwvL3w2MCAgICAgICAgICAgIHwgIHwKKyAgICAgICB8ICB8ICB8XFxcXFxc
XFxcXFxcfC8vfCAgICAgICAgICAgICAgfCAgfAorICAgICAgICstLXwtLXwtLS0tLS0tLS0tLS18
LS0rICAgICAgICAgICAgICB8ICB8CisgICAgICAgIDIwfDEwfCAgICAgNzAgICAgIHwgICAgICAg
ICAgICAgICAgIHwgIHwKKyAgICAgICAgICB8ICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAg
ICAgfCAgfAorICAgICAgICAgIHwgIHwgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICB8
CisgICAgICAgICAgfCAgfCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgIHwKKyAgICAg
ICAgICB8ICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgIHwg
IHwgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICB8CisgICAgICAgICAgfCAgfCAgICAg
ICAgICAgIHwgICAgICAgICAgICAgICAgIHwxMHwKKyAgICAgICAgICB8ICArLS0tLS0tLS0tLS0t
fC0tLS0tLS0tLS0tLS0tLS0tfC0tKworICAgICAgICAgIHwgICAgICAgICAgICAgICB8IDQ5MCAg
ICAgICAgICAgICB8CisgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t
LSsKKyAgICAgICAgICAgICAgICA2MCAgICAgICAgICAgICAgIDQ0MAorICAgICAqLworfQorCitU
RVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9sYXll
ckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhNdWx0aXBsZU9wYXF1ZUxheWVycywgbGF5ZXJBZGRl
ZFRvT2NjbHVkZWRSZWdpb25XaXRoTXVsdGlwbGVPcGFxdWVMYXllcnMpOworCit2b2lkIHN1cmZh
Y2VPY2NsdXNpb25XaXRoT3ZlcmxhcHBpbmdTaWJsaW5nU3VyZmFjZXMoYm9vbCBvcGFxdWVMYXll
cnMpCit7CisgICAgLy8gVGhpcyB0ZXN0cyB0aGF0IHRoZSByaWdodCB0cmFuc2Zvcm1zIGFyZSBi
ZWluZyB1c2VkLgorICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4
OworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVh
dGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQxID0gTGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlKCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkMiA9IExheWVyQ2hyb21p
dW06OmNyZWF0ZSgpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29u
dGVudD4gbGF5ZXIxID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3ND
b250ZW50KCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVu
dD4gbGF5ZXIyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250
ZW50KCkpOworICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOworICAgIHBhcmVudC0+
YWRkQ2hpbGQoY2hpbGQxKTsKKyAgICBwYXJlbnQtPmFkZENoaWxkKGNoaWxkMik7CisgICAgY2hp
bGQxLT5hZGRDaGlsZChsYXllcjEpOworICAgIGNoaWxkMi0+YWRkQ2hpbGQobGF5ZXIyKTsKKwor
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxkVHJhbnNmb3JtOworICAgIGNoaWxkVHJhbnNm
b3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7CisgICAgY2hpbGRUcmFuc2Zvcm0ucm90YXRlKDkwKTsK
KyAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7CisKKyAgICBzZXRMYXll
clByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNG
b3JUZXN0aW5nKGNoaWxkMS5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMw
KSwgSW50U2l6ZSg1MDAsIDUwMCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rpbmco
bGF5ZXIxLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSg1
MDAsIDUwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9y
VGVzdGluZyhjaGlsZDIuZ2V0KCksIGNoaWxkVHJhbnNmb3JtLCBGbG9hdFBvaW50KDIwLCA0MCks
IEludFNpemUoNTAwLCA1MDApKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxh
eWVyMi5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoNTAw
LCA1MDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOworCisgICAgY2hpbGQxLT5zZXRNYXNrc1RvQm91
bmRzKHRydWUpOworICAgIGNoaWxkMi0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKKworICAgIFZl
Y3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OworICAg
IFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKKyAgICBpbnQg
ZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKKworICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgp
LT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRz
KCkpKTsKKyAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwg
cGFyZW50LT5ib3VuZHMoKSkpOworICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBh
cmVudCk7CisKKyAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zv
cm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRy
aXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlz
dCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7CisKKyAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9j
Y2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICBvY2NsdXNpb24uc2V0TGF5
ZXJTY2lzc29yUmVjdChJbnRSZWN0KC0xMCwgLTEwLCAxMDAwLCAxMDAwKSk7CisKKyAgICBvY2Ns
dXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMi0+cmVuZGVyU3VyZmFjZSgpKTsK
KyAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIyLmdldCgpKTsKKwor
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAsIDQwLCA4MCwgNjApLCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1
c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOworICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoMCwgNDIwLCA2MCwgODApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5U
YXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOworICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKworICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIuZ2V0KCksIEludFJlY3QoMCwgNDIwLCA2MCwg
ODApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIuZ2V0KCks
IEludFJlY3QoLTEsIDQyMCwgNjAsIDgwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0KDAsIDQxOSwgNjAsIDgwKSkpOworICAgIEVY
UEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0KDAsIDQy
MCwgNjEsIDgwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQy
LmdldCgpLCBJbnRSZWN0KDAsIDQyMCwgNjAsIDgxKSkpOworCisgICAgb2NjbHVzaW9uLm1hcmtP
Y2NsdWRlZEJlaGluZExheWVyKGNoaWxkMi5nZXQoKSk7CisgICAgb2NjbHVzaW9uLmZpbmlzaGVk
VGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDIuZ2V0KCksIGNoaWxkMi0+cmVuZGVyU3VyZmFjZSgp
KTsKKyAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5k
ZXJTdXJmYWNlKCkpOworICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UoY2hp
bGQxLT5yZW5kZXJTdXJmYWNlKCkpOworICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRM
YXllcihsYXllcjEuZ2V0KCkpOworCisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMCwgMzAs
IDgwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwor
ICAgIEVYUEVDVF9FUSgydSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0
cygpLnNpemUoKSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCA0MzAsIDcwLCA3MCks
IG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgRVhQ
RUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5z
aXplKCkpOworCisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMS5nZXQo
KSwgSW50UmVjdCgwLCA0MzAsIDcwLCA3MCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKGNoaWxkMS5nZXQoKSwgSW50UmVjdCgtMSwgNDMwLCA3MCwgNzApKSk7CisgICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDEuZ2V0KCksIEludFJlY3QoMCwg
NDI5LCA3MCwgNzApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGls
ZDEuZ2V0KCksIEludFJlY3QoMCwgNDMwLCA3MSwgNzApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChjaGlsZDEuZ2V0KCksIEludFJlY3QoMCwgNDMwLCA3MCwgNzEpKSk7
CisKKyAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQxLmdldCgpKTsK
KyAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMS5nZXQoKSwg
Y2hpbGQxLT5yZW5kZXJTdXJmYWNlKCkpOworICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVu
ZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDIwLCAzMCwgODAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3Bh
Y2UoKS5ib3VuZHMoKSk7CisgICAgRVhQRUNUX0VRKDJ1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5T
Y3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0
KDIwLCAzMCwgODAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJv
dW5kcygpKTsKKyAgICBFWFBFQ1RfRVEoMnUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1
cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgyMCwgMzAsIDgwLCA3MCkpKTsKKworICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDMw
LCA3MCwgNzApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQu
Z2V0KCksIEludFJlY3QoMjksIDMwLCA3MCwgNzApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDI5LCA3MCwgNzApKSk7CisK
KyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0
KDIwLCA0MCwgODAsIDYwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50LmdldCgpLCBJbnRSZWN0KDE5LCA0MCwgODAsIDYwKSkpOworICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDIwLCAzOSwgODAsIDYw
KSkpOworCisgICAgLyogSnVzdGlmaWNhdGlvbiBmb3IgdGhlIGFib3ZlIG9jY2x1c2lvbjoKKyAg
ICAgICAgICAgICAgIDEwMAorICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgIHwg
ICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8ICAgIDMwICAgICAgICAgICAgICAgfCAgICAg
ICBjaGlsZDEKKyAgICAgIHwgIDMwKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r
CisgIDEwMCB8ICA0MHwgICAgICAgICAgICAgICAgfCAgICAgY2hpbGQyICAgICAgfAorICAgICAg
fDIwKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIHwKKyAgICAgIHwgIHwgfCAg
ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCB8CisgICAgICB8ICB8IHwgICAgICAgICAg
ICAgICAgfCAgICAgICAgICAgICAgIHwgfAorICAgICAgfCAgfCB8ICAgICAgICAgICAgICAgIHwg
ICAgICAgICAgICAgICB8IHwKKyAgICAgICstLXwtfC0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAg
ICAgICAgfCB8CisgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
fCA1MDAKKyAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8Cisg
ICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfAorICAgICAgICAg
fCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwKKyAgICAgICAgIHwgfCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8CisgICAgICAgICB8IHwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgfAorICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8IHwKKyAgICAgICAgIHwgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tfC0rCisgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAg
ICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgICAg
ICAgICAgICAgICAgIDUwMAorICAgICAqLworfQorCitURVNUX09QQVFVRV9BTkRfUEFJTlRFRF9P
UEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9zdXJmYWNlT2NjbHVzaW9uV2l0aE92ZXJsYXBw
aW5nU2libGluZ1N1cmZhY2VzLCBzdXJmYWNlT2NjbHVzaW9uV2l0aE92ZXJsYXBwaW5nU2libGlu
Z1N1cmZhY2VzKTsKKwordm9pZCBzdXJmYWNlT2NjbHVzaW9uSW5TY3JlZW5TcGFjZShib29sIG9w
YXF1ZUxheWVycykKK3sKKyAgICAvLyBUaGlzIHRlc3RzIHRoYXQgdGhlIHJpZ2h0IHRyYW5zZm9y
bXMgYXJlIGJlaW5nIHVzZWQuCisgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRp
dHlNYXRyaXg7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21p
dW06OmNyZWF0ZSgpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDEgPSBMYXllckNo
cm9taXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQyID0gTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2Vk
RHJhd3NDb250ZW50PiBsYXllcjEgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3Jj
ZWREcmF3c0NvbnRlbnQoKSk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJh
d3NDb250ZW50PiBsYXllcjIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWRE
cmF3c0NvbnRlbnQoKSk7CisgICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CisgICAg
cGFyZW50LT5hZGRDaGlsZChjaGlsZDEpOworICAgIHBhcmVudC0+YWRkQ2hpbGQoY2hpbGQyKTsK
KyAgICBjaGlsZDEtPmFkZENoaWxkKGxheWVyMSk7CisgICAgY2hpbGQyLT5hZGRDaGlsZChsYXll
cjIpOworCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY2hpbGRUcmFuc2Zvcm07CisgICAgY2hp
bGRUcmFuc2Zvcm0udHJhbnNsYXRlKDI1MCwgMjUwKTsKKyAgICBjaGlsZFRyYW5zZm9ybS5yb3Rh
dGUoOTApOworICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKKworICAg
IC8vIFRoZSBvd25pbmcgbGF5ZXJzIGhhdmUgdmVyeSBkaWZmZXJlbnQgYm91bmRzIGZyb20gdGhl
IHN1cmZhY2VzIHRoYXQgdGhleSBvd24uCisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGlu
ZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXpl
KDEwMCwgMTAwKSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZDEuZ2V0
KCksIGNoaWxkVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoMTAsIDEwKSk7
CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllcjEuZ2V0KCksIGlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KC0xMCwgLTEwKSwgSW50U2l6ZSg1MTAsIDUxMCksIHRydWUsIG9w
YXF1ZUxheWVycyk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZDIuZ2V0
KCksIGNoaWxkVHJhbnNmb3JtLCBGbG9hdFBvaW50KDIwLCA0MCksIEludFNpemUoMTAsIDEwKSk7
CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllcjIuZ2V0KCksIGlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KC0xMCwgLTEwKSwgSW50U2l6ZSg1MTAsIDUxMCksIHRydWUsIG9w
YXF1ZUxheWVycyk7CisKKyAgICAvLyBNYWtlIHRoZW0gYm90aCByZW5kZXIgc3VyZmFjZXMKKyAg
ICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7CisgICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBw
ZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZp
bHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFKSk7CisgICAgY2hpbGQxLT5zZXRGaWx0ZXJzKGZpbHRl
cnMpOworICAgIGNoaWxkMi0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKKworICAgIGNoaWxkMS0+c2V0
TWFza3NUb0JvdW5kcyhmYWxzZSk7CisgICAgY2hpbGQyLT5zZXRNYXNrc1RvQm91bmRzKGZhbHNl
KTsKKworICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0OworICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlz
dDsKKyAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKKworICAgIHBhcmVudC0+cmVu
ZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBh
cmVudC0+Ym91bmRzKCkpKTsKKyAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9p
bnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOworICAgIHJlbmRlclN1cmZhY2VMYXllckxp
c3QuYXBwZW5kKHBhcmVudCk7CisKKyAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0
ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwg
aWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBk
dW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7CisKKyAgICBUZXN0Q0NPY2NsdXNp
b25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICBvY2Ns
dXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KC0yMCwgLTIwLCAxMDAwLCAxMDAwKSk7
CisKKyAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMi0+cmVuZGVy
U3VyZmFjZSgpKTsKKyAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIy
LmdldCgpKTsKKworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAsIDMwLCA4MCwgNzApLCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICBFWFBFQ1Rf
RVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkp
OworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MCksIG9jY2x1c2lv
bi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgRVhQRUNUX0VRKDF1
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwor
CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMi5nZXQoKSwgSW50UmVj
dCgtMTAsIDQyMCwgNzAsIDgwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0KC0xMSwgNDIwLCA3MCwgODApKSk7CisgICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIuZ2V0KCksIEludFJlY3QoLTEwLCA0MTks
IDcwLCA4MCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMi5n
ZXQoKSwgSW50UmVjdCgtMTAsIDQyMCwgNzEsIDgwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0KC0xMCwgNDIwLCA3MCwgODEpKSk7
CisKKyAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKKyAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0KC0xMCwgNDIw
LCA3MCwgODApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMi5n
ZXQoKSwgSW50UmVjdCgtMTEsIDQyMCwgNzAsIDgwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChjaGlsZDIuZ2V0KCksIEludFJlY3QoLTEwLCA0MTksIDcwLCA4MCkpKTsK
KyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0
KC0xMCwgNDIwLCA3MSwgODApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KGNoaWxkMi5nZXQoKSwgSW50UmVjdCgtMTAsIDQyMCwgNzAsIDgxKSkpOworICAgIG9jY2x1c2lv
bi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoLTIwLCAtMjAsIDEwMDAsIDEwMDApKTsKKwor
ICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZDIuZ2V0KCkpOworICAg
IG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQyLmdldCgpLCBjaGls
ZDItPnJlbmRlclN1cmZhY2UoKSk7CisgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJT
dXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBvY2NsdXNpb24uZW50ZXJUYXJn
ZXRSZW5kZXJTdXJmYWNlKGNoaWxkMS0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBvY2NsdXNpb24u
bWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIxLmdldCgpKTsKKworICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoMjAsIDIwLCA4MCwgODApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5T
cGFjZSgpLmJvdW5kcygpKTsKKyAgICBFWFBFQ1RfRVEoMnUsIG9jY2x1c2lvbi5vY2NsdXNpb25J
blNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoLTEwLCA0MzAsIDgwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2Uo
KS5ib3VuZHMoKSk7CisgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJn
ZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOworCisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKGNoaWxkMS5nZXQoKSwgSW50UmVjdCgtMTAsIDQzMCwgODAsIDcwKSkpOworICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLmdldCgpLCBJbnRSZWN0KC0x
MSwgNDMwLCA4MCwgNzApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChj
aGlsZDEuZ2V0KCksIEludFJlY3QoLTEwLCA0MjksIDgwLCA3MCkpKTsKKyAgICBFWFBFQ1RfRkFM
U0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMS5nZXQoKSwgSW50UmVjdCgtMTAsIDQzMCwgODEs
IDcwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLmdldCgp
LCBJbnRSZWN0KC0xMCwgNDMwLCA4MCwgNzEpKSk7CisKKyAgICBvY2NsdXNpb24ubWFya09jY2x1
ZGVkQmVoaW5kTGF5ZXIoY2hpbGQxLmdldCgpKTsKKyAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJn
ZXRSZW5kZXJTdXJmYWNlKGNoaWxkMS5nZXQoKSwgY2hpbGQxLT5yZW5kZXJTdXJmYWNlKCkpOwor
ICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1
cmZhY2UoKSk7CisKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwLCAyMCwgODAsIDgwKSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgRVhQRUNU
X0VRKDJ1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgp
KTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwLCAyMCwgODAsIDgwKSwgb2NjbHVzaW9u
Lm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICBFWFBFQ1RfRVEoMnUs
IG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisK
KyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVj
dCgyMCwgMjAsIDgwLCA4MCkpKTsKKworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDIwLCA3MCwgODApKSk7CisgICAgRVhQRUNUX0ZB
TFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjksIDIwLCA3MCwg
ODApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCks
IEludFJlY3QoMzAsIDE5LCA3MCwgODApKSk7CisKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDIwLCAzMCwgODAsIDcwKSkpOworICAgIEVY
UEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDE5LCAz
MCwgODAsIDcwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LmdldCgpLCBJbnRSZWN0KDIwLCAyOSwgODAsIDcwKSkpOworCisgICAgLyogSnVzdGlmaWNhdGlv
biBmb3IgdGhlIGFib3ZlIG9jY2x1c2lvbjoKKyAgICAgICAgICAgICAgIDEwMAorICAgICAgKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgIHwgICAgMjAgICAgICAgICAgICAgICB8ICAgICAg
IGxheWVyMQorICAgICAgfCAgMzArIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsK
KyAgMTAwIHwgIDMwfCAgICAgICAgICAgICAgICB8ICAgICBsYXllcjIgICAgICB8CisgICAgICB8
MjArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgfAorICAgICAgfCAgfCB8ICAg
ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8IHwKKyAgICAgIHwgIHwgfCAgICAgICAgICAg
ICAgICB8ICAgICAgICAgICAgICAgfCB8CisgICAgICB8ICB8IHwgICAgICAgICAgICAgICAgfCAg
ICAgICAgICAgICAgIHwgfAorICAgICAgKy0tfC18LS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAg
ICAgICB8IHwKKyAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8
IDUxMAorICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwKKyAg
ICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8CisgICAgICAgICB8
IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfAorICAgICAgICAgfCB8ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwKKyAgICAgICAgIHwgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCB8CisgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgfAorICAgICAgICAgfCArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS18LSsKKyAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAg
ICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICAg
ICAgICAgICAgICAgNTEwCisgICAgICovCit9CisKK1RFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09Q
QVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X3N1cmZhY2VPY2NsdXNpb25JblNjcmVlblNwYWNl
LCBzdXJmYWNlT2NjbHVzaW9uSW5TY3JlZW5TcGFjZSk7CisKK3ZvaWQgc3VyZmFjZU9jY2x1c2lv
bkluU2NyZWVuU3BhY2VEaWZmZXJlbnRUcmFuc2Zvcm1zKGJvb2wgb3BhcXVlTGF5ZXJzKQorewor
ICAgIC8vIFRoaXMgdGVzdHMgdGhhdCB0aGUgcmlnaHQgdHJhbnNmb3JtcyBhcmUgYmVpbmcgdXNl
ZC4KKyAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKKyAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Cisg
ICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkMSA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgp
OworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDIgPSBMYXllckNocm9taXVtOjpjcmVh
dGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxh
eWVyMSA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgp
KTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVy
MiA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsK
KyAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKKyAgICBwYXJlbnQtPmFkZENoaWxk
KGNoaWxkMSk7CisgICAgcGFyZW50LT5hZGRDaGlsZChjaGlsZDIpOworICAgIGNoaWxkMS0+YWRk
Q2hpbGQobGF5ZXIxKTsKKyAgICBjaGlsZDItPmFkZENoaWxkKGxheWVyMik7CisKKyAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBjaGlsZDFUcmFuc2Zvcm07CisgICAgY2hpbGQxVHJhbnNmb3JtLnRy
YW5zbGF0ZSgyNTAsIDI1MCk7CisgICAgY2hpbGQxVHJhbnNmb3JtLnJvdGF0ZSgtOTApOworICAg
IGNoaWxkMVRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7CisKKyAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBjaGlsZDJUcmFuc2Zvcm07CisgICAgY2hpbGQyVHJhbnNmb3JtLnRyYW5zbGF0
ZSgyNTAsIDI1MCk7CisgICAgY2hpbGQyVHJhbnNmb3JtLnJvdGF0ZSg5MCk7CisgICAgY2hpbGQy
VHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKKworICAgIC8vIFRoZSBvd25pbmcgbGF5
ZXJzIGhhdmUgdmVyeSBkaWZmZXJlbnQgYm91bmRzIGZyb20gdGhlIHN1cmZhY2VzIHRoYXQgdGhl
eSBvd24uCisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7CisgICAg
c2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZDEuZ2V0KCksIGNoaWxkMVRyYW5zZm9y
bSwgRmxvYXRQb2ludCgzMCwgMjApLCBJbnRTaXplKDEwLCAxMCkpOworICAgIHNldExheWVyUHJv
cGVydGllc0ZvclRlc3RpbmcobGF5ZXIxLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgtMTAsIC0yMCksIEludFNpemUoNTEwLCA1MjApLCB0cnVlLCBvcGFxdWVMYXllcnMpOworICAg
IHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoY2hpbGQyLmdldCgpLCBjaGlsZDJUcmFuc2Zv
cm0sIEZsb2F0UG9pbnQoMjAsIDQwKSwgSW50U2l6ZSgxMCwgMTApKTsKKyAgICBzZXRMYXllclBy
b3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyMi5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoLTEwLCAtMTApLCBJbnRTaXplKDUxMCwgNTEwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKKwor
ICAgIC8vIE1ha2UgdGhlbSBib3RoIHJlbmRlciBzdXJmYWNlcworICAgIEZpbHRlck9wZXJhdGlv
bnMgZmlsdGVyczsKKyAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25l
bnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9uOjpH
UkFZU0NBTEUpKTsKKyAgICBjaGlsZDEtPnNldEZpbHRlcnMoZmlsdGVycyk7CisgICAgY2hpbGQy
LT5zZXRGaWx0ZXJzKGZpbHRlcnMpOworCisgICAgY2hpbGQxLT5zZXRNYXNrc1RvQm91bmRzKGZh
bHNlKTsKKyAgICBjaGlsZDItPnNldE1hc2tzVG9Cb3VuZHMoZmFsc2UpOworCisgICAgVmVjdG9y
PFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CisgICAgVmVj
dG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OworICAgIGludCBkdW1t
eU1heFRleHR1cmVTaXplID0gNTEyOworCisgICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNl
dENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkp
OworICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJl
bnQtPmJvdW5kcygpKSk7CisgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50
KTsKKworICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNB
bmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwg
aWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBk
dW1teU1heFRleHR1cmVTaXplKTsKKworICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVz
aW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgIG9jY2x1c2lvbi5zZXRMYXllclNj
aXNzb3JSZWN0KEludFJlY3QoLTMwLCAtMzAsIDEwMDAsIDEwMDApKTsKKworICAgIG9jY2x1c2lv
bi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQyLT5yZW5kZXJTdXJmYWNlKCkpOworICAg
IG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcjIuZ2V0KCkpOworCisgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMCwgMzAsIDgwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNp
b25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9u
Lm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgtMTAsIDQyMCwgNzAsIDgwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFy
Z2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2Ns
dXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisKKyAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0KC0xMCwgNDIwLCA3MCwg
ODApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIuZ2V0KCks
IEludFJlY3QoLTExLCA0MjAsIDcwLCA4MCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKGNoaWxkMi5nZXQoKSwgSW50UmVjdCgtMTAsIDQxOSwgNzAsIDgwKSkpOworICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0KC0x
MCwgNDIwLCA3MSwgODApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChj
aGlsZDIuZ2V0KCksIEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MSkpKTsKKworICAgIG9jY2x1c2lv
bi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZDIuZ2V0KCkpOworICAgIG9jY2x1c2lvbi5m
aW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQyLmdldCgpLCBjaGlsZDItPnJlbmRlclN1
cmZhY2UoKSk7CisgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVu
dC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJm
YWNlKGNoaWxkMS0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVk
QmVoaW5kTGF5ZXIobGF5ZXIxLmdldCgpKTsKKworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
MTAsIDIwLCA5MCwgODApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5k
cygpKTsKKyAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNl
KCkucmVjdHMoKS5zaXplKCkpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNDIwLCAtMjAs
IDgwLCA5MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7
CisgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCku
cmVjdHMoKS5zaXplKCkpOworCisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNo
aWxkMS5nZXQoKSwgSW50UmVjdCg0MjAsIC0yMCwgODAsIDkwKSkpOworICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLmdldCgpLCBJbnRSZWN0KDQxOSwgLTIwLCA4MCwg
OTApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDEuZ2V0KCks
IEludFJlY3QoNDIwLCAtMjEsIDgwLCA5MCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKGNoaWxkMS5nZXQoKSwgSW50UmVjdCg0MjAsIC0xOSwgODAsIDkwKSkpOworICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLmdldCgpLCBJbnRSZWN0KDQy
MSwgLTIwLCA4MCwgOTApKSk7CisKKyAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5
ZXIoY2hpbGQxLmdldCgpKTsKKyAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJm
YWNlKGNoaWxkMS5nZXQoKSwgY2hpbGQxLT5yZW5kZXJTdXJmYWNlKCkpOworICAgIG9jY2x1c2lv
bi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisK
KyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCAyMCwgOTAsIDgwKSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgRVhQRUNUX0VRKDF1LCBvY2Ns
dXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDEwLCAyMCwgOTAsIDgwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbklu
VGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisKKyAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDEwLCAyMCwgOTAs
IDgwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgp
LCBJbnRSZWN0KDksIDIwLCA5MCwgODApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTAsIDE5LCA5MCwgODApKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTEsIDIw
LCA5MCwgODApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQu
Z2V0KCksIEludFJlY3QoMTAsIDIxLCA5MCwgODApKSk7CisKKyAgICAvKiBKdXN0aWZpY2F0aW9u
IGZvciB0aGUgYWJvdmUgb2NjbHVzaW9uOgorICAgICAgICAgICAgICAgMTAwCisgICAgICArLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgfDIwICAgICAgICAgICAgICAgICAgIHwgICAgICAg
bGF5ZXIxCisgICAgIDEwKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgIDEw
MCB8fCAzMCAgICAgICAgICAgICAgICAgfCAgICAgbGF5ZXIyICB8CisgICAgICB8MjArLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgIHx8IHwgICAgICAgICAgICAgICAg
ICB8ICAgICAgICAgICAgIHwgfAorICAgICAgfHwgfCAgICAgICAgICAgICAgICAgIHwgICAgICAg
ICAgICAgfCB8CisgICAgICB8fCB8ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8IHwK
KyAgICAgICt8LXwtLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgIHwgfAorICAgICAgIHwg
fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8IDUxMAorICAgICAgIHwgfCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA1MTAgfCB8CisgICAgICAgfCB8ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8IHwKKyAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgfAorICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8
CisgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwKKyAgICAgICB8
IHwgICAgICAgICAgICAgICAgNTIwICAgICAgICAgICAgIHwgfAorICAgICAgICstLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyB8CisgICAgICAgICB8ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKworICAgICAgICAgICAgICAgICAgICAgICAgIDUxMAorICAgICAqLworfQorCitURVNU
X09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9zdXJmYWNl
T2NjbHVzaW9uSW5TY3JlZW5TcGFjZURpZmZlcmVudFRyYW5zZm9ybXMsIHN1cmZhY2VPY2NsdXNp
b25JblNjcmVlblNwYWNlRGlmZmVyZW50VHJhbnNmb3Jtcyk7CisKK3ZvaWQgb2NjbHVzaW9uSW50
ZXJhY3Rpb25XaXRoRmlsdGVycyhib29sIG9wYXF1ZUxheWVycykKK3sKKyAgICAvLyBUaGlzIHRl
c3RzIHRoYXQgdGhlIHJpZ2h0IHRyYW5zZm9ybXMgYXJlIGJlaW5nIHVzZWQuCisgICAgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CisgICAgUmVmUHRyPExheWVyQ2hy
b21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOworICAgIFJlZlB0cjxMYXll
ckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gYmx1ckxheWVyID0gYWRvcHRSZWYobmV3
IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOworICAgIFJlZlB0cjxMYXll
ckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gb3BhY2l0eUxheWVyID0gYWRvcHRSZWYo
bmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOworICAgIFJlZlB0cjxM
YXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gb3BhcXVlTGF5ZXIgPSBhZG9wdFJl
ZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7CisgICAgcGFyZW50
LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CisgICAgcGFyZW50LT5hZGRDaGlsZChibHVyTGF5ZXIp
OworICAgIHBhcmVudC0+YWRkQ2hpbGQob3BhY2l0eUxheWVyKTsKKyAgICBwYXJlbnQtPmFkZENo
aWxkKG9wYXF1ZUxheWVyKTsKKworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVyVHJhbnNm
b3JtOworICAgIGxheWVyVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7CisgICAgbGF5ZXJU
cmFuc2Zvcm0ucm90YXRlKDkwKTsKKyAgICBsYXllclRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwg
LTI1MCk7CisKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwg
aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKKyAg
ICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGJsdXJMYXllci5nZXQoKSwgbGF5ZXJUcmFu
c2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUsIG9wYXF1
ZUxheWVycyk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhvcGFxdWVMYXllci5n
ZXQoKSwgbGF5ZXJUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUw
MCksIHRydWUsIG9wYXF1ZUxheWVycyk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGlu
ZyhvcGFjaXR5TGF5ZXIuZ2V0KCksIGxheWVyVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCks
IEludFNpemUoNTAwLCA1MDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwogCi0gICAgdHlwZW5hbWUg
VHlwZXM6OkxheWVyVHlwZSogY3JlYXRlU3VyZmFjZSh0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBl
KiBwYXJlbnQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRTaXplJiBib3VuZHMpCiAgICAgewotICAgICAg
ICB0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlKiBsYXllciA9IGNyZWF0ZUxheWVyKHBhcmVudCwg
dHJhbnNmb3JtLCBwb3NpdGlvbiwgYm91bmRzKTsKICAgICAgICAgRmlsdGVyT3BlcmF0aW9ucyBm
aWx0ZXJzOwotICAgICAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25l
bnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9uOjpH
UkFZU0NBTEUpKTsKLSAgICAgICAgbGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7Ci0gICAgICAg
IHJldHVybiBsYXllcjsKLSAgICB9Ci0KLSAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVy
VHlwZSogY3JlYXRlRHJhd2luZ0xheWVyKHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIHBhcmVu
dCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2lu
dCYgcG9zaXRpb24sIGNvbnN0IEludFNpemUmIGJvdW5kcywgYm9vbCBvcGFxdWUpCi0gICAgewot
ICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyUHRyVHlwZSBsYXllciA9IFR5cGVz
OjpjcmVhdGVDb250ZW50TGF5ZXIoKTsKLSAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRM
YXllclR5cGUqIGxheWVyUHRyID0gbGF5ZXIuZ2V0KCk7Ci0gICAgICAgIHNldFByb3BlcnRpZXMo
bGF5ZXJQdHIsIHRyYW5zZm9ybSwgcG9zaXRpb24sIGJvdW5kcyk7Ci0KLSAgICAgICAgaWYgKG9w
YXF1ZUxheWVycykKLSAgICAgICAgICAgIGxheWVyUHRyLT5zZXRPcGFxdWUob3BhcXVlKTsKLSAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBsYXllclB0ci0+c2V0T3BhcXVlKGZhbHNlKTsKLSAg
ICAgICAgICAgIGlmIChvcGFxdWUpCi0gICAgICAgICAgICAgICAgbGF5ZXJQdHItPnNldE9wYXF1
ZUNvbnRlbnRzUmVjdChJbnRSZWN0KEludFBvaW50KCksIGJvdW5kcykpOwotICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIGxheWVyUHRyLT5zZXRPcGFxdWVDb250ZW50c1JlY3QoSW50
UmVjdCgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIucmVs
ZWFzZSgpKTsKLSAgICAgICAgcmV0dXJuIGxheWVyUHRyOworICAgICAgICBmaWx0ZXJzLm9wZXJh
dGlvbnMoKS5hcHBlbmQoQmx1ckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0aCgxMCwgV2Vi
Q29yZTo6UGVyY2VudCksIEZpbHRlck9wZXJhdGlvbjo6QkxVUikpOworICAgICAgICBibHVyTGF5
ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CiAgICAgfQogCi0gICAgdHlwZW5hbWUgVHlwZXM6OkNv
bnRlbnRMYXllclR5cGUqIGNyZWF0ZURyYXdpbmdTdXJmYWNlKHR5cGVuYW1lIFR5cGVzOjpMYXll
clR5cGUqIHBhcmVudCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29u
c3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFNpemUmIGJvdW5kcywgYm9vbCBvcGFx
dWUpCiAgICAgewotICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogbGF5
ZXIgPSBjcmVhdGVEcmF3aW5nTGF5ZXIocGFyZW50LCB0cmFuc2Zvcm0sIHBvc2l0aW9uLCBib3Vu
ZHMsIG9wYXF1ZSk7CiAgICAgICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKICAgICAgICAg
ZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJP
cGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFKSk7Ci0gICAg
ICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwotICAgICAgICByZXR1cm4gbGF5ZXI7Cisg
ICAgICAgIG9wYXF1ZUxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwogICAgIH0KIAotCi0gICAg
VGVzdENvbnRlbnRMYXllckltcGwqIGNhbGNEcmF3RXRjKFRlc3RDb250ZW50TGF5ZXJJbXBsKiBy
b290KQogICAgIHsKLSAgICAgICAgQVNTRVJUKHJvb3QgPT0gbV9yb290LmdldCgpKTsKLSAgICAg
ICAgVmVjdG9yPENDTGF5ZXJJbXBsKj4gZHVtbXlMYXllckxpc3Q7Ci0gICAgICAgIGludCBkdW1t
eU1heFRleHR1cmVTaXplID0gNTEyOwotCi0gICAgICAgIEFTU0VSVCghcm9vdC0+cmVuZGVyU3Vy
ZmFjZSgpKTsKLSAgICAgICAgcm9vdC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwotICAgICAgICBy
b290LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onpl
cm8oKSwgcm9vdC0+Ym91bmRzKCkpKTsKLSAgICAgICAgcm9vdC0+c2V0Q2xpcFJlY3QoSW50UmVj
dChJbnRQb2ludDo6emVybygpLCByb290LT5ib3VuZHMoKSkpOwotICAgICAgICBtX3JlbmRlclN1
cmZhY2VMYXllckxpc3RJbXBsLmFwcGVuZChtX3Jvb3QuZ2V0KCkpOwotCi0gICAgICAgIENDTGF5
ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJv
b3QsIHJvb3QsIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgbV9yZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0SW1wbCwgZHVtbXlMYXllckxpc3QsIDAsIGR1bW15TWF4VGV4dHVyZVNpemUpOwot
ICAgICAgICByZXR1cm4gcm9vdDsKKyAgICAgICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwor
ICAgICAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25lbnRUcmFuc2Zl
ckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9uOjpPUEFDSVRZKSk7
CisgICAgICAgIG9wYWNpdHlMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKICAgICB9CiAKLSAg
ICBUZXN0Q29udGVudExheWVyQ2hyb21pdW0qIGNhbGNEcmF3RXRjKFRlc3RDb250ZW50TGF5ZXJD
aHJvbWl1bSogcm9vdCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChyb290ID09IG1fcm9vdC5nZXQo
KSk7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlz
dDsKLSAgICAgICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7Ci0KLSAgICAgICAgQVNT
RVJUKCFyb290LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICByb290LT5jcmVhdGVSZW5kZXJT
dXJmYWNlKCk7Ci0gICAgICAgIHJvb3QtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3Qo
SW50UmVjdChJbnRQb2ludDo6emVybygpLCByb290LT5ib3VuZHMoKSkpOwotICAgICAgICByb290
LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHJvb3QtPmJvdW5kcygpKSk7
Ci0gICAgICAgIG1fcmVuZGVyU3VyZmFjZUxheWVyTGlzdENocm9taXVtLmFwcGVuZChtX3Jvb3Qp
OwotCi0gICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9y
bXNBbmRWaXNpYmlsaXR5KHJvb3QsIHJvb3QsIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJp
eCwgbV9yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0Q2hyb21pdW0sIGR1bW15TGF5ZXJMaXN0LCBkdW1t
eU1heFRleHR1cmVTaXplKTsKLSAgICAgICAgcmV0dXJuIHJvb3Q7Ci0gICAgfQogCisgICAgVmVj
dG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CisgICAg
VmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OworICAgIGludCBk
dW1teU1heFRleHR1cmVTaXplID0gNTEyOworCisgICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCkt
PnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMo
KSkpOworICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBw
YXJlbnQtPmJvdW5kcygpKSk7CisgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFy
ZW50KTsKKworICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9y
bXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJp
eCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0
LCBkdW1teU1heFRleHR1cmVTaXplKTsKKworICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2Nj
bHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgIG9jY2x1c2lvbi5zZXRMYXll
clNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworCisgICAgLy8gT3BhY2l0
eSBsYXllciB3b24ndCBjb250cmlidXRlIHRvIG9jY2x1c2lvbi4KKyAgICBvY2NsdXNpb24uZW50
ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKG9wYWNpdHlMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAg
ICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIob3BhY2l0eUxheWVyLmdldCgpKTsK
KyAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKG9wYWNpdHlMYXllci5n
ZXQoKSwgb3BhY2l0eUxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5pc0VtcHR5KCkpOworICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5pc0VtcHR5KCkpOwor
CisgICAgLy8gQW5kIGhhcyBub3RoaW5nIHRvIGNvbnRyaWJ1dGUgdG8gaXRzIHBhcmVudCBzdXJm
YWNlLgorICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJl
bmRlclN1cmZhY2UoKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1c2lvbkluU2Ny
ZWVuU3BhY2UoKS5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNp
b25JblRhcmdldFN1cmZhY2UoKS5pc0VtcHR5KCkpOworCisgICAgLy8gT3BhcXVlIGxheWVyIHdp
bGwgY29udHJpYnV0ZSB0byBvY2NsdXNpb24uCisgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVu
ZGVyU3VyZmFjZShvcGFxdWVMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBvY2NsdXNpb24u
bWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIob3BhcXVlTGF5ZXIuZ2V0KCkpOworICAgIG9jY2x1c2lv
bi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2Uob3BhcXVlTGF5ZXIuZ2V0KCksIG9wYXF1ZUxh
eWVyLT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwg
MzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkp
OworICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5y
ZWN0cygpLnNpemUoKSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCA0MzAsIDcwLCA3
MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAg
RVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMo
KS5zaXplKCkpOworCisgICAgLy8gQW5kIGl0IGdldHMgdHJhbnNsYXRlZCB0byB0aGUgcGFyZW50
IHN1cmZhY2UuCisgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVu
dC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwg
NzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Cisg
ICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3Rz
KCkuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICBFWFBF
Q1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNp
emUoKSk7CisKKyAgICAvLyBUaGUgYmx1ciBsYXllciBuZWVkcyB0byB0aHJvdyBhd2F5IGFueSBv
Y2NsdXNpb24gZnJvbSBvdXRzaWRlIGl0cyBzdWJ0cmVlLgorICAgIG9jY2x1c2lvbi5lbnRlclRh
cmdldFJlbmRlclN1cmZhY2UoYmx1ckxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuaXNFbXB0eSgpKTsKKyAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuaXNFbXB0
eSgpKTsKKworICAgIC8vIEFuZCBpdCB3b24ndCBjb250cmlidXRlIHRvIG9jY2x1c2lvbi4KKyAg
ICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoYmx1ckxheWVyLmdldCgpKTsKKyAg
ICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGJsdXJMYXllci5nZXQoKSwg
Ymx1ckxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdXNpb25JblNjcmVlblNwYWNlKCkuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuaXNFbXB0eSgpKTsKKworICAgIC8vIEJ1
dCB0aGUgb3BhcXVlIGxheWVyJ3Mgb2NjbHVzaW9uIGlzIHByZXNlcnZlZCBvbiB0aGUgcGFyZW50
LgorICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRl
clN1cmZhY2UoKSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCks
IG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgIEVYUEVD
VF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUo
KSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lv
bi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgRVhQRUNUX0VRKDF1
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwor
fQorCitURVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVz
dF9vY2NsdXNpb25JbnRlcmFjdGlvbldpdGhGaWx0ZXJzLCBvY2NsdXNpb25JbnRlcmFjdGlvbldp
dGhGaWx0ZXJzKTsKKwordm9pZCBsYXllclNjaXNzb3JSZWN0T3ZlclRpbGUoYm9vbCBvcGFxdWVM
YXllcnMpCit7CiAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7
CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0
ZSgpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gcGFy
ZW50TGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRl
bnQoKSk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBs
YXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgp
KTsKKyAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKKyAgICBwYXJlbnQtPmFkZENo
aWxkKHBhcmVudExheWVyKTsKKyAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVyKTsKKworICAgIEZp
bHRlck9wZXJhdGlvbnMgZmlsdGVyczsKKyAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQo
QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVy
T3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsKKyAgICBwYXJlbnRMYXllci0+c2V0RmlsdGVycyhmaWx0
ZXJzKTsKKyAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKKworICAgIHNldExheWVyUHJv
cGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRl
c3RpbmcocGFyZW50TGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDAp
LCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UsIG9wYXF1ZUxheWVycyk7CisgICAgc2V0TGF5ZXJQ
cm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOworCisgICAg
VmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Cisg
ICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OworICAgIGlu
dCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOworCisgICAgcGFyZW50LT5yZW5kZXJTdXJmYWNl
KCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3Vu
ZHMoKSkpOworICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygp
LCBwYXJlbnQtPmJvdW5kcygpKSk7CisgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQo
cGFyZW50KTsKKworICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5z
Zm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1h
dHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJM
aXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKKworICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIg
b2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgIG9jY2x1c2lvbi5zZXRM
YXllclNjaXNzb3JSZWN0KEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSk7CisKKyAgICBvY2Ns
dXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwor
CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0
KDAsIDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChs
YXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAw
KSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50
UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7CisKKyAg
ICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKKyAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAsIDEwMCwg
MTAwKSkpOworICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMjAwLCAx
MDAsIDEwMCwgMTAwKSk7CisKKyAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIo
bGF5ZXIuZ2V0KCkpOworICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShw
YXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVy
U3VyZmFjZShwYXJlbnRMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAs
IDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIu
Z2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEw
MCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0
KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEw
MCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0
KCksIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMjAwLCAxMDAsIDEwMCkp
KTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCks
IEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDAp
KSk7CisKKyAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5y
ZW5kZXJTdXJmYWNlKCkpOworCisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwg
MTAwLCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwg
SW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKK30KKworVEVTVF9PUEFRVUVfQU5EX1BBSU5URURf
T1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3RfbGF5ZXJTY2lzc29yUmVjdE92ZXJUaWxlLCBs
YXllclNjaXNzb3JSZWN0T3ZlclRpbGUpOworCit2b2lkIHNjcmVlblNjaXNzb3JSZWN0T3ZlclRp
bGUoYm9vbCBvcGFxdWVMYXllcnMpCit7CisgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgg
aWRlbnRpdHlNYXRyaXg7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVy
Q2hyb21pdW06OmNyZWF0ZSgpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERy
YXdzQ29udGVudD4gcGFyZW50TGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhG
b3JjZWREcmF3c0NvbnRlbnQoKSk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2Vk
RHJhd3NDb250ZW50PiBsYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNl
ZERyYXdzQ29udGVudCgpKTsKKyAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKKyAg
ICBwYXJlbnQtPmFkZENoaWxkKHBhcmVudExheWVyKTsKKyAgICBwYXJlbnQtPmFkZENoaWxkKGxh
eWVyKTsKIAotcHJpdmF0ZToKLSAgICB2b2lkIHNldEJhc2VQcm9wZXJ0aWVzKHR5cGVuYW1lIFR5
cGVzOjpMYXllclR5cGUqIGxheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNm
b3JtLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50U2l6ZSYgYm91bmRzKQot
ICAgIHsKLSAgICAgICAgbGF5ZXItPnNldFRyYW5zZm9ybSh0cmFuc2Zvcm0pOwotICAgICAgICBs
YXllci0+c2V0U3VibGF5ZXJUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7Ci0gICAg
ICAgIGxheWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKLSAgICAgICAgbGF5
ZXItPnNldFBvc2l0aW9uKHBvc2l0aW9uKTsKLSAgICAgICAgbGF5ZXItPnNldEJvdW5kcyhib3Vu
ZHMpOwotICAgIH0KLQotICAgIHZvaWQgc2V0UHJvcGVydGllcyhMYXllckNocm9taXVtKiBsYXll
ciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2lu
dCYgcG9zaXRpb24sIGNvbnN0IEludFNpemUmIGJvdW5kcykKLSAgICB7Ci0gICAgICAgIHNldEJh
c2VQcm9wZXJ0aWVzKGxheWVyLCB0cmFuc2Zvcm0sIHBvc2l0aW9uLCBib3VuZHMpOwotICAgIH0K
LQotICAgIHZvaWQgc2V0UHJvcGVydGllcyhDQ0xheWVySW1wbCogbGF5ZXIsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBj
b25zdCBJbnRTaXplJiBib3VuZHMpCi0gICAgewotICAgICAgICBzZXRCYXNlUHJvcGVydGllcyhs
YXllciwgdHJhbnNmb3JtLCBwb3NpdGlvbiwgYm91bmRzKTsKKyAgICBGaWx0ZXJPcGVyYXRpb25z
IGZpbHRlcnM7CisgICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50
VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9wZXJhdGlvbjo6R1JB
WVNDQUxFKSk7CisgICAgcGFyZW50TGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CisgICAgbGF5
ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CiAKLSAgICAgICAgbGF5ZXItPnNldENvbnRlbnRCb3Vu
ZHMobGF5ZXItPmJvdW5kcygpKTsKLSAgICB9CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVz
dGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRT
aXplKDMwMCwgMzAwKSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRM
YXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAw
LCAzMDApLCBmYWxzZSwgb3BhcXVlTGF5ZXJzKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JU
ZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50
U2l6ZSgyMDAsIDIwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7CiAKLSAgICAvLyBUaGVzZSBob2xk
IG93bmVyc2hpcCBvZiB0aGUgbGF5ZXJzIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIHRlc3QuCi0g
ICAgdHlwZW5hbWUgVHlwZXM6OkxheWVyUHRyVHlwZSBtX3Jvb3Q7Ci0gICAgVmVjdG9yPFJlZlB0
cjxMYXllckNocm9taXVtPiA+IG1fcmVuZGVyU3VyZmFjZUxheWVyTGlzdENocm9taXVtOwotICAg
IFZlY3RvcjxDQ0xheWVySW1wbCo+IG1fcmVuZGVyU3VyZmFjZUxheWVyTGlzdEltcGw7Ci19Owor
ICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0
OworICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKKyAg
ICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKIAotI2RlZmluZSBSVU5fVEVTVF9NQUlO
X1RIUkVBRF9PUEFRVUVfTEFZRVJTKENsYXNzTmFtZSkgXAotICAgIGNsYXNzIENsYXNzTmFtZSMj
TWFpblRocmVhZE9wYXF1ZUxheWVycyA6IHB1YmxpYyBDbGFzc05hbWU8Q0NPY2NsdXNpb25UcmFj
a2VyVGVzdE1haW5UaHJlYWRUeXBlcywgdHJ1ZT4geyB9OyBcCi0gICAgVEVTVF9GKENsYXNzTmFt
ZSMjTWFpblRocmVhZE9wYXF1ZUxheWVycywgcnVuVGVzdCkgeyBydW5NeVRlc3QoKTsgfQotI2Rl
ZmluZSBSVU5fVEVTVF9NQUlOX1RIUkVBRF9PUEFRVUVfUEFJTlRTKENsYXNzTmFtZSkgXAotICAg
IGNsYXNzIENsYXNzTmFtZSMjTWFpblRocmVhZE9wYXF1ZVBhaW50cyA6IHB1YmxpYyBDbGFzc05h
bWU8Q0NPY2NsdXNpb25UcmFja2VyVGVzdE1haW5UaHJlYWRUeXBlcywgZmFsc2U+IHsgfTsgXAot
ICAgIFRFU1RfRihDbGFzc05hbWUjI01haW5UaHJlYWRPcGFxdWVQYWludHMsIHJ1blRlc3QpIHsg
cnVuTXlUZXN0KCk7IH0KLQotI2RlZmluZSBSVU5fVEVTVF9JTVBMX1RIUkVBRF9PUEFRVUVfTEFZ
RVJTKENsYXNzTmFtZSkgXAotICAgIGNsYXNzIENsYXNzTmFtZSMjSW1wbFRocmVhZE9wYXF1ZUxh
eWVycyA6IHB1YmxpYyBDbGFzc05hbWU8Q0NPY2NsdXNpb25UcmFja2VyVGVzdEltcGxUaHJlYWRU
eXBlcywgdHJ1ZT4geyBcCi0gICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOyBc
Ci0gICAgfTsgXAotICAgIFRFU1RfRihDbGFzc05hbWUjI0ltcGxUaHJlYWRPcGFxdWVMYXllcnMs
IHJ1blRlc3QpIHsgcnVuTXlUZXN0KCk7IH0KLSNkZWZpbmUgUlVOX1RFU1RfSU1QTF9USFJFQURf
T1BBUVVFX1BBSU5UUyhDbGFzc05hbWUpIFwKLSAgICBjbGFzcyBDbGFzc05hbWUjI0ltcGxUaHJl
YWRPcGFxdWVQYWludHMgOiBwdWJsaWMgQ2xhc3NOYW1lPENDT2NjbHVzaW9uVHJhY2tlclRlc3RJ
bXBsVGhyZWFkVHlwZXMsIGZhbHNlPiB7IFwKLSAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhy
ZWFkIGltcGw7IFwKLSAgICB9OyBcCi0gICAgVEVTVF9GKENsYXNzTmFtZSMjSW1wbFRocmVhZE9w
YXF1ZVBhaW50cywgcnVuVGVzdCkgeyBydW5NeVRlc3QoKTsgfQotCi0jZGVmaW5lIEFMTF9DQ09D
Q0xVU0lPTlRSQUNLRVJfVEVTVChDbGFzc05hbWUpIFwKLSAgICBSVU5fVEVTVF9NQUlOX1RIUkVB
RF9PUEFRVUVfTEFZRVJTKENsYXNzTmFtZSkgXAotICAgIFJVTl9URVNUX01BSU5fVEhSRUFEX09Q
QVFVRV9QQUlOVFMoQ2xhc3NOYW1lKSBcCi0gICAgUlVOX1RFU1RfSU1QTF9USFJFQURfT1BBUVVF
X0xBWUVSUyhDbGFzc05hbWUpIFwKLSAgICBSVU5fVEVTVF9JTVBMX1RIUkVBRF9PUEFRVUVfUEFJ
TlRTKENsYXNzTmFtZSkKLQotI2RlZmluZSBNQUlOX0FORF9JTVBMX1RIUkVBRF9URVNUKENsYXNz
TmFtZSkgXAotICAgIFJVTl9URVNUX01BSU5fVEhSRUFEX09QQVFVRV9MQVlFUlMoQ2xhc3NOYW1l
KSBcCi0gICAgUlVOX1RFU1RfSU1QTF9USFJFQURfT1BBUVVFX0xBWUVSUyhDbGFzc05hbWUpCi0K
LXRlbXBsYXRlPGNsYXNzIFR5cGVzLCBib29sIG9wYXF1ZUxheWVycz4KLWNsYXNzIENDT2NjbHVz
aW9uVHJhY2tlclRlc3RJZGVudGl0eVRyYW5zZm9ybXMgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFj
a2VyVGVzdDxUeXBlcywgb3BhcXVlTGF5ZXJzPiB7Ci1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBydW5N
eVRlc3QoKQotICAgIHsKLSAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUq
IHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKLSAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNv
bnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKHBhcmVudCwg
dGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUw
MCksIHRydWUpOwotICAgICAgICB0aGlzLT5jYWxjRHJhd0V0YyhwYXJlbnQpOworICAgIHBhcmVu
dC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJv
KCksIHBhcmVudC0+Ym91bmRzKCkpKTsKKyAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3Qo
SW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOworICAgIHJlbmRlclN1cmZhY2VM
YXllckxpc3QuYXBwZW5kKHBhcmVudCk7CiAKLSAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tl
ckJhc2U8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1
cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgICAg
IG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkp
OworICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRW
aXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRl
bnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1t
eU1heFRleHR1cmVTaXplKTsKIAotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJT
dXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtP
Y2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91
bmRzKCkpOwotICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVl
blNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0
KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJv
dW5kcygpKTsKLSAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJn
ZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDMwLCA3MCwgNzApKSk7Ci0gICAgICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDI5LCAzMCwg
NzAsIDcwKSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dCwgSW50UmVjdCgzMCwgMjksIDcwLCA3MCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzEsIDMwLCA3MCwgNzApKSk7Ci0gICAgICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCAzMSwg
NzAsIDcwKSkpOwotCi0gICAgICAgIG9jY2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJTY2lzc29yUmVj
dCgpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRS
ZWN0KDMwLCAzMCwgNzAsIDcwKSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyOSwgMzAsIDcwLCA3MCkpKTsKLSAgICAgICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDI5LCA3MCwgNzAp
KSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJl
Y3QoMzEsIDMwLCA3MCwgNzApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDMxLCA3MCwgNzApKSk7Ci0gICAgICAgIG9jY2x1c2lv
bi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotCi0gICAg
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJ
bnRSZWN0KDMwLCAzMCwgNzAsIDcwKSkuaXNFbXB0eSgpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgyOSwgMzAsIDEsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChwYXJlbnQsIEludFJlY3QoMjksIDMwLCA3MCwgNzApKSk7Ci0gICAgICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoMjksIDI5LCA3MCwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHBhcmVudCwgSW50UmVjdCgyOSwgMjksIDcwLCA3MCkpKTsKLSAgICAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgzMCwgMjksIDcwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50
UmVjdChwYXJlbnQsIEludFJlY3QoMzAsIDI5LCA3MCwgNzApKSk7Ci0gICAgICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoMzEsIDI5LCA3MCwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRl
bnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMSwgMjksIDcwLCA3MCkpKTsKLSAgICAgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgxMDAsIDMwLCAxLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMxLCAzMCwgNzAsIDcwKSkpOwotICAgICAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDMxLCAzMSwgNzAsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzEsIDMxLCA3MCwgNzApKSk7Ci0gICAgICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDEwMCwgNzAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRl
ZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMCwgMzEsIDcwLCA3MCkpKTsKLSAgICAgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwgMzEsIDcwLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDI5LCAzMSwgNzAsIDcwKSkpOwotICAgIH0K
LX07CisgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgyMDAsIDEw
MCwgMTAwLCAxMDApKTsKIAotQUxMX0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9u
VHJhY2tlclRlc3RJZGVudGl0eVRyYW5zZm9ybXMpOworICAgIG9jY2x1c2lvbi5lbnRlclRhcmdl
dFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CiAKLXRlbXBsYXRlPGNsYXNz
IFR5cGVzLCBib29sIG9wYXF1ZUxheWVycz4KLWNsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RS
b3RhdGVkQ2hpbGQgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxUeXBlcywgb3BhcXVl
TGF5ZXJzPiB7Ci1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBydW5NeVRlc3QoKQotICAgIHsKLSAgICAg
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJUcmFuc2Zvcm07Ci0gICAgICAgIGxheWVyVHJh
bnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7Ci0gICAgICAgIGxheWVyVHJhbnNmb3JtLnJvdGF0
ZSg5MCk7Ci0gICAgICAgIGxheWVyVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKKyAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwg
MCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVy
LmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7
CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0
KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKIAotICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVu
dExheWVyVHlwZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJp
eCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpOwotICAgICAgICB0eXBlbmFt
ZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5
ZXIocGFyZW50LCBsYXllclRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUw
MCwgNTAwKSwgdHJ1ZSk7Ci0gICAgICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CisgICAg
Ly8gT2NjbHVkZWQgc2luY2UgaXRzIG91dHNpZGUgdGhlIHN1cmZhY2UgYm91bmRzLgorICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDEw
MCwgMTAwLCAxMDApKSk7CiAKLSAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8dHlw
ZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBl
PiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgICAgIG9jY2x1c2lv
bi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgIC8v
IFRlc3Qgd2l0aG91dCBhbnkgc2Npc3NvcnMuCisgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3Nv
clJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7
CisgICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7CiAKLSAgICAgICAg
b2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2Uo
KSk7Ci0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7Ci0g
ICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzApLCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICAgICAgRVhQRUNUX0VRKDF1
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAg
ICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgx
dSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsK
LQotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0
KDMwLCAzMCwgNzAsIDcwKSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudCwgSW50UmVjdCgyOSwgMzAsIDcwLCA3MCkpKTsKLSAgICAgICAgRVhQRUNUX0ZB
TFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDI5LCA3MCwgNzApKSk7
Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0
KDMxLCAzMCwgNzAsIDcwKSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgMzEsIDcwLCA3MCkpKTsKLQotICAgICAgICBvY2NsdXNp
b24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgMzAsIDcwLCA3MCkpKTsKLSAgICAg
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjksIDMw
LCA3MCwgNzApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LCBJbnRSZWN0KDMwLCAyOSwgNzAsIDcwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMxLCAzMCwgNzAsIDcwKSkpOwotICAgICAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCAzMSwg
NzAsIDcwKSkpOwotICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0
KDAsIDAsIDEwMDAsIDEwMDApKTsKLQotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5v
Y2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMCwgMzAsIDcwLCA3MCkpLmlzRW1w
dHkoKSk7Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjksIDMwLCAxLCA3MCksIG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDI5LCAzMCwgNzAs
IDcwKSkpOwotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDI5LCAyOSwgNzAsIDcwKSwg
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMjksIDI5LCA3
MCwgNzApKSk7Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDI5LCA3MCwgMSks
IG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMwLCAyOSwg
NzAsIDcwKSkpOwotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMxLCAyOSwgNzAsIDcw
KSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzEsIDI5
LCA3MCwgNzApKSk7Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCAzMCwgMSwg
NzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMSwg
MzAsIDcwLCA3MCkpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMSwgMzEsIDcw
LCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMx
LCAzMSwgNzAsIDcwKSkpOwotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAxMDAs
IDcwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3Qo
MzAsIDMxLCA3MCwgNzApKSk7Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjksIDMx
LCA3MCwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVj
dCgyOSwgMzEsIDcwLCA3MCkpKTsKLSAgICB9Ci19OworICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVk
ZWRCZWhpbmRMYXllcihsYXllci5nZXQoKSk7CisgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRS
ZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBvY2NsdXNpb24uZW50
ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudExheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwogCi1B
TExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdFJvdGF0ZWRD
aGlsZCk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdl
dCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkp
OworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwg
SW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwor
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIElu
dFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkpOwor
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50
UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKSk7Cisg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRS
ZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKIAotdGVtcGxhdGU8Y2xhc3MgVHlwZXMsIGJvb2wg
b3BhcXVlTGF5ZXJzPgotY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdFRyYW5zbGF0ZWRDaGls
ZCA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PFR5cGVzLCBvcGFxdWVMYXllcnM+IHsK
LXByb3RlY3RlZDoKLSAgICB2b2lkIHJ1bk15VGVzdCgpCi0gICAgewotICAgICAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBsYXllclRyYW5zZm9ybTsKLSAgICAgICAgbGF5ZXJUcmFuc2Zvcm0udHJh
bnNsYXRlKDIwLCAyMCk7CisgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNl
KHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKIAotICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29u
dGVudExheWVyVHlwZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1h
dHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpOwotICAgICAgICB0eXBl
bmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5n
TGF5ZXIocGFyZW50LCBsYXllclRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXpl
KDUwMCwgNTAwKSwgdHJ1ZSk7Ci0gICAgICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7Cisg
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApLCBvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAsIDMw
MCkpKTsKK30KIAotICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTx0eXBlbmFtZSBU
eXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1
c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICAgICAgb2NjbHVzaW9uLnNldExh
eWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CitURVNUX09QQVFVRV9B
TkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9zY3JlZW5TY2lzc29yUmVj
dE92ZXJUaWxlLCBzY3JlZW5TY2lzc29yUmVjdE92ZXJUaWxlKTsKIAotICAgICAgICBvY2NsdXNp
b24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAg
ICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKLSAgICAgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwgNTAsIDUwLCA1MCksIG9jY2x1c2lvbi5vY2NsdXNp
b25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1
c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwotICAgICAgICBF
WFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUwLCA1MCwgNTAsIDUwKSwgb2NjbHVzaW9uLm9jY2x1c2lv
bkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2Ns
dXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0gICAg
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoNTAsIDUw
LCA1MCwgNTApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LCBJbnRSZWN0KDQ5LCA1MCwgNTAsIDUwKSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCg1MCwgNDksIDUwLCA1MCkpKTsKLSAgICAg
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoNTEsIDUw
LCA1MCwgNTApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LCBJbnRSZWN0KDUwLCA1MSwgNTAsIDUwKSkpOwotCi0gICAgICAgIG9jY2x1c2lvbi51c2VE
ZWZhdWx0TGF5ZXJTY2lzc29yUmVjdCgpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDUwLCA1MCwgNTAsIDUwKSkpOwotICAgICAgICBFWFBF
Q1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCg0OSwgNTAsIDUwLCA1
MCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIElu
dFJlY3QoNTAsIDQ5LCA1MCwgNTApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnQsIEludFJlY3QoNTEsIDUwLCA1MCwgNTApKSk7Ci0gICAgICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoNTAsIDUxLCA1MCwgNTAp
KSk7Ci0gICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwg
MTAwMCwgMTAwMCkpOwotCi0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVk
Q29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDUwLCA1MCwgNTAsIDUwKSkuaXNFbXB0eSgpKTsK
LSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg0OSwgNTAsIDEsIDUwKSwgb2NjbHVzaW9u
LnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoNDksIDUwLCA1MCwgNTApKSk7
Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNDksIDQ5LCA1MCwgNTApLCBvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCg0OSwgNDksIDUwLCA1MCkp
KTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwgNDksIDUwLCAxKSwgb2NjbHVz
aW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoNTAsIDQ5LCA1MCwgNTAp
KSk7Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTEsIDQ5LCA1MCwgNTApLCBvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCg1MSwgNDksIDUwLCA1
MCkpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDUwLCAxLCA1MCksIG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDUxLCA1MCwgNTAs
IDUwKSkpOwotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUxLCA1MSwgNTAsIDUwKSwg
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoNTEsIDUxLCA1
MCwgNTApKSk7Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTAsIDEwMCwgNTAsIDEp
LCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCg1MCwgNTEs
IDUwLCA1MCkpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg0OSwgNTEsIDUwLCA1
MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDQ5LCA1
MSwgNTAsIDUwKSkpOwotCi0gICAgICAgIG9jY2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJTY2lzc29y
UmVjdCgpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHBhcmVudCwgSW50UmVjdCg1MCwgNTAsIDUwLCA1MCkpLmlzRW1wdHkoKSk7Ci0gICAgICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNDksIDUwLCAxLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDQ5LCA1MCwgNTAsIDUwKSkpOwotICAgICAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDQ5LCA0OSwgNTAsIDUwKSwgb2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoNDksIDQ5LCA1MCwgNTApKSk7Ci0gICAg
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTAsIDQ5LCA1MCwgMSksIG9jY2x1c2lvbi51bm9j
Y2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDUwLCA0OSwgNTAsIDUwKSkpOwotICAg
ICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUxLCA0OSwgNDksIDEpLCBvY2NsdXNpb24udW5v
Y2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCg1MSwgNDksIDUwLCA1MCkpKTsKLSAg
ICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQs
IEludFJlY3QoNTEsIDUwLCA1MCwgNTApKS5pc0VtcHR5KCkpOwotICAgICAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCg1MSwgNTEs
IDUwLCA1MCkpLmlzRW1wdHkoKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9j
Y2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDUwLCA1MSwgNTAsIDUwKSkuaXNFbXB0
eSgpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg0OSwgNTEsIDEsIDQ5KSwgb2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoNDksIDUxLCA1MCwg
NTApKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwg
MCwgMTAwMCwgMTAwMCkpOwotICAgIH0KLX07Ci0KLUFMTF9DQ09DQ0xVU0lPTlRSQUNLRVJfVEVT
VChDQ09jY2x1c2lvblRyYWNrZXJUZXN0VHJhbnNsYXRlZENoaWxkKTsKLQotdGVtcGxhdGU8Y2xh
c3MgVHlwZXMsIGJvb2wgb3BhcXVlTGF5ZXJzPgotY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVz
dENoaWxkSW5Sb3RhdGVkQ2hpbGQgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxUeXBl
cywgb3BhcXVlTGF5ZXJzPiB7Ci1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBydW5NeVRlc3QoKQotICAg
IHsKLSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY2hpbGRUcmFuc2Zvcm07Ci0gICAgICAg
IGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7Ci0gICAgICAgIGNoaWxkVHJhbnNm
b3JtLnJvdGF0ZSg5MCk7Ci0gICAgICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAt
MjUwKTsKK3ZvaWQgbGF5ZXJTY2lzc29yUmVjdE92ZXJDdWxsZWRUaWxlKGJvb2wgb3BhcXVlTGF5
ZXJzKQoreworICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4Owor
ICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUo
KTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IHBhcmVu
dExheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50
KCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5
ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7
CisgICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CisgICAgcGFyZW50LT5hZGRDaGls
ZChwYXJlbnRMYXllcik7CisgICAgcGFyZW50LT5hZGRDaGlsZChsYXllcik7CiAKLSAgICAgICAg
dHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJv
b3QodGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAx
MDApKTsKLSAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSogY2hpbGQgPSB0aGlzLT5j
cmVhdGVMYXllcihwYXJlbnQsIGNoaWxkVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIElu
dFNpemUoNTAwLCA1MDApKTsKLSAgICAgICAgY2hpbGQtPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7
Ci0gICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMt
PmNyZWF0ZURyYXdpbmdMYXllcihjaGlsZCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMTAsIDEwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUpOwotICAgICAgICB0aGlzLT5jYWxj
RHJhd0V0YyhwYXJlbnQpOworICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKKyAgICBmaWx0
ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJh
dGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsKKyAgICBwYXJl
bnRMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKKyAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0
ZXJzKTsKIAotICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTx0eXBlbmFtZSBUeXBl
czo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lv
bihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICAgICAgb2NjbHVzaW9uLnNldExheWVy
U2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgc2V0TGF5ZXJQcm9w
ZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVz
dGluZyhwYXJlbnRMYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCks
IEludFNpemUoMzAwLCAzMDApLCBmYWxzZSwgb3BhcXVlTGF5ZXJzKTsKKyAgICBzZXRMYXllclBy
b3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7CiAKLSAgICAg
ICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZC0+cmVuZGVyU3VyZmFj
ZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsK
KyAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlz
dDsKKyAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7Cisg
ICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7CiAKLSAgICAgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgzMCwgNDAsIDcwLCA2MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNw
YWNlKCkuYm91bmRzKCkpOwotICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNp
b25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwotICAgICAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1
cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1
c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAgICAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSkp
OwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0
KDksIDQzMCwgNjAsIDcwKSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKGNoaWxkLCBJbnRSZWN0KDEwLCA0MjksIDYwLCA3MCkpKTsKLSAgICAgICAgRVhQRUNUX0ZB
TFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCgxMCwgNDMwLCA2MSwgNzApKSk7
Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3Qo
MTAsIDQzMCwgNjAsIDcxKSkpOwotCi0gICAgICAgIG9jY2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJT
Y2lzc29yUmVjdCgpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hp
bGQsIEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoOSwgNDMwLCA2MCwgNzApKSk7Ci0gICAgICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCgxMCwgNDI5LCA2
MCwgNzApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwg
SW50UmVjdCgxMCwgNDMwLCA2MSwgNzApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzEpKSk7Ci0gICAgICAgIG9j
Y2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwot
Ci0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZCk7Ci0gICAg
ICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQsIGNoaWxkLT5y
ZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1
cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoMzAsIDQwLCA3MCwgNjApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFj
ZSgpLmJvdW5kcygpKTsKLSAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9u
SW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCgzMCwgNDAsIDcwLCA2MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZh
Y2UoKS5ib3VuZHMoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lv
bkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAgICAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSkpOwot
ICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgy
OSwgNDAsIDcwLCA2MCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQsIEludFJlY3QoMzAsIDM5LCA3MCwgNjApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMxLCA0MCwgNzAsIDYwKSkpOwot
ICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgz
MCwgNDEsIDcwLCA2MCkpKTsKLQotICAgICAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Np
c3NvclJlY3QoKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dCwgSW50UmVjdCgzMCwgNDAsIDcwLCA2MCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjksIDQwLCA3MCwgNjApKSk7Ci0gICAgICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCAzOSwg
NzAsIDYwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LCBJbnRSZWN0KDMxLCA0MCwgNzAsIDYwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCA0MSwgNzAsIDYwKSkpOwotICAgICAgICBv
Y2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsK
LQotCi0gICAgICAgIC8qIEp1c3RpZmljYXRpb24gZm9yIHRoZSBhYm92ZSBvY2NsdXNpb24gZnJv
bSB8bGF5ZXJ8OgotICAgICAgICAgICAgICAgICAgIDEwMAotICAgICAgICAgICstLS0tLS0tLS0t
LS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKwotICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfDMw
ICBWaXNpYmxlIHJlZ2lvbiBvZiB8bGF5ZXJ8OiAvLy8vLwotICAgICAgICAgIHwgICAgMzAgICAg
ICAgICAgICAgICB8ICAgICAgICAgICByb3RhdGUoOTApICAgICAgICAgICAgICAgICB8ICAgICAg
ICAgICAgICAgICAgICAgfAotICAgICAgICAgIHwgMzAgKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICB8ICAgICArLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKwotICAgICAgMTAwIHwgICAgfCAgMTAgICAgICAgICAgICB8ICAgICAg
ICAgICAgICAgICB8ICAgICAgICAgICAgPT0+ICAgICB8ICAgICB8ICAgICAgICAgICAgICAgfDEw
ICAgICAgICAgICAgICAgfAotICAgICAgICAgIHwgICAgfDEwKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICB8ICArLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKyAgfAotICAgICAgICAgIHwgICAgfCAgfCAgICAgICAgICAgICB8ICAgICAg
ICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICB8ICB8ICB8Ly8vLy8vLy8vLy8vLy8vfCAg
ICAgNDIwICAgICAgfCAgfAotICAgICAgICAgIHwgICAgfCAgfCAgICAgICAgICAgICB8ICAgICAg
ICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICB8ICB8ICB8Ly8vLy8vLy8vLy8vLy8vfDYw
ICAgICAgICAgICAgfCAgfAotICAgICAgICAgIHwgICAgfCAgfCAgICAgICAgICAgICB8ICAgICAg
ICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICB8ICB8ICB8Ly8vLy8vLy8vLy8vLy8vfCAg
ICAgICAgICAgICAgfCAgfAotICAgICAgICAgICstLS0tfC0tfC0tLS0tLS0tLS0tLS0rICAgICAg
ICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICArLS18LS18LS0tLS0tLS0tLS0tLS0tKyAg
ICAgICAgICAgICAgfCAgfAotICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgMjB8MTB8ICAgICA3MCAgICAgICAgICAg
ICAgICAgICAgICAgfCAgfAotICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgfAotICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8IHw1MDAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgfAotICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgfAotICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgfAotICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgfAotICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfDEwfAotICAgICAgICAgICAgICAgKy0tfC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rIHwgICAgICAgICAgICAgICAgICAgICB8ICArLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tfC0tKwotICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICA0OTAg
ICAgICAgICAgICAgfAotICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTAwICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MDAKLSAgICAgICAg
ICovCi0gICAgfQotfTsKKyAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJl
Y3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7CisgICAgcGFy
ZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRz
KCkpKTsKKyAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOwogCi1BTExf
Q0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdENoaWxkSW5Sb3Rh
dGVkQ2hpbGQpOworICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5z
Zm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1h
dHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJM
aXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKIAotdGVtcGxhdGU8Y2xhc3MgVHlwZXMsIGJvb2wg
b3BhcXVlTGF5ZXJzPgotY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdFZpc2l0VGFyZ2V0VHdv
VGltZXMgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxUeXBlcywgb3BhcXVlTGF5ZXJz
PiB7Ci1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBydW5NeVRlc3QoKQotICAgIHsKLSAgICAgICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggY2hpbGRUcmFuc2Zvcm07Ci0gICAgICAgIGNoaWxkVHJhbnNmb3Jt
LnRyYW5zbGF0ZSgyNTAsIDI1MCk7Ci0gICAgICAgIGNoaWxkVHJhbnNmb3JtLnJvdGF0ZSg5MCk7
Ci0gICAgICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKLQotICAgICAg
ICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRl
Um9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAs
IDEwMCkpOwotICAgICAgICB0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlKiBjaGlsZCA9IHRoaXMt
PmNyZWF0ZUxheWVyKHBhcmVudCwgY2hpbGRUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwg
SW50U2l6ZSg1MDAsIDUwMCkpOwotICAgICAgICBjaGlsZC0+c2V0TWFza3NUb0JvdW5kcyh0cnVl
KTsKLSAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhp
cy0+Y3JlYXRlRHJhd2luZ0xheWVyKGNoaWxkLCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQ
b2ludCgxMCwgMTApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7Ci0gICAgICAgIC8vIHxjaGls
ZDJ8IG1ha2VzIHxwYXJlbnR8J3Mgc3VyZmFjZSBnZXQgY29uc2lkZXJlZCBieSBDQ09jY2x1c2lv
blRyYWNrZXIgZmlyc3QsIGluc3RlYWQgb2YgfGNoaWxkfCdzLiBUaGlzIGV4ZXJjaXNlcyBkaWZm
ZXJlbnQgY29kZSBpbgotICAgICAgICAvLyBsZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZSwgYXMg
dGhlIHRhcmdldCBzdXJmYWNlIGhhcyBhbHJlYWR5IGJlZW4gc2Vlbi4KLSAgICAgICAgdHlwZW5h
bWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGNoaWxkMiA9IHRoaXMtPmNyZWF0ZURyYXdpbmdM
YXllcihwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDMwLCAzMCksIElu
dFNpemUoNjAsIDIwKSwgdHJ1ZSk7Ci0gICAgICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7
Ci0KLSAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6Okxh
eWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50
UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNz
b3JSZWN0KEludFJlY3QoLTEwLCAtMTAsIDEwMDAsIDEwMDApKTsKKyAgICBUZXN0Q0NPY2NsdXNp
b25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICBvY2Ns
dXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpOwog
Ci0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5k
ZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIo
Y2hpbGQyKTsKKyAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5y
ZW5kZXJTdXJmYWNlKCkpOwogCi0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMw
LCA2MCwgMjApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsK
LSAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgp
LnJlY3RzKCkuc2l6ZSgpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAs
IDYwLCAyMCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7
Ci0gICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFj
ZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5k
ZXJTdXJmYWNlKGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2NsdXNpb24ubWFy
a09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOwotCi0gICAgICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoMzAsIDMwLCA3MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgp
LmJvdW5kcygpKTsKLSAgICAgICAgRVhQRUNUX0VRKDJ1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5T
Y3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCgxMCwgNDMwLCA2MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNl
KCkuYm91bmRzKCkpOwotICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25J
blRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICAgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MCkpKTsKLSAg
ICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCg5LCA0
MzAsIDYwLCA3MCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChj
aGlsZCwgSW50UmVjdCgxMCwgNDI5LCA2MCwgNzApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoMTEsIDQzMCwgNjAsIDcwKSkpOwotICAg
ICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDEwLCA0
MzEsIDYwLCA3MCkpKTsKLQotICAgICAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3Nv
clJlY3QoKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJ
bnRSZWN0KDEwLCA0MzAsIDYwLCA3MCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDksIDQzMCwgNjAsIDcwKSkpOwotICAgICAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoMTAsIDQyOSwgNjAsIDcw
KSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJl
Y3QoMTEsIDQzMCwgNjAsIDcwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQoY2hpbGQsIEludFJlY3QoMTAsIDQzMSwgNjAsIDcwKSkpOwotICAgICAgICBvY2NsdXNp
b24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KC0xMCwgLTEwLCAxMDAwLCAxMDAwKSk7Ci0K
LSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGls
ZCwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzApKS5pc0VtcHR5KCkpOwotICAgICAgICAvLyBUaGlz
IGlzIHRoZSBsaXR0bGUgcGllY2Ugbm90IG9jY2x1ZGVkIGJ5IGNoaWxkMgotICAgICAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDksIDQzMCwgMSwgMTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KGNoaWxkLCBJbnRSZWN0KDksIDQzMCwgNjAsIDcwKSkpOwotICAgICAgICAvLyBU
aGlzIGV4dGVuZHMgcGFzdCBib3RoIHNpZGVzIG9mIGNoaWxkMiwgc28gaXQgd2lsbCBiZSB0aGUg
b3JpZ2luYWwgcmVjdC4KLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg5LCA0MzAsIDYw
LCA4MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIEludFJlY3QoOSwg
NDMwLCA2MCwgODApKSk7Ci0gICAgICAgIC8vIFRoaXMgZXh0ZW5kcyBwYXN0IHR3byBhZGphY2Vu
dCBzaWRlcyBvZiBjaGlsZDIsIGFuZCBzaG91bGQgaW5jbHVkZWQgdGhlIHVub2NjbHVkZWQgcGFy
dHMgb2YgZWFjaCBzaWRlLgotICAgICAgICAvLyBUaGlzIGFsc28gZGVtb25zdHJhdGVzIHRoYXQg
dGhlIHJlY3QgY2FuIGJlIGFyYml0cmFyeSBhbmQgZG9lcyBub3QgZ2V0IGNsaXBwZWQgdG8gdGhl
IGxheWVyJ3MgdmlzaWJsZUxheWVyUmVjdCgpLgotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KC0xMCwgNDMwLCAyMCwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNo
aWxkLCBJbnRSZWN0KC0xMCwgNDMwLCA2MCwgNzApKSk7Ci0gICAgICAgIC8vIFRoaXMgZXh0ZW5k
cyBwYXN0IHRocmVlIGFkamFjZW50IHNpZGVzIG9mIGNoaWxkMiwgc28gaXQgc2hvdWxkIGNvbnRh
aW4gdGhlIHVub2NjbHVkZWQgcGFydHMgb2YgZWFjaCBzaWRlLiBUaGUgbGVmdAotICAgICAgICAv
LyBhbmQgYm90dG9tIGVkZ2VzIGFyZSBjb21wbGV0ZWx5IHVub2NjbHVkZWQgZm9yIHNvbWUgcm93
L2NvbHVtbiBzbyB3ZSBnZXQgYmFjayB0aGUgb3JpZ2luYWwgcXVlcnkgcmVjdC4KLSAgICAgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgtMTAsIDQzMCwgNjAsIDgwKSwgb2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVjdCgtMTAsIDQzMCwgNjAsIDgwKSkpOwotICAg
ICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCA0MjksIDYwLCAxKSwgb2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVjdCgxMCwgNDI5LCA2MCwgNzApKSk7Ci0g
ICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNzAsIDQzMCwgMSwgNzApLCBvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLCBJbnRSZWN0KDExLCA0MzAsIDYwLCA3MCkpKTsK
LSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgNTAwLCA2MCwgMSksIG9jY2x1c2lv
bi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIEludFJlY3QoMTAsIDQzMSwgNjAsIDcwKSkp
OwotCi0gICAgICAgIG9jY2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJTY2lzc29yUmVjdCgpOwotICAg
ICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLCBJ
bnRSZWN0KDEwLCA0MzAsIDYwLCA3MCkpLmlzRW1wdHkoKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIEludFJlY3QoOSwgNDMwLCA2
MCwgNzApKS5pc0VtcHR5KCkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KGNoaWxkLCBJbnRSZWN0KDksIDQzMCwgNjAsIDgwKSkuaXNFbXB0eSgp
KTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChj
aGlsZCwgSW50UmVjdCgtMTAsIDQzMCwgNjAsIDcwKSkuaXNFbXB0eSgpKTsKLSAgICAgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVjdCgt
MTAsIDQzMCwgNjAsIDgwKSkuaXNFbXB0eSgpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVjdCgxMCwgNDI5LCA2MCwgNzAp
KS5pc0VtcHR5KCkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KGNoaWxkLCBJbnRSZWN0KDExLCA0MzAsIDYwLCA3MCkpLmlzRW1wdHkoKSk7Ci0g
ICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQs
IEludFJlY3QoMTAsIDQzMSwgNjAsIDcwKSkuaXNFbXB0eSgpKTsKLSAgICAgICAgb2NjbHVzaW9u
LnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0KLSAgICAg
ICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkKTsKLSAgICAgICAgLy8g
fGNoaWxkMnwgc2hvdWxkIGdldCBtZXJnZWQgd2l0aCB0aGUgc3VyZmFjZSB3ZSBhcmUgbGVhdmlu
ZyBub3cKLSAgICAgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGls
ZCwgY2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFy
Z2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICAgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25J
blNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgICAgICBFWFBFQ1RfRVEoMnUsIG9jY2x1c2lv
bi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwotICAgICAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbklu
VGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICAgICAgRVhQRUNUX0VRKDJ1LCBvY2NsdXNp
b24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0gICAgICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCAzMCwg
NzAsIDcwKSkpOwotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDkwLCAzMCwgMTAsIDEw
KSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzAsIDMw
LCA3MCwgNzApKSk7Ci0KLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudCwgSW50UmVjdCgzMCwgMzAsIDYwLCAxMCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjksIDMwLCA2MCwgMTApKSk7Ci0gICAg
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCAy
OSwgNjAsIDEwKSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudCwgSW50UmVjdCgzMSwgMzAsIDYwLCAxMCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgMzEsIDYwLCAxMCkpKTsKLQotICAg
ICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCA0
MCwgNzAsIDYwKSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudCwgSW50UmVjdCgyOSwgNDAsIDcwLCA2MCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDM5LCA3MCwgNjApKSk7Ci0KLSAg
ICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQs
IEludFJlY3QoMzAsIDMwLCA2MCwgMTApKS5pc0VtcHR5KCkpOwotICAgICAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDI5LCAzMCwgMSwgMTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHBhcmVudCwgSW50UmVjdCgyOSwgMzAsIDYwLCAxMCkpKTsKLSAgICAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgzMCwgMjksIDYwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50
UmVjdChwYXJlbnQsIEludFJlY3QoMzAsIDI5LCA2MCwgMTApKSk7Ci0gICAgICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoOTAsIDMwLCAxLCAxMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVu
dFJlY3QocGFyZW50LCBJbnRSZWN0KDMxLCAzMCwgNjAsIDEwKSkpOwotICAgICAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMCwg
MzEsIDYwLCAxMCkpLmlzRW1wdHkoKSk7Ci0KLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
LnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzAsIDQwLCA3MCwgNjApKS5p
c0VtcHR5KCkpOwotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDI5LCA0MCwgMSwgNjAp
LCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgyOSwgNDAs
IDcwLCA2MCkpKTsKLSAgICAgICAgLy8gVGhpcyByZWN0IGlzIG1vc3RseSBvY2NsdWRlZCBieSB8
Y2hpbGQyfC4KLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg5MCwgMzksIDEwLCAxKSwg
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzAsIDM5LCA3
MCwgNjApKSk7Ci0gICAgICAgIC8vIFRoaXMgcmVjdCBleHRlbmRzIHBhc3QgdG9wL3JpZ2h0IGVu
ZHMgb2YgfGNoaWxkMnwuCi0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDI5LCA3
MCwgMTEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgz
MCwgMjksIDcwLCA3MCkpKTsKLSAgICAgICAgLy8gVGhpcyByZWN0IGV4dGVuZHMgcGFzdCBsZWZ0
L3JpZ2h0IGVuZHMgb2YgfGNoaWxkMnwuCi0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
MjAsIDM5LCA4MCwgNjApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwg
SW50UmVjdCgyMCwgMzksIDgwLCA2MCkpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgxMDAsIDQwLCAxLCA2MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50
LCBJbnRSZWN0KDMxLCA0MCwgNzAsIDYwKSkpOwotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KDMwLCAxMDAsIDcwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJl
bnQsIEludFJlY3QoMzAsIDQxLCA3MCwgNjApKSk7Ci0KLSAgICAgICAgLyogSnVzdGlmaWNhdGlv
biBmb3IgdGhlIGFib3ZlIG9jY2x1c2lvbiBmcm9tIHxsYXllcnw6Ci0gICAgICAgICAgICAgICAg
ICAgMTAwCi0gICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgICAgICAg
fCAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAgICAgICAgICAgICAgICAgICB8MzAgIFZpc2libGUgcmVnaW9uIG9mIHxsYXllcnw6
IC8vLy8vCi0gICAgICAgICAgfCAgICAzMCAgICAgICAgICAgICAgIHwgICAgICAgICAgIHJvdGF0
ZSg5MCkgICAgICAgICAgICAgICAgIHwgICAgIDMwICAgNjAgICAgICAgICB8ICAgIHxjaGlsZDJ8
OiBcXFxcXAotICAgICAgICAgIHwgMzAgKyAtLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t
LS0rICAgICAgICAgICAgICAgICAgICB8ICAzMCArLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t
LS0tLS0tKwotICAgICAgMTAwIHwgICAgfCAgMTAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAg
ICB8ICAgICAgICAgICAgPT0+ICAgICB8ICAgICB8XFxcXFxcXFxcXFxcfCAgfDEwICAgICAgICAg
ICAgICAgfAotICAgICAgICAgIHwgICAgfDEwKy0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSsgICAgICAgICAgICAgICAgICB8ICArLS18XFxcXFxcXFxcXFxcfC0tLS0tLS0tLS0tLS0t
LS0tKyAgfAotICAgICAgICAgIHwgICAgKyAtLS0tLS0tLS0tLS0rICB8ICAgICAgICAgICAgICAg
ICB8IHwgICAgICAgICAgICAgICAgICB8ICB8ICArLS0tLS0tLS0tLS0tKy8vfCAgICAgNDIwICAg
ICAgfCAgfAotICAgICAgICAgIHwgICAgfCAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg
ICB8IHwgICAgICAgICAgICAgICAgICB8ICB8ICB8Ly8vLy8vLy8vLy8vLy8vfDYwICAgICAgICAg
ICAgfCAgfAotICAgICAgICAgIHwgICAgfCAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg
ICB8IHwgICAgICAgICAgICAgICAgICB8ICB8ICB8Ly8vLy8vLy8vLy8vLy8vfCAgICAgICAgICAg
ICAgfCAgfAotICAgICAgICAgICstLS0tfC0tfC0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAg
ICB8IHwgICAgICAgICAgICAgICAgICArLS18LS18LS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAg
ICAgfCAgfAotICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8IHwgICAgICAgICAgICAgICAgICAgMjB8MTB8ICAgICA3MCAgICAgICAgICAgICAgICAgICAg
ICAgfCAgfAotICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgfAotICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8IHw1MDAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgfAotICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgfAotICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgfAotICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgfAotICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfDEwfAotICAgICAgICAgICAgICAgKy0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rIHwgICAgICAgICAgICAgICAgICAgICB8ICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tfC0tKwotICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICA0OTAgICAgICAgICAg
ICAgfAotICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSsgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
KwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTAwICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MDAKLSAgICAgICAgICovCi0gICAg
fQotfTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIElu
dFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAw
LCAxMDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQo
KSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7CiAKLUFMTF9DQ09DQ0xVU0lPTlRSQUNL
RVJfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0VmlzaXRUYXJnZXRUd29UaW1lcyk7CisgICAg
b2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyLmdldCgpKTsKKyAgICBvY2Ns
dXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkp
OworICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50TGF5ZXItPnJl
bmRlclN1cmZhY2UoKSk7CiAKLXRlbXBsYXRlPGNsYXNzIFR5cGVzLCBib29sIG9wYXF1ZUxheWVy
cz4KLWNsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RTdXJmYWNlUm90YXRlZE9mZkF4aXMgOiBw
dWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxUeXBlcywgb3BhcXVlTGF5ZXJzPiB7Ci1wcm90
ZWN0ZWQ6Ci0gICAgdm9pZCBydW5NeVRlc3QoKQotICAgIHsKLSAgICAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggY2hpbGRUcmFuc2Zvcm07Ci0gICAgICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0
ZSgyNTAsIDI1MCk7Ci0gICAgICAgIGNoaWxkVHJhbnNmb3JtLnJvdGF0ZSg5NSk7Ci0gICAgICAg
IGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKLQotICAgICAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBsYXllclRyYW5zZm9ybTsKLSAgICAgICAgbGF5ZXJUcmFuc2Zvcm0udHJh
bnNsYXRlKDEwLCAxMCk7Ci0KLSAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5
cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKLSAgICAgICAgdHlwZW5hbWUgVHlwZXM6
OkxheWVyVHlwZSogY2hpbGQgPSB0aGlzLT5jcmVhdGVMYXllcihwYXJlbnQsIGNoaWxkVHJhbnNm
b3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApKTsKLSAgICAgICAgY2hp
bGQtPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7Ci0gICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250
ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihjaGlsZCwgbGF5
ZXJUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlKTsK
LSAgICAgICAgdGhpcy0+Y2FsY0RyYXdFdGMocGFyZW50KTsKLQotICAgICAgICBUZXN0Q0NPY2Ns
dXNpb25UcmFja2VyQmFzZTx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBl
czo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDAp
KTsKLSAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAx
MDAwLCAxMDAwKSk7Ci0KLSAgICAgICAgSW50UmVjdCBjbGlwcGVkTGF5ZXJJbkNoaWxkID0gbGF5
ZXJUcmFuc2Zvcm0ubWFwUmVjdChsYXllci0+dmlzaWJsZUxheWVyUmVjdCgpKTsKLQotICAgICAg
ICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkLT5yZW5kZXJTdXJmYWNl
KCkpOwotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOwot
Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgb2NjbHVzaW9uLm9jY2x1c2lvbklu
U2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgwdSwgb2NjbHVzaW9u
Lm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0gICAgICAgIEVYUEVD
VF9FUV9SRUNUKGNsaXBwZWRMYXllckluQ2hpbGQsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdl
dFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAgICAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIGNsaXBwZWRMYXllckluQ2hpbGQpKTsK
LSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJl
bnQsIGNsaXBwZWRMYXllckluQ2hpbGQpLmlzRW1wdHkoKSk7Ci0gICAgICAgIGNsaXBwZWRMYXll
ckluQ2hpbGQubW92ZSgtMSwgMCk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQoY2hpbGQsIGNsaXBwZWRMYXllckluQ2hpbGQpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNF
KG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBjbGlwcGVkTGF5ZXJJbkNo
aWxkKS5pc0VtcHR5KCkpOwotICAgICAgICBjbGlwcGVkTGF5ZXJJbkNoaWxkLm1vdmUoMSwgMCk7
Ci0gICAgICAgIGNsaXBwZWRMYXllckluQ2hpbGQubW92ZSgxLCAwKTsKLSAgICAgICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgY2xpcHBlZExheWVySW5DaGlsZCkpOwot
ICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJl
bnQsIGNsaXBwZWRMYXllckluQ2hpbGQpLmlzRW1wdHkoKSk7Ci0gICAgICAgIGNsaXBwZWRMYXll
ckluQ2hpbGQubW92ZSgtMSwgMCk7Ci0gICAgICAgIGNsaXBwZWRMYXllckluQ2hpbGQubW92ZSgw
LCAtMSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIGNs
aXBwZWRMYXllckluQ2hpbGQpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi51bm9j
Y2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBjbGlwcGVkTGF5ZXJJbkNoaWxkKS5pc0VtcHR5KCkp
OwotICAgICAgICBjbGlwcGVkTGF5ZXJJbkNoaWxkLm1vdmUoMCwgMSk7Ci0gICAgICAgIGNsaXBw
ZWRMYXllckluQ2hpbGQubW92ZSgwLCAxKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lv
bi5vY2NsdWRlZChjaGlsZCwgY2xpcHBlZExheWVySW5DaGlsZCkpOwotICAgICAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIGNsaXBwZWRMYXll
ckluQ2hpbGQpLmlzRW1wdHkoKSk7Ci0gICAgICAgIGNsaXBwZWRMYXllckluQ2hpbGQubW92ZSgw
LCAtMSk7Ci0KLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxk
KTsKLSAgICAgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZCwg
Y2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0
UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICAgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgpLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJv
dW5kcygpKTsKLSAgICAgICAgRVhQRUNUX0VRKDB1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3Jl
ZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgpLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwotICAg
ICAgICBFWFBFQ1RfRVEoMHUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5y
ZWN0cygpLnNpemUoKSk7Ci0KLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQsIEludFJlY3QoNzUsIDU1LCAxLCAxKSkpOwotICAgICAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDc1LCA1NSwgMSwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qo
cGFyZW50LCBJbnRSZWN0KDc1LCA1NSwgMSwgMSkpKTsKLSAgICB9Ci19OworICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAx
MDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5
ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAs
IDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIu
Z2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAw
LCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVy
LmdldCgpLCBJbnRSZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAx
MDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdl
dCgpLCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAyMDAsIDEwMCwg
MTAwKSkpOwogCi1BTExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2Vy
VGVzdFN1cmZhY2VSb3RhdGVkT2ZmQXhpcyk7CisgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRS
ZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKIAotdGVtcGxhdGU8Y2xhc3Mg
VHlwZXMsIGJvb2wgb3BhcXVlTGF5ZXJzPgotY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdFN1
cmZhY2VXaXRoVHdvT3BhcXVlQ2hpbGRyZW4gOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVz
dDxUeXBlcywgb3BhcXVlTGF5ZXJzPiB7Ci1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBydW5NeVRlc3Qo
KQotICAgIHsKLSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY2hpbGRUcmFuc2Zvcm07Ci0g
ICAgICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7Ci0gICAgICAgIGNoaWxk
VHJhbnNmb3JtLnJvdGF0ZSg5MCk7Ci0gICAgICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgt
MjUwLCAtMjUwKTsKLQotICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSog
cGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpOwotICAgICAgICB0eXBlbmFtZSBUeXBlczo6TGF5
ZXJUeXBlKiBjaGlsZCA9IHRoaXMtPmNyZWF0ZUxheWVyKHBhcmVudCwgY2hpbGRUcmFuc2Zvcm0s
IEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCkpOwotICAgICAgICBjaGlsZC0+
c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKLSAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRM
YXllclR5cGUqIGxheWVyMSA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihjaGlsZCwgdGhpcy0+
aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMTAsIDEwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRy
dWUpOwotICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogbGF5ZXIyID0g
dGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKGNoaWxkLCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxv
YXRQb2ludCgxMCwgNDUwKSwgSW50U2l6ZSg1MDAsIDYwKSwgdHJ1ZSk7Ci0gICAgICAgIHRoaXMt
PmNhbGNEcmF3RXRjKHBhcmVudCk7Ci0KLSAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJh
c2U8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZh
Y2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgICAgIG9j
Y2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwot
Ci0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQtPnJlbmRl
clN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihs
YXllcjIpOwotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIx
KTsKLQotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSwgb2Nj
bHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgICAgIEVYUEVD
VF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUo
KSk7Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSwgb2Nj
bHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICAgICAgRVhQ
RUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5z
aXplKCkpOwotCi0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwg
SW50UmVjdCgxMCwgNDMwLCA2MCwgNzApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoOSwgNDMwLCA2MCwgNzApKSk7Ci0gICAgICAgIEVY
UEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoMTAsIDQyOSwgNjAs
IDcwKSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJ
bnRSZWN0KDExLCA0MzAsIDYwLCA3MCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lv
bi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCgxMCwgNDMxLCA2MCwgNzApKSk7Ci0KLSAgICAgICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVj
dCgxMCwgNDMwLCA2MCwgNzApKS5pc0VtcHR5KCkpOwotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDksIDQzMCwgMSwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNo
aWxkLCBJbnRSZWN0KDksIDQzMCwgNjAsIDcwKSkpOwotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDEwLCA0MjksIDYwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChj
aGlsZCwgSW50UmVjdCgxMCwgNDI5LCA2MCwgNzApKSk7Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoNzAsIDQzMCwgMSwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0
KGNoaWxkLCBJbnRSZWN0KDExLCA0MzAsIDYwLCA3MCkpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgxMCwgNTAwLCA2MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJl
Y3QoY2hpbGQsIEludFJlY3QoMTAsIDQzMSwgNjAsIDcwKSkpOwotCi0gICAgICAgIG9jY2x1c2lv
bi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZCk7Ci0gICAgICAgIG9jY2x1c2lvbi5maW5p
c2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQsIGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOwot
ICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5k
ZXJTdXJmYWNlKCkpOwotCi0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDQwLCA3
MCwgNjApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAg
ICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJl
Y3RzKCkuc2l6ZSgpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgNDAsIDcw
LCA2MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0g
ICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgp
LnJlY3RzKCkuc2l6ZSgpKTsKLQotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50LCBJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSkpOwotICAgICAgICBFWFBFQ1RfRkFM
U0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyOSwgNDAsIDcwLCA2MCkpKTsK
LSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3Qo
MzAsIDM5LCA3MCwgNjApKSk7Ci0KLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzAsIDQwLCA3MCwgNjApKS5pc0VtcHR5
KCkpOwotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDI5LCA0MCwgMSwgNjApLCBvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgyOSwgNDAsIDcwLCA2
MCkpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzksIDcwLCAxKSwgb2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzAsIDM5LCA3MCwg
NjApKSk7Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCA0MCwgMSwgNjApLCBv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMSwgNDAsIDcw
LCA2MCkpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMTAwLCA3MCwgMSks
IG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMwLCA0MSwg
NzAsIDYwKSkpOwotCi0gICAgICAgIC8qIEp1c3RpZmljYXRpb24gZm9yIHRoZSBhYm92ZSBvY2Ns
dXNpb24gZnJvbSB8bGF5ZXIxfCBhbmQgfGxheWVyMnw6Ci0KLSAgICAgICAgICAgKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLSsKLSAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwzMCAgVmlz
aWJsZSByZWdpb24gb2YgfGxheWVyMXw6IC8vLy8vCi0gICAgICAgICAgIHwgICAgICAgICAgICAg
ICAgICAgICB8ICAgIFZpc2libGUgcmVnaW9uIG9mIHxsYXllcjJ8OiBcXFxcXAotICAgICAgICAg
ICB8ICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgICAgICB8
ICAgICB8ICAgICAgICAgICAgICAgfDEwICAgICAgICAgICAgICAgfAotICAgICAgICAgICB8ICAr
LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKyAgfAotICAgICAgICAgICB8ICB8ICB8
XFxcXFxcXFxcXFxcfC8vfCAgICAgNDIwICAgICAgfCAgfAotICAgICAgICAgICB8ICB8ICB8XFxc
XFxcXFxcXFxcfC8vfDYwICAgICAgICAgICAgfCAgfAotICAgICAgICAgICB8ICB8ICB8XFxcXFxc
XFxcXFxcfC8vfCAgICAgICAgICAgICAgfCAgfAotICAgICAgICAgICArLS18LS18LS0tLS0tLS0t
LS0tfC0tKyAgICAgICAgICAgICAgfCAgfAotICAgICAgICAgICAgMjB8MTB8ICAgICA3MCAgICAg
fCAgICAgICAgICAgICAgICAgfCAgfAotICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgfCAg
ICAgICAgICAgICAgICAgfCAgfAotICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgfCAgICAg
ICAgICAgICAgICAgfCAgfAotICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgfCAgICAgICAg
ICAgICAgICAgfCAgfAotICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgfCAgICAgICAgICAg
ICAgICAgfCAgfAotICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAg
ICAgfCAgfAotICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg
fDEwfAotICAgICAgICAgICAgICB8ICArLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tfC0t
KwotICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCA0OTAgICAgICAgICAgICAgfAotICAg
ICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgICAg
ICAgICAgICAgICAgNjAgICAgICAgICAgICAgICA0NDAKLSAgICAgICAgICovCi0gICAgfQotfTsK
KyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5n
ZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpLmlzRW1wdHkoKSk7Cit9CiAKLUFMTF9DQ09D
Q0xVU0lPTlRSQUNLRVJfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0U3VyZmFjZVdpdGhUd29P
cGFxdWVDaGlsZHJlbik7CitURVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNp
b25UcmFja2VyVGVzdF9sYXllclNjaXNzb3JSZWN0T3ZlckN1bGxlZFRpbGUsIGxheWVyU2Npc3Nv
clJlY3RPdmVyQ3VsbGVkVGlsZSk7CiAKLXRlbXBsYXRlPGNsYXNzIFR5cGVzLCBib29sIG9wYXF1
ZUxheWVycz4KLWNsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RPdmVybGFwcGluZ1N1cmZhY2VT
aWJsaW5ncyA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PFR5cGVzLCBvcGFxdWVMYXll
cnM+IHsKLXByb3RlY3RlZDoKLSAgICB2b2lkIHJ1bk15VGVzdCgpCi0gICAgewotICAgICAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZFRyYW5zZm9ybTsKLSAgICAgICAgY2hpbGRUcmFuc2Zv
cm0udHJhbnNsYXRlKDI1MCwgMjUwKTsKLSAgICAgICAgY2hpbGRUcmFuc2Zvcm0ucm90YXRlKDkw
KTsKLSAgICAgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKC0yNTAsIC0yNTApOwordm9pZCBz
Y3JlZW5TY2lzc29yUmVjdE92ZXJDdWxsZWRUaWxlKGJvb2wgb3BhcXVlTGF5ZXJzKQoreworICAg
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OworICAgIFJlZlB0cjxM
YXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IHBhcmVudExheWVyID0gYWRv
cHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOworICAgIFJl
ZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIgPSBhZG9wdFJl
ZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7CisgICAgcGFyZW50
LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CisgICAgcGFyZW50LT5hZGRDaGlsZChwYXJlbnRMYXll
cik7CisgICAgcGFyZW50LT5hZGRDaGlsZChsYXllcik7CiAKLSAgICAgICAgdHlwZW5hbWUgVHlw
ZXM6OkNvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRl
bnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKLSAgICAg
ICAgdHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSogY2hpbGQxID0gdGhpcy0+Y3JlYXRlU3VyZmFj
ZShwYXJlbnQsIGNoaWxkVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoMTAs
IDEwKSk7Ci0gICAgICAgIHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIGNoaWxkMiA9IHRoaXMt
PmNyZWF0ZVN1cmZhY2UocGFyZW50LCBjaGlsZFRyYW5zZm9ybSwgRmxvYXRQb2ludCgyMCwgNDAp
LCBJbnRTaXplKDEwLCAxMCkpOwotICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVy
VHlwZSogbGF5ZXIxID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKGNoaWxkMSwgdGhpcy0+aWRl
bnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoLTEwLCAtMTApLCBJbnRTaXplKDUxMCwgNTEwKSwgdHJ1
ZSk7Ci0gICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllcjIgPSB0
aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIoY2hpbGQyLCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxv
YXRQb2ludCgtMTAsIC0xMCksIEludFNpemUoNTEwLCA1MTApLCB0cnVlKTsKLSAgICAgICAgdGhp
cy0+Y2FsY0RyYXdFdGMocGFyZW50KTsKKyAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7Cisg
ICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0
ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFKSk7Cisg
ICAgcGFyZW50TGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CisgICAgbGF5ZXItPnNldEZpbHRl
cnMoZmlsdGVycyk7CiAKLSAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8dHlwZW5h
bWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBv
Y2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5z
ZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoLTIwLCAtMjAsIDEwMDAsIDEwMDApKTsKKyAgICBz
ZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgs
IEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKKyAgICBzZXRMYXllclByb3Bl
cnRpZXNGb3JUZXN0aW5nKHBhcmVudExheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQ
b2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZhbHNlLCBvcGFxdWVMYXllcnMpOworICAg
IHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4
LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJz
KTsKIAotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMi0+
cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExh
eWVyKGxheWVyMik7CisgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1
cmZhY2VMYXllckxpc3Q7CisgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15
TGF5ZXJMaXN0OworICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOwogCi0gICAgICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAsIDMwLCA4MCwgNzApLCBvY2NsdXNpb24ub2NjbHVz
aW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2Ns
dXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICAgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgtMTAsIDQyMCwgNzAsIDgwKSwgb2NjbHVzaW9uLm9jY2x1
c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICAgICAgRVhQRUNUX0VRKDF1LCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0g
ICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIsIEludFJlY3QoLTEw
LCA0MjAsIDcwLCA4MCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChjaGlsZDIsIEludFJlY3QoLTExLCA0MjAsIDcwLCA4MCkpKTsKLSAgICAgICAgRVhQRUNUX0ZB
TFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIsIEludFJlY3QoLTEwLCA0MTksIDcwLCA4MCkp
KTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIsIEludFJl
Y3QoLTEwLCA0MjAsIDcxLCA4MCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChjaGlsZDIsIEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MSkpKTsKLQotICAgICAgICBv
Y2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKLSAgICAgICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMiwgSW50UmVjdCgtMTAsIDQyMCwgNzAsIDgwKSkp
OwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLCBJbnRSZWN0
KC0xMSwgNDIwLCA3MCwgODApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChjaGlsZDIsIEludFJlY3QoLTEwLCA0MTksIDcwLCA4MCkpKTsKLSAgICAgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMiwgSW50UmVjdCgtMTAsIDQyMCwgNzEsIDgw
KSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLCBJbnRS
ZWN0KC0xMCwgNDIwLCA3MCwgODEpKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNz
b3JSZWN0KEludFJlY3QoLTIwLCAtMjAsIDEwMDAsIDEwMDApKTsKLQotICAgICAgICBvY2NsdXNp
b24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQyKTsKLSAgICAgICAgb2NjbHVzaW9uLmZp
bmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDIsIGNoaWxkMi0+cmVuZGVyU3VyZmFjZSgp
KTsKLSAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+
cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3Vy
ZmFjZShjaGlsZDEtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2Nj
bHVkZWRCZWhpbmRMYXllcihsYXllcjEpOwotCi0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMjAsIDIwLCA4MCwgODApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJv
dW5kcygpKTsKLSAgICAgICAgRVhQRUNUX0VRKDJ1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3Jl
ZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgtMTAsIDQzMCwgODAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgp
LmJvdW5kcygpKTsKLSAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5U
YXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0gICAgICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChjaGlsZDEsIEludFJlY3QoLTEwLCA0MzAsIDgwLCA3MCkpKTsKLSAg
ICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDEsIEludFJlY3QoLTEx
LCA0MzAsIDgwLCA3MCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChjaGlsZDEsIEludFJlY3QoLTEwLCA0MjksIDgwLCA3MCkpKTsKLSAgICAgICAgRVhQRUNUX0ZB
TFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDEsIEludFJlY3QoLTEwLCA0MzAsIDgxLCA3MCkp
KTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDEsIEludFJl
Y3QoLTEwLCA0MzAsIDgwLCA3MSkpKTsKLQotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVk
QmVoaW5kTGF5ZXIoY2hpbGQxKTsKLSAgICAgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVu
ZGVyU3VyZmFjZShjaGlsZDEsIGNoaWxkMS0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2Nj
bHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgp
KTsKLQotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwLCAyMCwgODAsIDgwKSwgb2Nj
bHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgICAgIEVYUEVD
VF9FUSgydSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUo
KSk7Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAsIDIwLCA4MCwgODApLCBvY2Ns
dXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwotICAgICAgICBFWFBF
Q1RfRVEoMnUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNp
emUoKSk7Ci0KLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQs
IEludFJlY3QoMjAsIDIwLCA4MCwgODApKSk7Ci0KLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgMjAsIDcwLCA4MCkpKTsKLSAgICAgICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjksIDIwLCA3
MCwgODApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LCBJbnRSZWN0KDMwLCAxOSwgNzAsIDgwKSkpOwotCi0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAsIDMwLCA4MCwgNzApKSk7Ci0gICAgICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDE5LCAzMCwg
ODAsIDcwKSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dCwgSW50UmVjdCgyMCwgMjksIDgwLCA3MCkpKTsKLQotICAgICAgICAvKiBKdXN0aWZpY2F0aW9u
IGZvciB0aGUgYWJvdmUgb2NjbHVzaW9uOgotICAgICAgICAgICAgICAgICAgIDEwMAotICAgICAg
ICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgICAgICAgfCAgICAyMCAgICAgICAgICAg
ICAgIHwgICAgICAgbGF5ZXIxCi0gICAgICAgICAgfCAgMzArIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSsKLSAgICAgIDEwMCB8ICAzMHwgICAgICAgICAgICAgICAgfCAgICAgbGF5
ZXIyICAgICAgfAotICAgICAgICAgIHwyMCstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKyB8Ci0gICAgICAgICAgfCAgfCB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8
IHwKLSAgICAgICAgICB8ICB8IHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgfAot
ICAgICAgICAgIHwgIHwgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCB8Ci0gICAg
ICAgICAgKy0tfC18LS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICB8IHwKLSAgICAgICAg
ICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCA1MTAKLSAgICAgICAg
ICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfAotICAgICAgICAgICAg
IHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8Ci0gICAgICAgICAgICAgfCB8
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwKLSAgICAgICAgICAgICB8IHwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfAotICAgICAgICAgICAgIHwgfCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCB8Ci0gICAgICAgICAgICAgfCB8ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8IHwKLSAgICAgICAgICAgICB8ICstLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLXwtKwotICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfAotICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MTAKLSAgICAgICAgICovCi0g
ICAgfQotfTsKKyAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50
UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7CisgICAgcGFyZW50LT5z
ZXRDbGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsK
KyAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOwogCi1BTExfQ0NPQ0NM
VVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdE92ZXJsYXBwaW5nU3VyZmFj
ZVNpYmxpbmdzKTsKKyAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFu
c2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlN
YXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVy
TGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7CiAKLXRlbXBsYXRlPGNsYXNzIFR5cGVzLCBib29s
IG9wYXF1ZUxheWVycz4KLWNsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RPdmVybGFwcGluZ1N1
cmZhY2VTaWJsaW5nc1dpdGhUd29UcmFuc2Zvcm1zIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tl
clRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVycz4gewotcHJvdGVjdGVkOgotICAgIHZvaWQgcnVuTXlU
ZXN0KCkKLSAgICB7Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxkMVRyYW5zZm9y
bTsKLSAgICAgICAgY2hpbGQxVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7Ci0gICAgICAg
IGNoaWxkMVRyYW5zZm9ybS5yb3RhdGUoLTkwKTsKLSAgICAgICAgY2hpbGQxVHJhbnNmb3JtLnRy
YW5zbGF0ZSgtMjUwLCAtMjUwKTsKLQotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGls
ZDJUcmFuc2Zvcm07Ci0gICAgICAgIGNoaWxkMlRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAyNTAp
OwotICAgICAgICBjaGlsZDJUcmFuc2Zvcm0ucm90YXRlKDkwKTsKLSAgICAgICAgY2hpbGQyVHJh
bnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKLQotICAgICAgICB0eXBlbmFtZSBUeXBlczo6
Q29udGVudExheWVyVHlwZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0
eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpOwotICAgICAgICB0
eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlKiBjaGlsZDEgPSB0aGlzLT5jcmVhdGVTdXJmYWNlKHBh
cmVudCwgY2hpbGQxVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAyMCksIEludFNpemUoMTAsIDEw
KSk7Ci0gICAgICAgIHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIGNoaWxkMiA9IHRoaXMtPmNy
ZWF0ZVN1cmZhY2UocGFyZW50LCBjaGlsZDJUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMjAsIDQwKSwg
SW50U2l6ZSgxMCwgMTApKTsKLSAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5
cGUqIGxheWVyMSA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihjaGlsZDEsIHRoaXMtPmlkZW50
aXR5TWF0cml4LCBGbG9hdFBvaW50KC0xMCwgLTIwKSwgSW50U2l6ZSg1MTAsIDUxMCksIHRydWUp
OwotICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogbGF5ZXIyID0gdGhp
cy0+Y3JlYXRlRHJhd2luZ0xheWVyKGNoaWxkMiwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoLTEwLCAtMTApLCBJbnRTaXplKDUxMCwgNTEwKSwgdHJ1ZSk7Ci0gICAgICAgIHRoaXMt
PmNhbGNEcmF3RXRjKHBhcmVudCk7Ci0KLSAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJh
c2U8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZh
Y2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgICAgIG9j
Y2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoLTMwLCAtMzAsIDEwMDAsIDEwMDAp
KTsKLQotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMi0+
cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExh
eWVyKGxheWVyMik7Ci0KLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMCwgMzAsIDgw
LCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAg
ICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVj
dHMoKS5zaXplKCkpOwotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KC0xMCwgNDIwLCA3
MCwgODApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwot
ICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2Uo
KS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKGNoaWxkMiwgSW50UmVjdCgtMTAsIDQyMCwgNzAsIDgwKSkpOwotICAgICAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMiwgSW50UmVjdCgtMTEsIDQyMCwgNzAsIDgw
KSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMiwgSW50
UmVjdCgtMTAsIDQxOSwgNzAsIDgwKSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKGNoaWxkMiwgSW50UmVjdCgtMTAsIDQyMCwgNzEsIDgwKSkpOwotICAgICAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMiwgSW50UmVjdCgtMTAsIDQyMCwg
NzAsIDgxKSkpOwotCi0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihj
aGlsZDIpOwotICAgICAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNo
aWxkMiwgY2hpbGQyLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2NsdXNpb24ubGVhdmVU
b1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBv
Y2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMS0+cmVuZGVyU3VyZmFjZSgp
KTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyMSk7Ci0K
LSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgMjAsIDkwLCA4MCksIG9jY2x1c2lv
bi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgICAgICBFWFBFQ1RfRVEo
MXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwot
ICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDQyMCwgLTIwLCA4MCwgOTApLCBvY2NsdXNp
b24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwotICAgICAgICBFWFBFQ1Rf
RVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUo
KSk7CisgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgxMDAsIDEw
MCwgMTAwLCAxMDApKTsKIAotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQo
Y2hpbGQxLCBJbnRSZWN0KDQyMCwgLTIwLCA4MCwgOTApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLCBJbnRSZWN0KDQxOSwgLTIwLCA4MCwgOTApKSk7
Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLCBJbnRSZWN0
KDQyMCwgLTIxLCA4MCwgOTApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQoY2hpbGQxLCBJbnRSZWN0KDQyMCwgLTE5LCA4MCwgOTApKSk7Ci0gICAgICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLCBJbnRSZWN0KDQyMSwgLTIwLCA4MCwg
OTApKSk7CisgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVu
ZGVyU3VyZmFjZSgpKTsKIAotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5
ZXIoY2hpbGQxKTsKLSAgICAgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFj
ZShjaGlsZDEsIGNoaWxkMS0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLmxl
YXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwg
MTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdl
dCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgx
MDAsIDEwMCwgMTAwLCAxMDApKSk7CiAKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgx
MCwgMjAsIDkwLCA4MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRz
KCkpOwotICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNw
YWNlKCkucmVjdHMoKS5zaXplKCkpOwotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEw
LCAyMCwgOTAsIDgwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5k
cygpKTsKLSAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRT
dXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAsIDIwLCA5MCwgODApKSk7Ci0gICAgICAgIEVY
UEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDksIDIwLCA5MCwg
ODApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJ
bnRSZWN0KDEwLCAxOSwgOTAsIDgwKSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgxMSwgMjAsIDkwLCA4MCkpKTsKLSAgICAgICAgRVhQ
RUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAsIDIxLCA5MCwg
ODApKSk7Ci0KLSAgICAgICAgLyogSnVzdGlmaWNhdGlvbiBmb3IgdGhlIGFib3ZlIG9jY2x1c2lv
bjoKLSAgICAgICAgICAgICAgICAgICAgICAxMDAKLSAgICAgICAgICAgICstLS0tLS0tLS0tLS0t
LS0tLS0tLS0rCi0gICAgICAgICAgICB8MjAgICAgICAgICAgICAgICAgICAgfCAgICAgICBsYXll
cjEKLSAgICAgICAgICAgMTArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAg
ICAgICAgMTAwIHx8IDMwICAgICAgICAgICAgICAgICB8ICAgICBsYXllcjIgIHwKLSAgICAgICAg
ICAgIHwyMCstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgICAgICAg
fHwgfCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCB8Ci0gICAgICAgICAgICB8fCB8
ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8IHwKLSAgICAgICAgICAgIHx8IHwgICAg
ICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgfAotICAgICAgICAgICAgK3wtfC0tLS0tLS0t
LS0tLS0tLS0tLSsgICAgICAgICAgICAgfCB8Ci0gICAgICAgICAgICAgfCB8ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8IHwgNTEwCi0gICAgICAgICAgICAgfCB8ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDUxMCB8IHwKLSAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgfAotICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCB8Ci0gICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8IHwKLSAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgfAotICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICA1MjAgICAgICAgICAgICAg
fCB8Ci0gICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIHwK
LSAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotICAg
ICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNTEwCi0gICAgICAgICAqLwotICAgIH0KLX07CisgICAg
b2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyLmdldCgpKTsKKyAgICBvY2Ns
dXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkp
OworICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50TGF5ZXItPnJl
bmRlclN1cmZhY2UoKSk7CiAKLUFMTF9DQ09DQ0xVU0lPTlRSQUNLRVJfVEVTVChDQ09jY2x1c2lv
blRyYWNrZXJUZXN0T3ZlcmxhcHBpbmdTdXJmYWNlU2libGluZ3NXaXRoVHdvVHJhbnNmb3Jtcyk7
CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJ
bnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOworICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVj
dCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0
KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3Qo
MCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgy
MDAsIDIwMCwgMTAwLCAxMDApKSk7CiAKLXRlbXBsYXRlPGNsYXNzIFR5cGVzLCBib29sIG9wYXF1
ZUxheWVycz4KLWNsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RGaWx0ZXJzIDogcHVibGljIEND
T2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVycz4gewotcHJvdGVjdGVkOgot
ICAgIHZvaWQgcnVuTXlUZXN0KCkKLSAgICB7Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGxheWVyVHJhbnNmb3JtOwotICAgICAgICBsYXllclRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAy
NTApOwotICAgICAgICBsYXllclRyYW5zZm9ybS5yb3RhdGUoOTApOwotICAgICAgICBsYXllclRy
YW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7CisgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJn
ZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKIAotICAgICAgICB0eXBl
bmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0
aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkp
OwotICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogYmx1ckxheWVyID0g
dGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKHBhcmVudCwgbGF5ZXJUcmFuc2Zvcm0sIEZsb2F0UG9p
bnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUpOwotICAgICAgICB0eXBlbmFtZSBU
eXBlczo6Q29udGVudExheWVyVHlwZSogb3BhY2l0eUxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2lu
Z0xheWVyKHBhcmVudCwgbGF5ZXJUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6
ZSg1MDAsIDUwMCksIHRydWUpOwotICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVy
VHlwZSogb3BhcXVlTGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIocGFyZW50LCBsYXll
clRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7
CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQu
Z2V0KCksIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKS5pc0VtcHR5KCkpOworfQogCi0gICAgICAg
IEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKLSAgICAgICAgZmlsdGVycy5vcGVyYXRpb25zKCku
YXBwZW5kKEJsdXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShMZW5ndGgoMTAsIFdlYkNvcmU6OlBl
cmNlbnQpLCBGaWx0ZXJPcGVyYXRpb246OkJMVVIpKTsKLSAgICAgICAgYmx1ckxheWVyLT5zZXRG
aWx0ZXJzKGZpbHRlcnMpOworVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVz
aW9uVHJhY2tlclRlc3Rfc2NyZWVuU2Npc3NvclJlY3RPdmVyQ3VsbGVkVGlsZSwgc2NyZWVuU2Np
c3NvclJlY3RPdmVyQ3VsbGVkVGlsZSk7CiAKLSAgICAgICAgZmlsdGVycy5vcGVyYXRpb25zKCku
Y2xlYXIoKTsKLSAgICAgICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9u
ZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9wZXJhdGlvbjo6
R1JBWVNDQUxFKSk7Ci0gICAgICAgIG9wYXF1ZUxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwor
dm9pZCBsYXllclNjaXNzb3JSZWN0T3ZlclBhcnRpYWxUaWxlcyhib29sIG9wYXF1ZUxheWVycykK
K3sKKyAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKKyAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Cisg
ICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBwYXJlbnRMYXll
ciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsK
KyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0g
YWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOworICAg
IHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOworICAgIHBhcmVudC0+YWRkQ2hpbGQocGFy
ZW50TGF5ZXIpOworICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOworCisgICAgRmlsdGVyT3Bl
cmF0aW9ucyBmaWx0ZXJzOworICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0Nv
bXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVyYXRp
b246OkdSQVlTQ0FMRSkpOworICAgIHBhcmVudExheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwor
ICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOworCisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVz
Rm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDAp
LCBJbnRTaXplKDMwMCwgMzAwKSk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhw
YXJlbnRMYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNp
emUoMzAwLCAzMDApLCBmYWxzZSwgb3BhcXVlTGF5ZXJzKTsKKyAgICBzZXRMYXllclByb3BlcnRp
ZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAw
KSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7CisKKyAgICBWZWN0b3I8
UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKKyAgICBWZWN0
b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7CisgICAgaW50IGR1bW15
TWF4VGV4dHVyZVNpemUgPSA1MTI7CisKKyAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0
Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7
CisgICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVu
dC0+Ym91bmRzKCkpKTsKKyAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQp
OworCisgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0Fu
ZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBp
ZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1
bW15TWF4VGV4dHVyZVNpemUpOworCisgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNp
b24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgb2NjbHVzaW9uLnNldExheWVyU2Np
c3NvclJlY3QoSW50UmVjdCg1MCwgNTAsIDIwMCwgMjAwKSk7CisKKyAgICBvY2NsdXNpb24uZW50
ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgRVhQ
RUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAx
MDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdl
dCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwor
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3Qo
MTAwLCAxMDAsIDEwMCwgMTAwKSkpOworCisgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGlu
ZExheWVyKGxheWVyLmdldCgpKTsKKyAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1
cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgIG9jY2x1c2lvbi5lbnRlclRhcmdl
dFJlbmRlclN1cmZhY2UocGFyZW50TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwg
MCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwg
MTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExh
eWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfRkFM
U0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMTAw
LCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX0ZB
TFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAyMDAs
IDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAy
MDAsIDEwMCwgMTAwKSkpOworCisgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJm
YWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoNTAsIDUwLCAyMDAsIDIwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFy
ZW50LmdldCgpLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOworICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoMjAwLCA1MCwgNTAsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMCwgMzAwLCAxMDApKSk7CisgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwgNTAsIDEwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMzAwLCAxMDApKSk7CisgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwgNTAsIDEwMCksIG9jY2x1c2lvbi51bm9j
Y2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEw
MCkpKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDUwKSwgb2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTAwLCAy
MDAsIDEwMCwgMTAwKSkpOworfQorCitURVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NP
Y2NsdXNpb25UcmFja2VyVGVzdF9sYXllclNjaXNzb3JSZWN0T3ZlclBhcnRpYWxUaWxlcywgbGF5
ZXJTY2lzc29yUmVjdE92ZXJQYXJ0aWFsVGlsZXMpOworCit2b2lkIHNjcmVlblNjaXNzb3JSZWN0
T3ZlclBhcnRpYWxUaWxlcyhib29sIG9wYXF1ZUxheWVycykKK3sKKyAgICBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
cGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21p
dW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBwYXJlbnRMYXllciA9IGFkb3B0UmVmKG5ldyBMYXll
ckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJv
bWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hy
b21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOworICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVy
U3VyZmFjZSgpOworICAgIHBhcmVudC0+YWRkQ2hpbGQocGFyZW50TGF5ZXIpOworICAgIHBhcmVu
dC0+YWRkQ2hpbGQobGF5ZXIpOworCisgICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOworICAg
IGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVy
T3BlcmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRSkpOworICAg
IHBhcmVudExheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOworICAgIGxheWVyLT5zZXRGaWx0ZXJz
KGZpbHRlcnMpOworCisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0
KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7
CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwgaWRl
bnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSwg
b3BhcXVlTGF5ZXJzKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdl
dCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCks
IHRydWUsIG9wYXF1ZUxheWVycyk7CisKKyAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+
ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKKyAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21p
dW0+ID4gZHVtbXlMYXllckxpc3Q7CisgICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7
CisKKyAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJ
bnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7CisgICAgcGFyZW50LT5zZXRDbGlw
UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKKyAgICBy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOworCisgICAgQ0NMYXllclRyZWVI
b3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50Lmdl
dCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVy
U3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOwor
CisgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCg1MCwgNTAsIDIw
MCwgMjAwKSk7CisKKyAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVy
LT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfRkFM
U0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAx
MDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwg
SW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOworCisg
ICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyLmdldCgpKTsKKyAgICBv
Y2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNl
KCkpOworICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50TGF5ZXIt
PnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEw
MCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAw
LCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwg
MCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAy
MDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOworCisgICAgb2Nj
bHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgp
KTsKKworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTAsIDUwLCAyMDAsIDIwMCksIG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDAsIDMw
MCwgMzAwKSkpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCA1MCwgNTAsIDUwKSwg
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwg
MCwgMzAwLCAxMDApKSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwgNTAs
IDEwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDAsIDEwMCwgMzAwLCAxMDApKSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAs
IDEwMCwgNTAsIDEwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50Lmdl
dCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDEwMCwgMjAwLCAxMDAsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOworfQorCitURVNU
X09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9zY3JlZW5T
Y2lzc29yUmVjdE92ZXJQYXJ0aWFsVGlsZXMsIHNjcmVlblNjaXNzb3JSZWN0T3ZlclBhcnRpYWxU
aWxlcyk7CisKK3ZvaWQgbGF5ZXJTY2lzc29yUmVjdE92ZXJOb1RpbGVzKGJvb2wgb3BhcXVlTGF5
ZXJzKQoreworICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4Owor
ICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUo
KTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IHBhcmVu
dExheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50
KCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5
ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7
CisgICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CisgICAgcGFyZW50LT5hZGRDaGls
ZChwYXJlbnRMYXllcik7CisgICAgcGFyZW50LT5hZGRDaGlsZChsYXllcik7CisKKyAgICBGaWx0
ZXJPcGVyYXRpb25zIGZpbHRlcnM7CisgICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJh
c2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9w
ZXJhdGlvbjo6R1JBWVNDQUxFKSk7CisgICAgcGFyZW50TGF5ZXItPnNldEZpbHRlcnMoZmlsdGVy
cyk7CisgICAgbGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CisKKyAgICBzZXRMYXllclByb3Bl
cnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQo
MCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0
aW5nKHBhcmVudExheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwg
SW50U2l6ZSgzMDAsIDMwMCksIGZhbHNlLCBvcGFxdWVMYXllcnMpOworICAgIHNldExheWVyUHJv
cGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKKworICAgIFZl
Y3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OworICAg
IFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKKyAgICBpbnQg
ZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKKworICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgp
LT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRz
KCkpKTsKKyAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwg
cGFyZW50LT5ib3VuZHMoKSkpOworICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBh
cmVudCk7CisKKyAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zv
cm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRy
aXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlz
dCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7CisKKyAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9j
Y2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICBvY2NsdXNpb24uc2V0TGF5
ZXJTY2lzc29yUmVjdChJbnRSZWN0KDUwMCwgNTAwLCAxMDAsIDEwMCkpOworCisgICAgb2NjbHVz
aW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKwor
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgw
LCAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5
ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkp
KTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJl
Y3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOworCisgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJl
aGluZExheWVyKGxheWVyLmdldCgpKTsKKyAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRl
clN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgIG9jY2x1c2lvbi5lbnRlclRh
cmdldFJlbmRlclN1cmZhY2UocGFyZW50TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3Qo
MCwgMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwg
MCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAx
MDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAyMDAs
IDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRM
YXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMjAw
LCAxMDAsIDEwMCkpKTsKKworICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFj
ZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAsIDMw
MCkpLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMCwgMzAwLCAxMDApKS5pc0VtcHR5KCkp
OworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50
LmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMzAwLCAxMDApKS5pc0VtcHR5KCkpOworICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTAwLCAy
MDAsIDEwMCwgMTAwKSkuaXNFbXB0eSgpKTsKK30KKworVEVTVF9PUEFRVUVfQU5EX1BBSU5URURf
T1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3RfbGF5ZXJTY2lzc29yUmVjdE92ZXJOb1RpbGVz
LCBsYXllclNjaXNzb3JSZWN0T3Zlck5vVGlsZXMpOworCit2b2lkIHNjcmVlblNjaXNzb3JSZWN0
T3Zlck5vVGlsZXMoYm9vbCBvcGFxdWVMYXllcnMpCit7CisgICAgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVu
dCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0
aEZvcmNlZERyYXdzQ29udGVudD4gcGFyZW50TGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJv
bWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW1X
aXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVt
V2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKKyAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZh
Y2UoKTsKKyAgICBwYXJlbnQtPmFkZENoaWxkKHBhcmVudExheWVyKTsKKyAgICBwYXJlbnQtPmFk
ZENoaWxkKGxheWVyKTsKKworICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKKyAgICBmaWx0
ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJh
dGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsKKyAgICBwYXJl
bnRMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKKyAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0
ZXJzKTsKKworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBp
ZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOworICAg
IHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50TGF5ZXIuZ2V0KCksIGlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UsIG9wYXF1
ZUxheWVycyk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwg
aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVl
LCBvcGFxdWVMYXllcnMpOworCisgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJl
bmRlclN1cmZhY2VMYXllckxpc3Q7CisgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+
IGR1bW15TGF5ZXJMaXN0OworICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOworCisg
ICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9p
bnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOworICAgIHBhcmVudC0+c2V0Q2xpcFJlY3Qo
SW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7CisgICAgcmVuZGVy
U3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKKworICAgIENDTGF5ZXJUcmVlSG9zdENv
bW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwg
cGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZh
Y2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKKworICAg
IFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9uKEludFJlY3QoNTAwLCA1MDAsIDEwMCwg
MTAwKSk7CisKKyAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5y
ZW5kZXJTdXJmYWNlKCkpOworCisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxh
eWVyLmdldCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkp
OworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVj
dCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7CisKKyAgICBvY2Ns
dXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIuZ2V0KCkpOworICAgIG9jY2x1c2lv
bi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Cisg
ICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnRMYXllci0+cmVuZGVy
U3VyZmFjZSgpKTsKKworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRM
YXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAs
IDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIu
Z2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwg
MTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5n
ZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMCwgMTAwLCAx
MDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdl
dCgpLCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEw
MCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0
KCksIEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOworCisgICAgb2NjbHVzaW9uLmxlYXZl
VG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJ
bnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAwLCAz
MDAsIDEwMCkpLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVk
ZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAzMDAsIDEwMCkpLmlz
RW1wdHkoKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkuaXNFbXB0eSgpKTsK
KyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5n
ZXQoKSwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKS5pc0VtcHR5KCkpOworfQorCitURVNU
X09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9zY3JlZW5T
Y2lzc29yUmVjdE92ZXJOb1RpbGVzLCBzY3JlZW5TY2lzc29yUmVjdE92ZXJOb1RpbGVzKTsKKwor
dm9pZCBsYXllclNjaXNzb3JSZWN0Rm9yTGF5ZXJPZmZPcmlnaW4oYm9vbCBvcGFxdWVMYXllcnMp
Cit7CisgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CisgICAg
UmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwor
ICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gcGFyZW50TGF5
ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7
CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllciA9
IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKKyAg
ICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKKyAgICBwYXJlbnQtPmFkZENoaWxkKHBh
cmVudExheWVyKTsKKyAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVyKTsKIAotICAgICAgICBmaWx0
ZXJzLm9wZXJhdGlvbnMoKS5jbGVhcigpOwotICAgICAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5h
cHBlbmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwg
RmlsdGVyT3BlcmF0aW9uOjpPUEFDSVRZKSk7Ci0gICAgICAgIG9wYWNpdHlMYXllci0+c2V0Rmls
dGVycyhmaWx0ZXJzKTsKKyAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7CisgICAgZmlsdGVy
cy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRp
b246OmNyZWF0ZSgwLjUsIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFKSk7CisgICAgcGFyZW50
TGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CisgICAgbGF5ZXItPnNldEZpbHRlcnMoZmlsdGVy
cyk7CiAKLSAgICAgICAgdGhpcy0+Y2FsY0RyYXdFdGMocGFyZW50KTsKKyAgICBzZXRMYXllclBy
b3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JU
ZXN0aW5nKHBhcmVudExheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAw
KSwgSW50U2l6ZSgzMDAsIDMwMCksIGZhbHNlLCBvcGFxdWVMYXllcnMpOworICAgIHNldExheWVy
UHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBv
aW50KDEwMCwgMTAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7CiAK
LSAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6OkxheWVy
VHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVj
dCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JS
ZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OworICAgIFZlY3RvcjxSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKKyAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6
ZSA9IDUxMjsKIAotICAgICAgICAvLyBPcGFjaXR5IGxheWVyIHdvbid0IGNvbnRyaWJ1dGUgdG8g
b2NjbHVzaW9uLgotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKG9w
YWNpdHlMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2Ns
dWRlZEJlaGluZExheWVyKG9wYWNpdHlMYXllcik7Ci0gICAgICAgIG9jY2x1c2lvbi5maW5pc2hl
ZFRhcmdldFJlbmRlclN1cmZhY2Uob3BhY2l0eUxheWVyLCBvcGFjaXR5TGF5ZXItPnJlbmRlclN1
cmZhY2UoKSk7CisgICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KElu
dFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOworICAgIHBhcmVudC0+
c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7
CisgICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKIAotICAgICAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmlzRW1wdHkoKSk7
Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2Uo
KS5pc0VtcHR5KCkpOworICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1Ry
YW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0
eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5
ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKIAotICAgICAgICAvLyBBbmQgaGFzIG5vdGhp
bmcgdG8gY29udHJpYnV0ZSB0byBpdHMgcGFyZW50IHN1cmZhY2UuCi0gICAgICAgIG9jY2x1c2lv
bi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0g
ICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuaXNF
bXB0eSgpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0
U3VyZmFjZSgpLmlzRW1wdHkoKSk7CisgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNp
b24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAKLSAgICAgICAgLy8gT3BhcXVlIGxheWVy
IHdpbGwgY29udHJpYnV0ZSB0byBvY2NsdXNpb24uCi0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRh
cmdldFJlbmRlclN1cmZhY2Uob3BhcXVlTGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAg
IG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihvcGFxdWVMYXllcik7Ci0gICAgICAg
IG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2Uob3BhcXVlTGF5ZXIsIG9wYXF1
ZUxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRl
clN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CiAKLSAgICAgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNw
YWNlKCkuYm91bmRzKCkpOwotICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNp
b25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwotICAgICAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDAsIDQzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3Vy
ZmFjZSgpLmJvdW5kcygpKTsKLSAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVz
aW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOworICAgIC8vIFRoaXMgbGF5ZXIg
aXMgdHJhbnNsYXRlZCB3aGVuIGRyYXduIGludG8gaXRzIHRhcmdldC4gU28gaWYgdGhlIHNjaXNz
b3IgcmVjdCBnaXZlbiBmcm9tIHRoZSB0YXJnZXQgc3VyZmFjZQorICAgIC8vIGlzIG5vdCBpbiB0
aGF0IHRhcmdldCBzcGFjZSwgdGhlbiBhZnRlciB0cmFuc2xhdGluZyB0aGVzZSBxdWVyeSByZWN0
cyBpbnRvIHRoZSB0YXJnZXQsIHRoZXkgd2lsbCBmYWxsIG91dHNpZGUKKyAgICAvLyB0aGUgc2Np
c3NvciBhbmQgYmUgY29uc2lkZXJlZCBvY2NsdWRlZC4KKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOworICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwg
MTAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxh
eWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX0ZBTFNF
KG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAx
MDApKSk7Cit9CiAKLSAgICAgICAgLy8gQW5kIGl0IGdldHMgdHJhbnNsYXRlZCB0byB0aGUgcGFy
ZW50IHN1cmZhY2UuCi0gICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFj
ZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMzAsIDMwLCA3MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJv
dW5kcygpKTsKLSAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3Jl
ZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5i
b3VuZHMoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFy
Z2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAgICAgICAvLyBUaGUgYmx1ciBsYXll
ciBuZWVkcyB0byB0aHJvdyBhd2F5IGFueSBvY2NsdXNpb24gZnJvbSBvdXRzaWRlIGl0cyBzdWJ0
cmVlLgotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGJsdXJMYXll
ci0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
c2lvbkluU2NyZWVuU3BhY2UoKS5pc0VtcHR5KCkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuaXNFbXB0eSgpKTsKLQotICAgICAgICAv
LyBBbmQgaXQgd29uJ3QgY29udHJpYnV0ZSB0byBvY2NsdXNpb24uCi0gICAgICAgIG9jY2x1c2lv
bi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihibHVyTGF5ZXIpOwotICAgICAgICBvY2NsdXNpb24u
ZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGJsdXJMYXllciwgYmx1ckxheWVyLT5yZW5kZXJT
dXJmYWNlKCkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3Jl
ZW5TcGFjZSgpLmlzRW1wdHkoKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dXNpb25JblRhcmdldFN1cmZhY2UoKS5pc0VtcHR5KCkpOwotCi0gICAgICAgIC8vIEJ1dCB0aGUg
b3BhcXVlIGxheWVyJ3Mgb2NjbHVzaW9uIGlzIHByZXNlcnZlZCBvbiB0aGUgcGFyZW50LgotICAg
ICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJT
dXJmYWNlKCkpOwotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcw
KSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgICAg
IEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygp
LnNpemUoKSk7Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzAp
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwotICAgICAg
ICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0
cygpLnNpemUoKSk7Ci0gICAgfQotfTsKK1RFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShD
Q09jY2x1c2lvblRyYWNrZXJUZXN0X2xheWVyU2Npc3NvclJlY3RGb3JMYXllck9mZk9yaWdpbiwg
bGF5ZXJTY2lzc29yUmVjdEZvckxheWVyT2ZmT3JpZ2luKTsKIAotQUxMX0NDT0NDTFVTSU9OVFJB
Q0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RGaWx0ZXJzKTsKK3ZvaWQgZGFtYWdlUmVj
dE92ZXJUaWxlKGJvb2wgb3BhcXVlTGF5ZXJzKQoreworICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4IGlkZW50aXR5TWF0cml4OworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQg
PSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhG
b3JjZWREcmF3c0NvbnRlbnQ+IHBhcmVudExheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21p
dW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0
aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdp
dGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7CisgICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNl
KCk7CisgICAgcGFyZW50LT5hZGRDaGlsZChwYXJlbnRMYXllcik7CisgICAgcGFyZW50LT5hZGRD
aGlsZChsYXllcik7CiAKLXRlbXBsYXRlPGNsYXNzIFR5cGVzLCBib29sIG9wYXF1ZUxheWVycz4K
LWNsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RMYXllclNjaXNzb3JSZWN0T3V0c2lkZUNoaWxk
IDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVycz4gewot
cHJvdGVjdGVkOgotICAgIHZvaWQgcnVuTXlUZXN0KCkKLSAgICB7Ci0gICAgICAgIHR5cGVuYW1l
IFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMt
PmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7Ci0g
ICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNy
ZWF0ZURyYXdpbmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsKLSAgICAgICAgdGhpcy0+Y2FsY0Ry
YXdFdGMocGFyZW50KTsKLQotICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTx0eXBl
bmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+
IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICAgICAgb2NjbHVzaW9u
LnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKTsKLQotICAg
ICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJm
YWNlKCkpOwotCi0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwg
SW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAxMDAsIDEwMCwg
MTAwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIElu
dFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLQotICAg
ICAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKLSAgICAgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAs
IDEwMCkpKTsKLSAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgy
MDAsIDEwMCwgMTAwLCAxMDApKTsKLQotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVo
aW5kTGF5ZXIobGF5ZXIpOwotICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1
cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAg
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMTAw
LCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudCwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0g
ICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIw
MCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAxMDAp
KSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJl
Y3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKLQotICAgICAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCksIG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOwot
ICAgIH0KLX07CisgICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOworICAgIGZpbHRlcnMub3Bl
cmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpj
cmVhdGUoMC41LCBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRSkpOworICAgIHBhcmVudExheWVy
LT5zZXRGaWx0ZXJzKGZpbHRlcnMpOworICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwog
Ci1BTExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdExheWVy
U2Npc3NvclJlY3RPdXRzaWRlQ2hpbGQpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rp
bmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6
ZSgzMDAsIDMwMCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50TGF5
ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwg
MzAwKSwgZmFsc2UsIG9wYXF1ZUxheWVycyk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVz
dGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNp
emUoMjAwLCAyMDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwogCi10ZW1wbGF0ZTxjbGFzcyBUeXBl
cywgYm9vbCBvcGFxdWVMYXllcnM+Ci1jbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0U2NyZWVu
U2Npc3NvclJlY3RPdXRzaWRlQ2hpbGQgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxU
eXBlcywgb3BhcXVlTGF5ZXJzPiB7Ci1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBydW5NeVRlc3QoKQot
ICAgIHsKLSAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9
IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCks
IEludFNpemUoMzAwLCAzMDApKTsKLSAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXll
clR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ1N1cmZhY2UocGFyZW50LCB0aGlzLT5p
ZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUp
OwotICAgICAgICB0aGlzLT5jYWxjRHJhd0V0YyhwYXJlbnQpOwotCi0gICAgICAgIFRlc3RDQ09j
Y2x1c2lvblRyYWNrZXJCYXNlPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5
cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMjAwLCAxMDAsIDEwMCwg
MTAwKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwg
MCwgMTAwMCwgMTAwMCkpOwotCi0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1
cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICAgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgICAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMTAwLCAwLCAx
MDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVy
LCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAg
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMjAwLCAx
MDAsIDEwMCwgMTAwKSkpOwotCi0gICAgICAgIG9jY2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJTY2lz
c29yUmVjdCgpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIs
IEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBvY2NsdXNpb24uc2V0TGF5
ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLQotICAgICAgICBvY2Ns
dXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOwotICAgICAgICBvY2NsdXNpb24u
bGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotCi0g
ICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwg
MCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnQsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwot
ICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAs
IDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDAsIDEwMCwgMTAw
KSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRS
ZWN0KDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMjAwLCAx
MDAsIDEwMCkpKTsKLQotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwMCwgMTAwLCAx
MDAsIDEwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0
KDAsIDAsIDMwMCwgMzAwKSkpOwotICAgIH0KLX07CisgICAgVmVjdG9yPFJlZlB0cjxMYXllckNo
cm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CisgICAgVmVjdG9yPFJlZlB0cjxMYXll
ckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OworICAgIGludCBkdW1teU1heFRleHR1cmVTaXpl
ID0gNTEyOwogCi1BTExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2Vy
VGVzdFNjcmVlblNjaXNzb3JSZWN0T3V0c2lkZUNoaWxkKTsKKyAgICBwYXJlbnQtPnJlbmRlclN1
cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQt
PmJvdW5kcygpKSk7CisgICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6
ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKKyAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFw
cGVuZChwYXJlbnQpOwogCi10ZW1wbGF0ZTxjbGFzcyBUeXBlcywgYm9vbCBvcGFxdWVMYXllcnM+
Ci1jbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0RGFtYWdlUmVjdE91dHNpZGVDaGlsZCA6IHB1
YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PFR5cGVzLCBvcGFxdWVMYXllcnM+IHsKLXByb3Rl
Y3RlZDoKLSAgICB2b2lkIHJ1bk15VGVzdCgpCi0gICAgewotICAgICAgICB0eXBlbmFtZSBUeXBl
czo6Q29udGVudExheWVyVHlwZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVu
dGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOwotICAgICAg
ICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVE
cmF3aW5nU3VyZmFjZShwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAs
IDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSk7Ci0gICAgICAgIHRoaXMtPmNhbGNEcmF3RXRj
KHBhcmVudCk7CisgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNm
b3Jtc0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0
cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxp
c3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOwogCi0gICAgICAgIFRlc3REYW1hZ2VDbGllbnQ8dHlw
ZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBkYW1hZ2UoRmxvYXRSZWN0KDIwMCwgMTAw
LCAxMDAsIDEwMCkpOwotICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTx0eXBlbmFt
ZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9j
Y2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApLCAmZGFtYWdlKTsKKyAgICBUZXN0RGFt
YWdlQ2xpZW50IGRhbWFnZShGbG9hdFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSk7CisgICAgVGVz
dENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSwg
JmRhbWFnZSk7CiAKLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShs
YXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJT
dXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwogCi0gICAgICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDAsIDIwMCwg
MjAwKSkuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5
ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7
CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0
KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKIAotICAgICAgICBv
Y2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOwotICAgICAgICBvY2NsdXNp
b24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwor
ICAgIC8vIE91dHNpZGUgdGhlIGxheWVyJ3MgY2xpcCByZWN0LgorICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDAp
KSk7CiAKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDAp
LCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAz
MDAsIDMwMCkpKTsKLSAgICB9Ci19OworICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRM
YXllcihsYXllci5nZXQoKSk7CisgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJm
YWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRS
ZW5kZXJTdXJmYWNlKHBhcmVudExheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwogCi1BTExfQ0NPQ0NM
VVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdERhbWFnZVJlY3RPdXRzaWRl
Q2hpbGQpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5n
ZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkp
KTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCks
IEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkp
OworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCks
IEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkp
OworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwg
SW50UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKSk7
CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJ
bnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKIAotdGVtcGxhdGU8Y2xhc3MgVHlwZXMsIGJv
b2wgb3BhcXVlTGF5ZXJzPgotY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdExheWVyU2Npc3Nv
clJlY3RPdmVyQ2hpbGQgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxUeXBlcywgb3Bh
cXVlTGF5ZXJzPiB7Ci1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBydW5NeVRlc3QoKQotICAgIHsKLSAg
ICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IHRoaXMtPmNy
ZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUo
MzAwLCAzMDApKTsKLSAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxh
eWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ1N1cmZhY2UocGFyZW50LCB0aGlzLT5pZGVudGl0eU1h
dHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUpOwotICAgICAg
ICB0aGlzLT5jYWxjRHJhd0V0YyhwYXJlbnQpOwotCi0gICAgICAgIFRlc3RDQ09jY2x1c2lvblRy
YWNrZXJCYXNlPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5k
ZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAg
ICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDEwMCwgMTAwLCAxMDAs
IDEwMCkpOwotCi0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5
ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKGxheWVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkp
KTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0
KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQobGF5ZXIsIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotCi0gICAgICAgIG9j
Y2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7Ci0gICAgICAgIG9jY2x1c2lv
bi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0K
LSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgw
LCAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KHBhcmVudCwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7
Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3Qo
MTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDAsIDEwMCwg
MTAwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJ
bnRSZWN0KDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAgICAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMjAw
LCAxMDAsIDEwMCkpKTsKLQotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRl
ZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpLmlzRW1wdHkoKSk7
Ci0gICAgfQotfTsKKyAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFy
ZW50LT5yZW5kZXJTdXJmYWNlKCkpOwogCi1BTExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NP
Y2NsdXNpb25UcmFja2VyVGVzdExheWVyU2Npc3NvclJlY3RPdmVyQ2hpbGQpOworICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSwgb2NjbHVzaW9uLnVub2NjbHVk
ZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7Cit9
CiAKLXRlbXBsYXRlPGNsYXNzIFR5cGVzLCBib29sIG9wYXF1ZUxheWVycz4KLWNsYXNzIENDT2Nj
bHVzaW9uVHJhY2tlclRlc3RTY3JlZW5TY2lzc29yUmVjdE92ZXJDaGlsZCA6IHB1YmxpYyBDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0PFR5cGVzLCBvcGFxdWVMYXllcnM+IHsKLXByb3RlY3RlZDoKLSAg
ICB2b2lkIHJ1bk15VGVzdCgpCi0gICAgewotICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVu
dExheWVyVHlwZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJp
eCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOwotICAgICAgICB0eXBlbmFt
ZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nU3Vy
ZmFjZShwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRT
aXplKDIwMCwgMjAwKSwgdHJ1ZSk7Ci0gICAgICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7
Ci0KLSAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6Okxh
eWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50
UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKTsKLSAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Np
c3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0KLSAgICAgICAgb2NjbHVzaW9u
LmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAg
ICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMCwgMCwg
MTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXll
ciwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICAg
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDEw
MCwgMTAwLCAxMDApKSk7Ci0KLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExh
eWVyKGxheWVyKTsKLSAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNl
KHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDEwMCwgMTAw
LCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQs
IEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAg
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAx
MDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50LCBJbnRSZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMjAwLCAxMDAsIDEwMCkpKTsK
LSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgx
MDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOwotCi0gICAgICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0
KDAsIDAsIDMwMCwgMzAwKSkuaXNFbXB0eSgpKTsKLSAgICB9Ci19OworVEVTVF9PUEFRVUVfQU5E
X1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3RfZGFtYWdlUmVjdE92ZXJUaWxl
LCBkYW1hZ2VSZWN0T3ZlclRpbGUpOwogCi1BTExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NP
Y2NsdXNpb25UcmFja2VyVGVzdFNjcmVlblNjaXNzb3JSZWN0T3ZlckNoaWxkKTsKK3ZvaWQgZGFt
YWdlUmVjdE92ZXJDdWxsZWRUaWxlKGJvb2wgb3BhcXVlTGF5ZXJzKQoreworICAgIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OworICAgIFJlZlB0cjxMYXllckNocm9t
aXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJD
aHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IHBhcmVudExheWVyID0gYWRvcHRSZWYobmV3
IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOworICAgIFJlZlB0cjxMYXll
ckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5
ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7CisgICAgcGFyZW50LT5jcmVhdGVS
ZW5kZXJTdXJmYWNlKCk7CisgICAgcGFyZW50LT5hZGRDaGlsZChwYXJlbnRMYXllcik7CisgICAg
cGFyZW50LT5hZGRDaGlsZChsYXllcik7CiAKLXRlbXBsYXRlPGNsYXNzIFR5cGVzLCBib29sIG9w
YXF1ZUxheWVycz4KLWNsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3REYW1hZ2VSZWN0T3ZlckNo
aWxkIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVycz4g
ewotcHJvdGVjdGVkOgotICAgIHZvaWQgcnVuTXlUZXN0KCkKLSAgICB7Ci0gICAgICAgIHR5cGVu
YW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRo
aXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7
Ci0gICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMt
PmNyZWF0ZURyYXdpbmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsKLSAgICAgICAgdGhpcy0+Y2Fs
Y0RyYXdFdGMocGFyZW50KTsKKyAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7CisgICAgZmls
dGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVy
YXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFKSk7CisgICAgcGFy
ZW50TGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CisgICAgbGF5ZXItPnNldEZpbHRlcnMoZmls
dGVycyk7CiAKLSAgICAgICAgVGVzdERhbWFnZUNsaWVudDx0eXBlbmFtZSBUeXBlczo6UmVuZGVy
U3VyZmFjZVR5cGU+IGRhbWFnZShGbG9hdFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSk7Ci0gICAg
ICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUs
IHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwg
MCwgMTAwMCwgMTAwMCksICZkYW1hZ2UpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rp
bmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6
ZSgzMDAsIDMwMCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50TGF5
ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwg
MzAwKSwgZmFsc2UsIG9wYXF1ZUxheWVycyk7CisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVz
dGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNp
emUoMjAwLCAyMDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwogCi0gICAgICAgIG9jY2x1c2lvbi5l
bnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisgICAgVmVj
dG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CisgICAg
VmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OworICAgIGludCBk
dW1teU1heFRleHR1cmVTaXplID0gNTEyOwogCi0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMTAwLCAxMDAsIDEwMCwgMTAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChs
YXllciwgSW50UmVjdCgwLCAwLCAyMDAsIDIwMCkpKTsKKyAgICBwYXJlbnQtPnJlbmRlclN1cmZh
Y2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJv
dW5kcygpKSk7CisgICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJv
KCksIHBhcmVudC0+Ym91bmRzKCkpKTsKKyAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVu
ZChwYXJlbnQpOwogCi0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihs
YXllcik7Ci0gICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJl
bnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxh
dGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCks
IGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwg
ZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOwogCi0gICAgICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDAs
IDMwMCwgMzAwKSkuaXNFbXB0eSgpKTsKLSAgICB9Ci19OworICAgIFRlc3REYW1hZ2VDbGllbnQg
ZGFtYWdlKEZsb2F0UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKTsKKyAgICBUZXN0Q0NPY2NsdXNp
b25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApLCAmZGFtYWdlKTsK
IAotQUxMX0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3REYW1h
Z2VSZWN0T3ZlckNoaWxkKTsKKyAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNl
KGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwogCi10ZW1wbGF0ZTxjbGFzcyBUeXBlcywgYm9vbCBv
cGFxdWVMYXllcnM+Ci1jbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVj
dFBhcnRseU92ZXJDaGlsZCA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PFR5cGVzLCBv
cGFxdWVMYXllcnM+IHsKLXByb3RlY3RlZDoKLSAgICB2b2lkIHJ1bk15VGVzdCgpCi0gICAgewot
ICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogcGFyZW50ID0gdGhpcy0+
Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6
ZSgzMDAsIDMwMCkpOwotICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSog
bGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nU3VyZmFjZShwYXJlbnQsIHRoaXMtPmlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSk7Ci0gICAg
ICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7Ci0KLSAgICAgICAgVGVzdENDT2NjbHVzaW9u
VHJhY2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJl
bmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0g
ICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoNTAsIDUwLCAyMDAs
IDIwMCkpOwotCi0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5
ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAw
KSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRS
ZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotCi0gICAgICAg
IG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7Ci0gICAgICAgIG9jY2x1
c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7
Ci0KLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVj
dCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDAp
KSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJl
Y3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMCwg
MTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsK
LSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3Qo
MjAwLCAyMDAsIDEwMCwgMTAwKSkpOwotCi0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
NTAsIDUwLCAyMDAsIDIwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50
LCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOwotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KDIwMCwgNTAsIDUwLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFy
ZW50LCBJbnRSZWN0KDAsIDAsIDMwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDIwMCwgMTAwLCA1MCwgMTAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChwYXJlbnQsIEludFJlY3QoMCwgMTAwLCAzMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwgNTAsIDEwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDIwMCwgMTAwLCA1MCksIG9jY2x1c2lvbi51bm9j
Y2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsK
LSAgICB9Ci19OworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQo
KSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAw
LCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVy
LmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKIAotQUxMX0NDT0NDTFVTSU9O
VFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RMYXllclNjaXNzb3JSZWN0UGFydGx5
T3ZlckNoaWxkKTsKKyAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIu
Z2V0KCkpOworICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQt
PnJlbmRlclN1cmZhY2UoKSk7CisgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFj
ZShwYXJlbnRMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKIAotdGVtcGxhdGU8Y2xhc3MgVHlwZXMs
IGJvb2wgb3BhcXVlTGF5ZXJzPgotY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdFNjcmVlblNj
aXNzb3JSZWN0UGFydGx5T3ZlckNoaWxkIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8
VHlwZXMsIG9wYXF1ZUxheWVycz4gewotcHJvdGVjdGVkOgotICAgIHZvaWQgcnVuTXlUZXN0KCkK
LSAgICB7Ci0gICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQg
PSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDAp
LCBJbnRTaXplKDMwMCwgMzAwKSk7Ci0gICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5
ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+
aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVl
KTsKLSAgICAgICAgdGhpcy0+Y2FsY0RyYXdFdGMocGFyZW50KTsKLQotICAgICAgICBUZXN0Q0NP
Y2NsdXNpb25UcmFja2VyQmFzZTx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBU
eXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDUwLCA1MCwgMjAwLCAy
MDApKTsKLSAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAw
LCAxMDAwLCAxMDAwKSk7Ci0KLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3Vy
ZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgICAgICBFWFBFQ1RfRkFMU0Uob2Nj
bHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgICAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDAsIDEwMCwg
MTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5
ZXIsIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0K
LSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKLSAgICAg
ICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3Vy
ZmFjZSgpKTsKLQotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAwLCAwLCAx
MDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dCwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsK
LSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3Qo
MjAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnQsIEludFJlY3QoMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAwLCAyMDAsIDEwMCwg
MTAwKSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwg
SW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0KLSAgICAgICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCg1MCwgNTAsIDIwMCwgMjAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChwYXJlbnQsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7Ci0gICAgICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoMjAwLCA1MCwgNTAsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50
UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMCwgMzAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoMjAwLCAxMDAsIDUwLCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAxMDAsIDMwMCwgMTAwKSkpOwotICAgICAgICBF
WFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwMCwgMTAwLCA1MCwgMTAwKSwgb2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOwot
ICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDUwKSwgb2NjbHVz
aW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMTAwLCAyMDAsIDEwMCwg
MTAwKSkpOwotICAgIH0KLX07CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAs
IDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRM
YXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwg
MTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExh
eWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAwLCAx
MDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5
ZXIuZ2V0KCksIEludFJlY3QoMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAsIDEw
MCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXll
ci5nZXQoKSwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7CiAKLUFMTF9DQ09DQ0xVU0lP
TlRSQUNLRVJfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0U2NyZWVuU2Npc3NvclJlY3RQYXJ0
bHlPdmVyQ2hpbGQpOworICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShw
YXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CiAKLXRlbXBsYXRlPGNsYXNzIFR5cGVzLCBib29sIG9w
YXF1ZUxheWVycz4KLWNsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3REYW1hZ2VSZWN0UGFydGx5
T3ZlckNoaWxkIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxh
eWVycz4gewotcHJvdGVjdGVkOgotICAgIHZvaWQgcnVuTXlUZXN0KCkKLSAgICB7Ci0gICAgICAg
IHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVS
b290KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwg
MzAwKSk7Ci0gICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9
IHRoaXMtPmNyZWF0ZURyYXdpbmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgs
IEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsKLSAgICAgICAgdGhp
cy0+Y2FsY0RyYXdFdGMocGFyZW50KTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpLmlz
RW1wdHkoKSk7Cit9CiAKLSAgICAgICAgVGVzdERhbWFnZUNsaWVudDx0eXBlbmFtZSBUeXBlczo6
UmVuZGVyU3VyZmFjZVR5cGU+IGRhbWFnZShGbG9hdFJlY3QoNTAsIDUwLCAyMDAsIDIwMCkpOwot
ICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTx0eXBlbmFtZSBUeXBlczo6TGF5ZXJU
eXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0
KDAsIDAsIDEwMDAsIDEwMDApLCAmZGFtYWdlKTsKK1RFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09Q
QVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2RhbWFnZVJlY3RPdmVyQ3VsbGVkVGlsZSwgZGFt
YWdlUmVjdE92ZXJDdWxsZWRUaWxlKTsKIAotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRS
ZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwordm9pZCBkYW1hZ2VSZWN0T3Zl
clBhcnRpYWxUaWxlcyhib29sIG9wYXF1ZUxheWVycykKK3sKKyAgICBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFy
ZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW1X
aXRoRm9yY2VkRHJhd3NDb250ZW50PiBwYXJlbnRMYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNo
cm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1
bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21p
dW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOworICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3Vy
ZmFjZSgpOworICAgIHBhcmVudC0+YWRkQ2hpbGQocGFyZW50TGF5ZXIpOworICAgIHBhcmVudC0+
YWRkQ2hpbGQobGF5ZXIpOworCisgICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOworICAgIGZp
bHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3Bl
cmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRSkpOworICAgIHBh
cmVudExheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOworICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZp
bHRlcnMpOworCisgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCks
IGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7Cisg
ICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwgaWRlbnRp
dHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSwgb3Bh
cXVlTGF5ZXJzKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgp
LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRy
dWUsIG9wYXF1ZUxheWVycyk7CisKKyAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4g
cmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKKyAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+
ID4gZHVtbXlMYXllckxpc3Q7CisgICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7CisK
KyAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQ
b2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7CisgICAgcGFyZW50LT5zZXRDbGlwUmVj
dChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKKyAgICByZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOworCisgICAgQ0NMYXllclRyZWVIb3N0
Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgp
LCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOworCisg
ICAgVGVzdERhbWFnZUNsaWVudCBkYW1hZ2UoRmxvYXRSZWN0KDUwLCA1MCwgMjAwLCAyMDApKTsK
KyAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAs
IDEwMDApLCAmZGFtYWdlKTsKKworICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZh
Y2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOworICAgIEVY
UEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAw
LCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVy
LmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDAp
KSk7CisKKyAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIuZ2V0KCkp
OworICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRl
clN1cmZhY2UoKSk7CisgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJl
bnRMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJl
Y3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3Qo
MTAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJl
Y3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAxMDApKSk7CisgICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVj
dCgxMDAsIDIwMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7CisK
KyAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJT
dXJmYWNlKCkpOworCisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwgNTAsIDIwMCwgMjAw
KSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3Qo
MCwgMCwgMzAwLCAzMDApKSk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDUwLCA1
MCwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50
UmVjdCgwLCAwLCAzMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwMCwg
MTAwLCA1MCwgMTAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0
KCksIEludFJlY3QoMCwgMTAwLCAzMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KDIwMCwgMTAwLCA1MCwgMTAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChw
YXJlbnQuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoMTAwLCAyMDAsIDEwMCwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKSk7Cit9
CisKK1RFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0
X2RhbWFnZVJlY3RPdmVyUGFydGlhbFRpbGVzLCBkYW1hZ2VSZWN0T3ZlclBhcnRpYWxUaWxlcyk7
CisKK3ZvaWQgZGFtYWdlUmVjdE92ZXJOb1RpbGVzKGJvb2wgb3BhcXVlTGF5ZXJzKQoreworICAg
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OworICAgIFJlZlB0cjxM
YXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IHBhcmVudExheWVyID0gYWRv
cHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOworICAgIFJl
ZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIgPSBhZG9wdFJl
ZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7CisgICAgcGFyZW50
LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CisgICAgcGFyZW50LT5hZGRDaGlsZChwYXJlbnRMYXll
cik7CisgICAgcGFyZW50LT5hZGRDaGlsZChsYXllcik7CisKKyAgICBGaWx0ZXJPcGVyYXRpb25z
IGZpbHRlcnM7CisgICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50
VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9wZXJhdGlvbjo6R1JB
WVNDQUxFKSk7CisgICAgcGFyZW50TGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CisgICAgbGF5
ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CisKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0
aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNp
emUoMzAwLCAzMDApKTsKKyAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudExh
eWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAs
IDMwMCksIGZhbHNlLCBvcGFxdWVMYXllcnMpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRl
c3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRT
aXplKDIwMCwgMjAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKKworICAgIFZlY3RvcjxSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OworICAgIFZlY3RvcjxSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKKyAgICBpbnQgZHVtbXlNYXhUZXh0
dXJlU2l6ZSA9IDUxMjsKKworICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50
UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKKyAgICBw
YXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3Vu
ZHMoKSkpOworICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7CisKKyAg
ICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJp
bGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5
TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhU
ZXh0dXJlU2l6ZSk7CisKKyAgICBUZXN0RGFtYWdlQ2xpZW50IGRhbWFnZShGbG9hdFJlY3QoNTAw
LCA1MDAsIDEwMCwgMTAwKSk7CisgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24o
SW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSwgJmRhbWFnZSk7CisKKyAgICBvY2NsdXNpb24uZW50
ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDAsIDEw
MCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQo
KSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAs
IDEwMCwgMTAwLCAxMDApKSk7CisKKyAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5
ZXIobGF5ZXIuZ2V0KCkpOworICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFj
ZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVu
ZGVyU3VyZmFjZShwYXJlbnRMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAx
MDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5
ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAs
IDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIu
Z2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAw
LCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVy
LmdldCgpLCBJbnRSZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAx
MDApKSk7CisgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdl
dCgpLCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAyMDAsIDEwMCwg
MTAwKSkpOworCisgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVu
dC0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkuaXNF
bXB0eSgpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0
KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAsIDEwMCkpLmlzRW1wdHkoKSk7CisgICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCks
IEludFJlY3QoMCwgMTAwLCAzMDAsIDEwMCkpLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjAw
LCAxMDAsIDEwMCwgMTAwKSkuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgxMDAsIDIwMCwgMTAw
LCAxMDApKS5pc0VtcHR5KCkpOworfQorCitURVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUo
Q0NPY2NsdXNpb25UcmFja2VyVGVzdF9kYW1hZ2VSZWN0T3Zlck5vVGlsZXMsIGRhbWFnZVJlY3RP
dmVyTm9UaWxlcyk7CisKK1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwgb3BhcXVlQ29udGVu
dHNSZWdpb25FbXB0eSkKK3sKKyAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0
eU1hdHJpeDsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250
ZW50PiBsYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29u
dGVudCgpKTsKKyAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKKyAgICBwYXJlbnQt
PmFkZENoaWxkKGxheWVyKTsKIAotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUwLCA1
MCwgMTUwLCAxNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGxheWVyLCBJbnRS
ZWN0KDAsIDAsIDIwMCwgMjAwKSkpOworICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKKyAg
ICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRl
ck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsKKyAg
ICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKIAotICAgICAgICBvY2NsdXNpb24ubWFya09j
Y2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOwotICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1Rhcmdl
dFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgIHNldExheWVyUHJv
cGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRl
c3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRT
aXplKDIwMCwgMjAwKSwgZmFsc2UsIGZhbHNlKTsKIAotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDUwLCA1MCwgMjAwLCAyMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0
KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKLSAgICB9Ci19OworICAgIFZlY3Rv
cjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OworICAgIFZl
Y3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKKyAgICBpbnQgZHVt
bXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKIAotQUxMX0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKEND
T2NjbHVzaW9uVHJhY2tlclRlc3REYW1hZ2VSZWN0UGFydGx5T3ZlckNoaWxkKTsKKyAgICBwYXJl
bnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVy
bygpLCBwYXJlbnQtPmJvdW5kcygpKSk7CisgICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0
KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKKyAgICByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOwogCi10ZW1wbGF0ZTxjbGFzcyBUeXBlcywgYm9vbCBv
cGFxdWVMYXllcnM+Ci1jbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVj
dE92ZXJOb3RoaW5nIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1
ZUxheWVycz4gewotcHJvdGVjdGVkOgotICAgIHZvaWQgcnVuTXlUZXN0KCkKLSAgICB7Ci0gICAg
ICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVh
dGVSb290KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMw
MCwgMzAwKSk7Ci0gICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXll
ciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRy
aXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsKLSAgICAgICAg
dGhpcy0+Y2FsY0RyYXdFdGMocGFyZW50KTsKLQotICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFj
a2VyQmFzZTx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVy
U3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICAg
ICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCg1MDAsIDUwMCwgMTAwLCAx
MDApKTsKLQotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVy
LT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChsYXllciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7
Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgx
MDAsIDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQobGF5ZXIsIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotCi0gICAgICAgIG9jY2x1
c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7Ci0gICAgICAgIG9jY2x1c2lvbi5s
ZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAg
ICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAw
LCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudCwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0g
ICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAw
LCAxMDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDAsIDEwMCwgMTAw
KSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRS
ZWN0KDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMjAwLCAx
MDAsIDEwMCkpKTsKLQotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpLmlzRW1wdHkoKSk7Ci0g
ICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50
LCBJbnRSZWN0KDAsIDAsIDMwMCwgMTAwKSkuaXNFbXB0eSgpKTsKLSAgICAgICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMTAw
LCAzMDAsIDEwMCkpLmlzRW1wdHkoKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkp
LmlzRW1wdHkoKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpLmlzRW1wdHkoKSk7
Ci0gICAgfQotfTsKKyAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFu
c2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlN
YXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVy
TGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7CiAKLUFMTF9DQ09DQ0xVU0lPTlRSQUNLRVJfVEVT
VChDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVjdE92ZXJOb3RoaW5nKTsKKyAg
ICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEw
MDApKTsKIAotdGVtcGxhdGU8Y2xhc3MgVHlwZXMsIGJvb2wgb3BhcXVlTGF5ZXJzPgotY2xhc3Mg
Q0NPY2NsdXNpb25UcmFja2VyVGVzdFNjcmVlblNjaXNzb3JSZWN0T3Zlck5vdGhpbmcgOiBwdWJs
aWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxUeXBlcywgb3BhcXVlTGF5ZXJzPiB7Ci1wcm90ZWN0
ZWQ6Ci0gICAgdm9pZCBydW5NeVRlc3QoKQotICAgIHsKLSAgICAgICAgdHlwZW5hbWUgVHlwZXM6
OkNvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRp
dHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKLSAgICAgICAg
dHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJh
d2luZ1N1cmZhY2UocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAw
KSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUpOwotICAgICAgICB0aGlzLT5jYWxjRHJhd0V0Yyhw
YXJlbnQpOwotCi0gICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPHR5cGVuYW1lIFR5
cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVz
aW9uKEludFJlY3QoNTAwLCA1MDAsIDEwMCwgMTAwKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5zZXRM
YXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotCi0gICAgICAgIG9j
Y2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7
Ci0KLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0
KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQobGF5ZXIsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7
Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgx
MDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0KLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJl
aGluZExheWVyKGxheWVyKTsKLSAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJT
dXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgICAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAg
ICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDEw
MCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnQsIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7
Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3Qo
MjAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMjAwLCAxMDAsIDEw
MCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50
UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOwotCi0gICAg
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJ
bnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkuaXNFbXB0eSgpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMCwgMzAw
LCAxMDApKS5pc0VtcHR5KCkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAxMDAsIDMwMCwgMTAwKSkuaXNFbXB0
eSgpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChwYXJlbnQsIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkuaXNFbXB0eSgpKTsKLSAgICAg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIElu
dFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkuaXNFbXB0eSgpKTsKLSAgICB9Ci19OworICAgIG9j
Y2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7
CiAKLUFMTF9DQ09DQ0xVU0lPTlRSQUNLRVJfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0U2Ny
ZWVuU2Npc3NvclJlY3RPdmVyTm90aGluZyk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICBFWFBF
Q1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwg
MTAwLCAxMDApKSk7CisgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5n
ZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkp
OwogCi10ZW1wbGF0ZTxjbGFzcyBUeXBlcywgYm9vbCBvcGFxdWVMYXllcnM+Ci1jbGFzcyBDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0RGFtYWdlUmVjdE92ZXJOb3RoaW5nIDogcHVibGljIENDT2NjbHVz
aW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVycz4gewotcHJvdGVjdGVkOgotICAgIHZv
aWQgcnVuTXlUZXN0KCkKLSAgICB7Ci0gICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5
ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5TWF0cml4LCBG
bG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7Ci0gICAgICAgIHR5cGVuYW1lIFR5
cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdTdXJmYWNl
KHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUo
MjAwLCAyMDApLCB0cnVlKTsKLSAgICAgICAgdGhpcy0+Y2FsY0RyYXdFdGMocGFyZW50KTsKKyAg
ICAvLyBPY2NsdWRlZCBzaW5jZSBpdHMgb3V0c2lkZSB0aGUgc3VyZmFjZSBib3VuZHMuCisgICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwg
MTAwLCAxMDAsIDEwMCkpKTsKIAotICAgICAgICBUZXN0RGFtYWdlQ2xpZW50PHR5cGVuYW1lIFR5
cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gZGFtYWdlKEZsb2F0UmVjdCg1MDAsIDUwMCwgMTAwLCAx
MDApKTsKLSAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6
OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24o
SW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSwgJmRhbWFnZSk7CisgICAgLy8gVGVzdCB3aXRob3V0
IGFueSBzY2lzc29ycy4KKyAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0
KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVk
KGxheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICBvY2NsdXNp
b24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKIAotICAgICAgICBvY2NsdXNpb24uZW50
ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgIG9jY2x1
c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllci5nZXQoKSk7CisgICAgb2NjbHVzaW9u
LmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKIAot
ICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGxheWVy
LCBJbnRSZWN0KDAsIDAsIDIwMCwgMjAwKSkuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpLmlzRW1wdHkoKSk7Cisg
ICAgRVhQRUNUX0VRKDB1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3Rz
KCkuc2l6ZSgpKTsKK30KIAotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5
ZXIobGF5ZXIpOwotICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2Uo
cGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBv
cGFxdWVDb250ZW50c1JlZ2lvbk5vbkVtcHR5KQoreworICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4IGlkZW50aXR5TWF0cml4OworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQg
PSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhG
b3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRo
Rm9yY2VkRHJhd3NDb250ZW50KCkpOworICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgp
OworICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOwogCi0gICAgICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDAsIDMwMCwg
MzAwKSkuaXNFbXB0eSgpKTsKLSAgICB9Ci19OworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRl
c3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50
U2l6ZSgzMDAsIDMwMCkpOworICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIu
Z2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDEwMCwgMTAwKSwgSW50U2l6ZSgyMDAs
IDIwMCksIGZhbHNlLCBmYWxzZSk7CiAKLUFMTF9DQ09DQ0xVU0lPTlRSQUNLRVJfVEVTVChDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0RGFtYWdlUmVjdE92ZXJOb3RoaW5nKTsKKyAgICBWZWN0b3I8UmVm
UHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKKyAgICBWZWN0b3I8
UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7CisgICAgaW50IGR1bW15TWF4
VGV4dHVyZVNpemUgPSA1MTI7CiAKLXRlbXBsYXRlPGNsYXNzIFR5cGVzLCBib29sIG9wYXF1ZUxh
eWVycz4KLWNsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RMYXllclNjaXNzb3JSZWN0Rm9yTGF5
ZXJPZmZPcmlnaW4gOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxUeXBlcywgb3BhcXVl
TGF5ZXJzPiB7Ci1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBydW5NeVRlc3QoKQotICAgIHsKLSAgICAg
ICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0
ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAw
LCAzMDApKTsKLSAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVy
ID0gdGhpcy0+Y3JlYXRlRHJhd2luZ1N1cmZhY2UocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJp
eCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUpOwotICAgICAgICB0
aGlzLT5jYWxjRHJhd0V0YyhwYXJlbnQpOwotCi0gICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNr
ZXJCYXNlPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJT
dXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAgICAg
ICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNl
KCkpOwotCi0gICAgICAgIC8vIFRoaXMgbGF5ZXIgaXMgdHJhbnNsYXRlZCB3aGVuIGRyYXduIGlu
dG8gaXRzIHRhcmdldC4gU28gaWYgdGhlIHNjaXNzb3IgcmVjdCBnaXZlbiBmcm9tIHRoZSB0YXJn
ZXQgc3VyZmFjZQotICAgICAgICAvLyBpcyBub3QgaW4gdGhhdCB0YXJnZXQgc3BhY2UsIHRoZW4g
YWZ0ZXIgdHJhbnNsYXRpbmcgdGhlc2UgcXVlcnkgcmVjdHMgaW50byB0aGUgdGFyZ2V0LCB0aGV5
IHdpbGwgZmFsbCBvdXRzaWRlCi0gICAgICAgIC8vIHRoZSBzY2lzc29yIGFuZCBiZSBjb25zaWRl
cmVkIG9jY2x1ZGVkLgotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxh
eWVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2Nj
bHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAg
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMTAwLCAw
LCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChs
YXllciwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgfQotfTsKKyAgICBwYXJl
bnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVy
bygpLCBwYXJlbnQtPmJvdW5kcygpKSk7CisgICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0
KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKKyAgICByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOwogCi1BTExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1Qo
Q0NPY2NsdXNpb25UcmFja2VyVGVzdExheWVyU2Npc3NvclJlY3RGb3JMYXllck9mZk9yaWdpbik7
CisgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZp
c2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVu
dGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15
TWF4VGV4dHVyZVNpemUpOwogCi10ZW1wbGF0ZTxjbGFzcyBUeXBlcywgYm9vbCBvcGFxdWVMYXll
cnM+Ci1jbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0T3BhcXVlQ29udGVudHNSZWdpb25FbXB0
eSA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PFR5cGVzLCBvcGFxdWVMYXllcnM+IHsK
LXByb3RlY3RlZDoKLSAgICB2b2lkIHJ1bk15VGVzdCgpCiAgICAgewotICAgICAgICB0eXBlbmFt
ZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlz
LT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOwot
ICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5j
cmVhdGVEcmF3aW5nU3VyZmFjZShwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBv
aW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgZmFsc2UpOwotICAgICAgICB0aGlzLT5jYWxj
RHJhd0V0YyhwYXJlbnQpOwotCi0gICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPHR5
cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlw
ZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAgICAgICBvY2NsdXNp
b24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwotCi0g
ICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMCwg
MCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQo
bGF5ZXIsIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNF
KG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwot
ICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEw
MCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2Ns
dXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgICAgIGxheWVyLT5zZXRPcGFx
dWVQYWludFJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOwogCi0gICAgICAgIC8vIE9jY2x1
ZGVkIHNpbmNlIGl0cyBvdXRzaWRlIHRoZSBzdXJmYWNlIGJvdW5kcy4KLSAgICAgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEw
MCkpKTsKLQotICAgICAgICAvLyBUZXN0IHdpdGhvdXQgYW55IHNjaXNzb3JzLgotICAgICAgICBv
Y2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsK
LSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgy
MDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIG9jY2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJT
Y2lzc29yUmVjdCgpOworICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNl
KHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRl
ZEJlaGluZExheWVyKGxheWVyLmdldCgpKTsKIAotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1
ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOwotICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJl
bmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNj
cmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwogCi0gICAgICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkuaXNFbXB0
eSgpKTsKLSAgICAgICAgRVhQRUNUX0VRKDB1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5T
cGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgx
MDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKICAgICB9
Ci19OwotCi1NQUlOX0FORF9JTVBMX1RIUkVBRF9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RP
cGFxdWVDb250ZW50c1JlZ2lvbkVtcHR5KTsKIAotdGVtcGxhdGU8Y2xhc3MgVHlwZXMsIGJvb2wg
b3BhcXVlTGF5ZXJzPgotY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdE9wYXF1ZUNvbnRlbnRz
UmVnaW9uTm9uRW1wdHkgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxUeXBlcywgb3Bh
cXVlTGF5ZXJzPiB7Ci1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBydW5NeVRlc3QoKQogICAgIHsKLSAg
ICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IHRoaXMtPmNy
ZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUo
MzAwLCAzMDApKTsKLSAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxh
eWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRy
aXgsIEZsb2F0UG9pbnQoMTAwLCAxMDApLCBJbnRTaXplKDIwMCwgMjAwKSwgZmFsc2UpOwotICAg
ICAgICB0aGlzLT5jYWxjRHJhd0V0YyhwYXJlbnQpOworICAgICAgICBUZXN0Q0NPY2NsdXNpb25U
cmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgbGF5
ZXItPnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KDIwLCAyMCwgMTgwLCAxODApKTsKIAotICAg
ICAgICB7Ci0gICAgICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTx0eXBlbmFtZSBU
eXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1
c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICAgICAgICAgIGxheWVyLT5zZXRP
cGFxdWVDb250ZW50c1JlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOwotCi0gICAgICAgICAg
ICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFj
ZSgpKTsKLSAgICAgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXll
cik7Ci0KLSAgICAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCAxMDAsIDEwMCwg
MTAwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAg
ICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCku
cmVjdHMoKS5zaXplKCkpOwotCi0gICAgICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgICAgICAgICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgxMDAsIDEwMCwg
MTAwLCAxMDApKSk7Ci0gICAgICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVk
KHBhcmVudCwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICB7Ci0gICAgICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTx0eXBlbmFtZSBU
eXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1
c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICAgICAgICAgIGxheWVyLT5zZXRP
cGFxdWVDb250ZW50c1JlY3QoSW50UmVjdCgyMCwgMjAsIDE4MCwgMTgwKSk7Ci0KLSAgICAgICAg
ICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJm
YWNlKCkpOwotICAgICAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxh
eWVyKTsKKyAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQt
PnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRM
YXllcihsYXllci5nZXQoKSk7CiAKLSAgICAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
MTIwLCAxMjAsIDE4MCwgMTgwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5i
b3VuZHMoKSk7Ci0gICAgICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25J
blNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDEyMCwgMTIwLCAxODAsIDE4MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNw
YWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNp
b25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwogCi0gICAgICAgICAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAw
KSkpOwotICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQs
IEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgICAgICAgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7
Ci0gICAgICAgIH0KKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnQuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZB
TFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEw
MCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LmdldCgpLCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICB9CiAKLSAgICAgICAg
ewotICAgICAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6
OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24o
SW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgICAgICAgICBsYXllci0+c2V0T3BhcXVl
Q29udGVudHNSZWN0KEludFJlY3QoMTUwLCAxNTAsIDEwMCwgMTAwKSk7CisgICAgeworICAgICAg
ICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEw
MDApKTsKKyAgICAgICAgbGF5ZXItPnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KDE1MCwgMTUw
LCAxMDAsIDEwMCkpOwogCi0gICAgICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJT
dXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgICAgIG9jY2x1c2lvbi5t
YXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7CisgICAgICAgIG9jY2x1c2lvbi5lbnRlclRh
cmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBvY2Ns
dXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIuZ2V0KCkpOwogCi0gICAgICAgICAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDI1MCwgMjUwLCA1MCwgNTApLCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICAgICAgICAgIEVYUEVDVF9FUSgx
dSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Cisg
ICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjUwLCAyNTAsIDUwLCA1MCksIG9jY2x1c2lv
bi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEo
MXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwog
Ci0gICAgICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50
UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAg
ICAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3Qo
MjAwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAgICAgICB9CisgICAgICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDAp
KSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgp
LCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAw
KSkpOwogICAgIH0KLX07Ci0KLU1BSU5fQU5EX0lNUExfVEhSRUFEX1RFU1QoQ0NPY2NsdXNpb25U
cmFja2VyVGVzdE9wYXF1ZUNvbnRlbnRzUmVnaW9uTm9uRW1wdHkpOworfQogCiB9IC8vIG5hbWVz
cGFjZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>