<?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>225582</bug_id>
          
          <creation_ts>2021-05-09 15:57:36 -0700</creation_ts>
          <short_desc>[GPU Process] Simplify DisplayList::Iterator part 9: Migrate DisplayList::Iterator&apos;s API to use DisplayListItem rather than ItemHandle, and update callers</short_desc>
          <delta_ts>2021-05-23 10:55:58 -0700</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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>225579</dependson>
          <blocked>223560</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1758386</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-05-09 15:57:36 -0700</bug_when>
    <thetext>Migrate DisplayList::Iterator&apos;s API to use DisplayListItem rather than ItemHandle, and update callers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758387</commentid>
    <comment_count>1</comment_count>
      <attachid>428142</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-05-09 15:59:22 -0700</bug_when>
    <thetext>Created attachment 428142
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758393</commentid>
    <comment_count>2</comment_count>
      <attachid>428145</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-05-09 17:37:39 -0700</bug_when>
    <thetext>Created attachment 428145
Patch for reviewing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758394</commentid>
    <comment_count>3</comment_count>
      <attachid>428146</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-05-09 17:40:36 -0700</bug_when>
    <thetext>Created attachment 428146
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758403</commentid>
    <comment_count>4</comment_count>
      <attachid>428145</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-09 18:36:02 -0700</bug_when>
    <thetext>Comment on attachment 428145
Patch for reviewing

View in context: https://bugs.webkit.org/attachment.cgi?id=428145&amp;action=review

&gt; Source/WebCore/ChangeLog:12
&gt; +        - DisplayList::append() goes from 134 lines to 3

Feels good, right?

&gt; Source/WebCore/platform/graphics/displaylists/DisplayList.cpp:90
&gt; +    auto visitor = WTF::makeVisitor([&amp;](const SetState&amp; stateItem) -&gt; bool {

I&apos;ve been encouraging use of the helper WTF::switchOn(variant, ...) which wraps makeVisitor() and just reads a bit nicer in my opinion.

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:2385
&gt; +inline constexpr bool isDrawingItem(const DisplayListItem&amp; displayListItem)
&gt; +{
&gt; +    return WTF::visit([](const auto&amp; displayListItem) {
&gt; +        return displayListItem.isDrawingItem;
&gt; +    }, displayListItem);
&gt; +}

This will end up being a bit of a big function due to all the cases it needs to handle so unless it is particularly performance sensitive, I would recommend moving the implementation out of line. I don&apos;t think the constexpr will apply in most cases as you usually don&apos;t have a constexpr DisplayListItem.

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListReplayer.cpp:115
&gt; +template&lt;typename Item&gt;
&gt; +static inline typename std::enable_if_t&lt;!HasApply&lt;Item&gt;, void&gt; apply(const Item&amp;, GraphicsContext&amp;)

These should go on the same line.

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListReplayer.cpp:120
&gt; +template&lt;typename Item&gt;
&gt; +static inline typename std::enable_if_t&lt;HasApply&lt;Item&gt;, void&gt; apply(const Item&amp; item, GraphicsContext&amp; graphicsContext)

These should go on the same line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758450</commentid>
    <comment_count>5</comment_count>
      <attachid>428159</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-05-10 02:54:06 -0700</bug_when>
    <thetext>Created attachment 428159
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758452</commentid>
    <comment_count>6</comment_count>
      <attachid>428160</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-05-10 02:58:35 -0700</bug_when>
    <thetext>Created attachment 428160
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758453</commentid>
    <comment_count>7</comment_count>
      <attachid>428161</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-05-10 02:59:09 -0700</bug_when>
    <thetext>Created attachment 428161
Updated patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760660</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-16 15:58:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/78084300&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762914</commentid>
    <comment_count>9</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-23 08:52:10 -0700</bug_when>
    <thetext>Myles, you still planning on landing these? Would be great to get them in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762916</commentid>
    <comment_count>10</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-05-23 10:55:58 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #9)
&gt; Myles, you still planning on landing these? Would be great to get them in.

I am, but they cause a MotionMark regression. I need to figure out why.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428142</attachid>
            <date>2021-05-09 15:59:22 -0700</date>
            <delta_ts>2021-05-09 17:37:39 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>48329</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IDFiNDczMzQxZjhjZjRkZDk1ZjY5Mzg4NTVjZGM3NjI4NzM1ZDFjODIKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBTdW4gTWF5IDkg
MTU6NTU6MjMgMjAyMSAtMDcwMAoKICAgIFBhcnQgOQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggYzc4YWY3ZTI1ZGRiLi4x
OGM5ZmViODE3MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oCkBAIC0xNjAsNyArMTYwLDcgQEAgc3RydWN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlIHsKICAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRTdGF0ZSgpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIH5HcmFwaGljc0NvbnRleHRTdGF0ZSgpOwogCi0gICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBHcmFwaGljc0NvbnRleHRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlKEdyYXBoaWNzQ29udGV4
dFN0YXRlJiYpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGUmIG9wZXJhdG9yPShjb25zdCBH
cmFwaGljc0NvbnRleHRTdGF0ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKaW5kZXggNjA1
ZjlhMGE2NDY2Li5kOGM5MTkyMDU1YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcApAQCAt
ODUsMTIgKzg1LDEwIEBAIHZvaWQgRGlzcGxheUxpc3Q6OmNsZWFyKCkKICAgICBtX25hdGl2ZUlt
YWdlcy5jbGVhcigpOwogfQogCi1ib29sIERpc3BsYXlMaXN0OjpzaG91bGREdW1wRm9yRmxhZ3Mo
QXNUZXh0RmxhZ3MgZmxhZ3MsIEl0ZW1IYW5kbGUgaXRlbSkKK2Jvb2wgRGlzcGxheUxpc3Q6OnNo
b3VsZER1bXBGb3JGbGFncyhBc1RleHRGbGFncyBmbGFncywgY29uc3QgRGlzcGxheUxpc3RJdGVt
JiBpdGVtKQogewotICAgIHN3aXRjaCAoaXRlbS50eXBlKCkpIHsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpTZXRTdGF0ZToKKyAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKFsmXShjb25z
dCBTZXRTdGF0ZSYgc3RhdGVJdGVtKSAtPiBib29sIHsKICAgICAgICAgaWYgKCEoZmxhZ3MgJiBB
c1RleHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9ucykpIHsKLSAgICAgICAgICAgIGNv
bnN0IGF1dG8mIHN0YXRlSXRlbSA9IGl0ZW0uZ2V0PFNldFN0YXRlPigpOwogICAgICAgICAgICAg
Ly8gRklYTUU6IGZvciBub3csIG9ubHkgZHJvcCB0aGUgaXRlbSBpZiB0aGUgb25seSBzdGF0ZS1j
aGFuZ2UgZmxhZ3MgYXJlIHBsYXRmb3JtLXNwZWNpZmljLgogICAgICAgICAgICAgaWYgKHN0YXRl
SXRlbS5zdGF0ZUNoYW5nZSgpLm1fY2hhbmdlRmxhZ3MgPT0gR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC05OCwzMSArOTYsMzAgQEAgYm9vbCBEaXNwbGF5TGlzdDo6c2hvdWxkRHVt
cEZvckZsYWdzKEFzVGV4dEZsYWdzIGZsYWdzLCBJdGVtSGFuZGxlIGl0ZW0pCiAgICAgICAgICAg
ICBpZiAoc3RhdGVJdGVtLnN0YXRlQ2hhbmdlKCkubV9jaGFuZ2VGbGFncyA9PSBHcmFwaGljc0Nv
bnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKQogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICBicmVhazsKKyAgICAgICAg
cmV0dXJuIHRydWU7CiAjaWYgVVNFKENHKQotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RmlsbFBh
dHRlcm46Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuOgotICAgICAgICBp
ZiAoIShmbGFncyAmIEFzVGV4dEZsYWc6OkluY2x1ZGVzUGxhdGZvcm1PcGVyYXRpb25zKSkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgYnJlYWs7CisgICAgfSwgWyZdKGNvbnN0
IEFwcGx5RmlsbFBhdHRlcm4mKSAtPiBib29sIHsKKyAgICAgICAgcmV0dXJuIGZsYWdzICYgQXNU
ZXh0RmxhZzo6SW5jbHVkZXNQbGF0Zm9ybU9wZXJhdGlvbnM7CisgICAgfSwgWyZdKGNvbnN0IEFw
cGx5U3Ryb2tlUGF0dGVybiYpIC0+IGJvb2wgeworICAgICAgICByZXR1cm4gZmxhZ3MgJiBBc1Rl
eHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9uczsKICNlbmRpZgotICAgIGRlZmF1bHQ6
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LCBbXShjb25z
dCBhdXRvJikgLT4gYm9vbCB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0pOworICAgIHJl
dHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIGl0ZW0pOwogfQogCiBTdHJpbmcgRGlzcGxheUxpc3Q6
OmFzVGV4dChBc1RleHRGbGFncyBmbGFncykgY29uc3QKIHsKICAgICBUZXh0U3RyZWFtIHN0cmVh
bShUZXh0U3RyZWFtOjpMaW5lTW9kZTo6TXVsdGlwbGVMaW5lLCBUZXh0U3RyZWFtOjpGb3JtYXR0
aW5nOjpTVkdTdHlsZVJlY3QpOwogICAgIGZvciAoYXV0byBkaXNwbGF5TGlzdEl0ZW0gOiAqdGhp
cykgewotICAgICAgICBhdXRvIFtpdGVtLCBleHRlbnQsIGl0ZW1TaXplSW5CdWZmZXJdID0gZGlz
cGxheUxpc3RJdGVtLnZhbHVlKCk7CisgICAgICAgIGNvbnN0IGF1dG8mIFtpdGVtLCBleHRlbnQs
IGl0ZW1TaXplSW5CdWZmZXJdID0gZGlzcGxheUxpc3RJdGVtLnZhbHVlKCk7CiAgICAgICAgIGlm
ICghc2hvdWxkRHVtcEZvckZsYWdzKGZsYWdzLCBpdGVtKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCiAgICAgICAgIFRleHRTdHJlYW06Okdyb3VwU2NvcGUgZ3JvdXAoc3RyZWFtKTsKICAgICAg
ICAgc3RyZWFtIDw8IGl0ZW07Ci0gICAgICAgIGlmIChpdGVtLmlzRHJhd2luZ0l0ZW0oKSkKKyAg
ICAgICAgaWYgKGlzRHJhd2luZ0l0ZW0oaXRlbSkpCiAgICAgICAgICAgICBzdHJlYW0gPDwgIiBl
eHRlbnQgIiA8PCBleHRlbnQ7CiAgICAgfQogICAgIHJldHVybiBzdHJlYW0ucmVsZWFzZSgpOwpA
QCAtMTM0LDEwICsxMzEsMTAgQEAgdm9pZCBEaXNwbGF5TGlzdDo6ZHVtcChUZXh0U3RyZWFtJiB0
cykgY29uc3QKICAgICB0cyA8PCAiZGlzcGxheSBsaXN0IjsKIAogICAgIGZvciAoYXV0byBkaXNw
bGF5TGlzdEl0ZW0gOiAqdGhpcykgewotICAgICAgICBhdXRvIFtpdGVtLCBleHRlbnQsIGl0ZW1T
aXplSW5CdWZmZXJdID0gZGlzcGxheUxpc3RJdGVtLnZhbHVlKCk7CisgICAgICAgIGNvbnN0IGF1
dG8mIFtpdGVtLCBleHRlbnQsIGl0ZW1TaXplSW5CdWZmZXJdID0gZGlzcGxheUxpc3RJdGVtLnZh
bHVlKCk7CiAgICAgICAgIFRleHRTdHJlYW06Okdyb3VwU2NvcGUgZ3JvdXAodHMpOwogICAgICAg
ICB0cyA8PCBpdGVtOwotICAgICAgICBpZiAoaXRlbS5pc0RyYXdpbmdJdGVtKCkpCisgICAgICAg
IGlmIChpc0RyYXdpbmdJdGVtKGl0ZW0pKQogICAgICAgICAgICAgdHMgPDwgIiBleHRlbnQgIiA8
PCBleHRlbnQ7CiAgICAgfQogICAgIHRzLnN0YXJ0R3JvdXAoKTsKQEAgLTE5NywxNDIgKzE5NCwx
MSBAQCB2b2lkIERpc3BsYXlMaXN0OjpzZXRUcmFja3NEcmF3aW5nSXRlbUV4dGVudHMoYm9vbCB2
YWx1ZSkKICAgICBtX3RyYWNrc0RyYXdpbmdJdGVtRXh0ZW50cyA9IHZhbHVlOwogfQogCi12b2lk
IERpc3BsYXlMaXN0OjphcHBlbmQoSXRlbUhhbmRsZSBpdGVtKQordm9pZCBEaXNwbGF5TGlzdDo6
YXBwZW5kKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgaXRlbSkKIHsKLSAgICBzd2l0Y2ggKGl0ZW0u
dHlwZSgpKSB7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2F2ZToKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZDxTYXZlPihpdGVtLmdldDxTYXZlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0b3JlOgot
ICAgICAgICByZXR1cm4gYXBwZW5kPFJlc3RvcmU+KGl0ZW0uZ2V0PFJlc3RvcmU+KCkpOwotICAg
IGNhc2UgSXRlbVR5cGU6OlRyYW5zbGF0ZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxUcmFuc2xh
dGU+KGl0ZW0uZ2V0PFRyYW5zbGF0ZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Um90YXRlOgot
ICAgICAgICByZXR1cm4gYXBwZW5kPFJvdGF0ZT4oaXRlbS5nZXQ8Um90YXRlPigpKTsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTY2FsZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTY2FsZT4oaXRlbS5n
ZXQ8U2NhbGU+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgotICAgICAg
ICByZXR1cm4gYXBwZW5kPENvbmNhdGVuYXRlQ1RNPihpdGVtLmdldDxDb25jYXRlbmF0ZUNUTT4o
KSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0Q1RNOgotICAgICAgICByZXR1cm4gYXBwZW5kPFNl
dENUTT4oaXRlbS5nZXQ8U2V0Q1RNPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVG
aWxsR3JhZGllbnQ6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2V0SW5saW5lRmlsbEdyYWRpZW50
PihpdGVtLmdldDxTZXRJbmxpbmVGaWxsR3JhZGllbnQ+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6
OlNldElubGluZUZpbGxDb2xvcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTZXRJbmxpbmVGaWxs
Q29sb3I+KGl0ZW0uZ2V0PFNldElubGluZUZpbGxDb2xvcj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2V0SW5saW5l
U3Ryb2tlQ29sb3I+KGl0ZW0uZ2V0PFNldElubGluZVN0cm9rZUNvbG9yPigpKTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2V0
U3Ryb2tlVGhpY2tuZXNzPihpdGVtLmdldDxTZXRTdHJva2VUaGlja25lc3M+KCkpOwotICAgIGNh
c2UgSXRlbVR5cGU6OlNldFN0YXRlOgotICAgICAgICByZXR1cm4gYXBwZW5kPFNldFN0YXRlPihp
dGVtLmdldDxTZXRTdGF0ZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUNhcDoKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZDxTZXRMaW5lQ2FwPihpdGVtLmdldDxTZXRMaW5lQ2FwPigpKTsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lRGFzaDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxT
ZXRMaW5lRGFzaD4oaXRlbS5nZXQ8U2V0TGluZURhc2g+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6
OlNldExpbmVKb2luOgotICAgICAgICByZXR1cm4gYXBwZW5kPFNldExpbmVKb2luPihpdGVtLmdl
dDxTZXRMaW5lSm9pbj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TWl0ZXJMaW1pdDoKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZDxTZXRNaXRlckxpbWl0PihpdGVtLmdldDxTZXRNaXRlckxpbWl0
PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclNoYWRvdzoKLSAgICAgICAgcmV0dXJuIGFw
cGVuZDxDbGVhclNoYWRvdz4oaXRlbS5nZXQ8Q2xlYXJTaGFkb3c+KCkpOwotICAgIGNhc2UgSXRl
bVR5cGU6OkNsaXA6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8Q2xpcD4oaXRlbS5nZXQ8Q2xpcD4o
KSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxD
bGlwT3V0PihpdGVtLmdldDxDbGlwT3V0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9J
bWFnZUJ1ZmZlcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxDbGlwVG9JbWFnZUJ1ZmZlcj4oaXRl
bS5nZXQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRU
b1BhdGg6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8Q2xpcE91dFRvUGF0aD4oaXRlbS5nZXQ8Q2xp
cE91dFRvUGF0aD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6Ci0gICAgICAgIHJl
dHVybiBhcHBlbmQ8Q2xpcFBhdGg+KGl0ZW0uZ2V0PENsaXBQYXRoPigpKTsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oaXRlbS5nZXQ8QmVnaW5DbGlwVG9EcmF3aW5n
Q29tbWFuZHM+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5k
czoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KGl0ZW0u
Z2V0PEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJh
d0dseXBoczoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3R2x5cGhzPihpdGVtLmdldDxEcmF3
R2x5cGhzPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6Ci0gICAgICAg
IHJldHVybiBhcHBlbmQ8RHJhd0ltYWdlQnVmZmVyPihpdGVtLmdldDxEcmF3SW1hZ2VCdWZmZXI+
KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKLSAgICAgICAgcmV0dXJu
IGFwcGVuZDxEcmF3TmF0aXZlSW1hZ2U+KGl0ZW0uZ2V0PERyYXdOYXRpdmVJbWFnZT4oKSk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RHJh
d1BhdHRlcm4+KGl0ZW0uZ2V0PERyYXdQYXR0ZXJuPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3UmVjdDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3UmVjdD4oaXRlbS5nZXQ8RHJhd1Jl
Y3Q+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgotICAgICAgICByZXR1cm4gYXBw
ZW5kPERyYXdMaW5lPihpdGVtLmdldDxEcmF3TGluZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
RHJhd0xpbmVzRm9yVGV4dDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3TGluZXNGb3JUZXh0
PihpdGVtLmdldDxEcmF3TGluZXNGb3JUZXh0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
RG90c0ZvckRvY3VtZW50TWFya2VyOgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdEb3RzRm9y
RG9jdW1lbnRNYXJrZXI+KGl0ZW0uZ2V0PERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI+KCkpOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOgotICAgICAgICByZXR1cm4gYXBwZW5kPERy
YXdFbGxpcHNlPihpdGVtLmdldDxEcmF3RWxsaXBzZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
RHJhd1BhdGg6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd1BhdGg+KGl0ZW0uZ2V0PERyYXdQ
YXRoPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKLSAgICAgICAg
cmV0dXJuIGFwcGVuZDxEcmF3Rm9jdXNSaW5nUGF0aD4oaXRlbS5nZXQ8RHJhd0ZvY3VzUmluZ1Bh
dGg+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKLSAgICAgICAg
cmV0dXJuIGFwcGVuZDxEcmF3Rm9jdXNSaW5nUmVjdHM+KGl0ZW0uZ2V0PERyYXdGb2N1c1JpbmdS
ZWN0cz4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAgICAgIHJldHVybiBh
cHBlbmQ8RmlsbFJlY3Q+KGl0ZW0uZ2V0PEZpbGxSZWN0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpGaWxsUmVjdFdpdGhDb2xvcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxGaWxsUmVjdFdpdGhD
b2xvcj4oaXRlbS5nZXQ8RmlsbFJlY3RXaXRoQ29sb3I+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6
OkZpbGxSZWN0V2l0aEdyYWRpZW50OgotICAgICAgICByZXR1cm4gYXBwZW5kPEZpbGxSZWN0V2l0
aEdyYWRpZW50PihpdGVtLmdldDxGaWxsUmVjdFdpdGhHcmFkaWVudD4oKSk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0OgotICAgICAgICByZXR1cm4gYXBwZW5kPEZpbGxD
b21wb3NpdGVkUmVjdD4oaXRlbS5nZXQ8RmlsbENvbXBvc2l0ZWRSZWN0PigpKTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpGaWxsUm91bmRlZFJlY3Q6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RmlsbFJv
dW5kZWRSZWN0PihpdGVtLmdldDxGaWxsUm91bmRlZFJlY3Q+KCkpOwotICAgIGNhc2UgSXRlbVR5
cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOgotICAgICAgICByZXR1cm4gYXBwZW5kPEZpbGxS
ZWN0V2l0aFJvdW5kZWRIb2xlPihpdGVtLmdldDxGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4oKSk7
Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbElu
bGluZVBhdGg6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RmlsbElubGluZVBhdGg+KGl0ZW0uZ2V0
PEZpbGxJbmxpbmVQYXRoPigpKTsKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRo
OgotICAgICAgICByZXR1cm4gYXBwZW5kPEZpbGxQYXRoPihpdGVtLmdldDxGaWxsUGF0aD4oKSk7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbEVsbGlwc2U6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8
RmlsbEVsbGlwc2U+KGl0ZW0uZ2V0PEZpbGxFbGxpcHNlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpGbHVzaENvbnRleHQ6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8Rmx1c2hDb250ZXh0PihpdGVt
LmdldDxGbHVzaENvbnRleHQ+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hh
bmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxNZXRhQ29t
bWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI+KGl0ZW0uZ2V0PE1ldGFDb21tYW5kQ2hh
bmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNv
bW1hbmRDaGFuZ2VJdGVtQnVmZmVyOgotICAgICAgICByZXR1cm4gYXBwZW5kPE1ldGFDb21tYW5k
Q2hhbmdlSXRlbUJ1ZmZlcj4oaXRlbS5nZXQ8TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyPigp
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpHZXRJbWFnZURhdGE6Ci0gICAgICAgIHJldHVybiBhcHBl
bmQ8R2V0SW1hZ2VEYXRhPihpdGVtLmdldDxHZXRJbWFnZURhdGE+KCkpOwotICAgIGNhc2UgSXRl
bVR5cGU6OlB1dEltYWdlRGF0YToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxQdXRJbWFnZURhdGE+
KGl0ZW0uZ2V0PFB1dEltYWdlRGF0YT4oKSk7Ci0jaWYgRU5BQkxFKFZJREVPKQotICAgIGNhc2Ug
SXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxQYWlu
dEZyYW1lRm9yTWVkaWE+KGl0ZW0uZ2V0PFBhaW50RnJhbWVGb3JNZWRpYT4oKSk7Ci0jZW5kaWYK
LSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0OgotICAgICAgICByZXR1cm4gYXBwZW5kPFN0
cm9rZVJlY3Q+KGl0ZW0uZ2V0PFN0cm9rZVJlY3Q+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0
cm9rZUxpbmU6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U3Ryb2tlTGluZT4oaXRlbS5nZXQ8U3Ry
b2tlTGluZT4oKSk7Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVt
VHlwZTo6U3Ryb2tlSW5saW5lUGF0aDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTdHJva2VJbmxp
bmVQYXRoPihpdGVtLmdldDxTdHJva2VJbmxpbmVQYXRoPigpKTsKLSNlbmRpZgotICAgIGNhc2Ug
SXRlbVR5cGU6OlN0cm9rZVBhdGg6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U3Ryb2tlUGF0aD4o
aXRlbS5nZXQ8U3Ryb2tlUGF0aD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlRWxsaXBz
ZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTdHJva2VFbGxpcHNlPihpdGVtLmdldDxTdHJva2VF
bGxpcHNlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclJlY3Q6Ci0gICAgICAgIHJldHVy
biBhcHBlbmQ8Q2xlYXJSZWN0PihpdGVtLmdldDxDbGVhclJlY3Q+KCkpOwotICAgIGNhc2UgSXRl
bVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8QmVn
aW5UcmFuc3BhcmVuY3lMYXllcj4oaXRlbS5nZXQ8QmVnaW5UcmFuc3BhcmVuY3lMYXllcj4oKSk7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgICAgIHJldHVy
biBhcHBlbmQ8RW5kVHJhbnNwYXJlbmN5TGF5ZXI+KGl0ZW0uZ2V0PEVuZFRyYW5zcGFyZW5jeUxh
eWVyPigpKTsKLSNpZiBVU0UoQ0cpCi0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0
ZXJuOgotICAgICAgICByZXR1cm4gYXBwZW5kPEFwcGx5U3Ryb2tlUGF0dGVybj4oaXRlbS5nZXQ8
QXBwbHlTdHJva2VQYXR0ZXJuPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseUZpbGxQYXR0
ZXJuOgotICAgICAgICByZXR1cm4gYXBwZW5kPEFwcGx5RmlsbFBhdHRlcm4+KGl0ZW0uZ2V0PEFw
cGx5RmlsbFBhdHRlcm4+KCkpOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZp
Y2VTY2FsZUZhY3RvcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxBcHBseURldmljZVNjYWxlRmFj
dG9yPihpdGVtLmdldDxBcHBseURldmljZVNjYWxlRmFjdG9yPigpKTsKLSAgICB9CisgICAgV1RG
Ojp2aXNpdChbJl0oY29uc3QgYXV0byYgaXRlbSkgeworICAgICAgICBhcHBlbmQoaXRlbSk7Cisg
ICAgfSwgaXRlbSk7CiB9CiAKIGF1dG8gRGlzcGxheUxpc3Q6OmJlZ2luKCkgY29uc3QgLT4gSXRl
cmF0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKaW5kZXggOTkzMjIyNjJkZjcwLi44Y2VlZTQ1MGU3
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hJdGVtQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29u
c3QgSXRlbUJ1ZmZlckhhbmRsZSYpPiYmKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIGNsYXNzLi4uIEFyZ3M+IHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKTsKLSAgICB2b2lk
IGFwcGVuZChJdGVtSGFuZGxlKTsKKyAgICB2b2lkIGFwcGVuZChjb25zdCBEaXNwbGF5TGlzdEl0
ZW0mKTsKIAogICAgIGJvb2wgdHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzKCkgY29uc3QgeyByZXR1
cm4gbV90cmFja3NEcmF3aW5nSXRlbUV4dGVudHM7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldFRyYWNrc0RyYXdpbmdJdGVtRXh0ZW50cyhib29sKTsKQEAgLTEzMiw3ICsxMzIsNyBAQCBw
cml2YXRlOgogICAgICAgICB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBzaG91bGREdW1w
Rm9yRmxhZ3MoQXNUZXh0RmxhZ3MsIEl0ZW1IYW5kbGUpOworICAgIHN0YXRpYyBib29sIHNob3Vs
ZER1bXBGb3JGbGFncyhBc1RleHRGbGFncywgY29uc3QgRGlzcGxheUxpc3RJdGVtJik7CiAKICAg
ICBJbWFnZUJ1ZmZlckhhc2hNYXAgbV9pbWFnZUJ1ZmZlcnM7CiAgICAgTmF0aXZlSW1hZ2VIYXNo
TWFwIG1fbmF0aXZlSW1hZ2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVm
ZmVyLmNwcAppbmRleCA4NDZjNDIwMDFkNWIuLjJlZGY1Yjc0Y2Q0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKQEAgLTM0LDE1ICszNCw2IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCi0jaWYgIWRlZmluZWQo
TkRFQlVHKSB8fCAhTE9HX0RJU0FCTEVECi1DU3RyaW5nIEl0ZW1IYW5kbGU6OmRlc2NyaXB0aW9u
KCkgY29uc3QKLXsKLSAgICBUZXh0U3RyZWFtIHRzOwotICAgIHRzIDw8ICp0aGlzOwotICAgIHJl
dHVybiB0cy5yZWxlYXNlKCkudXRmOCgpOwotfQotI2VuZGlmCi0KIHZvaWQgSXRlbUhhbmRsZTo6
YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIHN3aXRjaCAodHlwZSgpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggNDliMmMxYjI1YzgyLi40
ZjBmYzFlMmZiZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTIy
MCwxMiArMjIwLDEyIEBAIFNldFN0YXRlOjpTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZUNoYW5nZSYgc3RhdGVDaGFuZ2UsIGNvbnN0IFBhdHRlcm5ECiB7CiB9CiAKLXZvaWQgU2V0
U3RhdGU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgTmF0aXZlSW1hZ2UqIHN0cm9r
ZVBhdHRlcm5JbWFnZSwgTmF0aXZlSW1hZ2UqIGZpbGxQYXR0ZXJuSW1hZ2UpCit2b2lkIFNldFN0
YXRlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE5hdGl2ZUltYWdlKiBzdHJva2VQ
YXR0ZXJuSW1hZ2UsIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlKSBjb25zdAogewogICAg
IGlmIChtX3N0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UpICYmIHN0cm9rZVBhdHRlcm5JbWFnZSkKLSAgICAg
ICAgbV9zdGF0ZUNoYW5nZS5tX3N0YXRlLnN0cm9rZVBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUo
bWFrZVJlZigqc3Ryb2tlUGF0dGVybkltYWdlKSwgbV9zdHJva2VQYXR0ZXJuLnBhcmFtZXRlcnMp
OworICAgICAgICBjb25zdF9jYXN0PFNldFN0YXRlKj4odGhpcyktPm1fc3RhdGVDaGFuZ2UubV9z
dGF0ZS5zdHJva2VQYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKG1ha2VSZWYoKnN0cm9rZVBhdHRl
cm5JbWFnZSksIG1fc3Ryb2tlUGF0dGVybi5wYXJhbWV0ZXJzKTsKICAgICBpZiAobV9zdGF0ZUNo
YW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0
dGVybkNoYW5nZSkgJiYgZmlsbFBhdHRlcm5JbWFnZSkKLSAgICAgICAgbV9zdGF0ZUNoYW5nZS5t
X3N0YXRlLmZpbGxQYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKG1ha2VSZWYoKmZpbGxQYXR0ZXJu
SW1hZ2UpLCBtX2ZpbGxQYXR0ZXJuLnBhcmFtZXRlcnMpOworICAgICAgICBjb25zdF9jYXN0PFNl
dFN0YXRlKj4odGhpcyktPm1fc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsUGF0dGVybiA9IFBhdHRl
cm46OmNyZWF0ZShtYWtlUmVmKCpmaWxsUGF0dGVybkltYWdlKSwgbV9maWxsUGF0dGVybi5wYXJh
bWV0ZXJzKTsKICAgICBtX3N0YXRlQ2hhbmdlLmFwcGx5KGNvbnRleHQpOwogfQogCkBAIC0xMDg5
LDE5NyArMTA4OSwxMiBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgSXRlbVR5cGUgdHlwZSkKICAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEl0ZW1IYW5kbGUgaXRlbSkKLXsKLSAgICB0cyA8PCBp
dGVtLnR5cGUoKTsKLQotICAgIHN3aXRjaCAoaXRlbS50eXBlKCkpIHsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpUcmFuc2xhdGU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFRyYW5zbGF0ZT4oKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Um90YXRlOgotICAgICAgICB0cyA8PCBp
dGVtLmdldDxSb3RhdGU+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNj
YWxlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTY2FsZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6U2V0Q1RNOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRDVE0+
KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgot
ICAgICAgICB0cyA8PCBpdGVtLmdldDxDb25jYXRlbmF0ZUNUTT4oKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbEdyYWRpZW50OgotICAgICAgICB0cyA8
PCBpdGVtLmdldDxTZXRJbmxpbmVGaWxsR3JhZGllbnQ+KCk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxDb2xvcjoKLSAgICAgICAgdHMgPDwgaXRlbS5n
ZXQ8U2V0SW5saW5lRmlsbENvbG9yPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpTZXRJbmxpbmVTdHJva2VDb2xvcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0SW5s
aW5lU3Ryb2tlQ29sb3I+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNl
dFN0cm9rZVRoaWNrbmVzczoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0U3Ryb2tlVGhpY2tu
ZXNzPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToKLSAg
ICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0U3RhdGU+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgSXRlbVR5cGU6OlNldExpbmVDYXA6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldExpbmVD
YXA+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVEYXNoOgot
ICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRMaW5lRGFzaD4oKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUpvaW46Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNl
dExpbmVKb2luPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRNaXRl
ckxpbWl0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRNaXRlckxpbWl0PigpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwOgotICAgICAgICB0cyA8PCBpdGVtLmdl
dDxDbGlwPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0Ogot
ICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGlwT3V0PigpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8
Q2xpcFRvSW1hZ2VCdWZmZXI+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6
OkNsaXBPdXRUb1BhdGg6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENsaXBPdXRUb1BhdGg+KCk7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgotICAgICAgICB0
cyA8PCBpdGVtLmdldDxDbGlwUGF0aD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0
PEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIHRzIDw8IGl0ZW0u
Z2V0PEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0dseXBo
cz4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVy
OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3SW1hZ2VCdWZmZXI+KCk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKLSAgICAgICAgdHMgPDwg
aXRlbS5nZXQ8RHJhd05hdGl2ZUltYWdlPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3UGF0dGVybjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd1BhdHRlcm4+
KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxEcmF3UmVjdD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd0xpbmU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdMaW5lPigpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OgotICAg
ICAgICB0cyA8PCBpdGVtLmdldDxEcmF3TGluZXNGb3JUZXh0PigpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgotICAgICAgICB0
cyA8PCBpdGVtLmdldDxEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyPigpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKLSAgICAgICAgdHMgPDwgaXRlbS5n
ZXQ8RHJhd0VsbGlwc2U+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdQYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3UGF0aD4oKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6Ci0gICAgICAgIHRzIDw8
IGl0ZW0uZ2V0PERyYXdGb2N1c1JpbmdQYXRoPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVjdHM6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERy
YXdGb2N1c1JpbmdSZWN0cz4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
RmlsbFJlY3Q6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxSZWN0PigpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcjoKLSAgICAgICAgdHMg
PDwgaXRlbS5nZXQ8RmlsbFJlY3RXaXRoQ29sb3I+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50OgotICAgICAgICB0cyA8PCBpdGVtLmdl
dDxGaWxsUmVjdFdpdGhHcmFkaWVudD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsQ29t
cG9zaXRlZFJlY3Q+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxS
b3VuZGVkUmVjdDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RmlsbFJvdW5kZWRSZWN0PigpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9s
ZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU+KCk7Ci0g
ICAgICAgIGJyZWFrOwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRl
bVR5cGU6OkZpbGxJbmxpbmVQYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsSW5saW5l
UGF0aD4oKTsKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxs
UGF0aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RmlsbFBhdGg+KCk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxFbGxpcHNlOgotICAgICAgICB0cyA8PCBpdGVtLmdl
dDxGaWxsRWxsaXBzZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Rmx1
c2hDb250ZXh0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGbHVzaENvbnRleHQ+KCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRp
b25JbWFnZUJ1ZmZlcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8TWV0YUNvbW1hbmRDaGFuZ2VE
ZXN0aW5hdGlvbkltYWdlQnVmZmVyPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0
PE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcj4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6R2V0SW1hZ2VEYXRhOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxHZXRJbWFn
ZURhdGE+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlB1dEltYWdlRGF0
YToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8UHV0SW1hZ2VEYXRhPigpOwotICAgICAgICBicmVh
azsKLSNpZiBFTkFCTEUoVklERU8pCi0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1l
ZGlhOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxQYWludEZyYW1lRm9yTWVkaWE+KCk7Ci0gICAg
ICAgIGJyZWFrOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDoKLSAgICAg
ICAgdHMgPDwgaXRlbS5nZXQ8U3Ryb2tlUmVjdD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U3Ryb2tlTGluZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U3Ryb2tlTGlu
ZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAg
Y2FzZSBJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8
U3Ryb2tlSW5saW5lUGF0aD4oKTsKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLSAgICBjYXNlIEl0
ZW1UeXBlOjpTdHJva2VQYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTdHJva2VQYXRoPigp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VFbGxpcHNlOgotICAg
ICAgICB0cyA8PCBpdGVtLmdldDxTdHJva2VFbGxpcHNlPigpOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpDbGVhclJlY3Q6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENsZWFy
UmVjdD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5UcmFuc3Bh
cmVuY3lMYXllcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8QmVnaW5UcmFuc3BhcmVuY3lMYXll
cj4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2Fs
ZUZhY3RvcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8QXBwbHlEZXZpY2VTY2FsZUZhY3Rvcj4o
KTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAvLyBJdGVtcyB3aXRoIG5vIGFkZGl0aW9uYWwgZGF0
YS4KLSAgICBjYXNlIEl0ZW1UeXBlOjpTYXZlOgotICAgIGNhc2UgSXRlbVR5cGU6OlJlc3RvcmU6
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6Ci0jaWYgVVNFKENHKQot
ICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybjoKLSAgICBjYXNlIEl0ZW1UeXBl
OjpBcHBseUZpbGxQYXR0ZXJuOgotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJTaGFk
b3c6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgaXRlbSkKK3sKKyAgICBXVEY6OnZpc2l0
KFsmXShjb25zdCBhdXRvJiBkaXNwbGF5TGlzdEl0ZW0pIHsKKyAgICAgICAgdHMgPDwgZGlzcGxh
eUxpc3RJdGVtLml0ZW1UeXBlOworICAgICAgICB0cyA8PCBkaXNwbGF5TGlzdEl0ZW07CisgICAg
fSwgaXRlbSk7CiAgICAgcmV0dXJuIHRzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bXMuaAppbmRleCA2ZGRiNTM2YmViZWUuLmZkNjEzZDEwYTk1MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5oCkBAIC0yODMsNyArMjgzLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U2V0U3RhdGU+IGRlY29kZShEZWNvZGVy
Jik7CiAKLSAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYsIE5hdGl2ZUltYWdlKiBzdHJv
a2VQYXR0ZXJuSW1hZ2UsIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlKTsKKyAgICB2b2lk
IGFwcGx5KEdyYXBoaWNzQ29udGV4dCYsIE5hdGl2ZUltYWdlKiBzdHJva2VQYXR0ZXJuSW1hZ2Us
IE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBz
dHJ1Y3QgUGF0dGVybkRhdGEgewpAQCAtOTE3LDcgKzkxNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtID0gZmFsc2U7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0gPSB0cnVlOwogCi0gICAgUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIGZvbnRJZGVudGlmaWVyKCkgeyByZXR1cm4gbV9mb250SWRlbnRpZmllcjsgfQor
ICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBmb250SWRlbnRpZmllcigpIGNvbnN0IHsg
cmV0dXJuIG1fZm9udElkZW50aWZpZXI7IH0KICAgICBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFu
Y2hvcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxBbmNob3I7IH0KICAgICBGbG9hdFBvaW50IGFu
Y2hvclBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbEFuY2hvcjsgfQogICAgIGNvbnN0IFZl
Y3RvcjxHbHlwaEJ1ZmZlckdseXBoLCAxNj4mIGdseXBocygpIGNvbnN0IHsgcmV0dXJuIG1fZ2x5
cGhzOyB9CkBAIC0yMzY5LDEzICsyMzY5LDIwIEBAIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZW0+IHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8SGFzSXNWYWxpZDxJdGVtPiwgYm9vbD4gaXNWYWxpCiAg
ICAgcmV0dXJuIGl0ZW0uaXNWYWxpZCgpOwogfQogCi1JdGVtVHlwZSBkaXNwbGF5TGlzdEl0ZW1U
eXBlKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpOworV0VCQ09SRV9FWFBPUlQgSXRlbVR5cGUgZGlz
cGxheUxpc3RJdGVtVHlwZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsKIAogc2l6ZV90IHBhZGRl
ZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyhjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIHNpemVfdCBwYWRkZWRTaXplT2ZUeXBlQW5kSXRl
bUluQnl0ZXNGb3JJdGVtID0gc2l6ZW9mKHVpbnQ2NF90KSArIHJvdW5kVXBUb011bHRpcGxlT2Y8
YWxpZ25vZih1aW50NjRfdCk+KHNpemVvZihUKSk7CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYsIEl0ZW1IYW5kbGUpOworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiwgY29uc3QgRGlzcGxheUxpc3RJdGVtJik7CisKK2lubGluZSBjb25zdGV4cHIgYm9vbCBp
c0RyYXdpbmdJdGVtKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgZGlzcGxheUxpc3RJdGVtKQorewor
ICAgIHJldHVybiBXVEY6OnZpc2l0KFtdKGNvbnN0IGF1dG8mIGRpc3BsYXlMaXN0SXRlbSkgewor
ICAgICAgICByZXR1cm4gZGlzcGxheUxpc3RJdGVtLmlzRHJhd2luZ0l0ZW07CisgICAgfSwgZGlz
cGxheUxpc3RJdGVtKTsKK30KIAogfSAvLyBuYW1lc3BhY2UgRGlzcGxheUxpc3QKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcApp
bmRleCA2OWUwMTlhYTZmYTIuLjgyNmQzYTEwYWYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZXJhdG9yLmNwcApAQCAtNDEsMTEgKzQxLDYgQEAgRGlzcGxheUxpc3Q6Okl0ZXJh
dG9yOjpJdGVyYXRvcihjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIEltbWVkaWF0ZWx5
TW92ZVQKICAgICAgICAgbW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZmZXIoKTsKIH0KIAot
RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjp+SXRlcmF0b3IoKQotewotICAgIGNsZWFyQ3VycmVudEl0
ZW0oKTsKLX0KLQogI2lmIEFTU0VSVF9FTkFCTEVECiBib29sIERpc3BsYXlMaXN0OjpJdGVyYXRv
cjo6YXRFbmQoKSBjb25zdAogewpAQCAtNjEsMTMgKzU2LDYgQEAgYm9vbCBEaXNwbGF5TGlzdDo6
SXRlcmF0b3I6OmF0RW5kKCkgY29uc3QKIH0KICNlbmRpZgogCi0vLyBUaGlzIGlzIHRlbXBvcmFy
eSwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBieSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIzNTYwLgotdm9pZCBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OmNsZWFyQ3VycmVu
dEl0ZW0oKQotewotICAgIGlmIChtX2N1cnJlbnRCdWZmZXJGb3JJdGVtICYmIG1fY3VycmVudEJ1
ZmZlckZvckl0ZW0gIT0gbV9maXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtKQotICAgICAgICBmYXN0
RnJlZShtX2N1cnJlbnRCdWZmZXJGb3JJdGVtKTsKLX0KLQogYXV0byBEaXNwbGF5TGlzdDo6SXRl
cmF0b3I6Om9wZXJhdG9yKigpIGNvbnN0IC0+IE9wdGlvbmFsPFZhbHVlPgogewogICAgIEFTU0VS
VCghYXRFbmQoKSk7CkBAIC04MywxNCArNzEsNyBAQCBhdXRvIERpc3BsYXlMaXN0OjpJdGVyYXRv
cjo6b3BlcmF0b3IqKCkgY29uc3QgLT4gT3B0aW9uYWw8VmFsdWU+CiAgICAgaWYgKGN1cnJlbnRJ
dGVtSW5mby0+aXNEcmF3aW5nSXRlbSAmJiAhbV9kaXNwbGF5TGlzdC5tX2RyYXdpbmdJdGVtRXh0
ZW50cy5pc0VtcHR5KCkpCiAgICAgICAgIGN1cnJlbnRFeHRlbnQgPSBtX2Rpc3BsYXlMaXN0Lm1f
ZHJhd2luZ0l0ZW1FeHRlbnRzW21fZHJhd2luZ0l0ZW1JbmRleF07CiAKLSAgICAvLyBUaGlzIGlz
IHRlbXBvcmFyeSwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBieSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNTYwLgotICAgIGNvbnN0X2Nhc3Q8SXRlcmF0b3IqPih0aGlz
KS0+Y2xlYXJDdXJyZW50SXRlbSgpOwotICAgIGF1dG8gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW0g
PSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoZGlzcGxheUxpc3RJdGVtVHlwZShjdXJy
ZW50SXRlbUluZm8tPmRpc3BsYXlMaXN0SXRlbSkpOwotICAgIG1fY3VycmVudEJ1ZmZlckZvckl0
ZW0gPSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbSA8PSBzaXplT2ZGaXhlZEJ1ZmZlckZvckN1cnJl
bnRJdGVtID8gbV9maXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtIDogcmVpbnRlcnByZXRfY2FzdDx1
aW50OF90Kj4oZmFzdE1hbGxvYyhwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbSkpOwotICAgIGF1dG8g
c3VjY2VzcyA9IHNhZmVDb3B5KHsgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSB9LCBjdXJyZW50SXRl
bUluZm8tPmRpc3BsYXlMaXN0SXRlbSk7Ci0gICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNj
ZXNzKTsKLQotICAgIHJldHVybiB7eyB7IG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gfSwgV1RGTW92
ZShjdXJyZW50RXh0ZW50KSwgY3VycmVudEl0ZW1JbmZvLT5zaXplSW5CdWZmZXIgfX07CisgICAg
cmV0dXJuIHt7IGN1cnJlbnRJdGVtSW5mby0+ZGlzcGxheUxpc3RJdGVtLCBXVEZNb3ZlKGN1cnJl
bnRFeHRlbnQpLCBjdXJyZW50SXRlbUluZm8tPnNpemVJbkJ1ZmZlciB9fTsKIH0KIAogdm9pZCBE
aXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yKysoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZXJhdG9yLmgKaW5kZXggMzI3NDRhNTFhZmM3Li41ODJhMDc5M2MyNmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuaApAQCAtMzUsMTQgKzM1LDEzIEBAIGNsYXNz
IERpc3BsYXlMaXN0OjpJdGVyYXRvciB7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBJbW1lZGlh
dGVseU1vdmVUb0VuZCB7IE5vLCBZZXMgfTsKICAgICBJdGVyYXRvcihjb25zdCBEaXNwbGF5TGlz
dCYsIEltbWVkaWF0ZWx5TW92ZVRvRW5kID0gSW1tZWRpYXRlbHlNb3ZlVG9FbmQ6Ok5vKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB+SXRlcmF0b3IoKTsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBJdGVyYXRvciYgb3RoZXIpIHsgcmV0dXJuICZtX2Rpc3BsYXlMaXN0ID09ICZvdGhlci5tX2Rp
c3BsYXlMaXN0ICYmIG1fY3Vyc29yID09IG90aGVyLm1fY3Vyc29yOyB9CiAgICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7
IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG9wZXJhdG9yKysoKTsKIAogICAgIHN0cnVjdCBW
YWx1ZSB7Ci0gICAgICAgIEl0ZW1IYW5kbGUgaXRlbTsKKyAgICAgICAgRGlzcGxheUxpc3RJdGVt
IGl0ZW07CiAgICAgICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZXh0ZW50OwogICAgICAgICBzaXpl
X3QgaXRlbVNpemVJbkJ1ZmZlciB7IDAgfTsKICAgICB9OwpAQCAtNTAsMTAgKzQ5LDYgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFZhbHVlPiBvcGVyYXRvciooKSBjb25z
dDsKIAogcHJpdmF0ZToKLSAgICAvLyBUaGVzZSBhcmUgdGVtcG9yYXJ5LCBhbmQgd2lsbCBiZSBy
ZW1vdmVkIGJ5IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM1NjAu
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc2l6ZU9mRml4ZWRCdWZmZXJGb3JDdXJyZW50
SXRlbSA9IDI1NjsKLSAgICB2b2lkIGNsZWFyQ3VycmVudEl0ZW0oKTsKLQogICAgIHN0cnVjdCBD
dXJyZW50SXRlbVJlc3VsdCB7CiAgICAgICAgIERpc3BsYXlMaXN0SXRlbSBkaXNwbGF5TGlzdEl0
ZW07CiAgICAgICAgIHN0ZDo6c2l6ZV90IHNpemVJbkJ1ZmZlcjsKQEAgLTcwLDEwICs2NSw2IEBA
IHByaXZhdGU6CiAKICAgICBJdGVtQnVmZmVyKiBpdGVtQnVmZmVyKCkgY29uc3QgeyByZXR1cm4g
bV9kaXNwbGF5TGlzdC5pdGVtQnVmZmVySWZFeGlzdHMoKTsgfQogCi0gICAgLy8gVGhlc2UgYXJl
IHRlbXBvcmFyeSwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBieSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNTYwLgotICAgIG11dGFibGUgdWludDhfdCBtX2ZpeGVkQnVm
ZmVyRm9yQ3VycmVudEl0ZW1bc2l6ZU9mRml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbV0geyAwIH07
Ci0gICAgbXV0YWJsZSB1aW50OF90KiBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtIHsgbnVsbHB0ciB9
OwotCiAgICAgY29uc3QgRGlzcGxheUxpc3QmIG1fZGlzcGxheUxpc3Q7CiAgICAgc3RydWN0IEN1
cnJlbnRJdGVtSW5mbyB7CiAgICAgICAgIHN0ZDo6c2l6ZV90IHNpemVJbkJ1ZmZlcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCAxMDdmMjBlYzRmMWMuLmQ0
YWI1YTZlM2VjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcApA
QCAtNTQsOSArNTQsOCBAQCBHcmFwaGljc0NvbnRleHQmIFJlcGxheWVyOjpjb250ZXh0KCkgY29u
c3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseUltYWdlQnVmZmVySXRlbShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCYgaW1hZ2VCdWZmZXJzLCBJdGVt
SGFuZGxlIGl0ZW0pCitpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcj4gYXBwbHlJbWFnZUJ1ZmZlckl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVmZmVycywgY29uc3QgVCYgaW1hZ2VCdWZm
ZXJJdGVtKQogewotICAgIGF1dG8mIGltYWdlQnVmZmVySXRlbSA9IGl0ZW0uZ2V0PFQ+KCk7CiAg
ICAgYXV0byByZXNvdXJjZUlkZW50aWZpZXIgPSBpbWFnZUJ1ZmZlckl0ZW0uaW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyKCk7CiAgICAgaWYgKGF1dG8qIGltYWdlQnVmZmVyID0gaW1hZ2VCdWZmZXJzLmdl
dChyZXNvdXJjZUlkZW50aWZpZXIpKSB7CiAgICAgICAgIGltYWdlQnVmZmVySXRlbS5hcHBseShj
b250ZXh0LCAqaW1hZ2VCdWZmZXIpOwpAQCAtNjYsOSArNjUsOCBAQCBpbmxpbmUgc3RhdGljIE9w
dGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlJbWFnZUJ1ZmZlckl0ZW0o
R3JhcGhpYwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lIHN0YXRpYyBPcHRpb25hbDxS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5TmF0aXZlSW1hZ2VJdGVtKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwJiBuYXRpdmVJbWFnZXMs
IEl0ZW1IYW5kbGUgaXRlbSkKK2lubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyPiBhcHBseU5hdGl2ZUltYWdlSXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzLCBjb25zdCBUJiBuYXRp
dmVJbWFnZUl0ZW0pCiB7Ci0gICAgYXV0byYgbmF0aXZlSW1hZ2VJdGVtID0gaXRlbS5nZXQ8VD4o
KTsKICAgICBhdXRvIHJlc291cmNlSWRlbnRpZmllciA9IG5hdGl2ZUltYWdlSXRlbS5pbWFnZUlk
ZW50aWZpZXIoKTsKICAgICBpZiAoYXV0byogaW1hZ2UgPSBuYXRpdmVJbWFnZXMuZ2V0KHJlc291
cmNlSWRlbnRpZmllcikpIHsKICAgICAgICAgbmF0aXZlSW1hZ2VJdGVtLmFwcGx5KGNvbnRleHQs
ICppbWFnZSk7CkBAIC03NywxMCArNzUsOCBAQCBpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlOYXRpdmVJbWFnZUl0ZW0oR3JhcGhpYwogICAg
IHJldHVybiByZXNvdXJjZUlkZW50aWZpZXI7CiB9CiAKLWlubGluZSBzdGF0aWMgT3B0aW9uYWw8
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseVNldFN0YXRlSXRlbShHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzLCBJ
dGVtSGFuZGxlIGl0ZW0pCitpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBOYXRpdmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdlcywgY29uc3QgU2V0U3RhdGUmIHNl
dFN0YXRlSXRlbSkKIHsKLSAgICBhdXRvJiBzZXRTdGF0ZUl0ZW0gPSBpdGVtLmdldDxTZXRTdGF0
ZT4oKTsKLQogICAgIE5hdGl2ZUltYWdlKiBzdHJva2VQYXR0ZXJuSW1hZ2UgPSBudWxscHRyOwog
ICAgIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlID0gbnVsbHB0cjsKIApAQCAtMTAxLDkg
Kzk3LDggQEAgaW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXI+IGFwcGx5U2V0U3RhdGVJdGVtKEdyYXBoaWNzQ28KIH0KIAogdGVtcGxhdGU8Y2xhc3MgVD4K
LWlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBs
eUZvbnRJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udFJlbmRlcmluZ1Jl
c291cmNlTWFwJiBmb250cywgSXRlbUhhbmRsZSBpdGVtKQoraW5saW5lIHN0YXRpYyBPcHRpb25h
bDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5Rm9udEl0ZW0oR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGb250UmVuZGVyaW5nUmVzb3VyY2VNYXAmIGZvbnRzLCBjb25z
dCBUJiBmb250SXRlbSkKIHsKLSAgICBhdXRvJiBmb250SXRlbSA9IGl0ZW0uZ2V0PFQ+KCk7CiAg
ICAgYXV0byByZXNvdXJjZUlkZW50aWZpZXIgPSBmb250SXRlbS5mb250SWRlbnRpZmllcigpOwog
ICAgIGlmIChhdXRvKiBmb250ID0gZm9udHMuZ2V0KHJlc291cmNlSWRlbnRpZmllcikpIHsKICAg
ICAgICAgZm9udEl0ZW0uYXBwbHkoY29udGV4dCwgKmZvbnQpOwpAQCAtMTEyLDY4ICsxMDcsNjgg
QEAgaW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFw
cGx5Rm9udEl0ZW0oR3JhcGhpY3NDb250ZXgKICAgICByZXR1cm4gcmVzb3VyY2VJZGVudGlmaWVy
OwogfQogCi1zdGQ6OnBhaXI8T3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4sIE9wdGlvbmFsPFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4+IFJlcGxheWVyOjphcHBseUl0ZW0oSXRlbUhhbmRs
ZSBpdGVtKQorZXh0ZXJuIEdyYXBoaWNzQ29udGV4dCYgc3ludGhlc2l6ZUxWYWx1ZUdyYXBoaWNz
Q29udGV4dDsKK3RlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZSA9IHZvaWQ+IHN0YXRpYyBpbmxp
bmUgY29uc3RleHByIGJvb2wgSGFzQXBwbHkgPSBmYWxzZTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0YXRpYyBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFzQXBwbHk8VCwgc3RkOjp2b2lkX3Q8ZGVj
bHR5cGUoc3RkOjpkZWNsdmFsPFQ+KCkuYXBwbHkoc3ludGhlc2l6ZUxWYWx1ZUdyYXBoaWNzQ29u
dGV4dCkpPj4gPSB0cnVlOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgorc3RhdGljIGlubGlu
ZSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PCFIYXNBcHBseTxJdGVtPiwgdm9pZD4gYXBwbHko
Y29uc3QgSXRlbSYsIEdyYXBoaWNzQ29udGV4dCYpCit7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IEl0ZW0+CitzdGF0aWMgaW5saW5lIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8SGFzQXBwbHk8
SXRlbT4sIHZvaWQ+IGFwcGx5KGNvbnN0IEl0ZW0mIGl0ZW0sIEdyYXBoaWNzQ29udGV4dCYgZ3Jh
cGhpY3NDb250ZXh0KQoreworICAgIHJldHVybiBpdGVtLmFwcGx5KGdyYXBoaWNzQ29udGV4dCk7
Cit9CisKK2F1dG8gUmVwbGF5ZXI6OmFwcGx5SXRlbShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGl0
ZW0pIC0+IEFwcGx5SXRlbVJlc3VsdAogewogICAgIGlmIChtX2RlbGVnYXRlICYmIG1fZGVsZWdh
dGUtPmFwcGx5KGl0ZW0sIGNvbnRleHQoKSkpCiAgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9w
dCwgV1RGOjpudWxsb3B0IH07CiAKLSAgICBpZiAoaXRlbS5pczxEcmF3SW1hZ2VCdWZmZXI+KCkp
IHsKKyAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKFsmXShjb25zdCBEcmF3SW1h
Z2VCdWZmZXImIGl0ZW0pIC0+IEFwcGx5SXRlbVJlc3VsdCB7CiAgICAgICAgIGlmIChhdXRvIG1p
c3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUltYWdlQnVmZmVySXRlbTxEcmF3
SW1hZ2VCdWZmZXI+KGNvbnRleHQoKSwgbV9pbWFnZUJ1ZmZlcnMsIGl0ZW0pKQogICAgICAgICAg
ICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZN
b3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7
IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAgaWYgKGl0ZW0uaXM8
Q2xpcFRvSW1hZ2VCdWZmZXI+KCkpIHsKKyAgICB9LCBbJl0oY29uc3QgQ2xpcFRvSW1hZ2VCdWZm
ZXImIGl0ZW0pIC0+IHN0ZDo6cGFpcjxPcHRpb25hbDxTdG9wUmVwbGF5UmVhc29uPiwgT3B0aW9u
YWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPj4gewogICAgICAgICBpZiAoYXV0byBtaXNz
aW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlJbWFnZUJ1ZmZlckl0ZW08Q2xpcFRv
SW1hZ2VCdWZmZXI+KGNvbnRleHQoKSwgbV9pbWFnZUJ1ZmZlcnMsIGl0ZW0pKQogICAgICAgICAg
ICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZN
b3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7
IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAgaWYgKGl0ZW0uaXM8
RHJhd05hdGl2ZUltYWdlPigpKSB7CisgICAgfSwgWyZdKGNvbnN0IERyYXdOYXRpdmVJbWFnZSYg
aXRlbSkgLT4gQXBwbHlJdGVtUmVzdWx0IHsKICAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hl
ZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdOYXRpdmVJbWFn
ZT4oY29udGV4dCgpLCBtX25hdGl2ZUltYWdlcywgaXRlbSkpCiAgICAgICAgICAgICByZXR1cm4g
eyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2lu
Z0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKICAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxs
b3B0LCBXVEY6Om51bGxvcHQgfTsKLSAgICB9Ci0KLSAgICBpZiAoaXRlbS5pczxEcmF3R2x5cGhz
PigpKSB7Ci0gICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIg
PSBhcHBseUZvbnRJdGVtPERyYXdHbHlwaHM+KGNvbnRleHQoKSwgbV9mb250cywgaXRlbSkpCisg
ICAgfSwgWyZdKGNvbnN0IERyYXdQYXR0ZXJuJiBpdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQgewor
ICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlO
YXRpdmVJbWFnZUl0ZW08RHJhd1BhdHRlcm4+KGNvbnRleHQoKSwgbV9uYXRpdmVJbWFnZXMsIGl0
ZW0pKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hl
ZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAg
ICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07Ci0gICAgfQotCi0g
ICAgaWYgKGl0ZW0uaXM8RHJhd1BhdHRlcm4+KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2lu
Z0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdQYXR0
ZXJuPihjb250ZXh0KCksIG1fbmF0aXZlSW1hZ2VzLCBpdGVtKSkKKyAgICB9LCBbJl0oY29uc3Qg
RHJhd0dseXBocyYgaXRlbSkgLT4gQXBwbHlJdGVtUmVzdWx0IHsKKyAgICAgICAgaWYgKGF1dG8g
bWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5Rm9udEl0ZW08RHJhd0dseXBo
cz4oY29udGV4dCgpLCBtX2ZvbnRzLCBpdGVtKSkKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BS
ZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVk
UmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdU
Rjo6bnVsbG9wdCB9OwotICAgIH0KLQotICAgIGlmIChpdGVtLmlzPFNldFN0YXRlPigpKSB7Cisg
ICAgfSwgWyZdKGNvbnN0IFNldFN0YXRlJiBpdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQgewogICAg
ICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlTZXRT
dGF0ZUl0ZW0oY29udGV4dCgpLCBtX25hdGl2ZUltYWdlcywgaXRlbSkpCiAgICAgICAgICAgICBy
ZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUo
bWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKICAgICAgICAgcmV0dXJuIHsgV1RG
OjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKLSAgICB9Ci0KLSAgICBpZiAoaXRlbS5pczxCZWdp
bkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oKSkgeworICAgIH0sIFsmXShjb25zdCBCZWdpbkNsaXBU
b0RyYXdpbmdDb21tYW5kcyYgY2xpcEl0ZW0pIC0+IEFwcGx5SXRlbVJlc3VsdCB7CiAgICAgICAg
IGlmIChtX21hc2tJbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlS
ZWFzb246OkludmFsaWRJdGVtT3JFeHRlbnQsIFdURjo6bnVsbG9wdCB9OwotICAgICAgICBhdXRv
JiBjbGlwSXRlbSA9IGl0ZW0uZ2V0PEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpOwogICAg
ICAgICBtX21hc2tJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVm
ZmVyKGNsaXBJdGVtLmRlc3RpbmF0aW9uKCkuc2l6ZSgpLCBjbGlwSXRlbS5jb2xvclNwYWNlKCks
IG1fY29udGV4dCk7CiAgICAgICAgIGlmICghbV9tYXNrSW1hZ2VCdWZmZXIpCiAgICAgICAgICAg
ICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpPdXRPZk1lbW9yeSwgV1RGOjpudWxsb3B0IH07
CiAgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07Ci0gICAgfQot
Ci0gICAgaWYgKGl0ZW0uaXM8RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpKSB7CisgICAgfSwg
WyZdKGNvbnN0IEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyYgY2xpcEl0ZW0pIC0+IEFwcGx5SXRl
bVJlc3VsdCB7CiAgICAgICAgIGlmICghbV9tYXNrSW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICBy
ZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpJbnZhbGlkSXRlbU9yRXh0ZW50LCBXVEY6Om51bGxv
cHQgfTsKLSAgICAgICAgYXV0byYgY2xpcEl0ZW0gPSBpdGVtLmdldDxFbmRDbGlwVG9EcmF3aW5n
Q29tbWFuZHM+KCk7CiAgICAgICAgIG1fY29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcigqbV9tYXNr
SW1hZ2VCdWZmZXIsIGNsaXBJdGVtLmRlc3RpbmF0aW9uKCkpOwogICAgICAgICBtX21hc2tJbWFn
ZUJ1ZmZlciA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpu
dWxsb3B0IH07Ci0gICAgfQotCi0gICAgaXRlbS5hcHBseShjb250ZXh0KCkpOwotICAgIHJldHVy
biB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07CisgICAgfSwgWyZdKGNvbnN0IGF1dG8m
IGl0ZW0pIC0+IEFwcGx5SXRlbVJlc3VsdCB7CisgICAgICAgIGFwcGx5KGl0ZW0sIGNvbnRleHQo
KSk7CisgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07CisgICAg
fSk7CisgICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgaXRlbSk7CiB9CiAKIFJlcGxheVJl
c3VsdCBSZXBsYXllcjo6cmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGJvb2wg
dHJhY2tSZXBsYXlMaXN0KQpAQCAtMTk1LDcgKzE5MCw3IEBAIFJlcGxheVJlc3VsdCBSZXBsYXll
cjo6cmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGJvb2wgdHJhY2tSZXBsYXlM
aXN0CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gW2l0ZW0s
IGV4dGVudCwgaXRlbVNpemVJbkJ1ZmZlcl0gPSBkaXNwbGF5TGlzdEl0ZW0udmFsdWUoKTsKKyAg
ICAgICAgY29uc3QgYXV0byYgW2l0ZW0sIGV4dGVudCwgaXRlbVNpemVJbkJ1ZmZlcl0gPSBkaXNw
bGF5TGlzdEl0ZW0udmFsdWUoKTsKIAogICAgICAgICBpZiAoIWluaXRpYWxDbGlwLmlzWmVybygp
ICYmIGV4dGVudCAmJiAhZXh0ZW50LT5pbnRlcnNlY3RzKGluaXRpYWxDbGlwKSkgewogICAgICAg
ICAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8ICJza2lwcGluZyAi
IDw8IGkrKyA8PCAiICIgPDwgaXRlbSk7CkBAIC0yMDUsMTAgKzIwMCwxMCBAQCBSZXBsYXlSZXN1
bHQgUmVwbGF5ZXI6OnJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBib29sIHRy
YWNrUmVwbGF5TGlzdAogCiAgICAgICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGlzdHMsIHN0
cmVhbSA8PCAiYXBwbHlpbmcgIiA8PCBpKysgPDwgIiAiIDw8IGl0ZW0pOwogCi0gICAgICAgIGlm
IChpdGVtLmlzPE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4oKSkgewor
ICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxNZXRhQ29tbWFuZENoYW5nZURlc3Rp
bmF0aW9uSW1hZ2VCdWZmZXI+KGl0ZW0pKSB7CiAgICAgICAgICAgICByZXN1bHQubnVtYmVyT2ZC
eXRlc1JlYWQgKz0gaXRlbVNpemVJbkJ1ZmZlcjsKICAgICAgICAgICAgIHJlc3VsdC5yZWFzb25G
b3JTdG9wcGluZyA9IFN0b3BSZXBsYXlSZWFzb246OkNoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZm
ZXI7Ci0gICAgICAgICAgICByZXN1bHQubmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXIgPSBpdGVt
LmdldDxNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI+KCkuaWRlbnRpZmll
cigpOworICAgICAgICAgICAgcmVzdWx0Lm5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyID0gV1RG
OjpnZXQ8TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPihpdGVtKS5pZGVu
dGlmaWVyKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0yMjIsOCArMjE3
LDggQEAgUmVwbGF5UmVzdWx0IFJlcGxheWVyOjpyZXBsYXkoY29uc3QgRmxvYXRSZWN0JiBpbml0
aWFsQ2xpcCwgYm9vbCB0cmFja1JlcGxheUxpc3QKIAogICAgICAgICBpZiAoVU5MSUtFTFkodHJh
Y2tSZXBsYXlMaXN0KSkgewogICAgICAgICAgICAgcmVwbGF5TGlzdC0+YXBwZW5kKGl0ZW0pOwot
ICAgICAgICAgICAgaWYgKGl0ZW0uaXNEcmF3aW5nSXRlbSgpKQotICAgICAgICAgICAgICAgIHJl
cGxheUxpc3QtPmFkZERyYXdpbmdJdGVtRXh0ZW50KFdURk1vdmUoZXh0ZW50KSk7CisgICAgICAg
ICAgICBpZiAoaXNEcmF3aW5nSXRlbShpdGVtKSkKKyAgICAgICAgICAgICAgICByZXBsYXlMaXN0
LT5hZGREcmF3aW5nSXRlbUV4dGVudChPcHRpb25hbDxGbG9hdFJlY3Q+KGV4dGVudCkpOwogICAg
ICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAppbmRl
eCBhYzBkZjYwNjM5MjMuLjEwZGY0YWViMGJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZXBsYXllci5oCkBAIC02NiwxMiArNjYsMTMgQEAgcHVibGljOgogICAgIGNsYXNzIERlbGVn
YXRlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkRlbGVnYXRlKCkgeyB9Ci0gICAg
ICAgIHZpcnR1YWwgYm9vbCBhcHBseShJdGVtSGFuZGxlLCBHcmFwaGljc0NvbnRleHQmKSB7IHJl
dHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoY29uc3QgRGlzcGxheUxp
c3RJdGVtJiwgR3JhcGhpY3NDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB9OwogICAg
IAogcHJpdmF0ZToKICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdDsKLSAgICBz
dGQ6OnBhaXI8T3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4sIE9wdGlvbmFsPFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcj4+IGFwcGx5SXRlbShJdGVtSGFuZGxlKTsKKyAgICB1c2luZyBBcHBs
eUl0ZW1SZXN1bHQgPSBzdGQ6OnBhaXI8T3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4sIE9wdGlv
bmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4+OworICAgIEFwcGx5SXRlbVJlc3VsdCBh
cHBseUl0ZW0oY29uc3QgRGlzcGxheUxpc3RJdGVtJik7CiAKICAgICBHcmFwaGljc0NvbnRleHQm
IG1fY29udGV4dDsKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IG1fbWFza0ltYWdl
QnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuY3BwCmluZGV4IDM0
MmIxN2JlNzExMi4uNGI0NjZlMzc3NGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlz
cGxheUxpc3QuY3BwCkBAIC02MCwxMSArNjAsMTAgQEAgSW5NZW1vcnlEaXNwbGF5TGlzdDo6SW5N
ZW1vcnlEaXNwbGF5TGlzdCgpCiBJbk1lbW9yeURpc3BsYXlMaXN0Ojp+SW5NZW1vcnlEaXNwbGF5
TGlzdCgpCiB7CiAgICAgZm9yIChhdXRvIGRpc3BsYXlMaXN0SXRlbSA6ICp0aGlzKSB7Ci0gICAg
ICAgIGF1dG8gaXRlbSA9IGRpc3BsYXlMaXN0SXRlbS0+aXRlbTsKLSAgICAgICAgQVNTRVJUKGl0
ZW0pOwotICAgICAgICBpZiAoIWl0ZW0pCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgaXRl
bS5kZXN0cm95KCk7CisgICAgICAgIFdURjo6dmlzaXQoWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsK
KyAgICAgICAgICAgIHVzaW5nIERpc3BsYXlMaXN0SXRlbVR5cGUgPSB0eXBlbmFtZSBXVEY6OlJl
bW92ZUNWQW5kUmVmZXJlbmNlPGRlY2x0eXBlKGl0ZW0pPjo6dHlwZTsKKyAgICAgICAgICAgIGl0
ZW0ufkRpc3BsYXlMaXN0SXRlbVR5cGUoKTsKKyAgICAgICAgfSwgZGlzcGxheUxpc3RJdGVtLT5p
dGVtKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKaW5kZXggNGEwMWVlNjc2OWE2Li42NWUwZWUxMmE2
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlci5oCkBAIC03NCwzNSArNzQsMjYgQEAgcHVibGljOgogI2VuZGlmCiAKIHBy
aXZhdGU6Ci0gICAgYm9vbCBhcHBseShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZSBp
dGVtLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIG92ZXJyaWRlCisgICAgYm9v
bCBhcHBseShjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtJiBpdGVt
LCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIG92ZXJyaWRlCiAgICAgewotICAg
ICAgICBpZiAoaXRlbS5pczxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6R2V0SW1hZ2VEYXRhPigpKSB7
Ci0gICAgICAgICAgICBhdXRvJiBnZXRJbWFnZURhdGFJdGVtID0gaXRlbS5nZXQ8V2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkdldEltYWdlRGF0YT4oKTsKLSAgICAgICAgICAgIGF1dG8gaW1hZ2VEYXRh
ID0gQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmdldEltYWdlRGF0YShnZXRJbWFnZURhdGFJdGVt
Lm91dHB1dEZvcm1hdCgpLCBnZXRJbWFnZURhdGFJdGVtLnNyY1JlY3QoKSk7Ci0gICAgICAgICAg
ICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQucG9wdWxhdGVHZXRJbWFnZURhdGFTaGFyZWRNZW1v
cnkoaW1hZ2VEYXRhLmdldCgpKTsKKyAgICAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlz
aXRvcihbJl0oY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkdldEltYWdlRGF0YSYpIHsKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGl0ZW0uaXM8
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlB1dEltYWdlRGF0YT4oKSkgewotICAgICAgICAgICAgYXV0
byYgcHV0SW1hZ2VEYXRhSXRlbSA9IGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJ
bWFnZURhdGE+KCk7CisgICAgICAgIH0sIFsmXShjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UHV0SW1hZ2VEYXRhJiBwdXRJbWFnZURhdGFJdGVtKSB7CiAgICAgICAgICAgICBwdXRJbWFnZURh
dGEocHV0SW1hZ2VEYXRhSXRlbS5pbnB1dEZvcm1hdCgpLCBwdXRJbWFnZURhdGFJdGVtLmltYWdl
RGF0YSgpLCBwdXRJbWFnZURhdGFJdGVtLnNyY1JlY3QoKSwgcHV0SW1hZ2VEYXRhSXRlbS5kZXN0
UG9pbnQoKSwgcHV0SW1hZ2VEYXRhSXRlbS5kZXN0Rm9ybWF0KCkpOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaXRlbS5pczxXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6Rmx1c2hDb250ZXh0PigpKSB7CisgICAgICAgIH0sIFsmXShjb25zdCBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6Rmx1c2hDb250ZXh0JiBmbHVzaENvbnRleHQpIHsKICAgICAgICAgICAg
IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpmbHVzaENvbnRleHQoKTsKLSAgICAgICAgICAgIGF1
dG8gaWRlbnRpZmllciA9IGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaENvbnRl
eHQ+KCkuaWRlbnRpZmllcigpOworICAgICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gZmx1c2hD
b250ZXh0LmlkZW50aWZpZXIoKTsKICAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5kaWRGbHVzaChpZGVudGlmaWVyLCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChpdGVtLmlz
PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI+KCkpIHsK
LSAgICAgICAgICAgIGF1dG8gbmV4dEJ1ZmZlcklkZW50aWZpZXIgPSBpdGVtLmdldDxXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyPigpLmlkZW50aWZpZXIo
KTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpNZXRhQ29tbWFu
ZENoYW5nZUl0ZW1CdWZmZXImIG1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcikgeworICAgICAg
ICAgICAgYXV0byBuZXh0QnVmZmVySWRlbnRpZmllciA9IG1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1
ZmZlci5pZGVudGlmaWVyKCk7CiAgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
c2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQobmV4dEJ1ZmZlcklkZW50aWZpZXIsIG1fcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9
Ci0KLSAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5hcHBseU1lZGlhSXRl
bShpdGVtLCBjb250ZXh0KTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsKKyAg
ICAgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuYXBwbHlNZWRpYUl0ZW0o
aXRlbSwgY29udGV4dCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm4gV1RGOjp2aXNpdCh2
aXNpdG9yLCBpdGVtKTsKICAgICB9CiAKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggOTNlMWVh
NTExOTJhLi44ZTAwNDVlMzg3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTExNywy
MCArMTE3LDE4IEBAIHVpbnQ2NF90IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VTZW5k
ZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKICAgICByZXR1cm4gbV9yZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllci50b1VJbnQ2NCgpOwogfQogCi1ib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFw
cGx5TWVkaWFJdGVtKERpc3BsYXlMaXN0OjpJdGVtSGFuZGxlIGl0ZW0sIEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkKK2Jvb2wgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlNZWRpYUl0ZW0o
Y29uc3QgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0SXRlbSYgaXRlbSwgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgaWYg
KCFpdGVtLmlzPERpc3BsYXlMaXN0OjpQYWludEZyYW1lRm9yTWVkaWE+KCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIGF1dG8mIG1lZGlhSXRlbSA9IGl0ZW0uZ2V0PERpc3BsYXlMaXN0
OjpQYWludEZyYW1lRm9yTWVkaWE+KCk7Ci0gICAgYXV0byBwbGF5ZXIgPSBtX2dwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MtPnJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCkubWVkaWFQbGF5
ZXIobWVkaWFJdGVtLmlkZW50aWZpZXIoKSk7Ci0gICAgaWYgKCFwbGF5ZXIpCisgICAgYXV0byB2
aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgRGlzcGxheUxpc3Q6OlBhaW50RnJh
bWVGb3JNZWRpYSYgbWVkaWFJdGVtKSB7CisgICAgICAgIGlmIChhdXRvIHBsYXllciA9IG1fZ3B1
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+cmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoKS5t
ZWRpYVBsYXllcihtZWRpYUl0ZW0uaWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIGNvbnRleHQu
cGFpbnRGcmFtZUZvck1lZGlhKCpwbGF5ZXIsIG1lZGlhSXRlbS5kZXN0aW5hdGlvbigpKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBjb250ZXh0LnBhaW50RnJhbWVGb3JNZWRpYSgqcGxh
eWVyLCBtZWRpYUl0ZW0uZGVzdGluYXRpb24oKSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgfSwg
W10oY29uc3QgYXV0byYgaXRlbSkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSk7Cisg
ICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgaXRlbSk7CiB9CiAKIHZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6ZGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKEltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZSBoYW5kbGUsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpCkBAIC0xODYsNyArMTg0LDcgQEAgRGlzcGxheUxpc3Q6OlJlcGxh
eVJlc3VsdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzdWJtaXQoY29uc3QgRGlzcGxheUxpc3Q6
OkRpc3AKICAgICBlbHNlCiAgICAgICAgIHJlcGxheWVyRGVsZWdhdGUgPSBzdGF0aWNfY2FzdDxV
bmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXIqPigmZGVzdGluYXRpb24pOwogCi0gICAgcmV0
dXJuIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllciB7CisgICAgcmV0dXJuIERpc3BsYXlM
aXN0OjpSZXBsYXllciB7CiAgICAgICAgIGRlc3RpbmF0aW9uLmNvbnRleHQoKSwKICAgICAgICAg
ZGlzcGxheUxpc3QsCiAgICAgICAgICZyZW1vdGVSZXNvdXJjZUNhY2hlKCkuaW1hZ2VCdWZmZXJz
KCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCAzNjA2NGYxZWQxNTkuLmQ1NWQ5ZWIwZTAyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICBSZW1v
dGVSZXNvdXJjZUNhY2hlJiByZW1vdGVSZXNvdXJjZUNhY2hlKCkgeyByZXR1cm4gbV9yZW1vdGVS
ZXNvdXJjZUNhY2hlOyB9CiAKICAgICAvLyBSZW5kZXJpbmcgb3BlcmF0aW9ucy4KLSAgICBib29s
IGFwcGx5TWVkaWFJdGVtKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlLCBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQmKTsKKyAgICBib29sIGFwcGx5TWVkaWFJdGVtKGNvbnN0IFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdEl0ZW0mLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQmKTsKIAogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHNlbnQuCiAgICAgdm9pZCBkaWRDcmVhdGVJ
bWFnZUJ1ZmZlckJhY2tlbmQoSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCmluZGV4IDVjYmZkMmQ0NDRiMy4u
YTA3MzlhNDg3YzhkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCkBAIC04MCw1NyArODAsMzUgQEAgVEVTVChEaXNw
bGF5TGlzdFRlc3RzLCBBcHBlbmRJdGVtcykKICAgICBFWFBFQ1RfRkFMU0UobGlzdC5pc0VtcHR5
KCkpOwogCiAgICAgYm9vbCBvYnNlcnZlZFVuZXhwZWN0ZWRJdGVtID0gZmFsc2U7Ci0gICAgZm9y
IChhdXRvIGRpc3BsYXlMaXN0SXRlbSA6IGxpc3QpIHsKLSAgICAgICAgYXV0byBoYW5kbGUgPSBk
aXNwbGF5TGlzdEl0ZW0tPml0ZW07Ci0gICAgICAgIHN3aXRjaCAoaGFuZGxlLnR5cGUoKSkgewot
ICAgICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6IHsKLSAgICAgICAgICAg
IEVYUEVDVF9GQUxTRShoYW5kbGUuaXNEcmF3aW5nSXRlbSgpKTsKLSAgICAgICAgICAgIEVYUEVD
VF9UUlVFKGhhbmRsZS5pczxTZXRTdHJva2VUaGlja25lc3M+KCkpOwotICAgICAgICAgICAgYXV0
byYgaXRlbSA9IGhhbmRsZS5nZXQ8U2V0U3Ryb2tlVGhpY2tuZXNzPigpOworIGZvciAoY29uc3Qg
YXV0byYgZGlzcGxheUxpc3RJdGVtIDogbGlzdCkgeworICAgICAgICBjb25zdCBhdXRvJiBbaXRl
bSwgZXh0ZW50LCBzaXplXSA9IGRpc3BsYXlMaXN0SXRlbS52YWx1ZSgpOworCisgICAgICAgIGF1
dG8gdmlzaXRvciA9IFdURjo6bWFrZVZpc2l0b3IoWyZdKGNvbnN0IFNldFN0cm9rZVRoaWNrbmVz
cyYgaXRlbSkgeworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGl0ZW0uaXNEcmF3aW5nSXRlbSk7
CiAgICAgICAgICAgICBFWFBFQ1RfRVEoaXRlbS50aGlja25lc3MoKSwgMS41KTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRoOiB7
Ci0gICAgICAgICAgICBFWFBFQ1RfVFJVRShoYW5kbGUuaXNEcmF3aW5nSXRlbSgpKTsKLSAgICAg
ICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS5pczxGaWxsUGF0aD4oKSk7Ci0gICAgICAgICAgICBh
dXRvJiBpdGVtID0gaGFuZGxlLmdldDxGaWxsUGF0aD4oKTsKKyAgICAgICAgfSwgWyZdKGNvbnN0
IEZpbGxQYXRoJiBpdGVtKSB7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShpdGVtLmlzRHJhd2lu
Z0l0ZW0pOwogICAgICAgICAgICAgRVhQRUNUX0VRKGl0ZW0ucGF0aCgpLnBsYXRmb3JtUGF0aCgp
LCBwYXRoLnBsYXRmb3JtUGF0aCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50OiB7Ci0gICAgICAgICAg
ICBFWFBFQ1RfVFJVRShoYW5kbGUuaXNEcmF3aW5nSXRlbSgpKTsKLSAgICAgICAgICAgIEVYUEVD
VF9UUlVFKGhhbmRsZS5pczxGaWxsUmVjdFdpdGhHcmFkaWVudD4oKSk7Ci0gICAgICAgICAgICBh
dXRvJiBpdGVtID0gaGFuZGxlLmdldDxGaWxsUmVjdFdpdGhHcmFkaWVudD4oKTsKKyAgICAgICAg
fSwgWyZdKGNvbnN0IEZpbGxSZWN0V2l0aEdyYWRpZW50JiBpdGVtKSB7CisgICAgICAgICAgICBF
WFBFQ1RfVFJVRShpdGVtLmlzRHJhd2luZ0l0ZW0pOwogICAgICAgICAgICAgRVhQRUNUX0VRKGl0
ZW0ucmVjdCgpLCBGbG9hdFJlY3QoMS4sIDEuLCAxMC4sIDEwLikpOwogICAgICAgICAgICAgRVhQ
RUNUX0VRKCZpdGVtLmdyYWRpZW50KCksIGdyYWRpZW50LnB0cigpKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxDb2xv
cjogewotICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGhhbmRsZS5pc0RyYXdpbmdJdGVtKCkpOwot
ICAgICAgICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLmlzPFNldElubGluZUZpbGxDb2xvcj4oKSk7
Ci0gICAgICAgICAgICBhdXRvJiBpdGVtID0gaGFuZGxlLmdldDxTZXRJbmxpbmVGaWxsQ29sb3I+
KCk7CisgICAgICAgIH0sIFsmXShjb25zdCBTZXRJbmxpbmVGaWxsQ29sb3ImIGl0ZW0pIHsKKyAg
ICAgICAgICAgIEVYUEVDVF9GQUxTRShpdGVtLmlzRHJhd2luZ0l0ZW0pOwogICAgICAgICAgICAg
RVhQRUNUX0VRKGl0ZW0uY29sb3IoKSwgQ29sb3I6OnJlZCk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQogI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgICAgICBjYXNlIEl0
ZW1UeXBlOjpTdHJva2VJbmxpbmVQYXRoOiB7Ci0gICAgICAgICAgICBFWFBFQ1RfVFJVRShoYW5k
bGUuaXNEcmF3aW5nSXRlbSgpKTsKLSAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS5pczxT
dHJva2VJbmxpbmVQYXRoPigpKTsKLSAgICAgICAgICAgIGF1dG8mIGl0ZW0gPSBoYW5kbGUuZ2V0
PFN0cm9rZUlubGluZVBhdGg+KCk7CisgICAgICAgIH0sIFsmXShjb25zdCBTdHJva2VJbmxpbmVQ
YXRoJiBpdGVtKSB7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShpdGVtLmlzRHJhd2luZ0l0ZW0p
OwogICAgICAgICAgICAgY29uc3QgYXV0byBwYXRoID0gaXRlbS5wYXRoKCk7CiAgICAgICAgICAg
ICBhdXRvJiBsaW5lID0gcGF0aC5pbmxpbmVEYXRhPExpbmVEYXRhPigpOwogICAgICAgICAgICAg
RVhQRUNUX0VRKGxpbmUuc3RhcnQsIEZsb2F0UG9pbnQoMCwgMCkpOwogICAgICAgICAgICAgRVhQ
RUNUX0VRKGxpbmUuZW5kLCBGbG9hdFBvaW50KDEwLiwgMTUuKSk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQogI2VuZGlmCi0gICAgICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5k
Q2hhbmdlSXRlbUJ1ZmZlcjoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OiB7
CisgICAgICAgIH0sIFsmXShjb25zdCBNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXImKSB7Cisg
ICAgICAgIH0sIFsmXShjb25zdCBhdXRvJikgewogICAgICAgICAgICAgb2JzZXJ2ZWRVbmV4cGVj
dGVkSXRlbSA9IHRydWU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICB9
CisgICAgICAgIH0pOworICAgICAgICBXVEY6OnZpc2l0KHZpc2l0b3IsIGl0ZW0pOwogICAgIH0K
IAogICAgIEVYUEVDVF9GQUxTRShvYnNlcnZlZFVuZXhwZWN0ZWRJdGVtKTsKQEAgLTE1MCwxMiAr
MTI4LDExIEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgQXBwZW5kSXRlbXMpCiAKICAgICBsaXN0
LmFwcGVuZDxGaWxsUmVjdFdpdGhDb2xvcj4oRmxvYXRSZWN0IHsgMCwgMCwgMTAwLCAxMDAgfSwg
Q29sb3I6OmJsYWNrKTsKIAotICAgIGZvciAoYXV0byBkaXNwbGF5TGlzdEl0ZW0gOiBsaXN0KSB7
Ci0gICAgICAgIGF1dG8gaGFuZGxlID0gZGlzcGxheUxpc3RJdGVtLT5pdGVtOwotICAgICAgICBF
WFBFQ1RfRVEoaGFuZGxlLnR5cGUoKSwgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yKTsKLSAg
ICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLmlzPEZpbGxSZWN0V2l0aENvbG9yPigpKTsKKyAgICBm
b3IgKGNvbnN0IGF1dG8mIGRpc3BsYXlMaXN0SXRlbSA6IGxpc3QpIHsKKyAgICAgICAgRVhQRUNU
X1RSVUUoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxsUmVjdFdpdGhDb2xvcj4oZGlzcGxheUxp
c3RJdGVtLT5pdGVtKSk7CisgICAgICAgIGNvbnN0IGF1dG8mIGl0ZW0gPSBXVEY6OmdldDxGaWxs
UmVjdFdpdGhDb2xvcj4oZGlzcGxheUxpc3RJdGVtLT5pdGVtKTsKKyAgICAgICAgRVhQRUNUX0VR
KGl0ZW0uaXRlbVR5cGUsIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcik7CiAKLSAgICAgICAg
YXV0byYgaXRlbSA9IGhhbmRsZS5nZXQ8RmlsbFJlY3RXaXRoQ29sb3I+KCk7CiAgICAgICAgIEVY
UEVDVF9FUSgqaXRlbS5jb2xvcigpLnRyeUdldEFzU1JHQkFCeXRlcygpLCBDb2xvcjo6YmxhY2sp
OwogICAgICAgICBFWFBFQ1RfRVEoaXRlbS5yZWN0KCksIEZsb2F0UmVjdCgwLCAwLCAxMDAsIDEw
MCkpOwogICAgIH0KQEAgLTE5Nyw3ICsxNzQsNyBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEl0
ZW1CdWZmZXJDbGllbnQpCiAgICAgcHJpdmF0ZToKICAgICAgICAgSXRlbUJ1ZmZlckhhbmRsZSBj
cmVhdGVJdGVtQnVmZmVyKHNpemVfdCBjYXBhY2l0eSkgZmluYWwKICAgICAgICAgewotICAgICAg
ICAgICAgRVhQRUNUX0xUKGNhcGFjaXR5LCBnbG9iYWxJdGVtQnVmZmVyQ2FwYWNpdHkpOworICAg
ICAgICAgICAgRVhQRUNUX0xFKGNhcGFjaXR5LCBnbG9iYWxJdGVtQnVmZmVyQ2FwYWNpdHkpOwog
ICAgICAgICAgICAgcmV0dXJuIHsgZ2xvYmFsQnVmZmVySWRlbnRpZmllciwgZ2xvYmFsSXRlbUJ1
ZmZlciwgZ2xvYmFsSXRlbUJ1ZmZlckNhcGFjaXR5IH07CiAgICAgICAgIH0KIApAQCAtMjI2LDgg
KzIwMyw4IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgSXRlbUJ1ZmZlckNsaWVudCkKICAgICBz
aGFsbG93Q29weS5zZXRJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCgmcmVhZGVyKTsKIAogICAgIFZl
Y3RvcjxJdGVtVHlwZT4gaXRlbVR5cGVzOwotICAgIGZvciAoYXV0byBkaXNwbGF5TGlzdEl0ZW0g
OiBzaGFsbG93Q29weSkKLSAgICAgICAgaXRlbVR5cGVzLmFwcGVuZChkaXNwbGF5TGlzdEl0ZW0t
Pml0ZW0udHlwZSgpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGRpc3BsYXlMaXN0SXRlbSA6IHNo
YWxsb3dDb3B5KQorICAgICAgICBpdGVtVHlwZXMuYXBwZW5kKGRpc3BsYXlMaXN0SXRlbVR5cGUo
ZGlzcGxheUxpc3RJdGVtLT5pdGVtKSk7CiAKICAgICBFWFBFQ1RfRkFMU0Uoc2hhbGxvd0NvcHku
aXNFbXB0eSgpKTsKICAgICBFWFBFQ1RfRVEoaXRlbVR5cGVzLnNpemUoKSwgNFUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428145</attachid>
            <date>2021-05-09 17:37:39 -0700</date>
            <delta_ts>2021-05-09 18:36:02 -0700</delta_ts>
            <desc>Patch for reviewing</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>52957</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IDU5ZDgxYjVmNmZjM2IxZTRlYWM4YWIxNjM4YjI5MzA4NTc3Njk4OGQKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBTdW4gTWF5IDkg
MTU6NTU6MjMgMjAyMSAtMDcwMAoKICAgIFBhcnQgOQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmODE2OGRlMDEx
ZjkuLjllMjJhM2JhODE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIxLTA1LTA5
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQ
VSBQcm9jZXNzXSBTaW1wbGlmeSBEaXNwbGF5TGlzdDo6SXRlcmF0b3IgcGFydCA5OiBNaWdyYXRl
IERpc3BsYXlMaXN0OjpJdGVyYXRvcidzIEFQSSB0byB1c2UgRGlzcGxheUxpc3RJdGVtIHJhdGhl
ciB0aGFuIEl0ZW1IYW5kbGUsIGFuZCB1cGRhdGUgY2FsbGVycworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1NTgyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBhIGZhaXJseSBtZWNoYW5pY2Fs
IHJlcGxhY2VtZW50IGluIHVzZXJzIG9mIERpc3BsYXlMaXN0OjpJdGVyYXRvci4KKyAgICAgICAg
VGhpcyBwYXRjaCBqdXN0IG1pZ3JhdGVzIGZyb20gSXRlbUhhbmRsZSB0byBjb25zdCBEaXNwbGF5
TGlzdEl0ZW0mLgorCisgICAgICAgIFRoZSBiZW5lZml0cyBhcmU6CisgICAgICAgIC0gRGlzcGxh
eUxpc3Q6OmFwcGVuZCgpIGdvZXMgZnJvbSAxMzQgbGluZXMgdG8gMworICAgICAgICAtIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEl0ZW1IYW5kbGUgaXRlbSkgZ29lcyBm
cm9tIDE5MCBsaW5lcyB0byA1CisgICAgICAgIC0gVXNpbmcgVmlzaXRvciBtZWFucyB0aGVyZSBp
cyBhIGxvdCBsZXNzIG1hbnVhbCBkb3duY2FzdGluZworCisgICAgICAgIENvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpzaG91
bGREdW1wRm9yRmxhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0Ojphc1RleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdDo6YXBwZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtSGFuZGxlOjpkZXNjcmlwdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjphcHBseSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6b3BlcmF0b3I8PCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmFwcGx5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHM6OmZvbnRJZGVudGlmaWVyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojppc0RyYXdpbmdJdGVtKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzOjpmb250SWRlbnRpZmllcik6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlcmF0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZXBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YXBw
bHlJbWFnZUJ1ZmZlckl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5
TmF0aXZlSW1hZ2VJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjphcHBseVNl
dFN0YXRlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YXBwbHlGb250SXRl
bSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YXBwbHkpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjphcHBseUl0ZW0pOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpyZXBsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OkRlbGVnYXRlOjphcHBseSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkluTWVtb3J5RGlzcGxheUxpc3Q6On5Jbk1l
bW9yeURpc3BsYXlMaXN0KToKKwogMjAyMS0wNS0wOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4
ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gU2ltcGxpZnkgRGlzcGxh
eUxpc3Q6Okl0ZXJhdG9yIHBhcnQgODogUmVwbGFjZSB0aGUgZ3V0cyBvZiBEaXNwbGF5TGlzdDo6
SXRlcmF0b3Igd2l0aG91dCBhZmZlY3RpbmcgaXRzIHB1YmxpYyBBUEkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggYzc4YWY3
ZTI1ZGRiLi4xOGM5ZmViODE3MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0xNjAsNyArMTYwLDcgQEAgc3RydWN0IEdy
YXBoaWNzQ29udGV4dFN0YXRlIHsKICAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRT
dGF0ZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5HcmFwaGljc0NvbnRleHRTdGF0ZSgpOwogCi0g
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlKEdyYXBo
aWNzQ29udGV4dFN0YXRlJiYpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGUmIG9wZXJhdG9y
PShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAK
aW5kZXggNjA1ZjlhMGE2NDY2Li5kOGM5MTkyMDU1YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
LmNwcApAQCAtODUsMTIgKzg1LDEwIEBAIHZvaWQgRGlzcGxheUxpc3Q6OmNsZWFyKCkKICAgICBt
X25hdGl2ZUltYWdlcy5jbGVhcigpOwogfQogCi1ib29sIERpc3BsYXlMaXN0OjpzaG91bGREdW1w
Rm9yRmxhZ3MoQXNUZXh0RmxhZ3MgZmxhZ3MsIEl0ZW1IYW5kbGUgaXRlbSkKK2Jvb2wgRGlzcGxh
eUxpc3Q6OnNob3VsZER1bXBGb3JGbGFncyhBc1RleHRGbGFncyBmbGFncywgY29uc3QgRGlzcGxh
eUxpc3RJdGVtJiBpdGVtKQogewotICAgIHN3aXRjaCAoaXRlbS50eXBlKCkpIHsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpTZXRTdGF0ZToKKyAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9y
KFsmXShjb25zdCBTZXRTdGF0ZSYgc3RhdGVJdGVtKSAtPiBib29sIHsKICAgICAgICAgaWYgKCEo
ZmxhZ3MgJiBBc1RleHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9ucykpIHsKLSAgICAg
ICAgICAgIGNvbnN0IGF1dG8mIHN0YXRlSXRlbSA9IGl0ZW0uZ2V0PFNldFN0YXRlPigpOwogICAg
ICAgICAgICAgLy8gRklYTUU6IGZvciBub3csIG9ubHkgZHJvcCB0aGUgaXRlbSBpZiB0aGUgb25s
eSBzdGF0ZS1jaGFuZ2UgZmxhZ3MgYXJlIHBsYXRmb3JtLXNwZWNpZmljLgogICAgICAgICAgICAg
aWYgKHN0YXRlSXRlbS5zdGF0ZUNoYW5nZSgpLm1fY2hhbmdlRmxhZ3MgPT0gR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC05OCwzMSArOTYsMzAgQEAgYm9vbCBEaXNwbGF5TGlzdDo6
c2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzIGZsYWdzLCBJdGVtSGFuZGxlIGl0ZW0pCiAg
ICAgICAgICAgICBpZiAoc3RhdGVJdGVtLnN0YXRlQ2hhbmdlKCkubV9jaGFuZ2VGbGFncyA9PSBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKQog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICBicmVhazsK
KyAgICAgICAgcmV0dXJuIHRydWU7CiAjaWYgVVNFKENHKQotICAgIGNhc2UgSXRlbVR5cGU6OkFw
cGx5RmlsbFBhdHRlcm46Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuOgot
ICAgICAgICBpZiAoIShmbGFncyAmIEFzVGV4dEZsYWc6OkluY2x1ZGVzUGxhdGZvcm1PcGVyYXRp
b25zKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgYnJlYWs7CisgICAgfSwg
WyZdKGNvbnN0IEFwcGx5RmlsbFBhdHRlcm4mKSAtPiBib29sIHsKKyAgICAgICAgcmV0dXJuIGZs
YWdzICYgQXNUZXh0RmxhZzo6SW5jbHVkZXNQbGF0Zm9ybU9wZXJhdGlvbnM7CisgICAgfSwgWyZd
KGNvbnN0IEFwcGx5U3Ryb2tlUGF0dGVybiYpIC0+IGJvb2wgeworICAgICAgICByZXR1cm4gZmxh
Z3MgJiBBc1RleHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9uczsKICNlbmRpZgotICAg
IGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
LCBbXShjb25zdCBhdXRvJikgLT4gYm9vbCB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0p
OworICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIGl0ZW0pOwogfQogCiBTdHJpbmcgRGlz
cGxheUxpc3Q6OmFzVGV4dChBc1RleHRGbGFncyBmbGFncykgY29uc3QKIHsKICAgICBUZXh0U3Ry
ZWFtIHN0cmVhbShUZXh0U3RyZWFtOjpMaW5lTW9kZTo6TXVsdGlwbGVMaW5lLCBUZXh0U3RyZWFt
OjpGb3JtYXR0aW5nOjpTVkdTdHlsZVJlY3QpOwogICAgIGZvciAoYXV0byBkaXNwbGF5TGlzdEl0
ZW0gOiAqdGhpcykgewotICAgICAgICBhdXRvIFtpdGVtLCBleHRlbnQsIGl0ZW1TaXplSW5CdWZm
ZXJdID0gZGlzcGxheUxpc3RJdGVtLnZhbHVlKCk7CisgICAgICAgIGNvbnN0IGF1dG8mIFtpdGVt
LCBleHRlbnQsIGl0ZW1TaXplSW5CdWZmZXJdID0gZGlzcGxheUxpc3RJdGVtLnZhbHVlKCk7CiAg
ICAgICAgIGlmICghc2hvdWxkRHVtcEZvckZsYWdzKGZsYWdzLCBpdGVtKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgIFRleHRTdHJlYW06Okdyb3VwU2NvcGUgZ3JvdXAoc3RyZWFt
KTsKICAgICAgICAgc3RyZWFtIDw8IGl0ZW07Ci0gICAgICAgIGlmIChpdGVtLmlzRHJhd2luZ0l0
ZW0oKSkKKyAgICAgICAgaWYgKGlzRHJhd2luZ0l0ZW0oaXRlbSkpCiAgICAgICAgICAgICBzdHJl
YW0gPDwgIiBleHRlbnQgIiA8PCBleHRlbnQ7CiAgICAgfQogICAgIHJldHVybiBzdHJlYW0ucmVs
ZWFzZSgpOwpAQCAtMTM0LDEwICsxMzEsMTAgQEAgdm9pZCBEaXNwbGF5TGlzdDo6ZHVtcChUZXh0
U3RyZWFtJiB0cykgY29uc3QKICAgICB0cyA8PCAiZGlzcGxheSBsaXN0IjsKIAogICAgIGZvciAo
YXV0byBkaXNwbGF5TGlzdEl0ZW0gOiAqdGhpcykgewotICAgICAgICBhdXRvIFtpdGVtLCBleHRl
bnQsIGl0ZW1TaXplSW5CdWZmZXJdID0gZGlzcGxheUxpc3RJdGVtLnZhbHVlKCk7CisgICAgICAg
IGNvbnN0IGF1dG8mIFtpdGVtLCBleHRlbnQsIGl0ZW1TaXplSW5CdWZmZXJdID0gZGlzcGxheUxp
c3RJdGVtLnZhbHVlKCk7CiAgICAgICAgIFRleHRTdHJlYW06Okdyb3VwU2NvcGUgZ3JvdXAodHMp
OwogICAgICAgICB0cyA8PCBpdGVtOwotICAgICAgICBpZiAoaXRlbS5pc0RyYXdpbmdJdGVtKCkp
CisgICAgICAgIGlmIChpc0RyYXdpbmdJdGVtKGl0ZW0pKQogICAgICAgICAgICAgdHMgPDwgIiBl
eHRlbnQgIiA8PCBleHRlbnQ7CiAgICAgfQogICAgIHRzLnN0YXJ0R3JvdXAoKTsKQEAgLTE5Nywx
NDIgKzE5NCwxMSBAQCB2b2lkIERpc3BsYXlMaXN0OjpzZXRUcmFja3NEcmF3aW5nSXRlbUV4dGVu
dHMoYm9vbCB2YWx1ZSkKICAgICBtX3RyYWNrc0RyYXdpbmdJdGVtRXh0ZW50cyA9IHZhbHVlOwog
fQogCi12b2lkIERpc3BsYXlMaXN0OjphcHBlbmQoSXRlbUhhbmRsZSBpdGVtKQordm9pZCBEaXNw
bGF5TGlzdDo6YXBwZW5kKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgaXRlbSkKIHsKLSAgICBzd2l0
Y2ggKGl0ZW0udHlwZSgpKSB7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2F2ZToKLSAgICAgICAgcmV0
dXJuIGFwcGVuZDxTYXZlPihpdGVtLmdldDxTYXZlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpS
ZXN0b3JlOgotICAgICAgICByZXR1cm4gYXBwZW5kPFJlc3RvcmU+KGl0ZW0uZ2V0PFJlc3RvcmU+
KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlRyYW5zbGF0ZToKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZDxUcmFuc2xhdGU+KGl0ZW0uZ2V0PFRyYW5zbGF0ZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
Um90YXRlOgotICAgICAgICByZXR1cm4gYXBwZW5kPFJvdGF0ZT4oaXRlbS5nZXQ8Um90YXRlPigp
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTY2FsZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTY2Fs
ZT4oaXRlbS5nZXQ8U2NhbGU+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RN
OgotICAgICAgICByZXR1cm4gYXBwZW5kPENvbmNhdGVuYXRlQ1RNPihpdGVtLmdldDxDb25jYXRl
bmF0ZUNUTT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0Q1RNOgotICAgICAgICByZXR1cm4g
YXBwZW5kPFNldENUTT4oaXRlbS5nZXQ8U2V0Q1RNPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpT
ZXRJbmxpbmVGaWxsR3JhZGllbnQ6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2V0SW5saW5lRmls
bEdyYWRpZW50PihpdGVtLmdldDxTZXRJbmxpbmVGaWxsR3JhZGllbnQ+KCkpOwotICAgIGNhc2Ug
SXRlbVR5cGU6OlNldElubGluZUZpbGxDb2xvcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTZXRJ
bmxpbmVGaWxsQ29sb3I+KGl0ZW0uZ2V0PFNldElubGluZUZpbGxDb2xvcj4oKSk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8
U2V0SW5saW5lU3Ryb2tlQ29sb3I+KGl0ZW0uZ2V0PFNldElubGluZVN0cm9rZUNvbG9yPigpKTsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6Ci0gICAgICAgIHJldHVybiBh
cHBlbmQ8U2V0U3Ryb2tlVGhpY2tuZXNzPihpdGVtLmdldDxTZXRTdHJva2VUaGlja25lc3M+KCkp
OwotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgotICAgICAgICByZXR1cm4gYXBwZW5kPFNl
dFN0YXRlPihpdGVtLmdldDxTZXRTdGF0ZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGlu
ZUNhcDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTZXRMaW5lQ2FwPihpdGVtLmdldDxTZXRMaW5l
Q2FwPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lRGFzaDoKLSAgICAgICAgcmV0dXJu
IGFwcGVuZDxTZXRMaW5lRGFzaD4oaXRlbS5nZXQ8U2V0TGluZURhc2g+KCkpOwotICAgIGNhc2Ug
SXRlbVR5cGU6OlNldExpbmVKb2luOgotICAgICAgICByZXR1cm4gYXBwZW5kPFNldExpbmVKb2lu
PihpdGVtLmdldDxTZXRMaW5lSm9pbj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TWl0ZXJM
aW1pdDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTZXRNaXRlckxpbWl0PihpdGVtLmdldDxTZXRN
aXRlckxpbWl0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclNoYWRvdzoKLSAgICAgICAg
cmV0dXJuIGFwcGVuZDxDbGVhclNoYWRvdz4oaXRlbS5nZXQ8Q2xlYXJTaGFkb3c+KCkpOwotICAg
IGNhc2UgSXRlbVR5cGU6OkNsaXA6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8Q2xpcD4oaXRlbS5n
ZXQ8Q2xpcD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dDoKLSAgICAgICAgcmV0dXJu
IGFwcGVuZDxDbGlwT3V0PihpdGVtLmdldDxDbGlwT3V0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpDbGlwVG9JbWFnZUJ1ZmZlcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxDbGlwVG9JbWFnZUJ1
ZmZlcj4oaXRlbS5nZXQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6
OkNsaXBPdXRUb1BhdGg6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8Q2xpcE91dFRvUGF0aD4oaXRl
bS5nZXQ8Q2xpcE91dFRvUGF0aD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6Ci0g
ICAgICAgIHJldHVybiBhcHBlbmQ8Q2xpcFBhdGg+KGl0ZW0uZ2V0PENsaXBQYXRoPigpKTsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0
dXJuIGFwcGVuZDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oaXRlbS5nZXQ8QmVnaW5DbGlw
VG9EcmF3aW5nQ29tbWFuZHM+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdp
bmdDb21tYW5kczoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxFbmRDbGlwVG9EcmF3aW5nQ29tbWFu
ZHM+KGl0ZW0uZ2V0PEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKSk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6RHJhd0dseXBoczoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3R2x5cGhzPihpdGVt
LmdldDxEcmF3R2x5cGhzPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6
Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd0ltYWdlQnVmZmVyPihpdGVtLmdldDxEcmF3SW1h
Z2VCdWZmZXI+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKLSAgICAg
ICAgcmV0dXJuIGFwcGVuZDxEcmF3TmF0aXZlSW1hZ2U+KGl0ZW0uZ2V0PERyYXdOYXRpdmVJbWFn
ZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46Ci0gICAgICAgIHJldHVybiBh
cHBlbmQ8RHJhd1BhdHRlcm4+KGl0ZW0uZ2V0PERyYXdQYXR0ZXJuPigpKTsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3UmVjdDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3UmVjdD4oaXRlbS5n
ZXQ8RHJhd1JlY3Q+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgotICAgICAgICBy
ZXR1cm4gYXBwZW5kPERyYXdMaW5lPihpdGVtLmdldDxEcmF3TGluZT4oKSk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd0xpbmVzRm9yVGV4dDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3TGlu
ZXNGb3JUZXh0PihpdGVtLmdldDxEcmF3TGluZXNGb3JUZXh0PigpKTsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgotICAgICAgICByZXR1cm4gYXBwZW5kPERy
YXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI+KGl0ZW0uZ2V0PERyYXdEb3RzRm9yRG9jdW1lbnRNYXJr
ZXI+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOgotICAgICAgICByZXR1cm4g
YXBwZW5kPERyYXdFbGxpcHNlPihpdGVtLmdldDxEcmF3RWxsaXBzZT4oKSk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd1BhdGg6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd1BhdGg+KGl0ZW0u
Z2V0PERyYXdQYXRoPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoK
LSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3Rm9jdXNSaW5nUGF0aD4oaXRlbS5nZXQ8RHJhd0Zv
Y3VzUmluZ1BhdGg+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoK
LSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3Rm9jdXNSaW5nUmVjdHM+KGl0ZW0uZ2V0PERyYXdG
b2N1c1JpbmdSZWN0cz4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAgICAg
IHJldHVybiBhcHBlbmQ8RmlsbFJlY3Q+KGl0ZW0uZ2V0PEZpbGxSZWN0PigpKTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxGaWxs
UmVjdFdpdGhDb2xvcj4oaXRlbS5nZXQ8RmlsbFJlY3RXaXRoQ29sb3I+KCkpOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50OgotICAgICAgICByZXR1cm4gYXBwZW5kPEZp
bGxSZWN0V2l0aEdyYWRpZW50PihpdGVtLmdldDxGaWxsUmVjdFdpdGhHcmFkaWVudD4oKSk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0OgotICAgICAgICByZXR1cm4gYXBw
ZW5kPEZpbGxDb21wb3NpdGVkUmVjdD4oaXRlbS5nZXQ8RmlsbENvbXBvc2l0ZWRSZWN0PigpKTsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUm91bmRlZFJlY3Q6Ci0gICAgICAgIHJldHVybiBhcHBl
bmQ8RmlsbFJvdW5kZWRSZWN0PihpdGVtLmdldDxGaWxsUm91bmRlZFJlY3Q+KCkpOwotICAgIGNh
c2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOgotICAgICAgICByZXR1cm4gYXBw
ZW5kPEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlPihpdGVtLmdldDxGaWxsUmVjdFdpdGhSb3VuZGVk
SG9sZT4oKSk7Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlw
ZTo6RmlsbElubGluZVBhdGg6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RmlsbElubGluZVBhdGg+
KGl0ZW0uZ2V0PEZpbGxJbmxpbmVQYXRoPigpKTsKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6
OkZpbGxQYXRoOgotICAgICAgICByZXR1cm4gYXBwZW5kPEZpbGxQYXRoPihpdGVtLmdldDxGaWxs
UGF0aD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbEVsbGlwc2U6Ci0gICAgICAgIHJldHVy
biBhcHBlbmQ8RmlsbEVsbGlwc2U+KGl0ZW0uZ2V0PEZpbGxFbGxpcHNlPigpKTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8Rmx1c2hDb250
ZXh0PihpdGVtLmdldDxGbHVzaENvbnRleHQ+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFD
b21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZDxNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI+KGl0ZW0uZ2V0PE1ldGFD
b21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyOgotICAgICAgICByZXR1cm4gYXBwZW5kPE1l
dGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcj4oaXRlbS5nZXQ8TWV0YUNvbW1hbmRDaGFuZ2VJdGVt
QnVmZmVyPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpHZXRJbWFnZURhdGE6Ci0gICAgICAgIHJl
dHVybiBhcHBlbmQ8R2V0SW1hZ2VEYXRhPihpdGVtLmdldDxHZXRJbWFnZURhdGE+KCkpOwotICAg
IGNhc2UgSXRlbVR5cGU6OlB1dEltYWdlRGF0YToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxQdXRJ
bWFnZURhdGE+KGl0ZW0uZ2V0PFB1dEltYWdlRGF0YT4oKSk7Ci0jaWYgRU5BQkxFKFZJREVPKQot
ICAgIGNhc2UgSXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYToKLSAgICAgICAgcmV0dXJuIGFw
cGVuZDxQYWludEZyYW1lRm9yTWVkaWE+KGl0ZW0uZ2V0PFBhaW50RnJhbWVGb3JNZWRpYT4oKSk7
Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0OgotICAgICAgICByZXR1cm4g
YXBwZW5kPFN0cm9rZVJlY3Q+KGl0ZW0uZ2V0PFN0cm9rZVJlY3Q+KCkpOwotICAgIGNhc2UgSXRl
bVR5cGU6OlN0cm9rZUxpbmU6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U3Ryb2tlTGluZT4oaXRl
bS5nZXQ8U3Ryb2tlTGluZT4oKSk7Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAg
Y2FzZSBJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxT
dHJva2VJbmxpbmVQYXRoPihpdGVtLmdldDxTdHJva2VJbmxpbmVQYXRoPigpKTsKLSNlbmRpZgot
ICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVBhdGg6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U3Ry
b2tlUGF0aD4oaXRlbS5nZXQ8U3Ryb2tlUGF0aD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ry
b2tlRWxsaXBzZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTdHJva2VFbGxpcHNlPihpdGVtLmdl
dDxTdHJva2VFbGxpcHNlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclJlY3Q6Ci0gICAg
ICAgIHJldHVybiBhcHBlbmQ8Q2xlYXJSZWN0PihpdGVtLmdldDxDbGVhclJlY3Q+KCkpOwotICAg
IGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAgICAgIHJldHVybiBh
cHBlbmQ8QmVnaW5UcmFuc3BhcmVuY3lMYXllcj4oaXRlbS5nZXQ8QmVnaW5UcmFuc3BhcmVuY3lM
YXllcj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAg
ICAgIHJldHVybiBhcHBlbmQ8RW5kVHJhbnNwYXJlbmN5TGF5ZXI+KGl0ZW0uZ2V0PEVuZFRyYW5z
cGFyZW5jeUxheWVyPigpKTsKLSNpZiBVU0UoQ0cpCi0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlT
dHJva2VQYXR0ZXJuOgotICAgICAgICByZXR1cm4gYXBwZW5kPEFwcGx5U3Ryb2tlUGF0dGVybj4o
aXRlbS5nZXQ8QXBwbHlTdHJva2VQYXR0ZXJuPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBs
eUZpbGxQYXR0ZXJuOgotICAgICAgICByZXR1cm4gYXBwZW5kPEFwcGx5RmlsbFBhdHRlcm4+KGl0
ZW0uZ2V0PEFwcGx5RmlsbFBhdHRlcm4+KCkpOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6
QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxBcHBseURldmlj
ZVNjYWxlRmFjdG9yPihpdGVtLmdldDxBcHBseURldmljZVNjYWxlRmFjdG9yPigpKTsKLSAgICB9
CisgICAgV1RGOjp2aXNpdChbJl0oY29uc3QgYXV0byYgaXRlbSkgeworICAgICAgICBhcHBlbmQo
aXRlbSk7CisgICAgfSwgaXRlbSk7CiB9CiAKIGF1dG8gRGlzcGxheUxpc3Q6OmJlZ2luKCkgY29u
c3QgLT4gSXRlcmF0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKaW5kZXggOTkzMjIyNjJkZjcwLi44
Y2VlZTQ1MGU3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC05MSw3ICs5MSw3IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hJdGVtQnVmZmVyKEZ1bmN0aW9u
PHZvaWQoY29uc3QgSXRlbUJ1ZmZlckhhbmRsZSYpPiYmKSBjb25zdDsKIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIGNsYXNzLi4uIEFyZ3M+IHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKTsK
LSAgICB2b2lkIGFwcGVuZChJdGVtSGFuZGxlKTsKKyAgICB2b2lkIGFwcGVuZChjb25zdCBEaXNw
bGF5TGlzdEl0ZW0mKTsKIAogICAgIGJvb2wgdHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzKCkgY29u
c3QgeyByZXR1cm4gbV90cmFja3NEcmF3aW5nSXRlbUV4dGVudHM7IH0KICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFRyYWNrc0RyYXdpbmdJdGVtRXh0ZW50cyhib29sKTsKQEAgLTEzMiw3ICsx
MzIsNyBAQCBwcml2YXRlOgogICAgICAgICB9KTsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBz
aG91bGREdW1wRm9yRmxhZ3MoQXNUZXh0RmxhZ3MsIEl0ZW1IYW5kbGUpOworICAgIHN0YXRpYyBi
b29sIHNob3VsZER1bXBGb3JGbGFncyhBc1RleHRGbGFncywgY29uc3QgRGlzcGxheUxpc3RJdGVt
Jik7CiAKICAgICBJbWFnZUJ1ZmZlckhhc2hNYXAgbV9pbWFnZUJ1ZmZlcnM7CiAgICAgTmF0aXZl
SW1hZ2VIYXNoTWFwIG1fbmF0aXZlSW1hZ2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtQnVmZmVyLmNwcAppbmRleCA4NDZjNDIwMDFkNWIuLjJlZGY1Yjc0Y2Q0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKQEAgLTM0LDE1ICszNCw2
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCi0jaWYg
IWRlZmluZWQoTkRFQlVHKSB8fCAhTE9HX0RJU0FCTEVECi1DU3RyaW5nIEl0ZW1IYW5kbGU6OmRl
c2NyaXB0aW9uKCkgY29uc3QKLXsKLSAgICBUZXh0U3RyZWFtIHRzOwotICAgIHRzIDw8ICp0aGlz
OwotICAgIHJldHVybiB0cy5yZWxlYXNlKCkudXRmOCgpOwotfQotI2VuZGlmCi0KIHZvaWQgSXRl
bUhhbmRsZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIHN3aXRjaCAo
dHlwZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggNDliMmMx
YjI1YzgyLi40ZjBmYzFlMmZiZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5j
cHAKQEAgLTIyMCwxMiArMjIwLDEyIEBAIFNldFN0YXRlOjpTZXRTdGF0ZShjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVDaGFuZ2UsIGNvbnN0IFBhdHRlcm5ECiB7CiB9CiAK
LXZvaWQgU2V0U3RhdGU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgTmF0aXZlSW1h
Z2UqIHN0cm9rZVBhdHRlcm5JbWFnZSwgTmF0aXZlSW1hZ2UqIGZpbGxQYXR0ZXJuSW1hZ2UpCit2
b2lkIFNldFN0YXRlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE5hdGl2ZUltYWdl
KiBzdHJva2VQYXR0ZXJuSW1hZ2UsIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlKSBjb25z
dAogewogICAgIGlmIChtX3N0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UpICYmIHN0cm9rZVBhdHRlcm5JbWFn
ZSkKLSAgICAgICAgbV9zdGF0ZUNoYW5nZS5tX3N0YXRlLnN0cm9rZVBhdHRlcm4gPSBQYXR0ZXJu
OjpjcmVhdGUobWFrZVJlZigqc3Ryb2tlUGF0dGVybkltYWdlKSwgbV9zdHJva2VQYXR0ZXJuLnBh
cmFtZXRlcnMpOworICAgICAgICBjb25zdF9jYXN0PFNldFN0YXRlKj4odGhpcyktPm1fc3RhdGVD
aGFuZ2UubV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKG1ha2VSZWYoKnN0
cm9rZVBhdHRlcm5JbWFnZSksIG1fc3Ryb2tlUGF0dGVybi5wYXJhbWV0ZXJzKTsKICAgICBpZiAo
bV9zdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpGaWxsUGF0dGVybkNoYW5nZSkgJiYgZmlsbFBhdHRlcm5JbWFnZSkKLSAgICAgICAgbV9zdGF0
ZUNoYW5nZS5tX3N0YXRlLmZpbGxQYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKG1ha2VSZWYoKmZp
bGxQYXR0ZXJuSW1hZ2UpLCBtX2ZpbGxQYXR0ZXJuLnBhcmFtZXRlcnMpOworICAgICAgICBjb25z
dF9jYXN0PFNldFN0YXRlKj4odGhpcyktPm1fc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsUGF0dGVy
biA9IFBhdHRlcm46OmNyZWF0ZShtYWtlUmVmKCpmaWxsUGF0dGVybkltYWdlKSwgbV9maWxsUGF0
dGVybi5wYXJhbWV0ZXJzKTsKICAgICBtX3N0YXRlQ2hhbmdlLmFwcGx5KGNvbnRleHQpOwogfQog
CkBAIC0xMDg5LDE5NyArMTA4OSwxMiBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgSXRlbVR5cGUgdHlwZSkKICAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEl0ZW1IYW5kbGUgaXRlbSkKLXsKLSAg
ICB0cyA8PCBpdGVtLnR5cGUoKTsKLQotICAgIHN3aXRjaCAoaXRlbS50eXBlKCkpIHsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpUcmFuc2xhdGU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFRyYW5zbGF0
ZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Um90YXRlOgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxSb3RhdGU+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRl
bVR5cGU6OlNjYWxlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTY2FsZT4oKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0Q1RNOgotICAgICAgICB0cyA8PCBpdGVtLmdl
dDxTZXRDVE0+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkNvbmNhdGVu
YXRlQ1RNOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDb25jYXRlbmF0ZUNUTT4oKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbEdyYWRpZW50OgotICAg
ICAgICB0cyA8PCBpdGVtLmdldDxTZXRJbmxpbmVGaWxsR3JhZGllbnQ+KCk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxDb2xvcjoKLSAgICAgICAgdHMg
PDwgaXRlbS5nZXQ8U2V0SW5saW5lRmlsbENvbG9yPigpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VDb2xvcjoKLSAgICAgICAgdHMgPDwgaXRlbS5n
ZXQ8U2V0SW5saW5lU3Ryb2tlQ29sb3I+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRl
bVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0U3Ry
b2tlVGhpY2tuZXNzPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRT
dGF0ZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0U3RhdGU+KCk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVDYXA6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0
PFNldExpbmVDYXA+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExp
bmVEYXNoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRMaW5lRGFzaD4oKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUpvaW46Ci0gICAgICAgIHRzIDw8IGl0
ZW0uZ2V0PFNldExpbmVKb2luPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpTZXRNaXRlckxpbWl0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRNaXRlckxpbWl0Pigp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwOgotICAgICAgICB0cyA8
PCBpdGVtLmdldDxDbGlwPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpD
bGlwT3V0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGlwT3V0PigpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjoKLSAgICAgICAgdHMgPDwg
aXRlbS5nZXQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENsaXBPdXRU
b1BhdGg+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgot
ICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGlwUGF0aD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIHRzIDw8
IGl0ZW0uZ2V0PEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIHRz
IDw8IGl0ZW0uZ2V0PEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8
RHJhd0dseXBocz4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0lt
YWdlQnVmZmVyOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3SW1hZ2VCdWZmZXI+KCk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKLSAgICAg
ICAgdHMgPDwgaXRlbS5nZXQ8RHJhd05hdGl2ZUltYWdlPigpOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJh
d1BhdHRlcm4+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0
OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3UmVjdD4oKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdM
aW5lPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JU
ZXh0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3TGluZXNGb3JUZXh0PigpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgot
ICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyPigpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKLSAgICAgICAgdHMg
PDwgaXRlbS5nZXQ8RHJhd0VsbGlwc2U+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdQYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3UGF0aD4oKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6Ci0gICAg
ICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdGb2N1c1JpbmdQYXRoPigpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVjdHM6Ci0gICAgICAgIHRzIDw8IGl0
ZW0uZ2V0PERyYXdGb2N1c1JpbmdSZWN0cz4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxSZWN0PigpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcjoKLSAg
ICAgICAgdHMgPDwgaXRlbS5nZXQ8RmlsbFJlY3RXaXRoQ29sb3I+KCk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50OgotICAgICAgICB0cyA8
PCBpdGVtLmdldDxGaWxsUmVjdFdpdGhHcmFkaWVudD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdl
dDxGaWxsQ29tcG9zaXRlZFJlY3Q+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5
cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RmlsbFJvdW5kZWRS
ZWN0PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhS
b3VuZGVkSG9sZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RmlsbFJlY3RXaXRoUm91bmRlZEhv
bGU+KCk7Ci0gICAgICAgIGJyZWFrOwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAg
IGNhc2UgSXRlbVR5cGU6OkZpbGxJbmxpbmVQYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxG
aWxsSW5saW5lUGF0aD4oKTsKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1U
eXBlOjpGaWxsUGF0aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RmlsbFBhdGg+KCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxFbGxpcHNlOgotICAgICAgICB0cyA8
PCBpdGVtLmdldDxGaWxsRWxsaXBzZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6Rmx1c2hDb250ZXh0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGbHVzaENvbnRleHQ+
KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdl
RGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8TWV0YUNvbW1h
bmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPigpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI6Ci0gICAgICAgIHRzIDw8
IGl0ZW0uZ2V0PE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcj4oKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6R2V0SW1hZ2VEYXRhOgotICAgICAgICB0cyA8PCBpdGVtLmdl
dDxHZXRJbWFnZURhdGE+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlB1
dEltYWdlRGF0YToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8UHV0SW1hZ2VEYXRhPigpOwotICAg
ICAgICBicmVhazsKLSNpZiBFTkFCTEUoVklERU8pCi0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRG
cmFtZUZvck1lZGlhOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxQYWludEZyYW1lRm9yTWVkaWE+
KCk7Ci0gICAgICAgIGJyZWFrOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVj
dDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U3Ryb2tlUmVjdD4oKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlTGluZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8
U3Ryb2tlTGluZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RB
VEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDoKLSAgICAgICAgdHMgPDwg
aXRlbS5nZXQ8U3Ryb2tlSW5saW5lUGF0aD4oKTsKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTdHJv
a2VQYXRoPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VFbGxp
cHNlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTdHJva2VFbGxpcHNlPigpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclJlY3Q6Ci0gICAgICAgIHRzIDw8IGl0ZW0u
Z2V0PENsZWFyUmVjdD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVn
aW5UcmFuc3BhcmVuY3lMYXllcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8QmVnaW5UcmFuc3Bh
cmVuY3lMYXllcj4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlE
ZXZpY2VTY2FsZUZhY3RvcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8QXBwbHlEZXZpY2VTY2Fs
ZUZhY3Rvcj4oKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAvLyBJdGVtcyB3aXRoIG5vIGFkZGl0
aW9uYWwgZGF0YS4KLSAgICBjYXNlIEl0ZW1UeXBlOjpTYXZlOgotICAgIGNhc2UgSXRlbVR5cGU6
OlJlc3RvcmU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6Ci0jaWYg
VVNFKENHKQotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybjoKLSAgICBjYXNl
IEl0ZW1UeXBlOjpBcHBseUZpbGxQYXR0ZXJuOgotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6
Q2xlYXJTaGFkb3c6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KK1RleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgaXRlbSkKK3sKKyAgICBX
VEY6OnZpc2l0KFsmXShjb25zdCBhdXRvJiBkaXNwbGF5TGlzdEl0ZW0pIHsKKyAgICAgICAgdHMg
PDwgZGlzcGxheUxpc3RJdGVtLml0ZW1UeXBlOworICAgICAgICB0cyA8PCBkaXNwbGF5TGlzdEl0
ZW07CisgICAgfSwgaXRlbSk7CiAgICAgcmV0dXJuIHRzOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuaAppbmRleCA2ZGRiNTM2YmViZWUuLmZkNjEzZDEwYTk1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC0yODMsNyArMjgzLDcgQEAgcHVibGljOgogICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U2V0U3RhdGU+IGRlY29k
ZShEZWNvZGVyJik7CiAKLSAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYsIE5hdGl2ZUlt
YWdlKiBzdHJva2VQYXR0ZXJuSW1hZ2UsIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlKTsK
KyAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYsIE5hdGl2ZUltYWdlKiBzdHJva2VQYXR0
ZXJuSW1hZ2UsIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlKSBjb25zdDsKIAogcHJpdmF0
ZToKICAgICBzdHJ1Y3QgUGF0dGVybkRhdGEgewpAQCAtOTE3LDcgKzkxNyw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtID0gZmFsc2U7CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0gPSB0cnVlOwogCi0gICAgUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIGZvbnRJZGVudGlmaWVyKCkgeyByZXR1cm4gbV9mb250SWRlbnRp
ZmllcjsgfQorICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBmb250SWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1fZm9udElkZW50aWZpZXI7IH0KICAgICBjb25zdCBGbG9hdFBvaW50
JiBsb2NhbEFuY2hvcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxBbmNob3I7IH0KICAgICBGbG9h
dFBvaW50IGFuY2hvclBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbEFuY2hvcjsgfQogICAg
IGNvbnN0IFZlY3RvcjxHbHlwaEJ1ZmZlckdseXBoLCAxNj4mIGdseXBocygpIGNvbnN0IHsgcmV0
dXJuIG1fZ2x5cGhzOyB9CkBAIC0yMzY5LDEzICsyMzY5LDIwIEBAIHRlbXBsYXRlPHR5cGVuYW1l
IEl0ZW0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8SGFzSXNWYWxpZDxJdGVtPiwgYm9vbD4g
aXNWYWxpCiAgICAgcmV0dXJuIGl0ZW0uaXNWYWxpZCgpOwogfQogCi1JdGVtVHlwZSBkaXNwbGF5
TGlzdEl0ZW1UeXBlKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpOworV0VCQ09SRV9FWFBPUlQgSXRl
bVR5cGUgZGlzcGxheUxpc3RJdGVtVHlwZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsKIAogc2l6
ZV90IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyhjb25zdCBEaXNwbGF5TGlzdEl0ZW0m
KTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIHNpemVfdCBwYWRkZWRTaXplT2ZU
eXBlQW5kSXRlbUluQnl0ZXNGb3JJdGVtID0gc2l6ZW9mKHVpbnQ2NF90KSArIHJvdW5kVXBUb011
bHRpcGxlT2Y8YWxpZ25vZih1aW50NjRfdCk+KHNpemVvZihUKSk7CiAKLVRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYsIEl0ZW1IYW5kbGUpOworVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiwgY29uc3QgRGlzcGxheUxpc3RJdGVtJik7CisKK2lubGluZSBjb25zdGV4
cHIgYm9vbCBpc0RyYXdpbmdJdGVtKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgZGlzcGxheUxpc3RJ
dGVtKQoreworICAgIHJldHVybiBXVEY6OnZpc2l0KFtdKGNvbnN0IGF1dG8mIGRpc3BsYXlMaXN0
SXRlbSkgeworICAgICAgICByZXR1cm4gZGlzcGxheUxpc3RJdGVtLmlzRHJhd2luZ0l0ZW07Cisg
ICAgfSwgZGlzcGxheUxpc3RJdGVtKTsKK30KIAogfSAvLyBuYW1lc3BhY2UgRGlzcGxheUxpc3QK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJh
dG9yLmNwcAppbmRleCA2OWUwMTlhYTZmYTIuLjgyNmQzYTEwYWYzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcApAQCAtNDEsMTEgKzQxLDYgQEAgRGlzcGxheUxp
c3Q6Okl0ZXJhdG9yOjpJdGVyYXRvcihjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIElt
bWVkaWF0ZWx5TW92ZVQKICAgICAgICAgbW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZmZXIo
KTsKIH0KIAotRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjp+SXRlcmF0b3IoKQotewotICAgIGNsZWFy
Q3VycmVudEl0ZW0oKTsKLX0KLQogI2lmIEFTU0VSVF9FTkFCTEVECiBib29sIERpc3BsYXlMaXN0
OjpJdGVyYXRvcjo6YXRFbmQoKSBjb25zdAogewpAQCAtNjEsMTMgKzU2LDYgQEAgYm9vbCBEaXNw
bGF5TGlzdDo6SXRlcmF0b3I6OmF0RW5kKCkgY29uc3QKIH0KICNlbmRpZgogCi0vLyBUaGlzIGlz
IHRlbXBvcmFyeSwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBieSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNTYwLgotdm9pZCBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OmNs
ZWFyQ3VycmVudEl0ZW0oKQotewotICAgIGlmIChtX2N1cnJlbnRCdWZmZXJGb3JJdGVtICYmIG1f
Y3VycmVudEJ1ZmZlckZvckl0ZW0gIT0gbV9maXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtKQotICAg
ICAgICBmYXN0RnJlZShtX2N1cnJlbnRCdWZmZXJGb3JJdGVtKTsKLX0KLQogYXV0byBEaXNwbGF5
TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yKigpIGNvbnN0IC0+IE9wdGlvbmFsPFZhbHVlPgogewog
ICAgIEFTU0VSVCghYXRFbmQoKSk7CkBAIC04MywxNCArNzEsNyBAQCBhdXRvIERpc3BsYXlMaXN0
OjpJdGVyYXRvcjo6b3BlcmF0b3IqKCkgY29uc3QgLT4gT3B0aW9uYWw8VmFsdWU+CiAgICAgaWYg
KGN1cnJlbnRJdGVtSW5mby0+aXNEcmF3aW5nSXRlbSAmJiAhbV9kaXNwbGF5TGlzdC5tX2RyYXdp
bmdJdGVtRXh0ZW50cy5pc0VtcHR5KCkpCiAgICAgICAgIGN1cnJlbnRFeHRlbnQgPSBtX2Rpc3Bs
YXlMaXN0Lm1fZHJhd2luZ0l0ZW1FeHRlbnRzW21fZHJhd2luZ0l0ZW1JbmRleF07CiAKLSAgICAv
LyBUaGlzIGlzIHRlbXBvcmFyeSwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBieSBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNTYwLgotICAgIGNvbnN0X2Nhc3Q8SXRlcmF0
b3IqPih0aGlzKS0+Y2xlYXJDdXJyZW50SXRlbSgpOwotICAgIGF1dG8gcGFkZGVkU2l6ZU9mVHlw
ZUFuZEl0ZW0gPSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoZGlzcGxheUxpc3RJdGVt
VHlwZShjdXJyZW50SXRlbUluZm8tPmRpc3BsYXlMaXN0SXRlbSkpOwotICAgIG1fY3VycmVudEJ1
ZmZlckZvckl0ZW0gPSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbSA8PSBzaXplT2ZGaXhlZEJ1ZmZl
ckZvckN1cnJlbnRJdGVtID8gbV9maXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtIDogcmVpbnRlcnBy
ZXRfY2FzdDx1aW50OF90Kj4oZmFzdE1hbGxvYyhwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbSkpOwot
ICAgIGF1dG8gc3VjY2VzcyA9IHNhZmVDb3B5KHsgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSB9LCBj
dXJyZW50SXRlbUluZm8tPmRpc3BsYXlMaXN0SXRlbSk7Ci0gICAgQVNTRVJUX1VOVVNFRChzdWNj
ZXNzLCBzdWNjZXNzKTsKLQotICAgIHJldHVybiB7eyB7IG1fY3VycmVudEJ1ZmZlckZvckl0ZW0g
fSwgV1RGTW92ZShjdXJyZW50RXh0ZW50KSwgY3VycmVudEl0ZW1JbmZvLT5zaXplSW5CdWZmZXIg
fX07CisgICAgcmV0dXJuIHt7IGN1cnJlbnRJdGVtSW5mby0+ZGlzcGxheUxpc3RJdGVtLCBXVEZN
b3ZlKGN1cnJlbnRFeHRlbnQpLCBjdXJyZW50SXRlbUluZm8tPnNpemVJbkJ1ZmZlciB9fTsKIH0K
IAogdm9pZCBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yKysoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmgKaW5kZXggMzI3NDRhNTFhZmM3Li41ODJhMDc5M2MyNmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuaApAQCAtMzUsMTQgKzM1LDEz
IEBAIGNsYXNzIERpc3BsYXlMaXN0OjpJdGVyYXRvciB7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFz
cyBJbW1lZGlhdGVseU1vdmVUb0VuZCB7IE5vLCBZZXMgfTsKICAgICBJdGVyYXRvcihjb25zdCBE
aXNwbGF5TGlzdCYsIEltbWVkaWF0ZWx5TW92ZVRvRW5kID0gSW1tZWRpYXRlbHlNb3ZlVG9FbmQ6
Ok5vKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB+SXRlcmF0b3IoKTsKIAogICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBJdGVyYXRvciYgb3RoZXIpIHsgcmV0dXJuICZtX2Rpc3BsYXlMaXN0ID09ICZv
dGhlci5tX2Rpc3BsYXlMaXN0ICYmIG1fY3Vyc29yID09IG90aGVyLm1fY3Vyc29yOyB9CiAgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikgeyByZXR1cm4gISgqdGhpcyA9
PSBvdGhlcik7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG9wZXJhdG9yKysoKTsKIAogICAg
IHN0cnVjdCBWYWx1ZSB7Ci0gICAgICAgIEl0ZW1IYW5kbGUgaXRlbTsKKyAgICAgICAgRGlzcGxh
eUxpc3RJdGVtIGl0ZW07CiAgICAgICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZXh0ZW50OwogICAg
ICAgICBzaXplX3QgaXRlbVNpemVJbkJ1ZmZlciB7IDAgfTsKICAgICB9OwpAQCAtNTAsMTAgKzQ5
LDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFZhbHVlPiBvcGVyYXRv
ciooKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICAvLyBUaGVzZSBhcmUgdGVtcG9yYXJ5LCBhbmQg
d2lsbCBiZSByZW1vdmVkIGJ5IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjM1NjAuCi0gICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc2l6ZU9mRml4ZWRCdWZmZXJG
b3JDdXJyZW50SXRlbSA9IDI1NjsKLSAgICB2b2lkIGNsZWFyQ3VycmVudEl0ZW0oKTsKLQogICAg
IHN0cnVjdCBDdXJyZW50SXRlbVJlc3VsdCB7CiAgICAgICAgIERpc3BsYXlMaXN0SXRlbSBkaXNw
bGF5TGlzdEl0ZW07CiAgICAgICAgIHN0ZDo6c2l6ZV90IHNpemVJbkJ1ZmZlcjsKQEAgLTcwLDEw
ICs2NSw2IEBAIHByaXZhdGU6CiAKICAgICBJdGVtQnVmZmVyKiBpdGVtQnVmZmVyKCkgY29uc3Qg
eyByZXR1cm4gbV9kaXNwbGF5TGlzdC5pdGVtQnVmZmVySWZFeGlzdHMoKTsgfQogCi0gICAgLy8g
VGhlc2UgYXJlIHRlbXBvcmFyeSwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBieSBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNTYwLgotICAgIG11dGFibGUgdWludDhfdCBt
X2ZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW1bc2l6ZU9mRml4ZWRCdWZmZXJGb3JDdXJyZW50SXRl
bV0geyAwIH07Ci0gICAgbXV0YWJsZSB1aW50OF90KiBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtIHsg
bnVsbHB0ciB9OwotCiAgICAgY29uc3QgRGlzcGxheUxpc3QmIG1fZGlzcGxheUxpc3Q7CiAgICAg
c3RydWN0IEN1cnJlbnRJdGVtSW5mbyB7CiAgICAgICAgIHN0ZDo6c2l6ZV90IHNpemVJbkJ1ZmZl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCAxMDdmMjBl
YzRmMWMuLmQ0YWI1YTZlM2VjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxh
eWVyLmNwcApAQCAtNTQsOSArNTQsOCBAQCBHcmFwaGljc0NvbnRleHQmIFJlcGxheWVyOjpjb250
ZXh0KCkgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZSBzdGF0aWMgT3B0aW9u
YWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseUltYWdlQnVmZmVySXRlbShHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCYgaW1hZ2VCdWZm
ZXJzLCBJdGVtSGFuZGxlIGl0ZW0pCitpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcj4gYXBwbHlJbWFnZUJ1ZmZlckl0ZW0oR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVmZmVycywgY29uc3QgVCYg
aW1hZ2VCdWZmZXJJdGVtKQogewotICAgIGF1dG8mIGltYWdlQnVmZmVySXRlbSA9IGl0ZW0uZ2V0
PFQ+KCk7CiAgICAgYXV0byByZXNvdXJjZUlkZW50aWZpZXIgPSBpbWFnZUJ1ZmZlckl0ZW0uaW1h
Z2VCdWZmZXJJZGVudGlmaWVyKCk7CiAgICAgaWYgKGF1dG8qIGltYWdlQnVmZmVyID0gaW1hZ2VC
dWZmZXJzLmdldChyZXNvdXJjZUlkZW50aWZpZXIpKSB7CiAgICAgICAgIGltYWdlQnVmZmVySXRl
bS5hcHBseShjb250ZXh0LCAqaW1hZ2VCdWZmZXIpOwpAQCAtNjYsOSArNjUsOCBAQCBpbmxpbmUg
c3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlJbWFnZUJ1
ZmZlckl0ZW0oR3JhcGhpYwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lIHN0YXRpYyBP
cHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5TmF0aXZlSW1hZ2VJdGVt
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwJiBuYXRp
dmVJbWFnZXMsIEl0ZW1IYW5kbGUgaXRlbSkKK2lubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseU5hdGl2ZUltYWdlSXRlbShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzLCBjb25z
dCBUJiBuYXRpdmVJbWFnZUl0ZW0pCiB7Ci0gICAgYXV0byYgbmF0aXZlSW1hZ2VJdGVtID0gaXRl
bS5nZXQ8VD4oKTsKICAgICBhdXRvIHJlc291cmNlSWRlbnRpZmllciA9IG5hdGl2ZUltYWdlSXRl
bS5pbWFnZUlkZW50aWZpZXIoKTsKICAgICBpZiAoYXV0byogaW1hZ2UgPSBuYXRpdmVJbWFnZXMu
Z2V0KHJlc291cmNlSWRlbnRpZmllcikpIHsKICAgICAgICAgbmF0aXZlSW1hZ2VJdGVtLmFwcGx5
KGNvbnRleHQsICppbWFnZSk7CkBAIC03NywxMCArNzUsOCBAQCBpbmxpbmUgc3RhdGljIE9wdGlv
bmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlOYXRpdmVJbWFnZUl0ZW0oR3Jh
cGhpYwogICAgIHJldHVybiByZXNvdXJjZUlkZW50aWZpZXI7CiB9CiAKLWlubGluZSBzdGF0aWMg
T3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseVNldFN0YXRlSXRlbShH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZl
SW1hZ2VzLCBJdGVtSGFuZGxlIGl0ZW0pCitpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdlcywgY29uc3QgU2V0
U3RhdGUmIHNldFN0YXRlSXRlbSkKIHsKLSAgICBhdXRvJiBzZXRTdGF0ZUl0ZW0gPSBpdGVtLmdl
dDxTZXRTdGF0ZT4oKTsKLQogICAgIE5hdGl2ZUltYWdlKiBzdHJva2VQYXR0ZXJuSW1hZ2UgPSBu
dWxscHRyOwogICAgIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlID0gbnVsbHB0cjsKIApA
QCAtMTAxLDkgKzk3LDggQEAgaW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXI+IGFwcGx5U2V0U3RhdGVJdGVtKEdyYXBoaWNzQ28KIH0KIAogdGVtcGxhdGU8
Y2xhc3MgVD4KLWlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyPiBhcHBseUZvbnRJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udFJl
bmRlcmluZ1Jlc291cmNlTWFwJiBmb250cywgSXRlbUhhbmRsZSBpdGVtKQoraW5saW5lIHN0YXRp
YyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5Rm9udEl0ZW0oR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250UmVuZGVyaW5nUmVzb3VyY2VNYXAmIGZv
bnRzLCBjb25zdCBUJiBmb250SXRlbSkKIHsKLSAgICBhdXRvJiBmb250SXRlbSA9IGl0ZW0uZ2V0
PFQ+KCk7CiAgICAgYXV0byByZXNvdXJjZUlkZW50aWZpZXIgPSBmb250SXRlbS5mb250SWRlbnRp
ZmllcigpOwogICAgIGlmIChhdXRvKiBmb250ID0gZm9udHMuZ2V0KHJlc291cmNlSWRlbnRpZmll
cikpIHsKICAgICAgICAgZm9udEl0ZW0uYXBwbHkoY29udGV4dCwgKmZvbnQpOwpAQCAtMTEyLDY4
ICsxMDcsNjggQEAgaW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXI+IGFwcGx5Rm9udEl0ZW0oR3JhcGhpY3NDb250ZXgKICAgICByZXR1cm4gcmVzb3VyY2VJ
ZGVudGlmaWVyOwogfQogCi1zdGQ6OnBhaXI8T3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4sIE9w
dGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4+IFJlcGxheWVyOjphcHBseUl0ZW0o
SXRlbUhhbmRsZSBpdGVtKQorZXh0ZXJuIEdyYXBoaWNzQ29udGV4dCYgc3ludGhlc2l6ZUxWYWx1
ZUdyYXBoaWNzQ29udGV4dDsKK3RlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZSA9IHZvaWQ+IHN0
YXRpYyBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFzQXBwbHkgPSBmYWxzZTsKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0YXRpYyBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFzQXBwbHk8VCwgc3RkOjp2
b2lkX3Q8ZGVjbHR5cGUoc3RkOjpkZWNsdmFsPFQ+KCkuYXBwbHkoc3ludGhlc2l6ZUxWYWx1ZUdy
YXBoaWNzQ29udGV4dCkpPj4gPSB0cnVlOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgorc3Rh
dGljIGlubGluZSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PCFIYXNBcHBseTxJdGVtPiwgdm9p
ZD4gYXBwbHkoY29uc3QgSXRlbSYsIEdyYXBoaWNzQ29udGV4dCYpCit7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIEl0ZW0+CitzdGF0aWMgaW5saW5lIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8
SGFzQXBwbHk8SXRlbT4sIHZvaWQ+IGFwcGx5KGNvbnN0IEl0ZW0mIGl0ZW0sIEdyYXBoaWNzQ29u
dGV4dCYgZ3JhcGhpY3NDb250ZXh0KQoreworICAgIHJldHVybiBpdGVtLmFwcGx5KGdyYXBoaWNz
Q29udGV4dCk7Cit9CisKK2F1dG8gUmVwbGF5ZXI6OmFwcGx5SXRlbShjb25zdCBEaXNwbGF5TGlz
dEl0ZW0mIGl0ZW0pIC0+IEFwcGx5SXRlbVJlc3VsdAogewogICAgIGlmIChtX2RlbGVnYXRlICYm
IG1fZGVsZWdhdGUtPmFwcGx5KGl0ZW0sIGNvbnRleHQoKSkpCiAgICAgICAgIHJldHVybiB7IFdU
Rjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07CiAKLSAgICBpZiAoaXRlbS5pczxEcmF3SW1hZ2VC
dWZmZXI+KCkpIHsKKyAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKFsmXShjb25z
dCBEcmF3SW1hZ2VCdWZmZXImIGl0ZW0pIC0+IEFwcGx5SXRlbVJlc3VsdCB7CiAgICAgICAgIGlm
IChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUltYWdlQnVmZmVy
SXRlbTxEcmF3SW1hZ2VCdWZmZXI+KGNvbnRleHQoKSwgbV9pbWFnZUJ1ZmZlcnMsIGl0ZW0pKQog
ICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291
cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAg
IHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAgaWYg
KGl0ZW0uaXM8Q2xpcFRvSW1hZ2VCdWZmZXI+KCkpIHsKKyAgICB9LCBbJl0oY29uc3QgQ2xpcFRv
SW1hZ2VCdWZmZXImIGl0ZW0pIC0+IHN0ZDo6cGFpcjxPcHRpb25hbDxTdG9wUmVwbGF5UmVhc29u
PiwgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPj4gewogICAgICAgICBpZiAo
YXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlJbWFnZUJ1ZmZlckl0
ZW08Q2xpcFRvSW1hZ2VCdWZmZXI+KGNvbnRleHQoKSwgbV9pbWFnZUJ1ZmZlcnMsIGl0ZW0pKQog
ICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291
cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAg
IHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAgaWYg
KGl0ZW0uaXM8RHJhd05hdGl2ZUltYWdlPigpKSB7CisgICAgfSwgWyZdKGNvbnN0IERyYXdOYXRp
dmVJbWFnZSYgaXRlbSkgLT4gQXBwbHlJdGVtUmVzdWx0IHsKICAgICAgICAgaWYgKGF1dG8gbWlz
c2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdO
YXRpdmVJbWFnZT4oY29udGV4dCgpLCBtX25hdGl2ZUltYWdlcywgaXRlbSkpCiAgICAgICAgICAg
ICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1v
dmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKICAgICAgICAgcmV0dXJuIHsg
V1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKLSAgICB9Ci0KLSAgICBpZiAoaXRlbS5pczxE
cmF3R2x5cGhzPigpKSB7Ci0gICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlk
ZW50aWZpZXIgPSBhcHBseUZvbnRJdGVtPERyYXdHbHlwaHM+KGNvbnRleHQoKSwgbV9mb250cywg
aXRlbSkpCisgICAgfSwgWyZdKGNvbnN0IERyYXdQYXR0ZXJuJiBpdGVtKSAtPiBBcHBseUl0ZW1S
ZXN1bHQgeworICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVy
ID0gYXBwbHlOYXRpdmVJbWFnZUl0ZW08RHJhd1BhdHRlcm4+KGNvbnRleHQoKSwgbV9uYXRpdmVJ
bWFnZXMsIGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlz
c2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZp
ZXIpIH07CiAgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07Ci0g
ICAgfQotCi0gICAgaWYgKGl0ZW0uaXM8RHJhd1BhdHRlcm4+KCkpIHsKLSAgICAgICAgaWYgKGF1
dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVt
PERyYXdQYXR0ZXJuPihjb250ZXh0KCksIG1fbmF0aXZlSW1hZ2VzLCBpdGVtKSkKKyAgICB9LCBb
Jl0oY29uc3QgRHJhd0dseXBocyYgaXRlbSkgLT4gQXBwbHlJdGVtUmVzdWx0IHsKKyAgICAgICAg
aWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5Rm9udEl0ZW08
RHJhd0dseXBocz4oY29udGV4dCgpLCBtX2ZvbnRzLCBpdGVtKSkKICAgICAgICAgICAgIHJldHVy
biB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNz
aW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICByZXR1cm4geyBXVEY6Om51
bGxvcHQsIFdURjo6bnVsbG9wdCB9OwotICAgIH0KLQotICAgIGlmIChpdGVtLmlzPFNldFN0YXRl
PigpKSB7CisgICAgfSwgWyZdKGNvbnN0IFNldFN0YXRlJiBpdGVtKSAtPiBBcHBseUl0ZW1SZXN1
bHQgewogICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0g
YXBwbHlTZXRTdGF0ZUl0ZW0oY29udGV4dCgpLCBtX25hdGl2ZUltYWdlcywgaXRlbSkpCiAgICAg
ICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2Us
IFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKICAgICAgICAgcmV0
dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKLSAgICB9Ci0KLSAgICBpZiAoaXRl
bS5pczxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oKSkgeworICAgIH0sIFsmXShjb25zdCBC
ZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyYgY2xpcEl0ZW0pIC0+IEFwcGx5SXRlbVJlc3VsdCB7
CiAgICAgICAgIGlmIChtX21hc2tJbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiB7IFN0
b3BSZXBsYXlSZWFzb246OkludmFsaWRJdGVtT3JFeHRlbnQsIFdURjo6bnVsbG9wdCB9OwotICAg
ICAgICBhdXRvJiBjbGlwSXRlbSA9IGl0ZW0uZ2V0PEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRz
PigpOwogICAgICAgICBtX21hc2tJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKGNsaXBJdGVtLmRlc3RpbmF0aW9uKCkuc2l6ZSgpLCBjbGlwSXRlbS5jb2xv
clNwYWNlKCksIG1fY29udGV4dCk7CiAgICAgICAgIGlmICghbV9tYXNrSW1hZ2VCdWZmZXIpCiAg
ICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpPdXRPZk1lbW9yeSwgV1RGOjpu
dWxsb3B0IH07CiAgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07
Ci0gICAgfQotCi0gICAgaWYgKGl0ZW0uaXM8RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpKSB7
CisgICAgfSwgWyZdKGNvbnN0IEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyYgY2xpcEl0ZW0pIC0+
IEFwcGx5SXRlbVJlc3VsdCB7CiAgICAgICAgIGlmICghbV9tYXNrSW1hZ2VCdWZmZXIpCiAgICAg
ICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpJbnZhbGlkSXRlbU9yRXh0ZW50LCBX
VEY6Om51bGxvcHQgfTsKLSAgICAgICAgYXV0byYgY2xpcEl0ZW0gPSBpdGVtLmdldDxFbmRDbGlw
VG9EcmF3aW5nQ29tbWFuZHM+KCk7CiAgICAgICAgIG1fY29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZl
cigqbV9tYXNrSW1hZ2VCdWZmZXIsIGNsaXBJdGVtLmRlc3RpbmF0aW9uKCkpOwogICAgICAgICBt
X21hc2tJbWFnZUJ1ZmZlciA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9w
dCwgV1RGOjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAgaXRlbS5hcHBseShjb250ZXh0KCkpOwot
ICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07CisgICAgfSwgWyZdKGNv
bnN0IGF1dG8mIGl0ZW0pIC0+IEFwcGx5SXRlbVJlc3VsdCB7CisgICAgICAgIGFwcGx5KGl0ZW0s
IGNvbnRleHQoKSk7CisgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0
IH07CisgICAgfSk7CisgICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgaXRlbSk7CiB9CiAK
IFJlcGxheVJlc3VsdCBSZXBsYXllcjo6cmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENs
aXAsIGJvb2wgdHJhY2tSZXBsYXlMaXN0KQpAQCAtMTk1LDcgKzE5MCw3IEBAIFJlcGxheVJlc3Vs
dCBSZXBsYXllcjo6cmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGJvb2wgdHJh
Y2tSZXBsYXlMaXN0CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGF1
dG8gW2l0ZW0sIGV4dGVudCwgaXRlbVNpemVJbkJ1ZmZlcl0gPSBkaXNwbGF5TGlzdEl0ZW0udmFs
dWUoKTsKKyAgICAgICAgY29uc3QgYXV0byYgW2l0ZW0sIGV4dGVudCwgaXRlbVNpemVJbkJ1ZmZl
cl0gPSBkaXNwbGF5TGlzdEl0ZW0udmFsdWUoKTsKIAogICAgICAgICBpZiAoIWluaXRpYWxDbGlw
LmlzWmVybygpICYmIGV4dGVudCAmJiAhZXh0ZW50LT5pbnRlcnNlY3RzKGluaXRpYWxDbGlwKSkg
ewogICAgICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8ICJz
a2lwcGluZyAiIDw8IGkrKyA8PCAiICIgPDwgaXRlbSk7CkBAIC0yMDUsMTAgKzIwMCwxMCBAQCBS
ZXBsYXlSZXN1bHQgUmVwbGF5ZXI6OnJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlw
LCBib29sIHRyYWNrUmVwbGF5TGlzdAogCiAgICAgICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5
TGlzdHMsIHN0cmVhbSA8PCAiYXBwbHlpbmcgIiA8PCBpKysgPDwgIiAiIDw8IGl0ZW0pOwogCi0g
ICAgICAgIGlmIChpdGVtLmlzPE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZl
cj4oKSkgeworICAgICAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxNZXRhQ29tbWFuZENo
YW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI+KGl0ZW0pKSB7CiAgICAgICAgICAgICByZXN1bHQu
bnVtYmVyT2ZCeXRlc1JlYWQgKz0gaXRlbVNpemVJbkJ1ZmZlcjsKICAgICAgICAgICAgIHJlc3Vs
dC5yZWFzb25Gb3JTdG9wcGluZyA9IFN0b3BSZXBsYXlSZWFzb246OkNoYW5nZURlc3RpbmF0aW9u
SW1hZ2VCdWZmZXI7Ci0gICAgICAgICAgICByZXN1bHQubmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZm
ZXIgPSBpdGVtLmdldDxNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI+KCku
aWRlbnRpZmllcigpOworICAgICAgICAgICAgcmVzdWx0Lm5leHREZXN0aW5hdGlvbkltYWdlQnVm
ZmVyID0gV1RGOjpnZXQ8TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPihp
dGVtKS5pZGVudGlmaWVyKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0y
MjIsOCArMjE3LDggQEAgUmVwbGF5UmVzdWx0IFJlcGxheWVyOjpyZXBsYXkoY29uc3QgRmxvYXRS
ZWN0JiBpbml0aWFsQ2xpcCwgYm9vbCB0cmFja1JlcGxheUxpc3QKIAogICAgICAgICBpZiAoVU5M
SUtFTFkodHJhY2tSZXBsYXlMaXN0KSkgewogICAgICAgICAgICAgcmVwbGF5TGlzdC0+YXBwZW5k
KGl0ZW0pOwotICAgICAgICAgICAgaWYgKGl0ZW0uaXNEcmF3aW5nSXRlbSgpKQotICAgICAgICAg
ICAgICAgIHJlcGxheUxpc3QtPmFkZERyYXdpbmdJdGVtRXh0ZW50KFdURk1vdmUoZXh0ZW50KSk7
CisgICAgICAgICAgICBpZiAoaXNEcmF3aW5nSXRlbShpdGVtKSkKKyAgICAgICAgICAgICAgICBy
ZXBsYXlMaXN0LT5hZGREcmF3aW5nSXRlbUV4dGVudChPcHRpb25hbDxGbG9hdFJlY3Q+KGV4dGVu
dCkpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5
ZXIuaAppbmRleCBhYzBkZjYwNjM5MjMuLjEwZGY0YWViMGJmOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZXBsYXllci5oCkBAIC02NiwxMiArNjYsMTMgQEAgcHVibGljOgogICAgIGNs
YXNzIERlbGVnYXRlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkRlbGVnYXRlKCkg
eyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBhcHBseShJdGVtSGFuZGxlLCBHcmFwaGljc0NvbnRl
eHQmKSB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoY29uc3Qg
RGlzcGxheUxpc3RJdGVtJiwgR3JhcGhpY3NDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB9OwogICAgIAogcHJpdmF0ZToKICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25z
dDsKLSAgICBzdGQ6OnBhaXI8T3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4sIE9wdGlvbmFsPFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4+IGFwcGx5SXRlbShJdGVtSGFuZGxlKTsKKyAgICB1
c2luZyBBcHBseUl0ZW1SZXN1bHQgPSBzdGQ6OnBhaXI8T3B0aW9uYWw8U3RvcFJlcGxheVJlYXNv
bj4sIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4+OworICAgIEFwcGx5SXRl
bVJlc3VsdCBhcHBseUl0ZW0oY29uc3QgRGlzcGxheUxpc3RJdGVtJik7CiAKICAgICBHcmFwaGlj
c0NvbnRleHQmIG1fY29udGV4dDsKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IG1f
bWFza0ltYWdlQnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuY3Bw
CmluZGV4IDM0MmIxN2JlNzExMi4uNGI0NjZlMzc3NGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0lu
TWVtb3J5RGlzcGxheUxpc3QuY3BwCkBAIC02MCwxMSArNjAsMTAgQEAgSW5NZW1vcnlEaXNwbGF5
TGlzdDo6SW5NZW1vcnlEaXNwbGF5TGlzdCgpCiBJbk1lbW9yeURpc3BsYXlMaXN0Ojp+SW5NZW1v
cnlEaXNwbGF5TGlzdCgpCiB7CiAgICAgZm9yIChhdXRvIGRpc3BsYXlMaXN0SXRlbSA6ICp0aGlz
KSB7Ci0gICAgICAgIGF1dG8gaXRlbSA9IGRpc3BsYXlMaXN0SXRlbS0+aXRlbTsKLSAgICAgICAg
QVNTRVJUKGl0ZW0pOwotICAgICAgICBpZiAoIWl0ZW0pCi0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgaXRlbS5kZXN0cm95KCk7CisgICAgICAgIFdURjo6dmlzaXQoWyZdKGNvbnN0IGF1dG8m
IGl0ZW0pIHsKKyAgICAgICAgICAgIHVzaW5nIERpc3BsYXlMaXN0SXRlbVR5cGUgPSB0eXBlbmFt
ZSBXVEY6OlJlbW92ZUNWQW5kUmVmZXJlbmNlPGRlY2x0eXBlKGl0ZW0pPjo6dHlwZTsKKyAgICAg
ICAgICAgIGl0ZW0ufkRpc3BsYXlMaXN0SXRlbVR5cGUoKTsKKyAgICAgICAgfSwgZGlzcGxheUxp
c3RJdGVtLT5pdGVtKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMTJlZmEzZjFiMDc0Li44ZTg4
ODE4MDA4Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDUtMDkgIE15bGVzIEMu
IE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IFNpbXBsaWZ5IERpc3BsYXlMaXN0OjpJdGVyYXRvciBwYXJ0IDk6IE1pZ3JhdGUgRGlzcGxheUxp
c3Q6Okl0ZXJhdG9yJ3MgQVBJIHRvIHVzZSBEaXNwbGF5TGlzdEl0ZW0gcmF0aGVyIHRoYW4gSXRl
bUhhbmRsZSwgYW5kIHVwZGF0ZSBjYWxsZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU1ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXIuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseU1l
ZGlhSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnN1Ym1p
dCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
Lmg6CisKIDIwMjEtMDUtMDkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNv
bT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIFNpbXBsaWZ5IERpc3BsYXlMaXN0OjpJdGVyYXRv
ciBwYXJ0IDY6IE1pZ3JhdGUgSXRlbUJ1ZmZlcldyaXRpbmdDbGllbnQgZnJvbSBJdGVtSGFuZGxl
IHRvIGEgY29uc3QgVmFyaWFudCYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKaW5kZXggNGEwMWVlNjc2OWE2Li42NWUwZWUx
MmE2N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlci5oCkBAIC03NCwzNSArNzQsMjYgQEAgcHVibGljOgogI2VuZGlmCiAK
IHByaXZhdGU6Ci0gICAgYm9vbCBhcHBseShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRs
ZSBpdGVtLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIG92ZXJyaWRlCisgICAg
Ym9vbCBhcHBseShjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtJiBp
dGVtLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIG92ZXJyaWRlCiAgICAgewot
ICAgICAgICBpZiAoaXRlbS5pczxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6R2V0SW1hZ2VEYXRhPigp
KSB7Ci0gICAgICAgICAgICBhdXRvJiBnZXRJbWFnZURhdGFJdGVtID0gaXRlbS5nZXQ8V2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkdldEltYWdlRGF0YT4oKTsKLSAgICAgICAgICAgIGF1dG8gaW1hZ2VE
YXRhID0gQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmdldEltYWdlRGF0YShnZXRJbWFnZURhdGFJ
dGVtLm91dHB1dEZvcm1hdCgpLCBnZXRJbWFnZURhdGFJdGVtLnNyY1JlY3QoKSk7Ci0gICAgICAg
ICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQucG9wdWxhdGVHZXRJbWFnZURhdGFTaGFyZWRN
ZW1vcnkoaW1hZ2VEYXRhLmdldCgpKTsKKyAgICAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtl
VmlzaXRvcihbJl0oY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkdldEltYWdlRGF0YSYpIHsK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGl0ZW0u
aXM8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlB1dEltYWdlRGF0YT4oKSkgewotICAgICAgICAgICAg
YXV0byYgcHV0SW1hZ2VEYXRhSXRlbSA9IGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQ
dXRJbWFnZURhdGE+KCk7CisgICAgICAgIH0sIFsmXShjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UHV0SW1hZ2VEYXRhJiBwdXRJbWFnZURhdGFJdGVtKSB7CiAgICAgICAgICAgICBwdXRJbWFn
ZURhdGEocHV0SW1hZ2VEYXRhSXRlbS5pbnB1dEZvcm1hdCgpLCBwdXRJbWFnZURhdGFJdGVtLmlt
YWdlRGF0YSgpLCBwdXRJbWFnZURhdGFJdGVtLnNyY1JlY3QoKSwgcHV0SW1hZ2VEYXRhSXRlbS5k
ZXN0UG9pbnQoKSwgcHV0SW1hZ2VEYXRhSXRlbS5kZXN0Rm9ybWF0KCkpOwogICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaXRlbS5pczxXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6Rmx1c2hDb250ZXh0PigpKSB7CisgICAgICAgIH0sIFsmXShjb25zdCBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hDb250ZXh0JiBmbHVzaENvbnRleHQpIHsKICAgICAgICAg
ICAgIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpmbHVzaENvbnRleHQoKTsKLSAgICAgICAgICAg
IGF1dG8gaWRlbnRpZmllciA9IGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaENv
bnRleHQ+KCkuaWRlbnRpZmllcigpOworICAgICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gZmx1
c2hDb250ZXh0LmlkZW50aWZpZXIoKTsKICAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5kaWRGbHVzaChpZGVudGlmaWVyLCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChpdGVt
LmlzPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI+KCkp
IHsKLSAgICAgICAgICAgIGF1dG8gbmV4dEJ1ZmZlcklkZW50aWZpZXIgPSBpdGVtLmdldDxXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyPigpLmlkZW50aWZp
ZXIoKTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpNZXRhQ29t
bWFuZENoYW5nZUl0ZW1CdWZmZXImIG1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcikgeworICAg
ICAgICAgICAgYXV0byBuZXh0QnVmZmVySWRlbnRpZmllciA9IG1ldGFDb21tYW5kQ2hhbmdlSXRl
bUJ1ZmZlci5pZGVudGlmaWVyKCk7CiAgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuc2V0TmV4dEl0ZW1CdWZmZXJUb1JlYWQobmV4dEJ1ZmZlcklkZW50aWZpZXIsIG1fcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICB9Ci0KLSAgICAgICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5hcHBseU1lZGlh
SXRlbShpdGVtLCBjb250ZXh0KTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsK
KyAgICAgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuYXBwbHlNZWRpYUl0
ZW0oaXRlbSwgY29udGV4dCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm4gV1RGOjp2aXNp
dCh2aXNpdG9yLCBpdGVtKTsKICAgICB9CiAKICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggOTNl
MWVhNTExOTJhLi44ZTAwNDVlMzg3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTEx
NywyMCArMTE3LDE4IEBAIHVpbnQ2NF90IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1lc3NhZ2VT
ZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKICAgICByZXR1cm4gbV9yZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllci50b1VJbnQ2NCgpOwogfQogCi1ib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OmFwcGx5TWVkaWFJdGVtKERpc3BsYXlMaXN0OjpJdGVtSGFuZGxlIGl0ZW0sIEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkKK2Jvb2wgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlNZWRpYUl0
ZW0oY29uc3QgRGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0SXRlbSYgaXRlbSwgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAg
aWYgKCFpdGVtLmlzPERpc3BsYXlMaXN0OjpQYWludEZyYW1lRm9yTWVkaWE+KCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8mIG1lZGlhSXRlbSA9IGl0ZW0uZ2V0PERpc3BsYXlM
aXN0OjpQYWludEZyYW1lRm9yTWVkaWE+KCk7Ci0gICAgYXV0byBwbGF5ZXIgPSBtX2dwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MtPnJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCkubWVkaWFQ
bGF5ZXIobWVkaWFJdGVtLmlkZW50aWZpZXIoKSk7Ci0gICAgaWYgKCFwbGF5ZXIpCisgICAgYXV0
byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgRGlzcGxheUxpc3Q6OlBhaW50
RnJhbWVGb3JNZWRpYSYgbWVkaWFJdGVtKSB7CisgICAgICAgIGlmIChhdXRvIHBsYXllciA9IG1f
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+cmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHko
KS5tZWRpYVBsYXllcihtZWRpYUl0ZW0uaWRlbnRpZmllcigpKSkKKyAgICAgICAgICAgIGNvbnRl
eHQucGFpbnRGcmFtZUZvck1lZGlhKCpwbGF5ZXIsIG1lZGlhSXRlbS5kZXN0aW5hdGlvbigpKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBjb250ZXh0LnBhaW50RnJhbWVGb3JNZWRpYSgq
cGxheWVyLCBtZWRpYUl0ZW0uZGVzdGluYXRpb24oKSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAg
fSwgW10oY29uc3QgYXV0byYgaXRlbSkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSk7
CisgICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRvciwgaXRlbSk7CiB9CiAKIHZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6ZGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSBoYW5kbGUsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpCkBAIC0xODYsNyArMTg0LDcgQEAgRGlzcGxheUxpc3Q6OlJl
cGxheVJlc3VsdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzdWJtaXQoY29uc3QgRGlzcGxheUxp
c3Q6OkRpc3AKICAgICBlbHNlCiAgICAgICAgIHJlcGxheWVyRGVsZWdhdGUgPSBzdGF0aWNfY2Fz
dDxVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXIqPigmZGVzdGluYXRpb24pOwogCi0gICAg
cmV0dXJuIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllciB7CisgICAgcmV0dXJuIERpc3Bs
YXlMaXN0OjpSZXBsYXllciB7CiAgICAgICAgIGRlc3RpbmF0aW9uLmNvbnRleHQoKSwKICAgICAg
ICAgZGlzcGxheUxpc3QsCiAgICAgICAgICZyZW1vdGVSZXNvdXJjZUNhY2hlKCkuaW1hZ2VCdWZm
ZXJzKCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCAzNjA2NGYxZWQxNTkuLmQ1NWQ5ZWIwZTAy
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICBS
ZW1vdGVSZXNvdXJjZUNhY2hlJiByZW1vdGVSZXNvdXJjZUNhY2hlKCkgeyByZXR1cm4gbV9yZW1v
dGVSZXNvdXJjZUNhY2hlOyB9CiAKICAgICAvLyBSZW5kZXJpbmcgb3BlcmF0aW9ucy4KLSAgICBi
b29sIGFwcGx5TWVkaWFJdGVtKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlLCBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQmKTsKKyAgICBib29sIGFwcGx5TWVkaWFJdGVtKGNvbnN0IFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdEl0ZW0mLCBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQmKTsKIAogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHNlbnQuCiAgICAgdm9pZCBkaWRDcmVh
dGVJbWFnZUJ1ZmZlckJhY2tlbmQoSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLCBXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGY3ZjFiNDNkN2EyNC4uYjc0NTIwNTMwOGJkIDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMjEtMDUtMDkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNv
bT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIFNpbXBsaWZ5IERpc3BsYXlMaXN0OjpJdGVyYXRv
ciBwYXJ0IDk6IE1pZ3JhdGUgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yJ3MgQVBJIHRvIHVzZSBEaXNw
bGF5TGlzdEl0ZW0gcmF0aGVyIHRoYW4gSXRlbUhhbmRsZSwgYW5kIHVwZGF0ZSBjYWxsZXJzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU1ODIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcDoKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIxLTA1LTA5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhm
aWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBTaW1wbGlmeSBEaXNwbGF5
TGlzdDo6SXRlcmF0b3IgcGFydCA2OiBNaWdyYXRlIEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50IGZy
b20gSXRlbUhhbmRsZSB0byBhIGNvbnN0IFZhcmlhbnQmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKaW5kZXggNWNiZmQy
ZDQ0NGIzLi5jZmEwMzM4ZjFmN2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKQEAgLTgwLDU3ICs4MCwzNSBAQCBU
RVNUKERpc3BsYXlMaXN0VGVzdHMsIEFwcGVuZEl0ZW1zKQogICAgIEVYUEVDVF9GQUxTRShsaXN0
LmlzRW1wdHkoKSk7CiAKICAgICBib29sIG9ic2VydmVkVW5leHBlY3RlZEl0ZW0gPSBmYWxzZTsK
LSAgICBmb3IgKGF1dG8gZGlzcGxheUxpc3RJdGVtIDogbGlzdCkgewotICAgICAgICBhdXRvIGhh
bmRsZSA9IGRpc3BsYXlMaXN0SXRlbS0+aXRlbTsKLSAgICAgICAgc3dpdGNoIChoYW5kbGUudHlw
ZSgpKSB7Ci0gICAgICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczogewotICAg
ICAgICAgICAgRVhQRUNUX0ZBTFNFKGhhbmRsZS5pc0RyYXdpbmdJdGVtKCkpOwotICAgICAgICAg
ICAgRVhQRUNUX1RSVUUoaGFuZGxlLmlzPFNldFN0cm9rZVRoaWNrbmVzcz4oKSk7Ci0gICAgICAg
ICAgICBhdXRvJiBpdGVtID0gaGFuZGxlLmdldDxTZXRTdHJva2VUaGlja25lc3M+KCk7CisgICAg
Zm9yIChjb25zdCBhdXRvJiBkaXNwbGF5TGlzdEl0ZW0gOiBsaXN0KSB7CisgICAgICAgIGNvbnN0
IGF1dG8mIFtpdGVtLCBleHRlbnQsIHNpemVdID0gZGlzcGxheUxpc3RJdGVtLnZhbHVlKCk7CisK
KyAgICAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgU2V0U3Ry
b2tlVGhpY2tuZXNzJiBpdGVtKSB7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoaXRlbS5pc0Ry
YXdpbmdJdGVtKTsKICAgICAgICAgICAgIEVYUEVDVF9FUShpdGVtLnRoaWNrbmVzcygpLCAxLjUp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJdGVtVHlwZTo6
RmlsbFBhdGg6IHsKLSAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS5pc0RyYXdpbmdJdGVt
KCkpOwotICAgICAgICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLmlzPEZpbGxQYXRoPigpKTsKLSAg
ICAgICAgICAgIGF1dG8mIGl0ZW0gPSBoYW5kbGUuZ2V0PEZpbGxQYXRoPigpOworICAgICAgICB9
LCBbJl0oY29uc3QgRmlsbFBhdGgmIGl0ZW0pIHsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGl0
ZW0uaXNEcmF3aW5nSXRlbSk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoaXRlbS5wYXRoKCkucGxh
dGZvcm1QYXRoKCksIHBhdGgucGxhdGZvcm1QYXRoKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQ6IHsK
LSAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS5pc0RyYXdpbmdJdGVtKCkpOwotICAgICAg
ICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLmlzPEZpbGxSZWN0V2l0aEdyYWRpZW50PigpKTsKLSAg
ICAgICAgICAgIGF1dG8mIGl0ZW0gPSBoYW5kbGUuZ2V0PEZpbGxSZWN0V2l0aEdyYWRpZW50Pigp
OworICAgICAgICB9LCBbJl0oY29uc3QgRmlsbFJlY3RXaXRoR3JhZGllbnQmIGl0ZW0pIHsKKyAg
ICAgICAgICAgIEVYUEVDVF9UUlVFKGl0ZW0uaXNEcmF3aW5nSXRlbSk7CiAgICAgICAgICAgICBF
WFBFQ1RfRVEoaXRlbS5yZWN0KCksIEZsb2F0UmVjdCgxLiwgMS4sIDEwLiwgMTAuKSk7CiAgICAg
ICAgICAgICBFWFBFQ1RfRVEoJml0ZW0uZ3JhZGllbnQoKSwgZ3JhZGllbnQucHRyKCkpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5s
aW5lRmlsbENvbG9yOiB7Ci0gICAgICAgICAgICBFWFBFQ1RfRkFMU0UoaGFuZGxlLmlzRHJhd2lu
Z0l0ZW0oKSk7Ci0gICAgICAgICAgICBFWFBFQ1RfVFJVRShoYW5kbGUuaXM8U2V0SW5saW5lRmls
bENvbG9yPigpKTsKLSAgICAgICAgICAgIGF1dG8mIGl0ZW0gPSBoYW5kbGUuZ2V0PFNldElubGlu
ZUZpbGxDb2xvcj4oKTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IFNldElubGluZUZpbGxDb2xvciYg
aXRlbSkgeworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGl0ZW0uaXNEcmF3aW5nSXRlbSk7CiAg
ICAgICAgICAgICBFWFBFQ1RfRVEoaXRlbS5jb2xvcigpLCBDb2xvcjo6cmVkKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9CiAjaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAg
ICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUlubGluZVBhdGg6IHsKLSAgICAgICAgICAgIEVYUEVD
VF9UUlVFKGhhbmRsZS5pc0RyYXdpbmdJdGVtKCkpOwotICAgICAgICAgICAgRVhQRUNUX1RSVUUo
aGFuZGxlLmlzPFN0cm9rZUlubGluZVBhdGg+KCkpOwotICAgICAgICAgICAgYXV0byYgaXRlbSA9
IGhhbmRsZS5nZXQ8U3Ryb2tlSW5saW5lUGF0aD4oKTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IFN0
cm9rZUlubGluZVBhdGgmIGl0ZW0pIHsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGl0ZW0uaXNE
cmF3aW5nSXRlbSk7CiAgICAgICAgICAgICBjb25zdCBhdXRvIHBhdGggPSBpdGVtLnBhdGgoKTsK
ICAgICAgICAgICAgIGF1dG8mIGxpbmUgPSBwYXRoLmlubGluZURhdGE8TGluZURhdGE+KCk7CiAg
ICAgICAgICAgICBFWFBFQ1RfRVEobGluZS5zdGFydCwgRmxvYXRQb2ludCgwLCAwKSk7CiAgICAg
ICAgICAgICBFWFBFQ1RfRVEobGluZS5lbmQsIEZsb2F0UG9pbnQoMTAuLCAxNS4pKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgY2FzZSBJdGVtVHlwZTo6
TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGRlZmF1bHQ6IHsKKyAgICAgICAgfSwgWyZdKGNvbnN0IE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1
ZmZlciYpIHsKKyAgICAgICAgfSwgWyZdKGNvbnN0IGF1dG8mKSB7CiAgICAgICAgICAgICBvYnNl
cnZlZFVuZXhwZWN0ZWRJdGVtID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIFdURjo6dmlzaXQodmlzaXRvciwgaXRl
bSk7CiAgICAgfQogCiAgICAgRVhQRUNUX0ZBTFNFKG9ic2VydmVkVW5leHBlY3RlZEl0ZW0pOwpA
QCAtMTUwLDEyICsxMjgsMTEgQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBBcHBlbmRJdGVtcykK
IAogICAgIGxpc3QuYXBwZW5kPEZpbGxSZWN0V2l0aENvbG9yPihGbG9hdFJlY3QgeyAwLCAwLCAx
MDAsIDEwMCB9LCBDb2xvcjo6YmxhY2spOwogCi0gICAgZm9yIChhdXRvIGRpc3BsYXlMaXN0SXRl
bSA6IGxpc3QpIHsKLSAgICAgICAgYXV0byBoYW5kbGUgPSBkaXNwbGF5TGlzdEl0ZW0tPml0ZW07
Ci0gICAgICAgIEVYUEVDVF9FUShoYW5kbGUudHlwZSgpLCBJdGVtVHlwZTo6RmlsbFJlY3RXaXRo
Q29sb3IpOwotICAgICAgICBFWFBFQ1RfVFJVRShoYW5kbGUuaXM8RmlsbFJlY3RXaXRoQ29sb3I+
KCkpOworICAgIGZvciAoY29uc3QgYXV0byYgZGlzcGxheUxpc3RJdGVtIDogbGlzdCkgeworICAg
ICAgICBFWFBFQ1RfVFJVRShXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEZpbGxSZWN0V2l0aENvbG9y
PihkaXNwbGF5TGlzdEl0ZW0tPml0ZW0pKTsKKyAgICAgICAgY29uc3QgYXV0byYgaXRlbSA9IFdU
Rjo6Z2V0PEZpbGxSZWN0V2l0aENvbG9yPihkaXNwbGF5TGlzdEl0ZW0tPml0ZW0pOworICAgICAg
ICBFWFBFQ1RfRVEoaXRlbS5pdGVtVHlwZSwgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yKTsK
IAotICAgICAgICBhdXRvJiBpdGVtID0gaGFuZGxlLmdldDxGaWxsUmVjdFdpdGhDb2xvcj4oKTsK
ICAgICAgICAgRVhQRUNUX0VRKCppdGVtLmNvbG9yKCkudHJ5R2V0QXNTUkdCQUJ5dGVzKCksIENv
bG9yOjpibGFjayk7CiAgICAgICAgIEVYUEVDVF9FUShpdGVtLnJlY3QoKSwgRmxvYXRSZWN0KDAs
IDAsIDEwMCwgMTAwKSk7CiAgICAgfQpAQCAtMTk3LDcgKzE3NCw3IEBAIFRFU1QoRGlzcGxheUxp
c3RUZXN0cywgSXRlbUJ1ZmZlckNsaWVudCkKICAgICBwcml2YXRlOgogICAgICAgICBJdGVtQnVm
ZmVySGFuZGxlIGNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90IGNhcGFjaXR5KSBmaW5hbAogICAgICAg
ICB7Ci0gICAgICAgICAgICBFWFBFQ1RfTFQoY2FwYWNpdHksIGdsb2JhbEl0ZW1CdWZmZXJDYXBh
Y2l0eSk7CisgICAgICAgICAgICBFWFBFQ1RfTEUoY2FwYWNpdHksIGdsb2JhbEl0ZW1CdWZmZXJD
YXBhY2l0eSk7CiAgICAgICAgICAgICByZXR1cm4geyBnbG9iYWxCdWZmZXJJZGVudGlmaWVyLCBn
bG9iYWxJdGVtQnVmZmVyLCBnbG9iYWxJdGVtQnVmZmVyQ2FwYWNpdHkgfTsKICAgICAgICAgfQog
CkBAIC0yMjYsOCArMjAzLDggQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBJdGVtQnVmZmVyQ2xp
ZW50KQogICAgIHNoYWxsb3dDb3B5LnNldEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50KCZyZWFkZXIp
OwogCiAgICAgVmVjdG9yPEl0ZW1UeXBlPiBpdGVtVHlwZXM7Ci0gICAgZm9yIChhdXRvIGRpc3Bs
YXlMaXN0SXRlbSA6IHNoYWxsb3dDb3B5KQotICAgICAgICBpdGVtVHlwZXMuYXBwZW5kKGRpc3Bs
YXlMaXN0SXRlbS0+aXRlbS50eXBlKCkpOworICAgIGZvciAoY29uc3QgYXV0byYgZGlzcGxheUxp
c3RJdGVtIDogc2hhbGxvd0NvcHkpCisgICAgICAgIGl0ZW1UeXBlcy5hcHBlbmQoZGlzcGxheUxp
c3RJdGVtVHlwZShkaXNwbGF5TGlzdEl0ZW0tPml0ZW0pKTsKIAogICAgIEVYUEVDVF9GQUxTRShz
aGFsbG93Q29weS5pc0VtcHR5KCkpOwogICAgIEVYUEVDVF9FUShpdGVtVHlwZXMuc2l6ZSgpLCA0
VSk7Cg==
</data>
<flag name="review"
          id="448978"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428146</attachid>
            <date>2021-05-09 17:40:36 -0700</date>
            <delta_ts>2021-05-10 03:00:23 -0700</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-225582-20210509174035.patch</filename>
            <type>text/plain</type>
            <size>83343</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWZmNGJkMGUxMWIyODZi
NTY1MWFlMTQ5M2UwZTBjZDBhNTViZmZkMy4uOWUyMmEzYmE4MTkxNGE3MzYyNzhjOTU2OTU3NDAx
YTE1NzI5MDJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAyMS0wNS0wOSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJv
Y2Vzc10gU2ltcGxpZnkgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yIHBhcnQgOTogTWlncmF0ZSBEaXNw
bGF5TGlzdDo6SXRlcmF0b3IncyBBUEkgdG8gdXNlIERpc3BsYXlMaXN0SXRlbSByYXRoZXIgdGhh
biBJdGVtSGFuZGxlLCBhbmQgdXBkYXRlIGNhbGxlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTU4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSBmYWlybHkgbWVjaGFuaWNhbCByZXBs
YWNlbWVudCBpbiB1c2VycyBvZiBEaXNwbGF5TGlzdDo6SXRlcmF0b3IuCisgICAgICAgIFRoaXMg
cGF0Y2gganVzdCBtaWdyYXRlcyBmcm9tIEl0ZW1IYW5kbGUgdG8gY29uc3QgRGlzcGxheUxpc3RJ
dGVtJi4KKworICAgICAgICBUaGUgYmVuZWZpdHMgYXJlOgorICAgICAgICAtIERpc3BsYXlMaXN0
OjphcHBlbmQoKSBnb2VzIGZyb20gMTM0IGxpbmVzIHRvIDMKKyAgICAgICAgLSBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBJdGVtSGFuZGxlIGl0ZW0pIGdvZXMgZnJvbSAx
OTAgbGluZXMgdG8gNQorICAgICAgICAtIFVzaW5nIFZpc2l0b3IgbWVhbnMgdGhlcmUgaXMgYSBs
b3QgbGVzcyBtYW51YWwgZG93bmNhc3RpbmcKKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5n
IHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6c2hvdWxkRHVt
cEZvckZsYWdzKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6
YXNUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlz
dDo6ZHVtcCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxp
c3Q6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbUhhbmRsZTo6ZGVzY3JpcHRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6YXBwbHkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Om9wZXJhdG9yPDwpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlNldFN0YXRlOjphcHBseSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzOjpmb250SWRlbnRpZmllciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNEcmF3aW5nSXRlbSk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBoczo6Zm9udElkZW50aWZpZXIpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJh
dG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVwbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5SW1h
Z2VCdWZmZXJJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjphcHBseU5hdGl2
ZUltYWdlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YXBwbHlTZXRTdGF0
ZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5Rm9udEl0ZW0pOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6YXBwbHlJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZXBsYXllcjo6cmVwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlJlcGxheWVyOjpEZWxlZ2F0ZTo6YXBwbHkpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbk1lbW9yeURpc3BsYXlMaXN0Ojp+SW5NZW1vcnlE
aXNwbGF5TGlzdCk6CisKKzIwMjEtMDUtMDkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxk
QGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIFNpbXBsaWZ5IERpc3BsYXlMaXN0
OjpJdGVyYXRvciBwYXJ0IDg6IFJlcGxhY2UgdGhlIGd1dHMgb2YgRGlzcGxheUxpc3Q6Okl0ZXJh
dG9yIHdpdGhvdXQgYWZmZWN0aW5nIGl0cyBwdWJsaWMgQVBJCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU1NzkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGEgaGFsZi1zdGVwIHRv
d2FyZCBhIHdvcmxkIHdoZXJlIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3BlcmF0b3IqKCkgcmV0
dXJucyBhIERpc3BsYXlMaXN0SXRlbSBpbnN0ZWFkIG9mIGFuIEl0ZW1IYW5kbGUuCisgICAgICAg
IEl0IGRvZXMgdGhpcyBieSBzd2FwcGluZyBvdXQgdGhlIGd1dHMgb2YgRGlzcGxheWxpc3Q6Okl0
ZXJhdG9yIHNvIHRoYXQgaXQgY3JlYXRlcyBhIERpc3BsYXlMaXN0SXRlbSwgYnV0IHRoZW4gaXQg
Y29udmVydHMgdGhlCisgICAgICAgIERpc3BsYXlMaXN0SXRlbSB0byBhbiBJdGVtSGFuZGxlIGF0
IHRoZSBsYXN0IHNlY29uZCBpbiBvcmRlciB0byBwcmVzZXJ2ZSBEaXNwbGF5TGlzdDo6SXRlcmF0
b3IncyBBUEkgc2lnbmF0dXJlcy4gVGhpcyB3YXksIHdlIGNhbgorICAgICAgICBzcGxpdCB0aGUg
dXBkYXRlIG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBEaXNwbGF5TGlzdDo6SXRlcmF0b3IgaW50
byBhIHNlcGFyYXRlIHBhdGNoIGZyb20gdXBkYXRpbmcgYWxsIHRoZSBjYWxsZXJzIHRvIHRoZSBu
ZXcKKyAgICAgICAgc2lnbmF0dXJlLgorCisgICAgICAgIFRoZSBuZXcgaW1wbGVtZW50YXRpb24g
aXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYmVjYXVzZSBEaXNwbGF5TGlzdEl0ZW1zIGFyZSBz
aW1wbGVyIHRoYW4gSXRlbUhhbmRsZXMuIEJlY2F1c2UgYWxsIHRoZSB1c2VycyBvZgorICAgICAg
ICB0aGUgaXRlcmF0b3IgdXNlIGl0IGluIGEgZm9yZWFjaCBsb29wLCB3ZSBjYW4gZXhwZWN0IHRo
YXQgYWxsIHVzZXJzIHdpbGwgcGluZy1wb25nIGJldHdlZW4gb3BlcmF0b3IqKCkgYW5kIG9wZXJh
dG9yKysoKS4gVGhpcyBtZWFucworICAgICAgICB0aGF0IG9wZXJhdG9yKigpIGNhbiBjb21wdXRl
IGEgQ3VycmVudEl0ZW1JbmZvLCB3aGljaCBpbmNsdWRlcyB0aGluZ3MgbGlrZSB0aGUgc2l6ZSBv
ZiB0aGUgY3VycmVudCBpdGVtIGluIHRoZSBkaXNwbGF5IGxpc3Qgc2htZW0sCisgICAgICAgIHNv
IHRoYXQgdGhlIGl0ZXJhdG9yIGNhbiByZXRhaW4gdGhhdCBpbmZvcm1hdGlvbiwgYW5kIHRoZSBu
ZXh0IGNhbGwgdG8gb3BlcmF0b3IrKygpIGNhbiBqdXN0IHVzZSBpdCB0byBrbm93IGhvdyBtdWNo
IHRvIGluY3JlbWVudCBieS4KKyAgICAgICAgU28sIHRoZXJlJ3MgYSBjdXJyZW50SXRlbSgpIGZ1
bmN0aW9uIHdoaWNoIGlzIGNvbnN0IGFuZCByZXR1cm5zIGEgQ3VycmVudEl0ZW1SZXN1bHQsIGFu
ZCBpdCdzIG9wZXJhdG9yKigpJ3Mgam9iIHRvIGNhbGwgaXQgYW5kIHJlY29yZAorICAgICAgICB0
aGUgcmVsZXZhbnQgaW5mbyBmb3Igb3BlcmF0b3IrKygpLgorCisgICAgICAgIFRoZSBjdXJyZW50
SXRlbSgpIGZ1bmN0aW9uIHVzZXMgYnJpZ2FuZCB0byBpdGVyYXRlIG92ZXIgYWxsIHRoZSB0eXBl
cyBpbiB0aGUgRGlzcGxheUxpc3RJdGVtIFZhcmlhbnQsIGFuZCBjb21wYXJlcyB0aGF0IHR5cGUn
cworICAgICAgICBpdGVtVHlwZSB0byB0aGUgZmlyc3Qgc2VyaWFsaXplZCBieXRlIGluIHRoZSBz
aG1lbS4gSWYgaXQgbWF0Y2hlcywgd2UgdHJ5IHRvIHBhcnNlIGl0IGFjY29yZGluZyB0byB0aGUg
cmVsZXZhbnQgc2VyaWFsaXphdGlvbiBydWxlcywKKyAgICAgICAgYW5kIGlmIGl0IGRvZXNuJ3Qg
bWF0Y2gsIGJyaWdhbmQgd2lsbCBqdXN0IGNvbnRpbnVlIGxvb3BpbmcgdG8gdGhlIG5leHQgdHlw
ZSBpbiB0aGUgRGlzcGxheUxpc3RJdGVtIFZhcmlhbnQuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IGJlY2F1c2UgdGhlcmUgaXMgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNWYWxpZCk6IERlbGV0ZWQuIE1vdmVkIHRvIERp
c3BsYXlMaXN0SXRlbXMuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Omlz
VmFsaWQpOiBNb3ZlZCBmcm9tIERpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAuCisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6cGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJh
dG9yOjpJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxp
c3Q6Okl0ZXJhdG9yOjphdEVuZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpvcGVyYXRvciogY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3BlcmF0b3IrKyk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpjdXJy
ZW50SXRlbSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxp
c3Q6Okl0ZXJhdG9yOjptb3ZlQ3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjplbmRPZkN1cnJl
bnRCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0OjpJdGVyYXRvcjo6dXBkYXRlQ3VycmVudERyYXdpbmdJdGVtRXh0ZW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OnVw
ZGF0ZUN1cnJlbnRJdGVtKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OmFkdmFuY2UpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6Y2xlYXJDdXJyZW50SXRl
bSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6
Okl0ZXJhdG9yOjptb3ZlVG9FbmQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpJdGVyYXRvcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjp+
SXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0OjpJdGVyYXRvcjo6b3BlcmF0b3IrKyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpvcGVyYXRvciogY29uc3QpOiBE
ZWxldGVkLgorCiAyMDIxLTA1LTA5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBTaW1wbGlmeSBEaXNwbGF5TGlzdDo6SXRl
cmF0b3IgcGFydCA2OiBNaWdyYXRlIEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50IGZyb20gSXRlbUhh
bmRsZSB0byBhIGNvbnN0IFZhcmlhbnQmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDEyZWZhM2YxYjA3NGE0MzMyZjY1
M2FmYTEyN2UyMDFkNWJmNTVlMDguLjhlODg4MTgwMDhjY2FmMTExNjAzZjE4NjJkZTk4Njk2NmI1
OTAyZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDUtMDkgIE15bGVzIEMuIE1h
eGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIFNp
bXBsaWZ5IERpc3BsYXlMaXN0OjpJdGVyYXRvciBwYXJ0IDk6IE1pZ3JhdGUgRGlzcGxheUxpc3Q6
Okl0ZXJhdG9yJ3MgQVBJIHRvIHVzZSBEaXNwbGF5TGlzdEl0ZW0gcmF0aGVyIHRoYW4gSXRlbUhh
bmRsZSwgYW5kIHVwZGF0ZSBjYWxsZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjU1ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIu
aDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseU1lZGlh
SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnN1Ym1pdCk6
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmg6
CisKIDIwMjEtMDUtMDkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4K
IAogICAgICAgICBbR1BVIFByb2Nlc3NdIFNpbXBsaWZ5IERpc3BsYXlMaXN0OjpJdGVyYXRvciBw
YXJ0IDY6IE1pZ3JhdGUgSXRlbUJ1ZmZlcldyaXRpbmdDbGllbnQgZnJvbSBJdGVtSGFuZGxlIHRv
IGEgY29uc3QgVmFyaWFudCYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggYzc4YWY3ZTI1ZGRiNTQxNDNjZWI1OWExMWZmZmMy
M2FhYTM0NzE2Ny4uMThjOWZlYjgxNzJiOWRiYjQ0ZDQ1NzY0OGNjZWYzNDUzZWQ5ZGUxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmgKQEAgLTE2MCw3ICsxNjAsNyBAQCBzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGUgewogICAg
IFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlKCk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgfkdyYXBoaWNzQ29udGV4dFN0YXRlKCk7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZShj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNz
Q29udGV4dFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgR3JhcGhpY3NDb250ZXh0U3RhdGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmJik7CiAKICAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZSYgb3BlcmF0b3I9KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0
YXRlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAppbmRleCA2MDVmOWEwYTY0NjY2YWJjNjQ4
Y2QxOWQxN2M2ODQ2ZGQ5OGI3YmYxLi5kOGM5MTkyMDU1YzY2YmRhMTBiMTFhZWE2MjlmMTVjZmIw
NDY3MDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKQEAgLTg1LDEyICs4NSwxMCBAQCB2
b2lkIERpc3BsYXlMaXN0OjpjbGVhcigpCiAgICAgbV9uYXRpdmVJbWFnZXMuY2xlYXIoKTsKIH0K
IAotYm9vbCBEaXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzIGZsYWdz
LCBJdGVtSGFuZGxlIGl0ZW0pCitib29sIERpc3BsYXlMaXN0OjpzaG91bGREdW1wRm9yRmxhZ3Mo
QXNUZXh0RmxhZ3MgZmxhZ3MsIGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgaXRlbSkKIHsKLSAgICBz
d2l0Y2ggKGl0ZW0udHlwZSgpKSB7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6CisgICAg
YXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgU2V0U3RhdGUmIHN0YXRl
SXRlbSkgLT4gYm9vbCB7CiAgICAgICAgIGlmICghKGZsYWdzICYgQXNUZXh0RmxhZzo6SW5jbHVk
ZXNQbGF0Zm9ybU9wZXJhdGlvbnMpKSB7Ci0gICAgICAgICAgICBjb25zdCBhdXRvJiBzdGF0ZUl0
ZW0gPSBpdGVtLmdldDxTZXRTdGF0ZT4oKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBmb3Igbm93
LCBvbmx5IGRyb3AgdGhlIGl0ZW0gaWYgdGhlIG9ubHkgc3RhdGUtY2hhbmdlIGZsYWdzIGFyZSBw
bGF0Zm9ybS1zcGVjaWZpYy4KICAgICAgICAgICAgIGlmIChzdGF0ZUl0ZW0uc3RhdGVDaGFuZ2Uo
KS5tX2NoYW5nZUZsYWdzID09IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1
YW50aXplRm9udHNDaGFuZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTgs
MzEgKzk2LDMwIEBAIGJvb2wgRGlzcGxheUxpc3Q6OnNob3VsZER1bXBGb3JGbGFncyhBc1RleHRG
bGFncyBmbGFncywgSXRlbUhhbmRsZSBpdGVtKQogICAgICAgICAgICAgaWYgKHN0YXRlSXRlbS5z
dGF0ZUNoYW5nZSgpLm1fY2hhbmdlRmxhZ3MgPT0gR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3Vs
ZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIH0KLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiB0cnVlOwogI2lm
IFVTRShDRykKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseUZpbGxQYXR0ZXJuOgotICAgIGNhc2Ug
SXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybjoKLSAgICAgICAgaWYgKCEoZmxhZ3MgJiBBc1Rl
eHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9ucykpCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIGJyZWFrOworICAgIH0sIFsmXShjb25zdCBBcHBseUZpbGxQYXR0ZXJu
JikgLT4gYm9vbCB7CisgICAgICAgIHJldHVybiBmbGFncyAmIEFzVGV4dEZsYWc6OkluY2x1ZGVz
UGxhdGZvcm1PcGVyYXRpb25zOworICAgIH0sIFsmXShjb25zdCBBcHBseVN0cm9rZVBhdHRlcm4m
KSAtPiBib29sIHsKKyAgICAgICAgcmV0dXJuIGZsYWdzICYgQXNUZXh0RmxhZzo6SW5jbHVkZXNQ
bGF0Zm9ybU9wZXJhdGlvbnM7CiAjZW5kaWYKLSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsK
LSAgICB9Ci0gICAgcmV0dXJuIHRydWU7CisgICAgfSwgW10oY29uc3QgYXV0byYpIC0+IGJvb2wg
eworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9KTsKKyAgICByZXR1cm4gV1RGOjp2aXNpdCh2
aXNpdG9yLCBpdGVtKTsKIH0KIAogU3RyaW5nIERpc3BsYXlMaXN0Ojphc1RleHQoQXNUZXh0Rmxh
Z3MgZmxhZ3MpIGNvbnN0CiB7CiAgICAgVGV4dFN0cmVhbSBzdHJlYW0oVGV4dFN0cmVhbTo6TGlu
ZU1vZGU6Ok11bHRpcGxlTGluZSwgVGV4dFN0cmVhbTo6Rm9ybWF0dGluZzo6U1ZHU3R5bGVSZWN0
KTsKICAgICBmb3IgKGF1dG8gZGlzcGxheUxpc3RJdGVtIDogKnRoaXMpIHsKLSAgICAgICAgYXV0
byBbaXRlbSwgZXh0ZW50LCBpdGVtU2l6ZUluQnVmZmVyXSA9IGRpc3BsYXlMaXN0SXRlbS52YWx1
ZSgpOworICAgICAgICBjb25zdCBhdXRvJiBbaXRlbSwgZXh0ZW50LCBpdGVtU2l6ZUluQnVmZmVy
XSA9IGRpc3BsYXlMaXN0SXRlbS52YWx1ZSgpOwogICAgICAgICBpZiAoIXNob3VsZER1bXBGb3JG
bGFncyhmbGFncywgaXRlbSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBUZXh0
U3RyZWFtOjpHcm91cFNjb3BlIGdyb3VwKHN0cmVhbSk7CiAgICAgICAgIHN0cmVhbSA8PCBpdGVt
OwotICAgICAgICBpZiAoaXRlbS5pc0RyYXdpbmdJdGVtKCkpCisgICAgICAgIGlmIChpc0RyYXdp
bmdJdGVtKGl0ZW0pKQogICAgICAgICAgICAgc3RyZWFtIDw8ICIgZXh0ZW50ICIgPDwgZXh0ZW50
OwogICAgIH0KICAgICByZXR1cm4gc3RyZWFtLnJlbGVhc2UoKTsKQEAgLTEzNCwxMCArMTMxLDEw
IEBAIHZvaWQgRGlzcGxheUxpc3Q6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiAgICAgdHMg
PDwgImRpc3BsYXkgbGlzdCI7CiAKICAgICBmb3IgKGF1dG8gZGlzcGxheUxpc3RJdGVtIDogKnRo
aXMpIHsKLSAgICAgICAgYXV0byBbaXRlbSwgZXh0ZW50LCBpdGVtU2l6ZUluQnVmZmVyXSA9IGRp
c3BsYXlMaXN0SXRlbS52YWx1ZSgpOworICAgICAgICBjb25zdCBhdXRvJiBbaXRlbSwgZXh0ZW50
LCBpdGVtU2l6ZUluQnVmZmVyXSA9IGRpc3BsYXlMaXN0SXRlbS52YWx1ZSgpOwogICAgICAgICBU
ZXh0U3RyZWFtOjpHcm91cFNjb3BlIGdyb3VwKHRzKTsKICAgICAgICAgdHMgPDwgaXRlbTsKLSAg
ICAgICAgaWYgKGl0ZW0uaXNEcmF3aW5nSXRlbSgpKQorICAgICAgICBpZiAoaXNEcmF3aW5nSXRl
bShpdGVtKSkKICAgICAgICAgICAgIHRzIDw8ICIgZXh0ZW50ICIgPDwgZXh0ZW50OwogICAgIH0K
ICAgICB0cy5zdGFydEdyb3VwKCk7CkBAIC0xOTcsMTQyICsxOTQsMTEgQEAgdm9pZCBEaXNwbGF5
TGlzdDo6c2V0VHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzKGJvb2wgdmFsdWUpCiAgICAgbV90cmFj
a3NEcmF3aW5nSXRlbUV4dGVudHMgPSB2YWx1ZTsKIH0KIAotdm9pZCBEaXNwbGF5TGlzdDo6YXBw
ZW5kKEl0ZW1IYW5kbGUgaXRlbSkKK3ZvaWQgRGlzcGxheUxpc3Q6OmFwcGVuZChjb25zdCBEaXNw
bGF5TGlzdEl0ZW0mIGl0ZW0pCiB7Ci0gICAgc3dpdGNoIChpdGVtLnR5cGUoKSkgewotICAgIGNh
c2UgSXRlbVR5cGU6OlNhdmU6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2F2ZT4oaXRlbS5nZXQ8
U2F2ZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UmVzdG9yZToKLSAgICAgICAgcmV0dXJuIGFw
cGVuZDxSZXN0b3JlPihpdGVtLmdldDxSZXN0b3JlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpU
cmFuc2xhdGU6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8VHJhbnNsYXRlPihpdGVtLmdldDxUcmFu
c2xhdGU+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlJvdGF0ZToKLSAgICAgICAgcmV0dXJuIGFw
cGVuZDxSb3RhdGU+KGl0ZW0uZ2V0PFJvdGF0ZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2Nh
bGU6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2NhbGU+KGl0ZW0uZ2V0PFNjYWxlPigpKTsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxD
b25jYXRlbmF0ZUNUTT4oaXRlbS5nZXQ8Q29uY2F0ZW5hdGVDVE0+KCkpOwotICAgIGNhc2UgSXRl
bVR5cGU6OlNldENUTToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTZXRDVE0+KGl0ZW0uZ2V0PFNl
dENUTT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbEdyYWRpZW50OgotICAg
ICAgICByZXR1cm4gYXBwZW5kPFNldElubGluZUZpbGxHcmFkaWVudD4oaXRlbS5nZXQ8U2V0SW5s
aW5lRmlsbEdyYWRpZW50PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsQ29s
b3I6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2V0SW5saW5lRmlsbENvbG9yPihpdGVtLmdldDxT
ZXRJbmxpbmVGaWxsQ29sb3I+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZVN0cm9r
ZUNvbG9yOgotICAgICAgICByZXR1cm4gYXBwZW5kPFNldElubGluZVN0cm9rZUNvbG9yPihpdGVt
LmdldDxTZXRJbmxpbmVTdHJva2VDb2xvcj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3Ry
b2tlVGhpY2tuZXNzOgotICAgICAgICByZXR1cm4gYXBwZW5kPFNldFN0cm9rZVRoaWNrbmVzcz4o
aXRlbS5nZXQ8U2V0U3Ryb2tlVGhpY2tuZXNzPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRT
dGF0ZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTZXRTdGF0ZT4oaXRlbS5nZXQ8U2V0U3RhdGU+
KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVDYXA6Ci0gICAgICAgIHJldHVybiBhcHBl
bmQ8U2V0TGluZUNhcD4oaXRlbS5nZXQ8U2V0TGluZUNhcD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6U2V0TGluZURhc2g6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2V0TGluZURhc2g+KGl0ZW0u
Z2V0PFNldExpbmVEYXNoPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lSm9pbjoKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZDxTZXRMaW5lSm9pbj4oaXRlbS5nZXQ8U2V0TGluZUpvaW4+KCkp
OwotICAgIGNhc2UgSXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6Ci0gICAgICAgIHJldHVybiBhcHBl
bmQ8U2V0TWl0ZXJMaW1pdD4oaXRlbS5nZXQ8U2V0TWl0ZXJMaW1pdD4oKSk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6Q2xlYXJTaGFkb3c6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8Q2xlYXJTaGFkb3c+
KGl0ZW0uZ2V0PENsZWFyU2hhZG93PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwOgotICAg
ICAgICByZXR1cm4gYXBwZW5kPENsaXA+KGl0ZW0uZ2V0PENsaXA+KCkpOwotICAgIGNhc2UgSXRl
bVR5cGU6OkNsaXBPdXQ6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8Q2xpcE91dD4oaXRlbS5nZXQ8
Q2xpcE91dD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAg
ICAgIHJldHVybiBhcHBlbmQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KGl0ZW0uZ2V0PENsaXBUb0ltYWdl
QnVmZmVyPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgotICAgICAgICBy
ZXR1cm4gYXBwZW5kPENsaXBPdXRUb1BhdGg+KGl0ZW0uZ2V0PENsaXBPdXRUb1BhdGg+KCkpOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgotICAgICAgICByZXR1cm4gYXBwZW5kPENsaXBQ
YXRoPihpdGVtLmdldDxDbGlwUGF0aD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlw
VG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8QmVnaW5DbGlwVG9EcmF3
aW5nQ29tbWFuZHM+KGl0ZW0uZ2V0PEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpKTsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIHJldHVy
biBhcHBlbmQ8RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPihpdGVtLmdldDxFbmRDbGlwVG9EcmF3
aW5nQ29tbWFuZHM+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6Ci0gICAgICAg
IHJldHVybiBhcHBlbmQ8RHJhd0dseXBocz4oaXRlbS5nZXQ8RHJhd0dseXBocz4oKSk7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgotICAgICAgICByZXR1cm4gYXBwZW5kPERy
YXdJbWFnZUJ1ZmZlcj4oaXRlbS5nZXQ8RHJhd0ltYWdlQnVmZmVyPigpKTsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd05hdGl2
ZUltYWdlPihpdGVtLmdldDxEcmF3TmF0aXZlSW1hZ2U+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdQYXR0ZXJuOgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdQYXR0ZXJuPihpdGVtLmdl
dDxEcmF3UGF0dGVybj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6Ci0gICAgICAg
IHJldHVybiBhcHBlbmQ8RHJhd1JlY3Q+KGl0ZW0uZ2V0PERyYXdSZWN0PigpKTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3TGluZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3TGluZT4oaXRl
bS5nZXQ8RHJhd0xpbmU+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6
Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd0xpbmVzRm9yVGV4dD4oaXRlbS5nZXQ8RHJhd0xp
bmVzRm9yVGV4dD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1h
cmtlcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyPihp
dGVtLmdldDxEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3RWxsaXBzZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3RWxsaXBzZT4oaXRlbS5n
ZXQ8RHJhd0VsbGlwc2U+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXRoOgotICAgICAg
ICByZXR1cm4gYXBwZW5kPERyYXdQYXRoPihpdGVtLmdldDxEcmF3UGF0aD4oKSk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RHJh
d0ZvY3VzUmluZ1BhdGg+KGl0ZW0uZ2V0PERyYXdGb2N1c1JpbmdQYXRoPigpKTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVjdHM6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RHJh
d0ZvY3VzUmluZ1JlY3RzPihpdGVtLmdldDxEcmF3Rm9jdXNSaW5nUmVjdHM+KCkpOwotICAgIGNh
c2UgSXRlbVR5cGU6OkZpbGxSZWN0OgotICAgICAgICByZXR1cm4gYXBwZW5kPEZpbGxSZWN0Pihp
dGVtLmdldDxGaWxsUmVjdD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29s
b3I6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RmlsbFJlY3RXaXRoQ29sb3I+KGl0ZW0uZ2V0PEZp
bGxSZWN0V2l0aENvbG9yPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFk
aWVudDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxGaWxsUmVjdFdpdGhHcmFkaWVudD4oaXRlbS5n
ZXQ8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxDb21w
b3NpdGVkUmVjdDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxGaWxsQ29tcG9zaXRlZFJlY3Q+KGl0
ZW0uZ2V0PEZpbGxDb21wb3NpdGVkUmVjdD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJv
dW5kZWRSZWN0OgotICAgICAgICByZXR1cm4gYXBwZW5kPEZpbGxSb3VuZGVkUmVjdD4oaXRlbS5n
ZXQ8RmlsbFJvdW5kZWRSZWN0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhS
b3VuZGVkSG9sZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxGaWxsUmVjdFdpdGhSb3VuZGVkSG9s
ZT4oaXRlbS5nZXQ8RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU+KCkpOwotI2lmIEVOQUJMRShJTkxJ
TkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxJbmxpbmVQYXRoOgotICAgICAg
ICByZXR1cm4gYXBwZW5kPEZpbGxJbmxpbmVQYXRoPihpdGVtLmdldDxGaWxsSW5saW5lUGF0aD4o
KSk7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUGF0aDoKLSAgICAgICAgcmV0dXJu
IGFwcGVuZDxGaWxsUGF0aD4oaXRlbS5nZXQ8RmlsbFBhdGg+KCkpOwotICAgIGNhc2UgSXRlbVR5
cGU6OkZpbGxFbGxpcHNlOgotICAgICAgICByZXR1cm4gYXBwZW5kPEZpbGxFbGxpcHNlPihpdGVt
LmdldDxGaWxsRWxsaXBzZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0Ogot
ICAgICAgICByZXR1cm4gYXBwZW5kPEZsdXNoQ29udGV4dD4oaXRlbS5nZXQ8Rmx1c2hDb250ZXh0
PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1h
Z2VCdWZmZXI6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5h
dGlvbkltYWdlQnVmZmVyPihpdGVtLmdldDxNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1h
Z2VCdWZmZXI+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1
ZmZlcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI+
KGl0ZW0uZ2V0PE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcj4oKSk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6R2V0SW1hZ2VEYXRhOgotICAgICAgICByZXR1cm4gYXBwZW5kPEdldEltYWdlRGF0YT4o
aXRlbS5nZXQ8R2V0SW1hZ2VEYXRhPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURh
dGE6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8UHV0SW1hZ2VEYXRhPihpdGVtLmdldDxQdXRJbWFn
ZURhdGE+KCkpOwotI2lmIEVOQUJMRShWSURFTykKLSAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEZy
YW1lRm9yTWVkaWE6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8UGFpbnRGcmFtZUZvck1lZGlhPihp
dGVtLmdldDxQYWludEZyYW1lRm9yTWVkaWE+KCkpOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlw
ZTo6U3Ryb2tlUmVjdDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTdHJva2VSZWN0PihpdGVtLmdl
dDxTdHJva2VSZWN0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgICAg
ICByZXR1cm4gYXBwZW5kPFN0cm9rZUxpbmU+KGl0ZW0uZ2V0PFN0cm9rZUxpbmU+KCkpOwotI2lm
IEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUlubGlu
ZVBhdGg6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U3Ryb2tlSW5saW5lUGF0aD4oaXRlbS5nZXQ8
U3Ryb2tlSW5saW5lUGF0aD4oKSk7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQ
YXRoOgotICAgICAgICByZXR1cm4gYXBwZW5kPFN0cm9rZVBhdGg+KGl0ZW0uZ2V0PFN0cm9rZVBh
dGg+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6Ci0gICAgICAgIHJldHVy
biBhcHBlbmQ8U3Ryb2tlRWxsaXBzZT4oaXRlbS5nZXQ8U3Ryb2tlRWxsaXBzZT4oKSk7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6Q2xlYXJSZWN0OgotICAgICAgICByZXR1cm4gYXBwZW5kPENsZWFyUmVj
dD4oaXRlbS5nZXQ8Q2xlYXJSZWN0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpblRyYW5z
cGFyZW5jeUxheWVyOgotICAgICAgICByZXR1cm4gYXBwZW5kPEJlZ2luVHJhbnNwYXJlbmN5TGF5
ZXI+KGl0ZW0uZ2V0PEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI+KCkpOwotICAgIGNhc2UgSXRlbVR5
cGU6OkVuZFRyYW5zcGFyZW5jeUxheWVyOgotICAgICAgICByZXR1cm4gYXBwZW5kPEVuZFRyYW5z
cGFyZW5jeUxheWVyPihpdGVtLmdldDxFbmRUcmFuc3BhcmVuY3lMYXllcj4oKSk7Ci0jaWYgVVNF
KENHKQotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5U3Ryb2tlUGF0dGVybjoKLSAgICAgICAgcmV0
dXJuIGFwcGVuZDxBcHBseVN0cm9rZVBhdHRlcm4+KGl0ZW0uZ2V0PEFwcGx5U3Ryb2tlUGF0dGVy
bj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlGaWxsUGF0dGVybjoKLSAgICAgICAgcmV0
dXJuIGFwcGVuZDxBcHBseUZpbGxQYXR0ZXJuPihpdGVtLmdldDxBcHBseUZpbGxQYXR0ZXJuPigp
KTsKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RGV2aWNlU2NhbGVGYWN0b3I6Ci0g
ICAgICAgIHJldHVybiBhcHBlbmQ8QXBwbHlEZXZpY2VTY2FsZUZhY3Rvcj4oaXRlbS5nZXQ8QXBw
bHlEZXZpY2VTY2FsZUZhY3Rvcj4oKSk7Ci0gICAgfQorICAgIFdURjo6dmlzaXQoWyZdKGNvbnN0
IGF1dG8mIGl0ZW0pIHsKKyAgICAgICAgYXBwZW5kKGl0ZW0pOworICAgIH0sIGl0ZW0pOwogfQog
CiBhdXRvIERpc3BsYXlMaXN0OjpiZWdpbigpIGNvbnN0IC0+IEl0ZXJhdG9yCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdC5oCmluZGV4IDk5MzIyMjYyZGY3MDI5MDQwNzkzYjY1OTAzYzU3NTViYmEyMjZlZDIu
LjhjZWVlNDUwZTdiZWFkYTMwOTNhNWY4Nzk4NjFiNGYyZTYyZjllN2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdC5oCkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGZvckVhY2hJdGVtQnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgSXRlbUJ1ZmZlckhhbmRs
ZSYpPiYmKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzLi4uIEFyZ3M+
IHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKTsKLSAgICB2b2lkIGFwcGVuZChJdGVtSGFuZGxl
KTsKKyAgICB2b2lkIGFwcGVuZChjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsKIAogICAgIGJvb2wg
dHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzKCkgY29uc3QgeyByZXR1cm4gbV90cmFja3NEcmF3aW5n
SXRlbUV4dGVudHM7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRyYWNrc0RyYXdpbmdJ
dGVtRXh0ZW50cyhib29sKTsKQEAgLTEzMiw3ICsxMzIsNyBAQCBwcml2YXRlOgogICAgICAgICB9
KTsKICAgICB9CiAKLSAgICBzdGF0aWMgYm9vbCBzaG91bGREdW1wRm9yRmxhZ3MoQXNUZXh0Rmxh
Z3MsIEl0ZW1IYW5kbGUpOworICAgIHN0YXRpYyBib29sIHNob3VsZER1bXBGb3JGbGFncyhBc1Rl
eHRGbGFncywgY29uc3QgRGlzcGxheUxpc3RJdGVtJik7CiAKICAgICBJbWFnZUJ1ZmZlckhhc2hN
YXAgbV9pbWFnZUJ1ZmZlcnM7CiAgICAgTmF0aXZlSW1hZ2VIYXNoTWFwIG1fbmF0aXZlSW1hZ2Vz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCA1YTcy
NTAxNDE1NTAyNDRmY2YwZTVhZDZkNjVmN2E0MTQ3NjlhYzIyLi4yZWRmNWI3NGNkNDc4MGE3Yzdi
NTQzMGI1OTk1YzUxNjBlZDNhOTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtQnVmZmVyLmNwcApAQCAtMjgsMjAgKzI4LDEyIEBACiAKICNpbmNsdWRlICJEaXNwbGF5TGlz
dEl0ZW1CdWZmZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtcy5oIgor
I2luY2x1ZGUgPHd0Zi9CcmlnYW5kLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotI2lmICFkZWZp
bmVkKE5ERUJVRykgfHwgIUxPR19ESVNBQkxFRAotQ1N0cmluZyBJdGVtSGFuZGxlOjpkZXNjcmlw
dGlvbigpIGNvbnN0Ci17Ci0gICAgVGV4dFN0cmVhbSB0czsKLSAgICB0cyA8PCAqdGhpczsKLSAg
ICByZXR1cm4gdHMucmVsZWFzZSgpLnV0ZjgoKTsKLX0KLSNlbmRpZgotCiB2b2lkIEl0ZW1IYW5k
bGU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBzd2l0Y2ggKHR5cGUo
KSkgewpAQCAtNDM4LDIxICs0MzAsNiBAQCB2b2lkIEl0ZW1IYW5kbGU6OmRlc3Ryb3koKQogICAg
IH0KIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lID0gdm9pZD4gaW5saW5lIGNvbnN0
ZXhwciBib29sIEhhc0lzVmFsaWQgPSBmYWxzZTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGlu
ZSBjb25zdGV4cHIgYm9vbCBIYXNJc1ZhbGlkPFQsIHN0ZDo6dm9pZF90PGRlY2x0eXBlKHN0ZDo6
ZGVjbHZhbDxUPigpLmlzVmFsaWQoKSk+PiA9IHRydWU7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEl0
ZW0+Ci1zdGF0aWMgaW5saW5lIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8IUhhc0lzVmFsaWQ8
SXRlbT4sIGJvb2w+IGlzVmFsaWQoY29uc3QgSXRlbSYpCi17Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEl0ZW0+Ci1zdGF0aWMgaW5saW5lIHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmX3Q8SGFzSXNWYWxpZDxJdGVtPiwgYm9vbD4gaXNWYWxpZChjb25zdCBJdGVtJiBp
dGVtKQotewotICAgIHJldHVybiBpdGVtLmlzVmFsaWQoKTsKLX0KLQogdGVtcGxhdGU8dHlwZW5h
bWUgSXRlbT4KIHN0YXRpYyBpbmxpbmUgYm9vbCBjb3B5SW50byh1aW50OF90KiBkZXN0aW5hdGlv
bldpdGhPZmZzZXQsIGNvbnN0IEl0ZW0mIGl0ZW0pCiB7CkBAIC02MTksNiArNTk2LDI3IEBAIGJv
b2wgc2FmZUNvcHkoSXRlbUhhbmRsZSBkZXN0aW5hdGlvbiwgY29uc3QgRGlzcGxheUxpc3RJdGVt
JiBzb3VyY2UpCiAgICAgfSwgc291cmNlKTsKIH0KIAorT3B0aW9uYWw8RGlzcGxheUxpc3RJdGVt
PiBzYWZlQ29weShJdGVtSGFuZGxlIHNvdXJjZSkKK3sKKyAgICB1c2luZyBTZXF1ZW5jZSA9IGJy
aWdhbmQ6Om1ha2Vfc2VxdWVuY2U8YnJpZ2FuZDo6cHRyZGlmZl90PDA+LCBXVEY6OnZhcmlhbnRf
c2l6ZTxEaXNwbGF5TGlzdEl0ZW0+Ojp2YWx1ZT47CisKKyAgICBPcHRpb25hbDxEaXNwbGF5TGlz
dEl0ZW0+IHJlc3VsdDsKKyAgICBicmlnYW5kOjpmb3JfZWFjaDxTZXF1ZW5jZT4oWyZdKGF1dG8m
JiB0eXBlKSB7CisgICAgICAgIHVzaW5nIEkgPSB0eXBlbmFtZSBXVEY6OlJlbW92ZUNWQW5kUmVm
ZXJlbmNlPGRlY2x0eXBlKHR5cGUpPjo6dHlwZTo6dHlwZTsKKyAgICAgICAgdXNpbmcgRGlzcGxh
eUxpc3RJdGVtVHlwZSA9IFdURjo6dmFyaWFudF9hbHRlcm5hdGl2ZV90PEk6OnZhbHVlLCBEaXNw
bGF5TGlzdEl0ZW0+OworCisgICAgICAgIGlmIChzb3VyY2UudHlwZSgpICE9IERpc3BsYXlMaXN0
SXRlbVR5cGU6Oml0ZW1UeXBlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8g
ZGlzcGxheUxpc3RJdGVtID0gc291cmNlLmdldDxEaXNwbGF5TGlzdEl0ZW1UeXBlPigpOworICAg
ICAgICBpZiAoaXNWYWxpZChkaXNwbGF5TGlzdEl0ZW0pKSB7CisgICAgICAgICAgICBBU1NFUlQo
IXJlc3VsdCk7CisgICAgICAgICAgICByZXN1bHQgPSBEaXNwbGF5TGlzdEl0ZW0oV1RGTW92ZShk
aXNwbGF5TGlzdEl0ZW0pKTsKKyAgICAgICAgfQorICAgIH0pOworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKIEl0ZW1CdWZmZXI6Okl0ZW1CdWZmZXIoSXRlbUJ1ZmZlckhhbmRsZXMmJiBoYW5kbGVz
KQogICAgIDogbV9yZWFkT25seUJ1ZmZlcnMoV1RGTW92ZShoYW5kbGVzKSkKIHsKQEAgLTcyMyw3
ICs3MjEsNyBAQCB2b2lkIEl0ZW1CdWZmZXI6OmFwcGVuZChjb25zdCBEaXNwbGF5TGlzdEl0ZW0m
IHRlbXBvcmFyeUl0ZW0pCiAgICAgICAgIEFTU0VSVChvdXRPZkxpbmVJdGVtKTsKICAgICAgICAg
cmV0dXJuIG91dE9mTGluZUl0ZW0tPnNpemUoKTsKICAgICB9KTsKLSAgICBhdXRvIGFkZGl0aW9u
YWxDYXBhY2l0eUZvckVuY29kZWRJdGVtID0gMiAqIHNpemVvZih1aW50NjRfdCkgKyByb3VuZFVw
VG9NdWx0aXBsZU9mKGFsaWdub2YodWludDY0X3QpLCBkYXRhTGVuZ3RoKTsKKyAgICBhdXRvIGFk
ZGl0aW9uYWxDYXBhY2l0eUZvckVuY29kZWRJdGVtID0gMiAqIHNpemVvZih1aW50NjRfdCkgKyBy
b3VuZFVwVG9NdWx0aXBsZU9mPGFsaWdub2YodWludDY0X3QpPihkYXRhTGVuZ3RoKTsKIAogICAg
IGF1dG8gYnVmZmVyQ2hhbmdlZCA9IHN3YXBXcml0YWJsZUJ1ZmZlcklmTmVlZGVkKGFkZGl0aW9u
YWxDYXBhY2l0eUZvckVuY29kZWRJdGVtKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbUJ1ZmZlci5oCmluZGV4IGI5OTE3NTdjMjJkYzc3ZTBkODdiYzNjNWNiMWQwMTlmZDA3YzQz
ODYuLjMzNmEyMWEyNTQxMTQ0YzY5OGNlOGRhYWFmNzJkMzQ5ODdiOGI0NjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1CdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKQEAgLTgzLDYgKzgzLDcgQEAgc3RydWN0
IEl0ZW1IYW5kbGUgewogfTsKIAogYm9vbCBzYWZlQ29weShJdGVtSGFuZGxlIGRlc3RpbmF0aW9u
LCBjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIHNvdXJjZSk7CitPcHRpb25hbDxEaXNwbGF5TGlzdEl0
ZW0+IHNhZmVDb3B5KEl0ZW1IYW5kbGUpOwogCiBlbnVtIGNsYXNzIERpZENoYW5nZUl0ZW1CdWZm
ZXIgOiBib29sIHsgTm8sIFllcyB9OwogCkBAIC0xMjMsNyArMTI0LDcgQEAgcHVibGljOgogICAg
IHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPEl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VE
X1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3Ro
LCBJdGVtVHlwZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pID0gMDsKKyAgICB2aXJ0dWFsIE9w
dGlvbmFsPERpc3BsYXlMaXN0SXRlbT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIEl0ZW1UeXBlKSA9IDA7CiB9Owog
CiAvLyBBbiBJdGVtQnVmZmVyIGNvbnRhaW5zIGRpc3BsYXkgbGlzdCBpdGVtIGRhdGEsIGFuZCBj
b25zaXN0cyBvZiBhIHJlYWR3cml0ZSBJdGVtQnVmZmVySGFuZGxlICh0byB3aGljaCBkaXNwbGF5
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKaW5kZXggYTFlMDkxZTQ1
N2Y1ODlkYzgzMjRmMDk0ZjY3YTE3ZTI4NDZmYmI3ZC4uZWY1NWY3NmUzYTNjMmZmYzAwZTFjYmMw
ZmM1NDJhOTA3NDljNTFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBl
LmNwcApAQCAtMjU2LDcgKzI1Niw3IEBAIGJvb2wgaXNEcmF3aW5nSXRlbShJdGVtVHlwZSB0eXBl
KQogCiBzaXplX3QgcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKEl0ZW1UeXBlIHR5cGUp
CiB7Ci0gICAgcmV0dXJuIHNpemVvZih1aW50NjRfdCkgKyByb3VuZFVwVG9NdWx0aXBsZU9mKGFs
aWdub2YodWludDY0X3QpLCBzaXplT2ZJdGVtSW5CeXRlcyh0eXBlKSk7CisgICAgcmV0dXJuIHNp
emVvZih1aW50NjRfdCkgKyByb3VuZFVwVG9NdWx0aXBsZU9mPGFsaWdub2YodWludDY0X3QpPihz
aXplT2ZJdGVtSW5CeXRlcyh0eXBlKSk7CiB9CiAKIHNpemVfdCBwYWRkZWRTaXplT2ZUeXBlQW5k
SXRlbUluQnl0ZXMoY29uc3QgRGlzcGxheUxpc3RJdGVtJiBkaXNwbGF5TGlzdEl0ZW0pCkBAIC0y
NjQsNyArMjY0LDcgQEAgc2l6ZV90IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyhjb25z
dCBEaXNwbGF5TGlzdEl0ZW0mIGRpc3BsYXlMaXN0SXRlbSkKICAgICBhdXRvIGl0ZW1TaXplID0g
V1RGOjp2aXNpdChbXShjb25zdCBhdXRvJiBpdGVtKSB7CiAgICAgICAgIHJldHVybiBzaXplb2Yo
aXRlbSk7CiAgICAgfSwgZGlzcGxheUxpc3RJdGVtKTsKLSAgICByZXR1cm4gc2l6ZW9mKHVpbnQ2
NF90KSArIHJvdW5kVXBUb011bHRpcGxlT2YoYWxpZ25vZih1aW50NjRfdCksIGl0ZW1TaXplKTsK
KyAgICByZXR1cm4gc2l6ZW9mKHVpbnQ2NF90KSArIHJvdW5kVXBUb011bHRpcGxlT2Y8YWxpZ25v
Zih1aW50NjRfdCk+KGl0ZW1TaXplKTsKIH0KIAogSXRlbVR5cGUgZGlzcGxheUxpc3RJdGVtVHlw
ZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGRpc3BsYXlMaXN0SXRlbSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCA0OWIyYzFiMjVjODIzMGExODlmZjgwMTc1ZjNkM2Iw
YTFiYzVmMjg1Li40ZjBmYzFlMmZiZDBlZmZmNDliNDFiOTE3NTlmNWE0ZThiNDRmZWJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC0yMjAsMTIgKzIyMCwxMiBAQCBT
ZXRTdGF0ZTo6U2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRl
Q2hhbmdlLCBjb25zdCBQYXR0ZXJuRAogewogfQogCi12b2lkIFNldFN0YXRlOjphcHBseShHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIE5hdGl2ZUltYWdlKiBzdHJva2VQYXR0ZXJuSW1hZ2UsIE5h
dGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlKQordm9pZCBTZXRTdGF0ZTo6YXBwbHkoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBOYXRpdmVJbWFnZSogc3Ryb2tlUGF0dGVybkltYWdlLCBOYXRp
dmVJbWFnZSogZmlsbFBhdHRlcm5JbWFnZSkgY29uc3QKIHsKICAgICBpZiAobV9zdGF0ZUNoYW5n
ZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0
ZXJuQ2hhbmdlKSAmJiBzdHJva2VQYXR0ZXJuSW1hZ2UpCi0gICAgICAgIG1fc3RhdGVDaGFuZ2Uu
bV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKG1ha2VSZWYoKnN0cm9rZVBh
dHRlcm5JbWFnZSksIG1fc3Ryb2tlUGF0dGVybi5wYXJhbWV0ZXJzKTsKKyAgICAgICAgY29uc3Rf
Y2FzdDxTZXRTdGF0ZSo+KHRoaXMpLT5tX3N0YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlUGF0dGVy
biA9IFBhdHRlcm46OmNyZWF0ZShtYWtlUmVmKCpzdHJva2VQYXR0ZXJuSW1hZ2UpLCBtX3N0cm9r
ZVBhdHRlcm4ucGFyYW1ldGVycyk7CiAgICAgaWYgKG1fc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFn
cy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpICYmIGZp
bGxQYXR0ZXJuSW1hZ2UpCi0gICAgICAgIG1fc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsUGF0dGVy
biA9IFBhdHRlcm46OmNyZWF0ZShtYWtlUmVmKCpmaWxsUGF0dGVybkltYWdlKSwgbV9maWxsUGF0
dGVybi5wYXJhbWV0ZXJzKTsKKyAgICAgICAgY29uc3RfY2FzdDxTZXRTdGF0ZSo+KHRoaXMpLT5t
X3N0YXRlQ2hhbmdlLm1fc3RhdGUuZmlsbFBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUobWFrZVJl
ZigqZmlsbFBhdHRlcm5JbWFnZSksIG1fZmlsbFBhdHRlcm4ucGFyYW1ldGVycyk7CiAgICAgbV9z
dGF0ZUNoYW5nZS5hcHBseShjb250ZXh0KTsKIH0KIApAQCAtMTA4OSwxOTcgKzEwODksMTIgQEAg
c3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEl0ZW1UeXBlIHR5
cGUpCiAgICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBJdGVtSGFuZGxlIGl0ZW0pCi17Ci0gICAgdHMgPDwgaXRlbS50eXBlKCk7Ci0KLSAg
ICBzd2l0Y2ggKGl0ZW0udHlwZSgpKSB7Ci0gICAgY2FzZSBJdGVtVHlwZTo6VHJhbnNsYXRlOgot
ICAgICAgICB0cyA8PCBpdGVtLmdldDxUcmFuc2xhdGU+KCk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgSXRlbVR5cGU6OlJvdGF0ZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Um90YXRlPigp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTY2FsZToKLSAgICAgICAgdHMg
PDwgaXRlbS5nZXQ8U2NhbGU+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6
OlNldENUTToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0Q1RNPigpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTToKLSAgICAgICAgdHMgPDwgaXRl
bS5nZXQ8Q29uY2F0ZW5hdGVDVE0+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5
cGU6OlNldElubGluZUZpbGxHcmFkaWVudDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0SW5s
aW5lRmlsbEdyYWRpZW50PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpT
ZXRJbmxpbmVGaWxsQ29sb3I6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldElubGluZUZpbGxD
b2xvcj4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lU3Ry
b2tlQ29sb3I6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldElubGluZVN0cm9rZUNvbG9yPigp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6
Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldFN0cm9rZVRoaWNrbmVzcz4oKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6Ci0gICAgICAgIHRzIDw8IGl0ZW0u
Z2V0PFNldFN0YXRlPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRM
aW5lQ2FwOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRMaW5lQ2FwPigpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lRGFzaDoKLSAgICAgICAgdHMgPDwgaXRl
bS5nZXQ8U2V0TGluZURhc2g+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6
OlNldExpbmVKb2luOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRMaW5lSm9pbj4oKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICAgICAg
dHMgPDwgaXRlbS5nZXQ8U2V0TWl0ZXJMaW1pdD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6Q2xpcDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q2xpcD4oKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dDoKLSAgICAgICAgdHMgPDwgaXRl
bS5nZXQ8Q2xpcE91dD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xp
cFRvSW1hZ2VCdWZmZXI6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENsaXBUb0ltYWdlQnVmZmVy
PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgot
ICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGlwT3V0VG9QYXRoPigpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q2xp
cFBhdGg+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxCZWdpbkNsaXBUb0RyYXdp
bmdDb21tYW5kcz4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxFbmRDbGlwVG9EcmF3
aW5nQ29tbWFuZHM+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdH
bHlwaHM6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdHbHlwaHM+KCk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKLSAgICAgICAgdHMgPDwg
aXRlbS5nZXQ8RHJhd0ltYWdlQnVmZmVyPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdOYXRp
dmVJbWFnZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRl
cm46Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdQYXR0ZXJuPigpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8
RHJhd1JlY3Q+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5l
OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3TGluZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmVzRm9yVGV4dDoKLSAgICAgICAgdHMgPDwgaXRlbS5n
ZXQ8RHJhd0xpbmVzRm9yVGV4dD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJh
d0RvdHNGb3JEb2N1bWVudE1hcmtlcj4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6RHJhd0VsbGlwc2U6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdFbGxpcHNlPigp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDoKLSAgICAgICAg
dHMgPDwgaXRlbS5nZXQ8RHJhd1BhdGg+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3Rm9j
dXNSaW5nUGF0aD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0Zv
Y3VzUmluZ1JlY3RzOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3Rm9jdXNSaW5nUmVjdHM+
KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0OgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxGaWxsUmVjdD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29sb3I6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxS
ZWN0V2l0aENvbG9yPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxs
UmVjdFdpdGhHcmFkaWVudDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RmlsbFJlY3RXaXRoR3Jh
ZGllbnQ+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxDb21wb3Np
dGVkUmVjdDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RmlsbENvbXBvc2l0ZWRSZWN0PigpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUm91bmRlZFJlY3Q6Ci0gICAg
ICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxSb3VuZGVkUmVjdD4oKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU6Ci0gICAgICAgIHRzIDw8
IGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlPigpOwotICAgICAgICBicmVhazsKLSNp
ZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsSW5saW5l
UGF0aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RmlsbElubGluZVBhdGg+KCk7Ci0gICAgICAg
IGJyZWFrOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFBhdGg6Ci0gICAgICAgIHRz
IDw8IGl0ZW0uZ2V0PEZpbGxQYXRoPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpGaWxsRWxsaXBzZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RmlsbEVsbGlwc2U+KCk7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkZsdXNoQ29udGV4dDoKLSAgICAg
ICAgdHMgPDwgaXRlbS5nZXQ8Rmx1c2hDb250ZXh0PigpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6Ci0g
ICAgICAgIHRzIDw8IGl0ZW0uZ2V0PE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1
ZmZlcj4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRD
aGFuZ2VJdGVtQnVmZmVyOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxNZXRhQ29tbWFuZENoYW5n
ZUl0ZW1CdWZmZXI+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkdldElt
YWdlRGF0YToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8R2V0SW1hZ2VEYXRhPigpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6Ci0gICAgICAgIHRzIDw8
IGl0ZW0uZ2V0PFB1dEltYWdlRGF0YT4oKTsKLSAgICAgICAgYnJlYWs7Ci0jaWYgRU5BQkxFKFZJ
REVPKQotICAgIGNhc2UgSXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRpYToKLSAgICAgICAgdHMg
PDwgaXRlbS5nZXQ8UGFpbnRGcmFtZUZvck1lZGlhPigpOwotICAgICAgICBicmVhazsKLSNlbmRp
ZgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVJlY3Q6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0
PFN0cm9rZVJlY3Q+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9r
ZUxpbmU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFN0cm9rZUxpbmU+KCk7Ci0gICAgICAgIGJy
ZWFrOwotI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OlN0
cm9rZUlubGluZVBhdGg6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFN0cm9rZUlubGluZVBhdGg+
KCk7Ci0gICAgICAgIGJyZWFrOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUGF0
aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U3Ryb2tlUGF0aD4oKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlRWxsaXBzZToKLSAgICAgICAgdHMgPDwgaXRlbS5n
ZXQ8U3Ryb2tlRWxsaXBzZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
Q2xlYXJSZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGVhclJlY3Q+KCk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6Ci0gICAg
ICAgIHRzIDw8IGl0ZW0uZ2V0PEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI+KCk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RGV2aWNlU2NhbGVGYWN0b3I6Ci0gICAgICAg
IHRzIDw8IGl0ZW0uZ2V0PEFwcGx5RGV2aWNlU2NhbGVGYWN0b3I+KCk7Ci0gICAgICAgIGJyZWFr
OwotCi0gICAgLy8gSXRlbXMgd2l0aCBubyBhZGRpdGlvbmFsIGRhdGEuCi0gICAgY2FzZSBJdGVt
VHlwZTo6U2F2ZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0b3JlOgotICAgIGNhc2UgSXRlbVR5
cGU6OkVuZFRyYW5zcGFyZW5jeUxheWVyOgotI2lmIFVTRShDRykKLSAgICBjYXNlIEl0ZW1UeXBl
OjpBcHBseVN0cm9rZVBhdHRlcm46Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlGaWxsUGF0dGVy
bjoKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyU2hhZG93OgotICAgICAgICBicmVh
azsKLSAgICB9CitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBE
aXNwbGF5TGlzdEl0ZW0mIGl0ZW0pCit7CisgICAgV1RGOjp2aXNpdChbJl0oY29uc3QgYXV0byYg
ZGlzcGxheUxpc3RJdGVtKSB7CisgICAgICAgIHRzIDw8IGRpc3BsYXlMaXN0SXRlbS5pdGVtVHlw
ZTsKKyAgICAgICAgdHMgPDwgZGlzcGxheUxpc3RJdGVtOworICAgIH0sIGl0ZW0pOwogICAgIHJl
dHVybiB0czsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggMWViODE1
NmQxNjYzNzhlYmYwNWVlNmJjMmNlZTEwMWY5MmUyNmM2YS4uZmQ2MTNkMTBhOTUxMWY2MTY2NThl
NGMzNjdjOTI1ZGVhZWZkNzRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBA
IC0yODMsNyArMjgzLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgT3B0aW9uYWw8U2V0U3RhdGU+IGRlY29kZShEZWNvZGVyJik7CiAKLSAgICB2b2lkIGFw
cGx5KEdyYXBoaWNzQ29udGV4dCYsIE5hdGl2ZUltYWdlKiBzdHJva2VQYXR0ZXJuSW1hZ2UsIE5h
dGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlKTsKKyAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29u
dGV4dCYsIE5hdGl2ZUltYWdlKiBzdHJva2VQYXR0ZXJuSW1hZ2UsIE5hdGl2ZUltYWdlKiBmaWxs
UGF0dGVybkltYWdlKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgUGF0dGVybkRhdGEg
ewpAQCAtOTE3LDcgKzkxNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aXNJbmxpbmVJdGVtID0gZmFsc2U7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzRHJhd2lu
Z0l0ZW0gPSB0cnVlOwogCi0gICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGZvbnRJZGVu
dGlmaWVyKCkgeyByZXR1cm4gbV9mb250SWRlbnRpZmllcjsgfQorICAgIFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciBmb250SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fZm9udElkZW50
aWZpZXI7IH0KICAgICBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvcigpIGNvbnN0IHsgcmV0
dXJuIG1fbG9jYWxBbmNob3I7IH0KICAgICBGbG9hdFBvaW50IGFuY2hvclBvaW50KCkgY29uc3Qg
eyByZXR1cm4gbV9sb2NhbEFuY2hvcjsgfQogICAgIGNvbnN0IFZlY3RvcjxHbHlwaEJ1ZmZlckds
eXBoLCAxNj4mIGdseXBocygpIGNvbnN0IHsgcmV0dXJuIG1fZ2x5cGhzOyB9CkBAIC0yMzU2LDEw
ICsyMzU2LDMzIEBAIHVzaW5nIERpc3BsYXlMaXN0SXRlbSA9IFZhcmlhbnQKICNlbmRpZgogPjsK
IAordGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lID0gdm9pZD4gaW5saW5lIGNvbnN0ZXhwciBi
b29sIEhhc0lzVmFsaWQgPSBmYWxzZTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBjb25z
dGV4cHIgYm9vbCBIYXNJc1ZhbGlkPFQsIHN0ZDo6dm9pZF90PGRlY2x0eXBlKHN0ZDo6ZGVjbHZh
bDxUPigpLmlzVmFsaWQoKSk+PiA9IHRydWU7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEl0ZW0+IHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8IUhhc0lzVmFsaWQ8SXRlbT4sIGJvb2w+IGlzVmFsaWQo
Y29uc3QgSXRlbSYpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IEl0ZW0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8SGFzSXNWYWxpZDxJdGVtPiwgYm9vbD4g
aXNWYWxpZChjb25zdCBJdGVtJiBpdGVtKQoreworICAgIHJldHVybiBpdGVtLmlzVmFsaWQoKTsK
K30KKworV0VCQ09SRV9FWFBPUlQgSXRlbVR5cGUgZGlzcGxheUxpc3RJdGVtVHlwZShjb25zdCBE
aXNwbGF5TGlzdEl0ZW0mKTsKKwogc2l6ZV90IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRl
cyhjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsKLUl0ZW1UeXBlIGRpc3BsYXlMaXN0SXRlbVR5cGUo
Y29uc3QgRGlzcGxheUxpc3RJdGVtJik7CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYsIEl0ZW1IYW5kbGUpOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIHNpemVf
dCBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXNGb3JJdGVtID0gc2l6ZW9mKHVpbnQ2NF90
KSArIHJvdW5kVXBUb011bHRpcGxlT2Y8YWxpZ25vZih1aW50NjRfdCk+KHNpemVvZihUKSk7CisK
K1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IERpc3BsYXlMaXN0SXRl
bSYpOworCitpbmxpbmUgY29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbShjb25zdCBEaXNwbGF5
TGlzdEl0ZW0mIGRpc3BsYXlMaXN0SXRlbSkKK3sKKyAgICByZXR1cm4gV1RGOjp2aXNpdChbXShj
b25zdCBhdXRvJiBkaXNwbGF5TGlzdEl0ZW0pIHsKKyAgICAgICAgcmV0dXJuIGRpc3BsYXlMaXN0
SXRlbS5pc0RyYXdpbmdJdGVtOworICAgIH0sIGRpc3BsYXlMaXN0SXRlbSk7Cit9CiAKIH0gLy8g
bmFtZXNwYWNlIERpc3BsYXlMaXN0CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHAKaW5kZXggZTc2Njc3MmJlZWFjMTY1NjZkMTRi
NDQwZGRiMjY2ZWM3ZDY2NmNjMC4uODI2ZDNhMTBhZjM4MWE2NjRhODcxNGFmODIwMDBmZWRhYmVi
NTA4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcApAQCAtMjks
MTA4ICsyOSwxMjUgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlz
dCB7CiAKLWJvb2wgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjphdEVuZCgpIGNvbnN0CitEaXNwbGF5
TGlzdDo6SXRlcmF0b3I6Okl0ZXJhdG9yKGNvbnN0IERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwg
SW1tZWRpYXRlbHlNb3ZlVG9FbmQgaW1tZWRpYXRlbHlNb3ZlVG9FbmQpCisgICAgOiBtX2Rpc3Bs
YXlMaXN0KGRpc3BsYXlMaXN0KQogewotICAgIGlmIChtX2Rpc3BsYXlMaXN0LmlzRW1wdHkoKSB8
fCAhbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGF1dG8mIGl0ZW1zID0g
Kml0ZW1CdWZmZXIoKTsKLSAgICBhdXRvIGVuZEN1cnNvciA9IGl0ZW1zLm1fd3JpdGFibGVCdWZm
ZXIuZGF0YSArIGl0ZW1zLm1fd3JpdHRlbk51bWJlck9mQnl0ZXM7Ci0gICAgcmV0dXJuIG1fY3Vy
c29yID09IGVuZEN1cnNvcjsKKyAgICBpZiAoaW1tZWRpYXRlbHlNb3ZlVG9FbmQgPT0gSW1tZWRp
YXRlbHlNb3ZlVG9FbmQ6OlllcykgeworICAgICAgICBpZiAoYXV0byBpdGVtcyA9IGl0ZW1CdWZm
ZXIoKSkgeworICAgICAgICAgICAgbV9yZWFkT25seUJ1ZmZlckluZGV4ID0gaXRlbXMtPm1fcmVh
ZE9ubHlCdWZmZXJzLnNpemUoKTsKKyAgICAgICAgICAgIG1fY3Vyc29yID0gZW5kT2ZDdXJyZW50
QnVmZmVyKCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgbW92ZUN1cnNvclRvU3Rh
cnRPZkN1cnJlbnRCdWZmZXIoKTsKIH0KIAotYXV0byBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OnVw
ZGF0ZUN1cnJlbnREcmF3aW5nSXRlbUV4dGVudChJdGVtVHlwZSBpdGVtVHlwZSkgLT4gRXh0ZW50
VXBkYXRlUmVzdWx0CisjaWYgQVNTRVJUX0VOQUJMRUQKK2Jvb2wgRGlzcGxheUxpc3Q6Okl0ZXJh
dG9yOjphdEVuZCgpIGNvbnN0CiB7Ci0gICAgYXV0byYgZXh0ZW50cyA9IG1fZGlzcGxheUxpc3Qu
bV9kcmF3aW5nSXRlbUV4dGVudHM7Ci0gICAgaWYgKGV4dGVudHMuaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm4gRXh0ZW50VXBkYXRlUmVzdWx0OjpTdWNjZXNzOwotCi0gICAgaWYgKCFpc0RyYXdp
bmdJdGVtKGl0ZW1UeXBlKSkgewotICAgICAgICBtX2N1cnJlbnRFeHRlbnQgPSBXVEY6Om51bGxv
cHQ7Ci0gICAgICAgIHJldHVybiBFeHRlbnRVcGRhdGVSZXN1bHQ6OlN1Y2Nlc3M7Ci0gICAgfQor
ICAgIGlmIChtX2Rpc3BsYXlMaXN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CiAK
LSAgICBpZiAobV9kcmF3aW5nSXRlbUluZGV4ID49IGV4dGVudHMuc2l6ZSgpKQotICAgICAgICBy
ZXR1cm4gRXh0ZW50VXBkYXRlUmVzdWx0OjpGYWlsdXJlOworICAgIGNvbnN0IGF1dG8qIGl0ZW1z
ID0gaXRlbUJ1ZmZlcigpOworICAgIGlmICghaXRlbXMpCisgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgbV9jdXJyZW50RXh0ZW50ID0gZXh0ZW50c1ttX2RyYXdpbmdJdGVtSW5kZXhdOwotICAg
IG1fZHJhd2luZ0l0ZW1JbmRleCsrOwotICAgIHJldHVybiBFeHRlbnRVcGRhdGVSZXN1bHQ6OlN1
Y2Nlc3M7CisgICAgYXV0byBlbmRDdXJzb3IgPSBpdGVtcy0+bV93cml0YWJsZUJ1ZmZlci5kYXRh
ICsgaXRlbXMtPm1fd3JpdHRlbk51bWJlck9mQnl0ZXM7CisgICAgcmV0dXJuIG1fY3Vyc29yID09
IGVuZEN1cnNvcjsKIH0KKyNlbmRpZgogCi12b2lkIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6dXBk
YXRlQ3VycmVudEl0ZW0oKQorYXV0byBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yKigp
IGNvbnN0IC0+IE9wdGlvbmFsPFZhbHVlPgogewotICAgIGNsZWFyQ3VycmVudEl0ZW0oKTsKLQot
ICAgIGlmIChhdEVuZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvJiBpdGVtcyA9ICpp
dGVtQnVmZmVyKCk7Ci0gICAgYXV0byBpdGVtVHlwZSA9IHN0YXRpY19jYXN0PEl0ZW1UeXBlPiht
X2N1cnNvclswXSk7CisgICAgQVNTRVJUKCFhdEVuZCgpKTsKKyAgICBBU1NFUlQoIW1fY3VycmVu
dEl0ZW1JbmZvKTsKIAotICAgIGlmICh1cGRhdGVDdXJyZW50RHJhd2luZ0l0ZW1FeHRlbnQoaXRl
bVR5cGUpID09IEV4dGVudFVwZGF0ZVJlc3VsdDo6RmFpbHVyZSkgewotICAgICAgICBtX2lzVmFs
aWQgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBhdXRvIGN1cnJlbnRJdGVt
SW5mbyA9IGN1cnJlbnRJdGVtKCk7CisgICAgaWYgKCFjdXJyZW50SXRlbUluZm8pCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBhdXRvIHBhZGRlZFNpemVPZlR5cGVBbmRJdGVt
ID0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKGl0ZW1UeXBlKTsKLSAgICBtX2N1cnJl
bnRCdWZmZXJGb3JJdGVtID0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW0gPD0gc2l6ZU9mRml4ZWRC
dWZmZXJGb3JDdXJyZW50SXRlbSA/IG1fZml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbSA6IHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGZhc3RNYWxsb2MocGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW0p
KTsKLSAgICBpZiAoaXNJbmxpbmVJdGVtKGl0ZW1UeXBlKSkgewotICAgICAgICBpZiAoVU5MSUtF
TFkoIUl0ZW1IYW5kbGUgeyBtX2N1cnNvciB9LnNhZmVDb3B5KHsgbV9jdXJyZW50QnVmZmVyRm9y
SXRlbSB9KSkpCi0gICAgICAgICAgICBtX2lzVmFsaWQgPSBmYWxzZTsKKyAgICBtX2N1cnJlbnRJ
dGVtSW5mbyA9IHt7IGN1cnJlbnRJdGVtSW5mby0+c2l6ZUluQnVmZmVyLCBjdXJyZW50SXRlbUlu
Zm8tPmlzRHJhd2luZ0l0ZW0gfX07CiAKLSAgICAgICAgbV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZl
ciA9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGF1dG8q
IGNsaWVudCA9IGl0ZW1zLm1fcmVhZGluZ0NsaWVudDsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQo
Y2xpZW50KTsKLSAgICAgICAgYXV0byBkYXRhTGVuZ3RoID0gcmVpbnRlcnByZXRfY2FzdDx1aW50
NjRfdCo+KG1fY3Vyc29yKVsxXTsKLSAgICAgICAgYXV0byogc3RhcnRPZkRhdGEgPSBtX2N1cnNv
ciArIDIgKiBzaXplb2YodWludDY0X3QpOwotICAgICAgICBhdXRvIGRlY29kZWRJdGVtSGFuZGxl
ID0gY2xpZW50LT5kZWNvZGVJdGVtKHN0YXJ0T2ZEYXRhLCBkYXRhTGVuZ3RoLCBpdGVtVHlwZSwg
bV9jdXJyZW50QnVmZmVyRm9ySXRlbSk7Ci0gICAgICAgIGlmIChVTkxJS0VMWSghZGVjb2RlZEl0
ZW1IYW5kbGUpKQotICAgICAgICAgICAgbV9pc1ZhbGlkID0gZmFsc2U7CisgICAgT3B0aW9uYWw8
RmxvYXRSZWN0PiBjdXJyZW50RXh0ZW50OworICAgIGlmIChjdXJyZW50SXRlbUluZm8tPmlzRHJh
d2luZ0l0ZW0gJiYgIW1fZGlzcGxheUxpc3QubV9kcmF3aW5nSXRlbUV4dGVudHMuaXNFbXB0eSgp
KQorICAgICAgICBjdXJyZW50RXh0ZW50ID0gbV9kaXNwbGF5TGlzdC5tX2RyYXdpbmdJdGVtRXh0
ZW50c1ttX2RyYXdpbmdJdGVtSW5kZXhdOwogCi0gICAgICAgIG1fY3VycmVudEJ1ZmZlckZvckl0
ZW1bMF0gPSBzdGF0aWNfY2FzdDx1aW50OF90PihpdGVtVHlwZSk7Ci0gICAgICAgIG1fY3VycmVu
dEl0ZW1TaXplSW5CdWZmZXIgPSAyICogc2l6ZW9mKHVpbnQ2NF90KSArIHJvdW5kVXBUb011bHRp
cGxlT2YoYWxpZ25vZih1aW50NjRfdCksIGRhdGFMZW5ndGgpOwotICAgIH0KKyAgICByZXR1cm4g
e3sgY3VycmVudEl0ZW1JbmZvLT5kaXNwbGF5TGlzdEl0ZW0sIFdURk1vdmUoY3VycmVudEV4dGVu
dCksIGN1cnJlbnRJdGVtSW5mby0+c2l6ZUluQnVmZmVyIH19OwogfQogCi12b2lkIERpc3BsYXlM
aXN0OjpJdGVyYXRvcjo6YWR2YW5jZSgpCit2b2lkIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3Bl
cmF0b3IrKygpCiB7Ci0gICAgaWYgKGF0RW5kKCkpCi0gICAgICAgIHJldHVybjsKKyAgICBBU1NF
UlQoIWF0RW5kKCkpOworICAgIEFTU0VSVChtX2N1cnJlbnRJdGVtSW5mbyk7CisKKyAgICBpZiAo
bV9jdXJyZW50SXRlbUluZm8tPmlzRHJhd2luZ0l0ZW0pCisgICAgICAgICsrbV9kcmF3aW5nSXRl
bUluZGV4OwogCi0gICAgbV9jdXJzb3IgKz0gbV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlcjsKKyAg
ICBtX2N1cnNvciArPSBtX2N1cnJlbnRJdGVtSW5mby0+c2l6ZUluQnVmZmVyOwogCi0gICAgaWYg
KG1fY3Vyc29yID09IG1fY3VycmVudEVuZE9mQnVmZmVyICYmIG1fcmVhZE9ubHlCdWZmZXJJbmRl
eCA8IGl0ZW1CdWZmZXIoKS0+bV9yZWFkT25seUJ1ZmZlcnMuc2l6ZSgpKSB7CisgICAgaWYgKG1f
Y3Vyc29yID09IGVuZE9mQ3VycmVudEJ1ZmZlcigpICYmIG1fcmVhZE9ubHlCdWZmZXJJbmRleCA8
IGl0ZW1CdWZmZXIoKS0+bV9yZWFkT25seUJ1ZmZlcnMuc2l6ZSgpKSB7CiAgICAgICAgIG1fcmVh
ZE9ubHlCdWZmZXJJbmRleCsrOwogICAgICAgICBtb3ZlQ3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1
ZmZlcigpOwogICAgIH0KIAotICAgIHVwZGF0ZUN1cnJlbnRJdGVtKCk7CisgICAgbV9jdXJyZW50
SXRlbUluZm8gPSB7IH07CiB9CiAKLXZvaWQgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpjbGVhckN1
cnJlbnRJdGVtKCkKK2F1dG8gRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpjdXJyZW50SXRlbSgpIGNv
bnN0IC0+IE9wdGlvbmFsPEN1cnJlbnRJdGVtUmVzdWx0PgogewotICAgIGF1dG8gaXRlbXMgPSBp
dGVtQnVmZmVyKCk7Ci0gICAgaWYgKGl0ZW1zICYmIGl0ZW1zLT5tX3JlYWRpbmdDbGllbnQgJiYg
bV9jdXJyZW50QnVmZmVyRm9ySXRlbSkgewotICAgICAgICBpZiAoTElLRUxZKG1faXNWYWxpZCkp
Ci0gICAgICAgICAgICBJdGVtSGFuZGxlIHsgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSB9LmRlc3Ry
b3koKTsKLQotICAgICAgICBpZiAoVU5MSUtFTFkobV9jdXJyZW50QnVmZmVyRm9ySXRlbSAhPSBt
X2ZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW0pKQotICAgICAgICAgICAgZmFzdEZyZWUobV9jdXJy
ZW50QnVmZmVyRm9ySXRlbSk7Ci0gICAgfQorICAgIE9wdGlvbmFsPEN1cnJlbnRJdGVtUmVzdWx0
PiByZXN1bHQ7CisgICAgYnJpZ2FuZDo6Zm9yX2VhY2g8RGlzcGxheUxpc3RJdGVtPihbJl0oYXV0
byYmIHR5cGUpIHsKKyAgICAgICAgdXNpbmcgRGlzcGxheUxpc3RJdGVtVHlwZSA9IHR5cGVuYW1l
IFdURjo6UmVtb3ZlQ1ZBbmRSZWZlcmVuY2U8ZGVjbHR5cGUodHlwZSk+Ojp0eXBlOjp0eXBlOwor
CisgICAgICAgIGNvbnN0IGF1dG8qIGVuZE9mQ3VycmVudEJ1ZmZlciA9IHRoaXMtPmVuZE9mQ3Vy
cmVudEJ1ZmZlcigpOworCisgICAgICAgIC8vIFRoZSBmaXJzdCBieXRlIGluIHRoZSBidWZmZXIg
aXMgdGhlIHR5cGUgaWRlbnRpZmllci4KKyAgICAgICAgaWYgKG1fY3Vyc29yICsgMSA+IGVuZE9m
Q3VycmVudEJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgYXV0byBpdGVtVHlw
ZSA9IHN0YXRpY19jYXN0PEl0ZW1UeXBlPihtX2N1cnNvclswXSk7CisgICAgICAgIGlmIChpdGVt
VHlwZSAhPSBEaXNwbGF5TGlzdEl0ZW1UeXBlOjppdGVtVHlwZSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAvLyBJbmxpbmUgaXRlbXMgYXJlIGp1c3QgcGxhY2VtZW50LW5ldydlZCBk
aXJlY3RseSBpbnRvIHRoZSBidWZmZXIsIHNvIHdlIGNhbiBqdXN0IHVzZSByZWludGVycHJldF9j
YXN0LgorICAgICAgICBpZiBjb25zdGV4cHIgKERpc3BsYXlMaXN0SXRlbVR5cGU6OmlzSW5saW5l
SXRlbSkgeworICAgICAgICAgICAgYXV0byBjdXJyZW50SXRlbVNpemVJbkJ1ZmZlciA9IHBhZGRl
ZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlc0Zvckl0ZW08RGlzcGxheUxpc3RJdGVtVHlwZT47Cisg
ICAgICAgICAgICBpZiAobV9jdXJzb3IgKyBjdXJyZW50SXRlbVNpemVJbkJ1ZmZlciA+IGVuZE9m
Q3VycmVudEJ1ZmZlcikKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjb25z
dCBhdXRvJiBpdGVtID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRGlzcGxheUxpc3RJdGVtVHlw
ZSo+KG1fY3Vyc29yICsgc2l6ZW9mKHVpbnQ2NF90KSk7CisgICAgICAgICAgICBpZiAoIWlzVmFs
aWQoaXRlbSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgQVNTRVJUKCFy
ZXN1bHQpOworICAgICAgICAgICAgcmVzdWx0ID0ge3sgaXRlbSwgY3VycmVudEl0ZW1TaXplSW5C
dWZmZXIsIERpc3BsYXlMaXN0SXRlbVR5cGU6OmlzRHJhd2luZ0l0ZW0gfX07CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBOb24taW5saW5lIGl0ZW1zIGFyZSBk
ZXNlcmlhbGl6ZWQgdmlhIHRoZSByZWFkaW5nQ2xpZW50LgorICAgICAgICBhdXRvKiBjbGllbnQg
PSBpdGVtQnVmZmVyKCktPm1fcmVhZGluZ0NsaWVudDsKKyAgICAgICAgaWYgKCFjbGllbnQpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gRm9yIG5vbi1pbmxpbmUgaXRlbXMsIHRo
ZSBkYXRhIGlzIGxhaWQgb3V0IGFzIHN1Y2g6CisgICAgICAgIC8vCisgICAgICAgIC8vICAgQnl0
ZSAwICAgQnl0ZSAxICAgQnl0ZSAyICAgQnl0ZSAzICAgQnl0ZSA0ICAgQnl0ZSA1ICAgQnl0ZSA2
ICAgQnl0ZSA3ICAgQnl0ZSA4ICAgQnl0ZSA5ICAgQnl0ZSBBICAgQnl0ZSBCICAgQnl0ZSBDICAg
Qnl0ZSBEICAgQnl0ZSBFICAgQnl0ZSBGCisgICAgICAgIC8vICstLS0tLS0tLSstLS0tLS0tLSst
LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0t
LS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t
LSstLS0tLS0tLSstLS0tLS0tLSsKKyAgICAgICAgLy8gfCAgVHlwZSAgfCA8LS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIE5vdGhpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4gfCA8LS0tLS0t
LS0tLS0tLS0tLS0tLS0tIEJ5dGUgbGVuZ3RoIG9mIHBheWxvYWQgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLT4gfCBQYXlsb2FkIC4uLgorICAgICAgICAvLyArLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t
LS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0r
LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0t
LS0tLS0rLS0tLS0tLS0rCisKKyAgICAgICAgaWYgKG1fY3Vyc29yICsgMiAqIHNpemVvZih1aW50
NjRfdCkgPiBlbmRPZkN1cnJlbnRCdWZmZXIpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICBt
X2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0gMDsKLSAgICBtX2N1cnJlbnRCdWZmZXJGb3JJdGVt
ID0gbnVsbHB0cjsKLX0KLQotdm9pZCBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om1vdmVUb0VuZCgp
Ci17Ci0gICAgaWYgKGF1dG8gaXRlbXMgPSBpdGVtQnVmZmVyKCkpIHsKLSAgICAgICAgbV9jdXJz
b3IgPSBpdGVtcy0+bV93cml0YWJsZUJ1ZmZlci5kYXRhICsgaXRlbXMtPm1fd3JpdHRlbk51bWJl
ck9mQnl0ZXM7Ci0gICAgICAgIG1fY3VycmVudEVuZE9mQnVmZmVyID0gbV9jdXJzb3I7Ci0gICAg
ICAgIG1fcmVhZE9ubHlCdWZmZXJJbmRleCA9IGl0ZW1zLT5tX3JlYWRPbmx5QnVmZmVycy5zaXpl
KCk7Ci0gICAgfQorICAgICAgICBhdXRvIGRhdGFMZW5ndGggPSByZWludGVycHJldF9jYXN0PHVp
bnQ2NF90Kj4obV9jdXJzb3IpWzFdOworICAgICAgICBjb25zdCBhdXRvKiBzdGFydE9mRGF0YSA9
IG1fY3Vyc29yICsgMiAqIHNpemVvZih1aW50NjRfdCk7CisgICAgICAgIGlmIChzdGFydE9mRGF0
YSArIGRhdGFMZW5ndGggPiBlbmRPZkN1cnJlbnRCdWZmZXIpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgYXV0byBpdGVtID0gY2xpZW50LT5kZWNvZGVJdGVtKHN0YXJ0T2ZEYXRhLCBk
YXRhTGVuZ3RoLCBpdGVtVHlwZSk7CisgICAgICAgIGlmICghaXRlbSB8fCAhaXNWYWxpZChpdGVt
LnZhbHVlKCkpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBzdGQ6OnNpemVfdCBjdXJy
ZW50SXRlbVNpemVJbkJ1ZmZlciA9IDIgKiBzaXplb2YodWludDY0X3QpICsgcm91bmRVcFRvTXVs
dGlwbGVPZjxhbGlnbm9mKHVpbnQ2NF90KT4oZGF0YUxlbmd0aCk7CisgICAgICAgIEFTU0VSVCgh
cmVzdWx0KTsKKyAgICAgICAgcmVzdWx0ID0ge3sgV1RGTW92ZShpdGVtLnZhbHVlKCkpLCBjdXJy
ZW50SXRlbVNpemVJbkJ1ZmZlciwgRGlzcGxheUxpc3RJdGVtVHlwZTo6aXNEcmF3aW5nSXRlbSB9
fTsKKyAgICB9KTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIERpc3BsYXlMaXN0OjpJ
dGVyYXRvcjo6bW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZmZXIoKQpAQCAtMTQzLDEyICsx
NjAsMjYgQEAgdm9pZCBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om1vdmVDdXJzb3JUb1N0YXJ0T2ZD
dXJyZW50QnVmZmVyKCkKICAgICBpZiAobV9yZWFkT25seUJ1ZmZlckluZGV4IDwgbnVtYmVyT2ZS
ZWFkT25seUJ1ZmZlcnMpIHsKICAgICAgICAgYXV0byYgbmV4dEJ1ZmZlckhhbmRsZSA9IGl0ZW1z
LT5tX3JlYWRPbmx5QnVmZmVyc1ttX3JlYWRPbmx5QnVmZmVySW5kZXhdOwogICAgICAgICBtX2N1
cnNvciA9IG5leHRCdWZmZXJIYW5kbGUuZGF0YTsKLSAgICAgICAgbV9jdXJyZW50RW5kT2ZCdWZm
ZXIgPSBtX2N1cnNvciArIG5leHRCdWZmZXJIYW5kbGUuY2FwYWNpdHk7Ci0gICAgfSBlbHNlIGlm
IChtX3JlYWRPbmx5QnVmZmVySW5kZXggPT0gbnVtYmVyT2ZSZWFkT25seUJ1ZmZlcnMpIHsKKyAg
ICB9IGVsc2UgeworICAgICAgICBBU1NFUlQobV9yZWFkT25seUJ1ZmZlckluZGV4ID09IG51bWJl
ck9mUmVhZE9ubHlCdWZmZXJzKTsKICAgICAgICAgbV9jdXJzb3IgPSBpdGVtcy0+bV93cml0YWJs
ZUJ1ZmZlci5kYXRhOwotICAgICAgICBtX2N1cnJlbnRFbmRPZkJ1ZmZlciA9IG1fY3Vyc29yICsg
aXRlbXMtPm1fd3JpdHRlbk51bWJlck9mQnl0ZXM7CiAgICAgfQogfQogCit1aW50OF90KiBEaXNw
bGF5TGlzdDo6SXRlcmF0b3I6OmVuZE9mQ3VycmVudEJ1ZmZlcigpIGNvbnN0Cit7CisgICAgYXV0
byBpdGVtcyA9IGl0ZW1CdWZmZXIoKTsKKyAgICBBU1NFUlQoaXRlbXMpOworCisgICAgYXV0byBu
dW1iZXJPZlJlYWRPbmx5QnVmZmVycyA9IGl0ZW1zLT5tX3JlYWRPbmx5QnVmZmVycy5zaXplKCk7
CisgICAgaWYgKG1fcmVhZE9ubHlCdWZmZXJJbmRleCA8IG51bWJlck9mUmVhZE9ubHlCdWZmZXJz
KSB7CisgICAgICAgIGF1dG8mIGN1cnJlbnRCdWZmZXJIYW5kbGUgPSBpdGVtcy0+bV9yZWFkT25s
eUJ1ZmZlcnNbbV9yZWFkT25seUJ1ZmZlckluZGV4XTsKKyAgICAgICAgcmV0dXJuIGN1cnJlbnRC
dWZmZXJIYW5kbGUuZGF0YSArIGN1cnJlbnRCdWZmZXJIYW5kbGUuY2FwYWNpdHk7CisgICAgfQor
CisgICAgQVNTRVJUKG1fcmVhZE9ubHlCdWZmZXJJbmRleCA9PSBudW1iZXJPZlJlYWRPbmx5QnVm
ZmVycyk7CisgICAgcmV0dXJuIGl0ZW1zLT5tX3dyaXRhYmxlQnVmZmVyLmRhdGEgKyBpdGVtcy0+
bV93cml0dGVuTnVtYmVyT2ZCeXRlczsKK30KKwogfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZXJhdG9yLmgKaW5kZXggMGNiZjVmMzY5NTc1OGIyMWEzNjdjN2Q5ODM2MGJjMTJmM2E2
MGIxYy4uNTgyYTA3OTNjMjZkNTgyMjk4YTRmZjFkZGE3YjY4NjI2YTk3YmQ2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5oCkBAIC0zNCw3MCArMzQsNDYgQEAgbmFtZXNw
YWNlIERpc3BsYXlMaXN0IHsKIGNsYXNzIERpc3BsYXlMaXN0OjpJdGVyYXRvciB7CiBwdWJsaWM6
CiAgICAgZW51bSBjbGFzcyBJbW1lZGlhdGVseU1vdmVUb0VuZCB7IE5vLCBZZXMgfTsKLSAgICBJ
dGVyYXRvcihjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIEltbWVkaWF0ZWx5TW92ZVRv
RW5kIGltbWVkaWF0ZWx5TW92ZVRvRW5kID0gSW1tZWRpYXRlbHlNb3ZlVG9FbmQ6Ok5vKQotICAg
ICAgICA6IG1fZGlzcGxheUxpc3QoZGlzcGxheUxpc3QpCi0gICAgewotICAgICAgICBpZiAoaW1t
ZWRpYXRlbHlNb3ZlVG9FbmQgPT0gSW1tZWRpYXRlbHlNb3ZlVG9FbmQ6OlllcykKLSAgICAgICAg
ICAgIG1vdmVUb0VuZCgpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1vdmVDdXJzb3JU
b1N0YXJ0T2ZDdXJyZW50QnVmZmVyKCk7Ci0gICAgICAgICAgICB1cGRhdGVDdXJyZW50SXRlbSgp
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgfkl0ZXJhdG9yKCkKLSAgICB7Ci0gICAgICAgIGNs
ZWFyQ3VycmVudEl0ZW0oKTsKLSAgICB9CisgICAgSXRlcmF0b3IoY29uc3QgRGlzcGxheUxpc3Qm
LCBJbW1lZGlhdGVseU1vdmVUb0VuZCA9IEltbWVkaWF0ZWx5TW92ZVRvRW5kOjpObyk7CiAKICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgSXRlcmF0b3ImIG90aGVyKSB7IHJldHVybiAmbV9kaXNw
bGF5TGlzdCA9PSAmb3RoZXIubV9kaXNwbGF5TGlzdCAmJiBtX2N1cnNvciA9PSBvdGhlci5tX2N1
cnNvcjsgfQogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJdGVyYXRvciYgb3RoZXIpIHsgcmV0
dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9Ci0gICAgdm9pZCBvcGVyYXRvcisrKCkgeyBhZHZhbmNl
KCk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG9wZXJhdG9yKysoKTsKIAogICAgIHN0cnVj
dCBWYWx1ZSB7Ci0gICAgICAgIEl0ZW1IYW5kbGUgaXRlbTsKKyAgICAgICAgRGlzcGxheUxpc3RJ
dGVtIGl0ZW07CiAgICAgICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZXh0ZW50OwogICAgICAgICBz
aXplX3QgaXRlbVNpemVJbkJ1ZmZlciB7IDAgfTsKICAgICB9OwogCi0gICAgT3B0aW9uYWw8VmFs
dWU+IG9wZXJhdG9yKigpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIW1faXNWYWxpZCkKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIHJldHVybiB7ewotICAgICAg
ICAgICAgSXRlbUhhbmRsZSB7IG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gfSwKLSAgICAgICAgICAg
IG1fY3VycmVudEV4dGVudCwKLSAgICAgICAgICAgIG1fY3VycmVudEl0ZW1TaXplSW5CdWZmZXIs
Ci0gICAgICAgIH19OwotICAgIH0KKyAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxWYWx1ZT4g
b3BlcmF0b3IqKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzaXpl
X3Qgc2l6ZU9mRml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbSA9IDI1NjsKLQotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgbW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZmZXIoKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIG1vdmVUb0VuZCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xl
YXJDdXJyZW50SXRlbSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlQ3VycmVudEl0
ZW0oKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkdmFuY2UoKTsKKyAgICBzdHJ1Y3QgQ3Vy
cmVudEl0ZW1SZXN1bHQgeworICAgICAgICBEaXNwbGF5TGlzdEl0ZW0gZGlzcGxheUxpc3RJdGVt
OworICAgICAgICBzdGQ6OnNpemVfdCBzaXplSW5CdWZmZXI7CisgICAgICAgIGJvb2wgaXNEcmF3
aW5nSXRlbTsKKyAgICB9OworICAgIE9wdGlvbmFsPEN1cnJlbnRJdGVtUmVzdWx0PiBjdXJyZW50
SXRlbSgpIGNvbnN0OwogCi0gICAgZW51bSBjbGFzcyBFeHRlbnRVcGRhdGVSZXN1bHQgOiBib29s
IHsgRmFpbHVyZSwgU3VjY2VzcyB9OwotICAgIEV4dGVudFVwZGF0ZVJlc3VsdCB1cGRhdGVDdXJy
ZW50RHJhd2luZ0l0ZW1FeHRlbnQoSXRlbVR5cGUpOworICAgIHZvaWQgbW92ZUN1cnNvclRvU3Rh
cnRPZkN1cnJlbnRCdWZmZXIoKTsKKyAgICB1aW50OF90KiBlbmRPZkN1cnJlbnRCdWZmZXIoKSBj
b25zdDsKIAorI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBhdEVuZCgpIGNvbnN0OworI2Vu
ZGlmCiAKICAgICBJdGVtQnVmZmVyKiBpdGVtQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kaXNw
bGF5TGlzdC5pdGVtQnVmZmVySWZFeGlzdHMoKTsgfQogCiAgICAgY29uc3QgRGlzcGxheUxpc3Qm
IG1fZGlzcGxheUxpc3Q7CisgICAgc3RydWN0IEN1cnJlbnRJdGVtSW5mbyB7CisgICAgICAgIHN0
ZDo6c2l6ZV90IHNpemVJbkJ1ZmZlcjsKKyAgICAgICAgYm9vbCBpc0RyYXdpbmdJdGVtOworICAg
IH07CisgICAgbXV0YWJsZSBPcHRpb25hbDxDdXJyZW50SXRlbUluZm8+IG1fY3VycmVudEl0ZW1J
bmZvOwogICAgIHVpbnQ4X3QqIG1fY3Vyc29yIHsgbnVsbHB0ciB9OwogICAgIHNpemVfdCBtX3Jl
YWRPbmx5QnVmZmVySW5kZXggeyAwIH07CiAgICAgc2l6ZV90IG1fZHJhd2luZ0l0ZW1JbmRleCB7
IDAgfTsKLSAgICB1aW50OF90KiBtX2N1cnJlbnRFbmRPZkJ1ZmZlciB7IG51bGxwdHIgfTsKLQot
ICAgIHVpbnQ4X3QgbV9maXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtW3NpemVPZkZpeGVkQnVmZmVy
Rm9yQ3VycmVudEl0ZW1dIHsgMCB9OwotICAgIHVpbnQ4X3QqIG1fY3VycmVudEJ1ZmZlckZvckl0
ZW0geyBudWxscHRyIH07Ci0gICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBtX2N1cnJlbnRFeHRlbnQ7
Ci0gICAgc2l6ZV90IG1fY3VycmVudEl0ZW1TaXplSW5CdWZmZXIgeyAwIH07Ci0gICAgYm9vbCBt
X2lzVmFsaWQgeyB0cnVlIH07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZXBsYXllci5jcHAKaW5kZXggMTA3ZjIwZWM0ZjFjNDEyZjgwMWU4MjBjMDRiMDcyOGYyNDg4M2Fh
My4uZDRhYjVhNmUzZWNkYWRiZWI3MjZiM2ZjYjZlMDc0YWU4ZjU4MTMzZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVwbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcApAQCAtNTQsOSArNTQsOCBAQCBHcmFwaGlj
c0NvbnRleHQmIFJlcGxheWVyOjpjb250ZXh0KCkgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3Mg
VD4KLWlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBh
cHBseUltYWdlQnVmZmVySXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEltYWdl
QnVmZmVySGFzaE1hcCYgaW1hZ2VCdWZmZXJzLCBJdGVtSGFuZGxlIGl0ZW0pCitpbmxpbmUgc3Rh
dGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlJbWFnZUJ1ZmZl
ckl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAm
IGltYWdlQnVmZmVycywgY29uc3QgVCYgaW1hZ2VCdWZmZXJJdGVtKQogewotICAgIGF1dG8mIGlt
YWdlQnVmZmVySXRlbSA9IGl0ZW0uZ2V0PFQ+KCk7CiAgICAgYXV0byByZXNvdXJjZUlkZW50aWZp
ZXIgPSBpbWFnZUJ1ZmZlckl0ZW0uaW1hZ2VCdWZmZXJJZGVudGlmaWVyKCk7CiAgICAgaWYgKGF1
dG8qIGltYWdlQnVmZmVyID0gaW1hZ2VCdWZmZXJzLmdldChyZXNvdXJjZUlkZW50aWZpZXIpKSB7
CiAgICAgICAgIGltYWdlQnVmZmVySXRlbS5hcHBseShjb250ZXh0LCAqaW1hZ2VCdWZmZXIpOwpA
QCAtNjYsOSArNjUsOCBAQCBpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcj4gYXBwbHlJbWFnZUJ1ZmZlckl0ZW0oR3JhcGhpYwogfQogCiB0ZW1wbGF0ZTxj
bGFzcyBUPgotaW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXI+IGFwcGx5TmF0aXZlSW1hZ2VJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
TmF0aXZlSW1hZ2VIYXNoTWFwJiBuYXRpdmVJbWFnZXMsIEl0ZW1IYW5kbGUgaXRlbSkKK2lubGlu
ZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseU5hdGl2
ZUltYWdlSXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IE5hdGl2ZUltYWdlSGFz
aE1hcCYgbmF0aXZlSW1hZ2VzLCBjb25zdCBUJiBuYXRpdmVJbWFnZUl0ZW0pCiB7Ci0gICAgYXV0
byYgbmF0aXZlSW1hZ2VJdGVtID0gaXRlbS5nZXQ8VD4oKTsKICAgICBhdXRvIHJlc291cmNlSWRl
bnRpZmllciA9IG5hdGl2ZUltYWdlSXRlbS5pbWFnZUlkZW50aWZpZXIoKTsKICAgICBpZiAoYXV0
byogaW1hZ2UgPSBuYXRpdmVJbWFnZXMuZ2V0KHJlc291cmNlSWRlbnRpZmllcikpIHsKICAgICAg
ICAgbmF0aXZlSW1hZ2VJdGVtLmFwcGx5KGNvbnRleHQsICppbWFnZSk7CkBAIC03NywxMCArNzUs
OCBAQCBpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4g
YXBwbHlOYXRpdmVJbWFnZUl0ZW0oR3JhcGhpYwogICAgIHJldHVybiByZXNvdXJjZUlkZW50aWZp
ZXI7CiB9CiAKLWlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyPiBhcHBseVNldFN0YXRlSXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IE5h
dGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzLCBJdGVtSGFuZGxlIGl0ZW0pCitpbmxpbmUg
c3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0
ZUl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAm
IG5hdGl2ZUltYWdlcywgY29uc3QgU2V0U3RhdGUmIHNldFN0YXRlSXRlbSkKIHsKLSAgICBhdXRv
JiBzZXRTdGF0ZUl0ZW0gPSBpdGVtLmdldDxTZXRTdGF0ZT4oKTsKLQogICAgIE5hdGl2ZUltYWdl
KiBzdHJva2VQYXR0ZXJuSW1hZ2UgPSBudWxscHRyOwogICAgIE5hdGl2ZUltYWdlKiBmaWxsUGF0
dGVybkltYWdlID0gbnVsbHB0cjsKIApAQCAtMTAxLDkgKzk3LDggQEAgaW5saW5lIHN0YXRpYyBP
cHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5U2V0U3RhdGVJdGVtKEdy
YXBoaWNzQ28KIH0KIAogdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZSBzdGF0aWMgT3B0aW9uYWw8
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseUZvbnRJdGVtKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRm9udFJlbmRlcmluZ1Jlc291cmNlTWFwJiBmb250cywgSXRlbUhh
bmRsZSBpdGVtKQoraW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXI+IGFwcGx5Rm9udEl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250
UmVuZGVyaW5nUmVzb3VyY2VNYXAmIGZvbnRzLCBjb25zdCBUJiBmb250SXRlbSkKIHsKLSAgICBh
dXRvJiBmb250SXRlbSA9IGl0ZW0uZ2V0PFQ+KCk7CiAgICAgYXV0byByZXNvdXJjZUlkZW50aWZp
ZXIgPSBmb250SXRlbS5mb250SWRlbnRpZmllcigpOwogICAgIGlmIChhdXRvKiBmb250ID0gZm9u
dHMuZ2V0KHJlc291cmNlSWRlbnRpZmllcikpIHsKICAgICAgICAgZm9udEl0ZW0uYXBwbHkoY29u
dGV4dCwgKmZvbnQpOwpAQCAtMTEyLDY4ICsxMDcsNjggQEAgaW5saW5lIHN0YXRpYyBPcHRpb25h
bDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5Rm9udEl0ZW0oR3JhcGhpY3NDb250
ZXgKICAgICByZXR1cm4gcmVzb3VyY2VJZGVudGlmaWVyOwogfQogCi1zdGQ6OnBhaXI8T3B0aW9u
YWw8U3RvcFJlcGxheVJlYXNvbj4sIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cj4+IFJlcGxheWVyOjphcHBseUl0ZW0oSXRlbUhhbmRsZSBpdGVtKQorZXh0ZXJuIEdyYXBoaWNz
Q29udGV4dCYgc3ludGhlc2l6ZUxWYWx1ZUdyYXBoaWNzQ29udGV4dDsKK3RlbXBsYXRlPHR5cGVu
YW1lLCB0eXBlbmFtZSA9IHZvaWQ+IHN0YXRpYyBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFzQXBw
bHkgPSBmYWxzZTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBpbmxpbmUgY29uc3RleHBy
IGJvb2wgSGFzQXBwbHk8VCwgc3RkOjp2b2lkX3Q8ZGVjbHR5cGUoc3RkOjpkZWNsdmFsPFQ+KCku
YXBwbHkoc3ludGhlc2l6ZUxWYWx1ZUdyYXBoaWNzQ29udGV4dCkpPj4gPSB0cnVlOworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBJdGVtPgorc3RhdGljIGlubGluZSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
Zl90PCFIYXNBcHBseTxJdGVtPiwgdm9pZD4gYXBwbHkoY29uc3QgSXRlbSYsIEdyYXBoaWNzQ29u
dGV4dCYpCit7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEl0ZW0+CitzdGF0aWMgaW5saW5lIHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8SGFzQXBwbHk8SXRlbT4sIHZvaWQ+IGFwcGx5KGNvbnN0
IEl0ZW0mIGl0ZW0sIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0KQoreworICAgIHJl
dHVybiBpdGVtLmFwcGx5KGdyYXBoaWNzQ29udGV4dCk7Cit9CisKK2F1dG8gUmVwbGF5ZXI6OmFw
cGx5SXRlbShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGl0ZW0pIC0+IEFwcGx5SXRlbVJlc3VsdAog
ewogICAgIGlmIChtX2RlbGVnYXRlICYmIG1fZGVsZWdhdGUtPmFwcGx5KGl0ZW0sIGNvbnRleHQo
KSkpCiAgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07CiAKLSAg
ICBpZiAoaXRlbS5pczxEcmF3SW1hZ2VCdWZmZXI+KCkpIHsKKyAgICBhdXRvIHZpc2l0b3IgPSBX
VEY6Om1ha2VWaXNpdG9yKFsmXShjb25zdCBEcmF3SW1hZ2VCdWZmZXImIGl0ZW0pIC0+IEFwcGx5
SXRlbVJlc3VsdCB7CiAgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50
aWZpZXIgPSBhcHBseUltYWdlQnVmZmVySXRlbTxEcmF3SW1hZ2VCdWZmZXI+KGNvbnRleHQoKSwg
bV9pbWFnZUJ1ZmZlcnMsIGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJl
YXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJj
ZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxs
b3B0IH07Ci0gICAgfQotCi0gICAgaWYgKGl0ZW0uaXM8Q2xpcFRvSW1hZ2VCdWZmZXI+KCkpIHsK
KyAgICB9LCBbJl0oY29uc3QgQ2xpcFRvSW1hZ2VCdWZmZXImIGl0ZW0pIC0+IHN0ZDo6cGFpcjxP
cHRpb25hbDxTdG9wUmVwbGF5UmVhc29uPiwgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyPj4gewogICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlm
aWVyID0gYXBwbHlJbWFnZUJ1ZmZlckl0ZW08Q2xpcFRvSW1hZ2VCdWZmZXI+KGNvbnRleHQoKSwg
bV9pbWFnZUJ1ZmZlcnMsIGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJl
YXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJj
ZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxs
b3B0IH07Ci0gICAgfQotCi0gICAgaWYgKGl0ZW0uaXM8RHJhd05hdGl2ZUltYWdlPigpKSB7Cisg
ICAgfSwgWyZdKGNvbnN0IERyYXdOYXRpdmVJbWFnZSYgaXRlbSkgLT4gQXBwbHlJdGVtUmVzdWx0
IHsKICAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFw
cGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdOYXRpdmVJbWFnZT4oY29udGV4dCgpLCBtX25hdGl2ZUlt
YWdlcywgaXRlbSkpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNz
aW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmll
cikgfTsKICAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKLSAg
ICB9Ci0KLSAgICBpZiAoaXRlbS5pczxEcmF3R2x5cGhzPigpKSB7Ci0gICAgICAgIGlmIChhdXRv
IG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUZvbnRJdGVtPERyYXdHbHlw
aHM+KGNvbnRleHQoKSwgbV9mb250cywgaXRlbSkpCisgICAgfSwgWyZdKGNvbnN0IERyYXdQYXR0
ZXJuJiBpdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQgeworICAgICAgICBpZiAoYXV0byBtaXNzaW5n
Q2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlOYXRpdmVJbWFnZUl0ZW08RHJhd1BhdHRl
cm4+KGNvbnRleHQoKSwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJu
IHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3Np
bmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IFdURjo6bnVs
bG9wdCwgV1RGOjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAgaWYgKGl0ZW0uaXM8RHJhd1BhdHRl
cm4+KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmll
ciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdQYXR0ZXJuPihjb250ZXh0KCksIG1fbmF0aXZl
SW1hZ2VzLCBpdGVtKSkKKyAgICB9LCBbJl0oY29uc3QgRHJhd0dseXBocyYgaXRlbSkgLT4gQXBw
bHlJdGVtUmVzdWx0IHsKKyAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRl
bnRpZmllciA9IGFwcGx5Rm9udEl0ZW08RHJhd0dseXBocz4oY29udGV4dCgpLCBtX2ZvbnRzLCBp
dGVtKSkKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNo
ZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9Owog
ICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwotICAgIH0KLQot
ICAgIGlmIChpdGVtLmlzPFNldFN0YXRlPigpKSB7CisgICAgfSwgWyZdKGNvbnN0IFNldFN0YXRl
JiBpdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQgewogICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2Fj
aGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlTZXRTdGF0ZUl0ZW0oY29udGV4dCgpLCBtX25h
dGl2ZUltYWdlcywgaXRlbSkpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29u
OjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRl
bnRpZmllcikgfTsKICAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQg
fTsKLSAgICB9Ci0KLSAgICBpZiAoaXRlbS5pczxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4o
KSkgeworICAgIH0sIFsmXShjb25zdCBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyYgY2xpcEl0
ZW0pIC0+IEFwcGx5SXRlbVJlc3VsdCB7CiAgICAgICAgIGlmIChtX21hc2tJbWFnZUJ1ZmZlcikK
ICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246OkludmFsaWRJdGVtT3JFeHRl
bnQsIFdURjo6bnVsbG9wdCB9OwotICAgICAgICBhdXRvJiBjbGlwSXRlbSA9IGl0ZW0uZ2V0PEJl
Z2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpOwogICAgICAgICBtX21hc2tJbWFnZUJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNsaXBJdGVtLmRlc3RpbmF0aW9u
KCkuc2l6ZSgpLCBjbGlwSXRlbS5jb2xvclNwYWNlKCksIG1fY29udGV4dCk7CiAgICAgICAgIGlm
ICghbV9tYXNrSW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVh
c29uOjpPdXRPZk1lbW9yeSwgV1RGOjpudWxsb3B0IH07CiAgICAgICAgIHJldHVybiB7IFdURjo6
bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAgaWYgKGl0ZW0uaXM8RW5kQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzPigpKSB7CisgICAgfSwgWyZdKGNvbnN0IEVuZENsaXBUb0RyYXdp
bmdDb21tYW5kcyYgY2xpcEl0ZW0pIC0+IEFwcGx5SXRlbVJlc3VsdCB7CiAgICAgICAgIGlmICgh
bV9tYXNrSW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29u
OjpJbnZhbGlkSXRlbU9yRXh0ZW50LCBXVEY6Om51bGxvcHQgfTsKLSAgICAgICAgYXV0byYgY2xp
cEl0ZW0gPSBpdGVtLmdldDxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCk7CiAgICAgICAgIG1f
Y29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcigqbV9tYXNrSW1hZ2VCdWZmZXIsIGNsaXBJdGVtLmRl
c3RpbmF0aW9uKCkpOwogICAgICAgICBtX21hc2tJbWFnZUJ1ZmZlciA9IG51bGxwdHI7CiAgICAg
ICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAg
aXRlbS5hcHBseShjb250ZXh0KCkpOwotICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpu
dWxsb3B0IH07CisgICAgfSwgWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIC0+IEFwcGx5SXRlbVJlc3Vs
dCB7CisgICAgICAgIGFwcGx5KGl0ZW0sIGNvbnRleHQoKSk7CisgICAgICAgIHJldHVybiB7IFdU
Rjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07CisgICAgfSk7CisgICAgcmV0dXJuIFdURjo6dmlz
aXQodmlzaXRvciwgaXRlbSk7CiB9CiAKIFJlcGxheVJlc3VsdCBSZXBsYXllcjo6cmVwbGF5KGNv
bnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGJvb2wgdHJhY2tSZXBsYXlMaXN0KQpAQCAtMTk1
LDcgKzE5MCw3IEBAIFJlcGxheVJlc3VsdCBSZXBsYXllcjo6cmVwbGF5KGNvbnN0IEZsb2F0UmVj
dCYgaW5pdGlhbENsaXAsIGJvb2wgdHJhY2tSZXBsYXlMaXN0CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gW2l0ZW0sIGV4dGVudCwgaXRlbVNpemVJbkJ1ZmZl
cl0gPSBkaXNwbGF5TGlzdEl0ZW0udmFsdWUoKTsKKyAgICAgICAgY29uc3QgYXV0byYgW2l0ZW0s
IGV4dGVudCwgaXRlbVNpemVJbkJ1ZmZlcl0gPSBkaXNwbGF5TGlzdEl0ZW0udmFsdWUoKTsKIAog
ICAgICAgICBpZiAoIWluaXRpYWxDbGlwLmlzWmVybygpICYmIGV4dGVudCAmJiAhZXh0ZW50LT5p
bnRlcnNlY3RzKGluaXRpYWxDbGlwKSkgewogICAgICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKERp
c3BsYXlMaXN0cywgc3RyZWFtIDw8ICJza2lwcGluZyAiIDw8IGkrKyA8PCAiICIgPDwgaXRlbSk7
CkBAIC0yMDUsMTAgKzIwMCwxMCBAQCBSZXBsYXlSZXN1bHQgUmVwbGF5ZXI6OnJlcGxheShjb25z
dCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBib29sIHRyYWNrUmVwbGF5TGlzdAogCiAgICAgICAg
IExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGlzdHMsIHN0cmVhbSA8PCAiYXBwbHlpbmcgIiA8PCBp
KysgPDwgIiAiIDw8IGl0ZW0pOwogCi0gICAgICAgIGlmIChpdGVtLmlzPE1ldGFDb21tYW5kQ2hh
bmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4oKSkgeworICAgICAgICBpZiAoV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI+KGl0ZW0p
KSB7CiAgICAgICAgICAgICByZXN1bHQubnVtYmVyT2ZCeXRlc1JlYWQgKz0gaXRlbVNpemVJbkJ1
ZmZlcjsKICAgICAgICAgICAgIHJlc3VsdC5yZWFzb25Gb3JTdG9wcGluZyA9IFN0b3BSZXBsYXlS
ZWFzb246OkNoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI7Ci0gICAgICAgICAgICByZXN1bHQu
bmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXIgPSBpdGVtLmdldDxNZXRhQ29tbWFuZENoYW5nZURl
c3RpbmF0aW9uSW1hZ2VCdWZmZXI+KCkuaWRlbnRpZmllcigpOworICAgICAgICAgICAgcmVzdWx0
Lm5leHREZXN0aW5hdGlvbkltYWdlQnVmZmVyID0gV1RGOjpnZXQ8TWV0YUNvbW1hbmRDaGFuZ2VE
ZXN0aW5hdGlvbkltYWdlQnVmZmVyPihpdGVtKS5pZGVudGlmaWVyKCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogCkBAIC0yMjIsOCArMjE3LDggQEAgUmVwbGF5UmVzdWx0IFJlcGxh
eWVyOjpyZXBsYXkoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgYm9vbCB0cmFja1JlcGxh
eUxpc3QKIAogICAgICAgICBpZiAoVU5MSUtFTFkodHJhY2tSZXBsYXlMaXN0KSkgewogICAgICAg
ICAgICAgcmVwbGF5TGlzdC0+YXBwZW5kKGl0ZW0pOwotICAgICAgICAgICAgaWYgKGl0ZW0uaXNE
cmF3aW5nSXRlbSgpKQotICAgICAgICAgICAgICAgIHJlcGxheUxpc3QtPmFkZERyYXdpbmdJdGVt
RXh0ZW50KFdURk1vdmUoZXh0ZW50KSk7CisgICAgICAgICAgICBpZiAoaXNEcmF3aW5nSXRlbShp
dGVtKSkKKyAgICAgICAgICAgICAgICByZXBsYXlMaXN0LT5hZGREcmF3aW5nSXRlbUV4dGVudChP
cHRpb25hbDxGbG9hdFJlY3Q+KGV4dGVudCkpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZXBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAppbmRleCBhYzBkZjYwNjM5MjNiY2E0MjhjOTY3
MjIzOTUxYzg1ZDViOTE1YTZlLi4xMGRmNGFlYjBiZjhmMTdhODk0MzE2NWFjZDViOWQxZGYzYTcx
YjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKQEAgLTY2LDEyICs2
NiwxMyBAQCBwdWJsaWM6CiAgICAgY2xhc3MgRGVsZWdhdGUgewogICAgIHB1YmxpYzoKICAgICAg
ICAgdmlydHVhbCB+RGVsZWdhdGUoKSB7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGFwcGx5KEl0
ZW1IYW5kbGUsIEdyYXBoaWNzQ29udGV4dCYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZp
cnR1YWwgYm9vbCBhcHBseShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mLCBHcmFwaGljc0NvbnRleHQm
KSB7IHJldHVybiBmYWxzZTsgfQogICAgIH07CiAgICAgCiBwcml2YXRlOgogICAgIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCgpIGNvbnN0OwotICAgIHN0ZDo6cGFpcjxPcHRpb25hbDxTdG9wUmVw
bGF5UmVhc29uPiwgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPj4gYXBwbHlJ
dGVtKEl0ZW1IYW5kbGUpOworICAgIHVzaW5nIEFwcGx5SXRlbVJlc3VsdCA9IHN0ZDo6cGFpcjxP
cHRpb25hbDxTdG9wUmVwbGF5UmVhc29uPiwgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyPj47CisgICAgQXBwbHlJdGVtUmVzdWx0IGFwcGx5SXRlbShjb25zdCBEaXNwbGF5TGlz
dEl0ZW0mKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgbV9jb250ZXh0OwogICAgIFJlZlB0cjxX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gbV9tYXNrSW1hZ2VCdWZmZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5
TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
SW5NZW1vcnlEaXNwbGF5TGlzdC5jcHAKaW5kZXggNzA3ODE4YjBlNzlkNWEwMzg1YzAyYjdjNTll
NWMzMWE2ODc0NmIzMS4uNGI0NjZlMzc3NGQzZDY1NTljMjk0NjNiZDkyZjQxMWYyNDk3Zjk5NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0luTWVtb3J5RGlzcGxheUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmNwcApAQCAtNDEsMTUgKzQx
LDEyIEBAIHZvaWQgSW5NZW1vcnlEaXNwbGF5TGlzdDo6V3JpdGluZ0NsaWVudDo6ZW5jb2RlSXRl
bUlubGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mCiAgICAgc2FmZUNvcHkoeyBsb2NhdGlvbiB9
LCBkaXNwbGF5TGlzdEl0ZW0pOwogfQogCi1PcHRpb25hbDxJdGVtSGFuZGxlPiBXQVJOX1VOVVNF
RF9SRVRVUk4gSW5NZW1vcnlEaXNwbGF5TGlzdDo6UmVhZGluZ0NsaWVudDo6ZGVjb2RlSXRlbShj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgSXRlbVR5cGUgdHlwZSwgdWlu
dDhfdCogaGFuZGxlTG9jYXRpb24pCitPcHRpb25hbDxEaXNwbGF5TGlzdEl0ZW0+IFdBUk5fVU5V
U0VEX1JFVFVSTiBJbk1lbW9yeURpc3BsYXlMaXN0OjpSZWFkaW5nQ2xpZW50OjpkZWNvZGVJdGVt
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBJdGVtVHlwZSB0eXBlKQog
ewogICAgIGNvbnN0IEl0ZW1IYW5kbGUgZGF0YUhhbmRsZSB7IGNvbnN0X2Nhc3Q8dWludDhfdCo+
KGRhdGEpIH07CiAgICAgQVNTRVJUX1VOVVNFRCh0eXBlLCBkYXRhSGFuZGxlLnR5cGUoKSA9PSB0
eXBlKTsKICAgICBBU1NFUlRfVU5VU0VEKGRhdGFMZW5ndGgsIGRhdGFMZW5ndGggPj0gcGFkZGVk
U2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKGRhdGFIYW5kbGUudHlwZSgpKSk7Ci0gICAgSXRlbUhh
bmRsZSByZXN1bHQgeyBoYW5kbGVMb2NhdGlvbiB9OwotICAgIGlmIChkYXRhSGFuZGxlLnNhZmVD
b3B5KHJlc3VsdCkpCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXR1cm4gc2FmZUNvcHkoZGF0YUhhbmRsZSk7CiB9CiAKIEluTWVtb3J5RGlz
cGxheUxpc3Q6OkluTWVtb3J5RGlzcGxheUxpc3QoKQpAQCAtNjIsMTMgKzU5LDExIEBAIEluTWVt
b3J5RGlzcGxheUxpc3Q6OkluTWVtb3J5RGlzcGxheUxpc3QoKQogCiBJbk1lbW9yeURpc3BsYXlM
aXN0Ojp+SW5NZW1vcnlEaXNwbGF5TGlzdCgpCiB7Ci0gICAgYXV0byBlbmQgPSB0aGlzLT5lbmQo
KTsKICAgICBmb3IgKGF1dG8gZGlzcGxheUxpc3RJdGVtIDogKnRoaXMpIHsKLSAgICAgICAgYXV0
byBpdGVtID0gZGlzcGxheUxpc3RJdGVtLT5pdGVtOwotICAgICAgICBBU1NFUlQoaXRlbSk7Ci0g
ICAgICAgIGlmICghaXRlbSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpdGVtLmRlc3Ry
b3koKTsKKyAgICAgICAgV1RGOjp2aXNpdChbJl0oY29uc3QgYXV0byYgaXRlbSkgeworICAgICAg
ICAgICAgdXNpbmcgRGlzcGxheUxpc3RJdGVtVHlwZSA9IHR5cGVuYW1lIFdURjo6UmVtb3ZlQ1ZB
bmRSZWZlcmVuY2U8ZGVjbHR5cGUoaXRlbSk+Ojp0eXBlOworICAgICAgICAgICAgaXRlbS5+RGlz
cGxheUxpc3RJdGVtVHlwZSgpOworICAgICAgICB9LCBkaXNwbGF5TGlzdEl0ZW0tPml0ZW0pOwog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmgKaW5kZXggMWNj
MDhhZmFiZmYyZGE1N2MxYzJkMThkODk2ZmRjZjk1ZGNhYTNkMS4uZTdiOGYxOGY0OTQ3YmMzODBj
MjUwYmVmYzM0NDg5NzE0ODJiY2NmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5
TGlzdC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBjbGFzcyBXRUJDT1JFX0VYUE9S
VCBSZWFkaW5nQ2xpZW50IDogcHVibGljIEl0ZW1CdWZmZXJSZWFkaW5nQ2xpZW50IHsKICAgICAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgT3B0aW9u
YWw8SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhf
dCosIHNpemVfdCwgSXRlbVR5cGUsIHVpbnQ4X3QqKSBmaW5hbDsKKyAgICAgICAgT3B0aW9uYWw8
RGlzcGxheUxpc3RJdGVtPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50
OF90Kiwgc2l6ZV90LCBJdGVtVHlwZSkgZmluYWw7CiAgICAgfTsKIAogcHJpdmF0ZToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
ci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVy
LmgKaW5kZXggNGEwMWVlNjc2OWE2OThiZTVlNDc4MDkyZTQ5YmJkYTgxYzc0Yjk0OC4uNjVlMGVl
MTJhNjdkOTI3NmI5ODFmYzEwNDM3MWZmYWYwMWQ5ZjM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKQEAgLTc0LDM1
ICs3NCwyNiBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBib29sIGFwcGx5KFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlIGl0ZW0sIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkgb3ZlcnJpZGUKKyAgICBib29sIGFwcGx5KGNvbnN0IFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdEl0ZW0mIGl0ZW0sIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGlmIChpdGVtLmlzPFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpHZXRJbWFnZURhdGE+KCkpIHsKLSAgICAgICAgICAgIGF1dG8mIGdldElt
YWdlRGF0YUl0ZW0gPSBpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6R2V0SW1hZ2VEYXRh
PigpOwotICAgICAgICAgICAgYXV0byBpbWFnZURhdGEgPSBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZl
cjo6Z2V0SW1hZ2VEYXRhKGdldEltYWdlRGF0YUl0ZW0ub3V0cHV0Rm9ybWF0KCksIGdldEltYWdl
RGF0YUl0ZW0uc3JjUmVjdCgpKTsKLSAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5wb3B1bGF0ZUdldEltYWdlRGF0YVNoYXJlZE1lbW9yeShpbWFnZURhdGEuZ2V0KCkpOworICAg
ICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKFsmXShjb25zdCBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6R2V0SW1hZ2VEYXRhJikgewogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoaXRlbS5pczxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0
SW1hZ2VEYXRhPigpKSB7Ci0gICAgICAgICAgICBhdXRvJiBwdXRJbWFnZURhdGFJdGVtID0gaXRl
bS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlB1dEltYWdlRGF0YT4oKTsKKyAgICAgICAgfSwg
WyZdKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGEmIHB1dEltYWdlRGF0
YUl0ZW0pIHsKICAgICAgICAgICAgIHB1dEltYWdlRGF0YShwdXRJbWFnZURhdGFJdGVtLmlucHV0
Rm9ybWF0KCksIHB1dEltYWdlRGF0YUl0ZW0uaW1hZ2VEYXRhKCksIHB1dEltYWdlRGF0YUl0ZW0u
c3JjUmVjdCgpLCBwdXRJbWFnZURhdGFJdGVtLmRlc3RQb2ludCgpLCBwdXRJbWFnZURhdGFJdGVt
LmRlc3RGb3JtYXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGlmIChpdGVtLmlzPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaENvbnRleHQ+KCkp
IHsKKyAgICAgICAgfSwgWyZdKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaENvbnRl
eHQmIGZsdXNoQ29udGV4dCkgewogICAgICAgICAgICAgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6
OmZsdXNoQ29udGV4dCgpOwotICAgICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gaXRlbS5nZXQ8
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoQ29udGV4dD4oKS5pZGVudGlmaWVyKCk7CisgICAg
ICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBmbHVzaENvbnRleHQuaWRlbnRpZmllcigpOwogICAg
ICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmRpZEZsdXNoKGlkZW50aWZpZXIsIG1f
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGl0ZW0uaXM8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Ok1l
dGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcj4oKSkgewotICAgICAgICAgICAgYXV0byBuZXh0QnVm
ZmVySWRlbnRpZmllciA9IGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpNZXRhQ29tbWFu
ZENoYW5nZUl0ZW1CdWZmZXI+KCkuaWRlbnRpZmllcigpOworICAgICAgICB9LCBbJl0oY29uc3Qg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlciYgbWV0YUNv
bW1hbmRDaGFuZ2VJdGVtQnVmZmVyKSB7CisgICAgICAgICAgICBhdXRvIG5leHRCdWZmZXJJZGVu
dGlmaWVyID0gbWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyLmlkZW50aWZpZXIoKTsKICAgICAg
ICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5zZXROZXh0SXRlbUJ1ZmZlclRvUmVhZChu
ZXh0QnVmZmVySWRlbnRpZmllciwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmFwcGx5TWVkaWFJdGVtKGl0ZW0sIGNvbnRleHQpOworICAgICAg
ICB9LCBbJl0oY29uc3QgYXV0byYgaXRlbSkgeworICAgICAgICAgICAgcmV0dXJuIG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5hcHBseU1lZGlhSXRlbShpdGVtLCBjb250ZXh0KTsKKyAgICAgICAg
fSk7CisgICAgICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIGl0ZW0pOwogICAgIH0KIAog
ICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCA4ZDk2NGYyYmRhMTYzOTlmZmM1OTg1OTA4YjNiYTIy
M2U4NDk4ZmQwLi44ZTAwNDVlMzg3NzJiZjE4NjVhODY0MzE0Mzk1NDJjYjM5MTkyZjRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
KyNpbmNsdWRlIDx3dGYvQnJpZ2FuZC5oPgogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRp
Yy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3lzdGVt
VHJhY2luZy5oPgpAQCAtMTE2LDIwICsxMTcsMTggQEAgdWludDY0X3QgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAogICAgIHJldHVybiBt
X3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLnRvVUludDY0KCk7CiB9CiAKLWJvb2wgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6YXBwbHlNZWRpYUl0ZW0oRGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGUg
aXRlbSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQorYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjphcHBseU1lZGlhSXRlbShjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtJiBp
dGVtLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CiAKLSAgICBpZiAoIWl0ZW0uaXM8RGlzcGxheUxpc3Q6OlBhaW50RnJhbWVGb3JN
ZWRpYT4oKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byYgbWVkaWFJdGVtID0g
aXRlbS5nZXQ8RGlzcGxheUxpc3Q6OlBhaW50RnJhbWVGb3JNZWRpYT4oKTsKLSAgICBhdXRvIHBs
YXllciA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+cmVtb3RlTWVkaWFQbGF5ZXJNYW5h
Z2VyUHJveHkoKS5tZWRpYVBsYXllcihtZWRpYUl0ZW0uaWRlbnRpZmllcigpKTsKLSAgICBpZiAo
IXBsYXllcikKKyAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKFsmXShjb25zdCBE
aXNwbGF5TGlzdDo6UGFpbnRGcmFtZUZvck1lZGlhJiBtZWRpYUl0ZW0pIHsKKyAgICAgICAgaWYg
KGF1dG8gcGxheWVyID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5yZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eSgpLm1lZGlhUGxheWVyKG1lZGlhSXRlbS5pZGVudGlmaWVyKCkpKQor
ICAgICAgICAgICAgY29udGV4dC5wYWludEZyYW1lRm9yTWVkaWEoKnBsYXllciwgbWVkaWFJdGVt
LmRlc3RpbmF0aW9uKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGNvbnRleHQucGFp
bnRGcmFtZUZvck1lZGlhKCpwbGF5ZXIsIG1lZGlhSXRlbS5kZXN0aW5hdGlvbigpKTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9LCBbXShjb25zdCBhdXRvJiBpdGVtKSB7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9KTsKKyAgICByZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBpdGVtKTsK
IH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVJbWFnZUJ1ZmZlckJh
Y2tlbmQoSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKQEAgLTE4NSw3ICsxODQsNyBA
QCBEaXNwbGF5TGlzdDo6UmVwbGF5UmVzdWx0IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnN1Ym1p
dChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcAogICAgIGVsc2UKICAgICAgICAgcmVwbGF5ZXJEZWxl
Z2F0ZSA9IHN0YXRpY19jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlcio+KCZkZXN0
aW5hdGlvbik7CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyIHsK
KyAgICByZXR1cm4gRGlzcGxheUxpc3Q6OlJlcGxheWVyIHsKICAgICAgICAgZGVzdGluYXRpb24u
Y29udGV4dCgpLAogICAgICAgICBkaXNwbGF5TGlzdCwKICAgICAgICAgJnJlbW90ZVJlc291cmNl
Q2FjaGUoKS5pbWFnZUJ1ZmZlcnMoKSwKQEAgLTQ4OCwxMDYgKzQ4NywyNyBAQCB2b2lkIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKERpc3Bs
YXlMaXN0OjpJdGVtQgogICAgICAgICB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KHN0ZDo6ZXhj
aGFuZ2UobV9wZW5kaW5nV2FrZXVwSW5mbywgV1RGOjpudWxsb3B0KS0+YXJndW1lbnRzKTsKIH0K
IAotT3B0aW9uYWw8RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBsZW5ndGgsIERpc3BsYXlMaXN0OjpJdGVtVHlwZSB0eXBlLCB1aW50OF90KiBoYW5kbGVM
b2NhdGlvbikKLXsKLSAgICAvKiBUaGlzIG5lZWRzIHRvIG1hdGNoICgxKSBpc0lubGluZUl0ZW0o
KSBpbiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcCwgKDIpIFJlbW90ZUltYWdlQnVmZmVyUHJveHk6
OmVuY29kZUl0ZW0oKSwKLSAgICAgKiBhbmQgKDMpIGFsbCB0aGUgInN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBpc0lubGluZUl0ZW0icyBpbnNpZGUgdGhlIGluZGl2aWR1YWwgaXRlbSBjbGFzc2VzLgot
ICAgICAqIFNlZSB0aGUgY29tbWVudCBhdCB0aGUgdG9wIG9mIERpc3BsYXlMaXN0SXRlbXMuaCBm
b3Igd2h5LiAqLwotCi0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8
RGlzcGxheUxpc3Q6OkNsaXBPdXRUb1BhdGg+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24p
OwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwUGF0aDoKLSAgICAgICAgcmV0
dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6Q2xpcFBhdGg+KGRhdGEsIGxlbmd0aCwg
aGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3Rm9j
dXNSaW5nUGF0aDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6
RHJhd0ZvY3VzUmluZ1BhdGg+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVjdHM6Ci0gICAgICAgIHJl
dHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkRyYXdGb2N1c1JpbmdSZWN0cz4oZGF0
YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkRyYXdHbHlwaHM6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxp
c3Q6OkRyYXdHbHlwaHM+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2Ug
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OgotICAgICAgICByZXR1cm4g
ZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpEcmF3TGluZXNGb3JUZXh0PihkYXRhLCBsZW5n
dGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJh
d1BhdGg6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkRyYXdQ
YXRoPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0OgotICAgICAgICByZXR1cm4gZGVjb2RlQW5k
Q3JlYXRlPERpc3BsYXlMaXN0OjpGaWxsQ29tcG9zaXRlZFJlY3Q+KGRhdGEsIGxlbmd0aCwgaGFu
ZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUGF0aDoK
LSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RmlsbFBhdGg+KGRh
dGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpGaWxsUmVjdFdpdGhDb2xvcjoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxE
aXNwbGF5TGlzdDo6RmlsbFJlY3RXaXRoQ29sb3I+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRp
b24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVu
dDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RmlsbFJlY3RX
aXRoR3JhZGllbnQ+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZToKLSAgICAgICAgcmV0
dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU+
KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpGaWxsUm91bmRlZFJlY3Q6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8
RGlzcGxheUxpc3Q6OkZpbGxSb3VuZGVkUmVjdD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlv
bik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlB1dEltYWdlRGF0YToKLSAgICAg
ICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6UHV0SW1hZ2VEYXRhPihkYXRh
LCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6U2V0TGluZURhc2g6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxp
c3Q6OlNldExpbmVEYXNoPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNl
IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0U3RhdGU6Ci0gICAgICAgIHJldHVybiBkZWNvZGVB
bmRDcmVhdGU8RGlzcGxheUxpc3Q6OlNldFN0YXRlPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0
aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlUGF0aDoKLSAgICAg
ICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6U3Ryb2tlUGF0aD4oZGF0YSwg
bGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkFwcGx5RGV2aWNlU2NhbGVGYWN0b3I6Ci0jaWYgVVNFKENHKQotICAgIGNhc2UgRGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpBcHBseUZpbGxQYXR0ZXJuOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm46Ci0jZW5kaWYKLSAgICBjYXNlIERpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lMYXllcjoKLSAgICBjYXNlIERpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6Q2xlYXJSZWN0OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpD
bGVhclNoYWRvdzoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcDoKLSAgICBj
YXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcE91dDoKLSAgICBjYXNlIERpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgY2FzZSBEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpEcmF3RWxsaXBzZToKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJh
d0ltYWdlQnVmZmVyOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZl
SW1hZ2U6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgotICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TGluZToKLSAgICBjYXNlIERpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RHJhd1JlY3Q6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkVuZFRyYW5zcGFyZW5jeUxheWVyOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpG
aWxsRWxsaXBzZToKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIERpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6RmlsbElubGluZVBhdGg6Ci0jZW5kaWYKLSAgICBjYXNlIERpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkZsdXNoQ29udGV4dDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6TWV0YUNv
bW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI6Ci0jaWYgRU5BQkxFKFZJREVP
KQotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6Ci0j
ZW5kaWYKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UmVzdG9yZToKLSAgICBjYXNl
IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Um90YXRlOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpTYXZlOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTY2FsZToKLSAg
ICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0Q1RNOgotICAgIGNhc2UgRGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsQ29sb3I6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OlNldElubGluZUZpbGxHcmFkaWVudDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OlNldExpbmVDYXA6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldExp
bmVKb2luOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRNaXRlckxpbWl0Ogot
ICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6Ci0gICAg
Y2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6Ci0jaWYgRU5BQkxFKElO
TElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZUlu
bGluZVBhdGg6Ci0jZW5kaWYKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tl
UmVjdDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlTGluZToKLSAgICBj
YXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6VHJhbnNsYXRlOgotICAgIGNhc2UgRGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpHZXRJbWFnZURhdGE6IHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK09wdGlvbmFsPERpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdEl0ZW0+IFdBUk5fVU5VU0VEX1JFVFVSTiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpk
ZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIERpc3BsYXlMaXN0
OjpJdGVtVHlwZSBpdGVtVHlwZSkKK3sKKyAgICB1c2luZyBTZXF1ZW5jZSA9IGJyaWdhbmQ6Om1h
a2Vfc2VxdWVuY2U8YnJpZ2FuZDo6cHRyZGlmZl90PDA+LCBXVEY6OnZhcmlhbnRfc2l6ZTxEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtPjo6dmFsdWU+OworCisgICAgT3B0aW9uYWw8RGlzcGxh
eUxpc3Q6OkRpc3BsYXlMaXN0SXRlbT4gcmVzdWx0OworICAgIGJyaWdhbmQ6OmZvcl9lYWNoPFNl
cXVlbmNlPihbJl0oYXV0byYmIHR5cGUpIHsKKyAgICAgICAgdXNpbmcgSSA9IHR5cGVuYW1lIFdU
Rjo6UmVtb3ZlQ1ZBbmRSZWZlcmVuY2U8ZGVjbHR5cGUodHlwZSk+Ojp0eXBlOjp0eXBlOworICAg
ICAgICB1c2luZyBEaXNwbGF5TGlzdEl0ZW1UeXBlID0gV1RGOjp2YXJpYW50X2FsdGVybmF0aXZl
X3Q8STo6dmFsdWUsIERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdEl0ZW0+OworCisgICAgICAgIGlm
IChpdGVtVHlwZSAhPSBEaXNwbGF5TGlzdEl0ZW1UeXBlOjppdGVtVHlwZSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBBU1NFUlQoIURpc3BsYXlMaXN0SXRlbVR5cGU6OmlzSW5saW5l
SXRlbSk7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIURpc3BsYXlMaXN0SXRlbVR5cGU6OmlzSW5s
aW5lSXRlbSkgeworICAgICAgICAgICAgaWYgKGF1dG8gZGlzcGxheUxpc3RJdGVtID0gSVBDOjpE
ZWNvZGVyOjpkZWNvZGVTaW5nbGVPYmplY3Q8RGlzcGxheUxpc3RJdGVtVHlwZT4oZGF0YSwgbGVu
Z3RoKSkgeworICAgICAgICAgICAgICAgIEFTU0VSVCghcmVzdWx0KTsKKyAgICAgICAgICAgICAg
ICByZXN1bHQgPSB7IFdURk1vdmUoZGlzcGxheUxpc3RJdGVtLnZhbHVlKCkpIH07CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9KTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnVwZGF0ZVJlbmRlcmluZ1Jlc291cmNlUmVxdWVzdCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCA3NDhjNGEyZDM0NTgzYTdlYTlkYmE3MTgyNDA0MmIx
YmIyNGVmOGVlLi5kNTVkOWViMGUwMmEzYWRhMDQwMmZmNmEwNDYyNjc0MWI2MWE5MzM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIFJlbW90ZVJl
c291cmNlQ2FjaGUmIHJlbW90ZVJlc291cmNlQ2FjaGUoKSB7IHJldHVybiBtX3JlbW90ZVJlc291
cmNlQ2FjaGU7IH0KIAogICAgIC8vIFJlbmRlcmluZyBvcGVyYXRpb25zLgotICAgIGJvb2wgYXBw
bHlNZWRpYUl0ZW0oV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGUsIFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dCYpOworICAgIGJvb2wgYXBwbHlNZWRpYUl0ZW0oY29uc3QgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0SXRlbSYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYp
OwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgc2VudC4KICAgICB2b2lkIGRpZENyZWF0ZUltYWdl
QnVmZmVyQmFja2VuZChJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcik7CkBAIC05MiwxOSArOTIsNyBAQCBwcml2YXRlOgogICAgIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBzdGFydExpc3Rl
bmluZ0ZvcklQQygpOwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1I
YW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBsZW5ndGgsIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZSwgdWludDhfdCog
aGFuZGxlTG9jYXRpb24pIG92ZXJyaWRlOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAg
ICBPcHRpb25hbDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURf
UkVUVVJOIGRlY29kZUFuZENyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3Ro
LCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikKLSAgICB7Ci0gICAgICAgIGlmIChhdXRvIGl0ZW0g
PSBJUEM6OkRlY29kZXI6OmRlY29kZVNpbmdsZU9iamVjdDxUPihkYXRhLCBsZW5ndGgpKSB7Ci0g
ICAgICAgICAgICAvLyBGSVhNRTogV2ViS2l0MiBzaG91bGQgbm90IG5lZWQgdG8ga25vdyB0aGF0
IHRoZSBmaXJzdCA4IGJ5dGVzIGF0IHRoZSBoYW5kbGUgYXJlIHJlc2VydmVkIGZvciB0aGUgdHlw
ZS4KLSAgICAgICAgICAgIC8vIE5lZWQgdG8gZmlndXJlIG91dCBhIHdheSB0byBrZWVwIHRoaXMg
a25vd2xlZGdlIHdpdGhpbiBkaXNwbGF5IGxpc3QgY29kZSBpbiBXZWJDb3JlLgotICAgICAgICAg
ICAgbmV3IChoYW5kbGVMb2NhdGlvbiArIHNpemVvZih1aW50NjRfdCkpIFQoV1RGTW92ZSgqaXRl
bSkpOwotICAgICAgICAgICAgcmV0dXJuIHt7IGhhbmRsZUxvY2F0aW9uIH19OwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfQorICAgIE9wdGlvbmFsPFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdEl0ZW0+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNv
ZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtVHlwZSkgb3ZlcnJpZGU7CiAKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVwbGF5UmVzdWx0IHN1Ym1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxp
c3QmLCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgZGVzdGluYXRpb24pOwogICAgIFJlZlB0cjxXZWJD
b3JlOjpJbWFnZUJ1ZmZlcj4gbmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJBZnRlckFwcGx5aW5n
RGlzcGxheUxpc3RzKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbml0aWFsRGVzdGluYXRpb24sIHNp
emVfdCBpbml0aWFsT2Zmc2V0LCBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZSYsIEdQVVByb2Nlc3NX
YWtldXBSZWFzb24pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IGY3ZjFiNDNkN2EyNGU4ZmE2OTU0NjRjMGJkNDJhYzU4Njg1ZDljMDAuLmI3NDUy
MDUzMDhiZGI0N2RhZDI1ODI4ZmIzZjFiYjQxMDljY2IxMTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wNS0w
OSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtH
UFUgUHJvY2Vzc10gU2ltcGxpZnkgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yIHBhcnQgOTogTWlncmF0
ZSBEaXNwbGF5TGlzdDo6SXRlcmF0b3IncyBBUEkgdG8gdXNlIERpc3BsYXlMaXN0SXRlbSByYXRo
ZXIgdGhhbiBJdGVtSGFuZGxlLCBhbmQgdXBkYXRlIGNhbGxlcnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTU4MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6
CisKIDIwMjEtMDUtMDkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4K
IAogICAgICAgICBbR1BVIFByb2Nlc3NdIFNpbXBsaWZ5IERpc3BsYXlMaXN0OjpJdGVyYXRvciBw
YXJ0IDY6IE1pZ3JhdGUgSXRlbUJ1ZmZlcldyaXRpbmdDbGllbnQgZnJvbSBJdGVtSGFuZGxlIHRv
IGEgY29uc3QgVmFyaWFudCYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcAppbmRleCBiYzdhODQ5YWQ3NGU0YTY0MzU4ODE5
NDc4ZmU0MzgzNTcxZTg3NTJhLi5jZmEwMzM4ZjFmN2IzOTgxZmM4N2YyMTliYzRjMGRlMTNlZjQx
MGVhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxh
eUxpc3RUZXN0cy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rp
c3BsYXlMaXN0VGVzdHMuY3BwCkBAIC04MCw1NyArODAsMzUgQEAgVEVTVChEaXNwbGF5TGlzdFRl
c3RzLCBBcHBlbmRJdGVtcykKICAgICBFWFBFQ1RfRkFMU0UobGlzdC5pc0VtcHR5KCkpOwogCiAg
ICAgYm9vbCBvYnNlcnZlZFVuZXhwZWN0ZWRJdGVtID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvIGRp
c3BsYXlMaXN0SXRlbSA6IGxpc3QpIHsKLSAgICAgICAgYXV0byBoYW5kbGUgPSBkaXNwbGF5TGlz
dEl0ZW0tPml0ZW07Ci0gICAgICAgIHN3aXRjaCAoaGFuZGxlLnR5cGUoKSkgewotICAgICAgICBj
YXNlIEl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6IHsKLSAgICAgICAgICAgIEVYUEVDVF9G
QUxTRShoYW5kbGUuaXNEcmF3aW5nSXRlbSgpKTsKLSAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhh
bmRsZS5pczxTZXRTdHJva2VUaGlja25lc3M+KCkpOwotICAgICAgICAgICAgYXV0byYgaXRlbSA9
IGhhbmRsZS5nZXQ8U2V0U3Ryb2tlVGhpY2tuZXNzPigpOworICAgIGZvciAoY29uc3QgYXV0byYg
ZGlzcGxheUxpc3RJdGVtIDogbGlzdCkgeworICAgICAgICBjb25zdCBhdXRvJiBbaXRlbSwgZXh0
ZW50LCBzaXplXSA9IGRpc3BsYXlMaXN0SXRlbS52YWx1ZSgpOworCisgICAgICAgIGF1dG8gdmlz
aXRvciA9IFdURjo6bWFrZVZpc2l0b3IoWyZdKGNvbnN0IFNldFN0cm9rZVRoaWNrbmVzcyYgaXRl
bSkgeworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGl0ZW0uaXNEcmF3aW5nSXRlbSk7CiAgICAg
ICAgICAgICBFWFBFQ1RfRVEoaXRlbS50aGlja25lc3MoKSwgMS41KTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRoOiB7Ci0gICAg
ICAgICAgICBFWFBFQ1RfVFJVRShoYW5kbGUuaXNEcmF3aW5nSXRlbSgpKTsKLSAgICAgICAgICAg
IEVYUEVDVF9UUlVFKGhhbmRsZS5pczxGaWxsUGF0aD4oKSk7Ci0gICAgICAgICAgICBhdXRvJiBp
dGVtID0gaGFuZGxlLmdldDxGaWxsUGF0aD4oKTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IEZpbGxQ
YXRoJiBpdGVtKSB7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShpdGVtLmlzRHJhd2luZ0l0ZW0p
OwogICAgICAgICAgICAgRVhQRUNUX0VRKGl0ZW0ucGF0aCgpLnBsYXRmb3JtUGF0aCgpLCBwYXRo
LnBsYXRmb3JtUGF0aCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAg
IGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50OiB7Ci0gICAgICAgICAgICBFWFBF
Q1RfVFJVRShoYW5kbGUuaXNEcmF3aW5nSXRlbSgpKTsKLSAgICAgICAgICAgIEVYUEVDVF9UUlVF
KGhhbmRsZS5pczxGaWxsUmVjdFdpdGhHcmFkaWVudD4oKSk7Ci0gICAgICAgICAgICBhdXRvJiBp
dGVtID0gaGFuZGxlLmdldDxGaWxsUmVjdFdpdGhHcmFkaWVudD4oKTsKKyAgICAgICAgfSwgWyZd
KGNvbnN0IEZpbGxSZWN0V2l0aEdyYWRpZW50JiBpdGVtKSB7CisgICAgICAgICAgICBFWFBFQ1Rf
VFJVRShpdGVtLmlzRHJhd2luZ0l0ZW0pOwogICAgICAgICAgICAgRVhQRUNUX0VRKGl0ZW0ucmVj
dCgpLCBGbG9hdFJlY3QoMS4sIDEuLCAxMC4sIDEwLikpOwogICAgICAgICAgICAgRVhQRUNUX0VR
KCZpdGVtLmdyYWRpZW50KCksIGdyYWRpZW50LnB0cigpKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxDb2xvcjogewot
ICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGhhbmRsZS5pc0RyYXdpbmdJdGVtKCkpOwotICAgICAg
ICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLmlzPFNldElubGluZUZpbGxDb2xvcj4oKSk7Ci0gICAg
ICAgICAgICBhdXRvJiBpdGVtID0gaGFuZGxlLmdldDxTZXRJbmxpbmVGaWxsQ29sb3I+KCk7Cisg
ICAgICAgIH0sIFsmXShjb25zdCBTZXRJbmxpbmVGaWxsQ29sb3ImIGl0ZW0pIHsKKyAgICAgICAg
ICAgIEVYUEVDVF9GQUxTRShpdGVtLmlzRHJhd2luZ0l0ZW0pOwogICAgICAgICAgICAgRVhQRUNU
X0VRKGl0ZW0uY29sb3IoKSwgQ29sb3I6OnJlZCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQogI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgICAgICBjYXNlIEl0ZW1UeXBl
OjpTdHJva2VJbmxpbmVQYXRoOiB7Ci0gICAgICAgICAgICBFWFBFQ1RfVFJVRShoYW5kbGUuaXNE
cmF3aW5nSXRlbSgpKTsKLSAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS5pczxTdHJva2VJ
bmxpbmVQYXRoPigpKTsKLSAgICAgICAgICAgIGF1dG8mIGl0ZW0gPSBoYW5kbGUuZ2V0PFN0cm9r
ZUlubGluZVBhdGg+KCk7CisgICAgICAgIH0sIFsmXShjb25zdCBTdHJva2VJbmxpbmVQYXRoJiBp
dGVtKSB7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShpdGVtLmlzRHJhd2luZ0l0ZW0pOwogICAg
ICAgICAgICAgY29uc3QgYXV0byBwYXRoID0gaXRlbS5wYXRoKCk7CiAgICAgICAgICAgICBhdXRv
JiBsaW5lID0gcGF0aC5pbmxpbmVEYXRhPExpbmVEYXRhPigpOwogICAgICAgICAgICAgRVhQRUNU
X0VRKGxpbmUuc3RhcnQsIEZsb2F0UG9pbnQoMCwgMCkpOwogICAgICAgICAgICAgRVhQRUNUX0VR
KGxpbmUuZW5kLCBGbG9hdFBvaW50KDEwLiwgMTUuKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQogI2VuZGlmCi0gICAgICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdl
SXRlbUJ1ZmZlcjoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OiB7CisgICAg
ICAgIH0sIFsmXShjb25zdCBNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXImKSB7CisgICAgICAg
IH0sIFsmXShjb25zdCBhdXRvJikgewogICAgICAgICAgICAgb2JzZXJ2ZWRVbmV4cGVjdGVkSXRl
bSA9IHRydWU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICB9CisgICAg
ICAgIH0pOworICAgICAgICBXVEY6OnZpc2l0KHZpc2l0b3IsIGl0ZW0pOwogICAgIH0KIAogICAg
IEVYUEVDVF9GQUxTRShvYnNlcnZlZFVuZXhwZWN0ZWRJdGVtKTsKQEAgLTE1MCwxMiArMTI4LDEx
IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgQXBwZW5kSXRlbXMpCiAKICAgICBsaXN0LmFwcGVu
ZDxGaWxsUmVjdFdpdGhDb2xvcj4oRmxvYXRSZWN0IHsgMCwgMCwgMTAwLCAxMDAgfSwgQ29sb3I6
OmJsYWNrKTsKIAotICAgIGZvciAoYXV0byBkaXNwbGF5TGlzdEl0ZW0gOiBsaXN0KSB7Ci0gICAg
ICAgIGF1dG8gaGFuZGxlID0gZGlzcGxheUxpc3RJdGVtLT5pdGVtOwotICAgICAgICBFWFBFQ1Rf
RVEoaGFuZGxlLnR5cGUoKSwgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yKTsKLSAgICAgICAg
RVhQRUNUX1RSVUUoaGFuZGxlLmlzPEZpbGxSZWN0V2l0aENvbG9yPigpKTsKKyAgICBmb3IgKGNv
bnN0IGF1dG8mIGRpc3BsYXlMaXN0SXRlbSA6IGxpc3QpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUo
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxGaWxsUmVjdFdpdGhDb2xvcj4oZGlzcGxheUxpc3RJdGVt
LT5pdGVtKSk7CisgICAgICAgIGNvbnN0IGF1dG8mIGl0ZW0gPSBXVEY6OmdldDxGaWxsUmVjdFdp
dGhDb2xvcj4oZGlzcGxheUxpc3RJdGVtLT5pdGVtKTsKKyAgICAgICAgRVhQRUNUX0VRKGl0ZW0u
aXRlbVR5cGUsIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcik7CiAKLSAgICAgICAgYXV0byYg
aXRlbSA9IGhhbmRsZS5nZXQ8RmlsbFJlY3RXaXRoQ29sb3I+KCk7CiAgICAgICAgIEVYUEVDVF9F
USgqaXRlbS5jb2xvcigpLnRyeUdldEFzU1JHQkFCeXRlcygpLCBDb2xvcjo6YmxhY2spOwogICAg
ICAgICBFWFBFQ1RfRVEoaXRlbS5yZWN0KCksIEZsb2F0UmVjdCgwLCAwLCAxMDAsIDEwMCkpOwog
ICAgIH0KQEAgLTE3NywxMiArMTU0LDExIEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgSXRlbUJ1
ZmZlckNsaWVudCkKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgT3B0aW9uYWw8
SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIEl0ZW1UeXBlIHR5cGUsIHVpbnQ4X3QqIGhhbmRsZUxv
Y2F0aW9uKSBmaW5hbAorICAgICAgICBPcHRpb25hbDxEaXNwbGF5TGlzdEl0ZW0+IFdBUk5fVU5V
U0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVu
Z3RoLCBJdGVtVHlwZSB0eXBlKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBFWFBFQ1Rf
RVEodHlwZSwgSXRlbVR5cGU6OlN0cm9rZVBhdGgpOwogICAgICAgICAgICAgRVhQRUNUX0VRKGRh
dGFMZW5ndGgsIHNpemVvZihzaXplX3QpKTsKLSAgICAgICAgICAgIG5ldyAoaGFuZGxlTG9jYXRp
b24gKyBzaXplb2YodWludDY0X3QpKSBTdHJva2VQYXRoKG1faXRlbXNbKnJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3Qgc2l6ZV90Kj4oZGF0YSldKTsKLSAgICAgICAgICAgIHJldHVybiB7eyBoYW5kbGVM
b2NhdGlvbiB9fTsKKyAgICAgICAgICAgIHJldHVybiBEaXNwbGF5TGlzdEl0ZW0oU3Ryb2tlUGF0
aChtX2l0ZW1zWypyZWludGVycHJldF9jYXN0PGNvbnN0IHNpemVfdCo+KGRhdGEpXSkpOwogICAg
ICAgICB9CiAKICAgICAgICAgY29uc3QgVmVjdG9yPFN0cm9rZVBhdGg+JiBtX2l0ZW1zOwpAQCAt
MTk4LDcgKzE3NCw3IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgSXRlbUJ1ZmZlckNsaWVudCkK
ICAgICBwcml2YXRlOgogICAgICAgICBJdGVtQnVmZmVySGFuZGxlIGNyZWF0ZUl0ZW1CdWZmZXIo
c2l6ZV90IGNhcGFjaXR5KSBmaW5hbAogICAgICAgICB7Ci0gICAgICAgICAgICBFWFBFQ1RfTFQo
Y2FwYWNpdHksIGdsb2JhbEl0ZW1CdWZmZXJDYXBhY2l0eSk7CisgICAgICAgICAgICBFWFBFQ1Rf
TEUoY2FwYWNpdHksIGdsb2JhbEl0ZW1CdWZmZXJDYXBhY2l0eSk7CiAgICAgICAgICAgICByZXR1
cm4geyBnbG9iYWxCdWZmZXJJZGVudGlmaWVyLCBnbG9iYWxJdGVtQnVmZmVyLCBnbG9iYWxJdGVt
QnVmZmVyQ2FwYWNpdHkgfTsKICAgICAgICAgfQogCkBAIC0yMjcsOCArMjAzLDggQEAgVEVTVChE
aXNwbGF5TGlzdFRlc3RzLCBJdGVtQnVmZmVyQ2xpZW50KQogICAgIHNoYWxsb3dDb3B5LnNldEl0
ZW1CdWZmZXJSZWFkaW5nQ2xpZW50KCZyZWFkZXIpOwogCiAgICAgVmVjdG9yPEl0ZW1UeXBlPiBp
dGVtVHlwZXM7Ci0gICAgZm9yIChhdXRvIGRpc3BsYXlMaXN0SXRlbSA6IHNoYWxsb3dDb3B5KQot
ICAgICAgICBpdGVtVHlwZXMuYXBwZW5kKGRpc3BsYXlMaXN0SXRlbS0+aXRlbS50eXBlKCkpOwor
ICAgIGZvciAoY29uc3QgYXV0byYgZGlzcGxheUxpc3RJdGVtIDogc2hhbGxvd0NvcHkpCisgICAg
ICAgIGl0ZW1UeXBlcy5hcHBlbmQoZGlzcGxheUxpc3RJdGVtVHlwZShkaXNwbGF5TGlzdEl0ZW0t
Pml0ZW0pKTsKIAogICAgIEVYUEVDVF9GQUxTRShzaGFsbG93Q29weS5pc0VtcHR5KCkpOwogICAg
IEVYUEVDVF9FUShpdGVtVHlwZXMuc2l6ZSgpLCA0VSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCmlu
ZGV4IDQxYWMzOWU1MzZkODg3NmViNmRmZWJmMjMzYjk2NjM1YzE0MDg5MDAuLjJiNjU5YjZmN2Iy
ZWQ2ZThlMzE4MDExZDg3OWIwNDU5YTZlYWJjM2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCkBA
IC04NSw3ICs4NSw3IEBAIHN0YXRpYyBJdGVtQnVmZmVySWRlbnRpZmllciBnbG9iYWxCdWZmZXJJ
ZGVudGlmaWVyID0gSXRlbUJ1ZmZlcklkZW50aWZpZXI6OmdlbmVyCiAKIGNsYXNzIFJlYWRpbmdD
bGllbnQgOiBwdWJsaWMgSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQgewogcHJpdmF0ZToKLSAgICBP
cHRpb25hbDxJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1
aW50OF90Kiwgc2l6ZV90LCBJdGVtVHlwZSB0eXBlLCB1aW50OF90KikgZmluYWwKKyAgICBPcHRp
b25hbDxEaXNwbGF5TGlzdEl0ZW0+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0
IHVpbnQ4X3QqLCBzaXplX3QsIEl0ZW1UeXBlIHR5cGUpIGZpbmFsCiAgICAgewogICAgICAgICBF
WFBFQ1RfRVEodHlwZSwgSXRlbVR5cGU6OkZpbGxQYXRoKTsKICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsK
</data>
<flag name="commit-queue"
          id="448982"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428159</attachid>
            <date>2021-05-10 02:54:06 -0700</date>
            <delta_ts>2021-05-10 02:58:20 -0700</delta_ts>
            <desc>Patch for committing</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>56832</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IGUxYzQyNTY2ZTUzNWRmMjJkZDMxYWY2YzNkODIwMzhhN2UzZTNkOWEKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBTdW4gTWF5IDkg
MTU6NTU6MjMgMjAyMSAtMDcwMAoKICAgIFBhcnQgOQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlNTU1Mjk3YTFl
NzguLmNiNDYxZmFiNmRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMzI4LDYgKzMyOCw1NCBAQAogICAgICAg
ICB0byByZW1vdmUgcmFuZ2UgY2hlY2tpbmcuIEFsc28gdXNlIFN0cmluZ1ZpZXc6OnN1YnN0cmlu
ZyBpbnN0ZWFkIG9mCiAgICAgICAgIHdyaXRpbmcgb3V0IHNwZWNpYWwgY2FzZXMgZm9yIDgtYml0
IGFuZCAxNi1iaXQgY2hhcmFjdGVycy4KIAorMjAyMS0wNS0wOSAgTXlsZXMgQy4gTWF4ZmllbGQg
IDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gU2ltcGxpZnkg
RGlzcGxheUxpc3Q6Okl0ZXJhdG9yIHBhcnQgOTogTWlncmF0ZSBEaXNwbGF5TGlzdDo6SXRlcmF0
b3IncyBBUEkgdG8gdXNlIERpc3BsYXlMaXN0SXRlbSByYXRoZXIgdGhhbiBJdGVtSGFuZGxlLCBh
bmQgdXBkYXRlIGNhbGxlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyNTU4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgaXMgYSBmYWlybHkgbWVjaGFuaWNhbCByZXBsYWNlbWVudCBpbiB1c2Vy
cyBvZiBEaXNwbGF5TGlzdDo6SXRlcmF0b3IuCisgICAgICAgIFRoaXMgcGF0Y2gganVzdCBtaWdy
YXRlcyBmcm9tIEl0ZW1IYW5kbGUgdG8gY29uc3QgRGlzcGxheUxpc3RJdGVtJi4KKworICAgICAg
ICBUaGUgYmVuZWZpdHMgYXJlOgorICAgICAgICAtIERpc3BsYXlMaXN0OjphcHBlbmQoKSBnb2Vz
IGZyb20gMTM0IGxpbmVzIHRvIDMKKyAgICAgICAgLSBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBJdGVtSGFuZGxlIGl0ZW0pIGdvZXMgZnJvbSAxOTAgbGluZXMgdG8gNQor
ICAgICAgICAtIFVzaW5nIFZpc2l0b3IgbWVhbnMgdGhlcmUgaXMgYSBsb3QgbGVzcyBtYW51YWwg
ZG93bmNhc3RpbmcKKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6YXNUZXh0IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6ZHVtcCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmFwcGVuZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1
ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6ZGVz
Y3JpcHRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpTZXRTdGF0ZTo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Om9wZXJhdG9yPDwpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0
YXRlOjphcHBseSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEcmF3R2x5cGhzOjpmb250SWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6aXNEcmF3aW5nSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RHJhd0dseXBoczo6Zm9udElkZW50aWZpZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5SW1hZ2VCdWZmZXJJdGVtKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjphcHBseU5hdGl2ZUltYWdlSXRlbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YXBwbHlTZXRTdGF0ZUl0ZW0pOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5Rm9udEl0ZW0pOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpS
ZXBsYXllcjo6YXBwbHlJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBs
YXllcjo6cmVwbGF5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZXBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJl
cGxheWVyOjpEZWxlZ2F0ZTo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJbk1lbW9yeURpc3BsYXlMaXN0Ojp+SW5NZW1vcnlEaXNwbGF5TGlzdCk6CisK
IDIwMjEtMDUtMDkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbR1BVIFByb2Nlc3NdIFNpbXBsaWZ5IERpc3BsYXlMaXN0OjpJdGVyYXRvciBwYXJ0
IDg6IFJlcGxhY2UgdGhlIGd1dHMgb2YgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yIHdpdGhvdXQgYWZm
ZWN0aW5nIGl0cyBwdWJsaWMgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IGM3OGFmN2UyNWRkYi4uMThjOWZlYjgxNzJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaApAQCAtMTYwLDcgKzE2MCw3IEBAIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZSB7
CiAgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0U3RhdGUoKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB+R3JhcGhpY3NDb250ZXh0U3RhdGUoKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgR3Jh
cGhpY3NDb250ZXh0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBHcmFwaGljc0NvbnRleHRTdGF0ZShHcmFwaGljc0NvbnRleHRTdGF0ZSYmKTsK
IAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlJiBvcGVyYXRvcj0oY29uc3QgR3JhcGhpY3NDb250
ZXh0U3RhdGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCmluZGV4IDYwNWY5YTBhNjQ2Ni4u
OTY1ZDc3YmIzNzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKQEAgLTg1LDEyICs4NSwx
MCBAQCB2b2lkIERpc3BsYXlMaXN0OjpjbGVhcigpCiAgICAgbV9uYXRpdmVJbWFnZXMuY2xlYXIo
KTsKIH0KIAotYm9vbCBEaXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdz
IGZsYWdzLCBJdGVtSGFuZGxlIGl0ZW0pCitib29sIERpc3BsYXlMaXN0OjpzaG91bGREdW1wRm9y
RmxhZ3MoQXNUZXh0RmxhZ3MgZmxhZ3MsIGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgaXRlbSkKIHsK
LSAgICBzd2l0Y2ggKGl0ZW0udHlwZSgpKSB7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6
CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlbSwgWyZdKGNvbnN0IFNldFN0YXRlJiBzdGF0
ZUl0ZW0pIC0+IGJvb2wgewogICAgICAgICBpZiAoIShmbGFncyAmIEFzVGV4dEZsYWc6OkluY2x1
ZGVzUGxhdGZvcm1PcGVyYXRpb25zKSkgewotICAgICAgICAgICAgY29uc3QgYXV0byYgc3RhdGVJ
dGVtID0gaXRlbS5nZXQ8U2V0U3RhdGU+KCk7CiAgICAgICAgICAgICAvLyBGSVhNRTogZm9yIG5v
dywgb25seSBkcm9wIHRoZSBpdGVtIGlmIHRoZSBvbmx5IHN0YXRlLWNoYW5nZSBmbGFncyBhcmUg
cGxhdGZvcm0tc3BlY2lmaWMuCiAgICAgICAgICAgICBpZiAoc3RhdGVJdGVtLnN0YXRlQ2hhbmdl
KCkubV9jaGFuZ2VGbGFncyA9PSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxR
dWFudGl6ZUZvbnRzQ2hhbmdlKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTk4
LDMxICs5NiwyOSBAQCBib29sIERpc3BsYXlMaXN0OjpzaG91bGREdW1wRm9yRmxhZ3MoQXNUZXh0
RmxhZ3MgZmxhZ3MsIEl0ZW1IYW5kbGUgaXRlbSkKICAgICAgICAgICAgIGlmIChzdGF0ZUl0ZW0u
c3RhdGVDaGFuZ2UoKS5tX2NoYW5nZUZsYWdzID09IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICB9Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gdHJ1ZTsKICNp
ZiBVU0UoQ0cpCi0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlGaWxsUGF0dGVybjoKLSAgICBjYXNl
IEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm46Ci0gICAgICAgIGlmICghKGZsYWdzICYgQXNU
ZXh0RmxhZzo6SW5jbHVkZXNQbGF0Zm9ybU9wZXJhdGlvbnMpKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICBicmVhazsKKyAgICB9LCBbJl0oY29uc3QgQXBwbHlGaWxsUGF0dGVy
biYpIC0+IGJvb2wgeworICAgICAgICByZXR1cm4gZmxhZ3MgJiBBc1RleHRGbGFnOjpJbmNsdWRl
c1BsYXRmb3JtT3BlcmF0aW9uczsKKyAgICB9LCBbJl0oY29uc3QgQXBwbHlTdHJva2VQYXR0ZXJu
JikgLT4gYm9vbCB7CisgICAgICAgIHJldHVybiBmbGFncyAmIEFzVGV4dEZsYWc6OkluY2x1ZGVz
UGxhdGZvcm1PcGVyYXRpb25zOwogI2VuZGlmCi0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotICAgIHJldHVybiB0cnVlOworICAgIH0sIFtdKGNvbnN0IGF1dG8mKSAtPiBib29s
IHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSk7CiB9CiAKIFN0cmluZyBEaXNwbGF5TGlz
dDo6YXNUZXh0KEFzVGV4dEZsYWdzIGZsYWdzKSBjb25zdAogewogICAgIFRleHRTdHJlYW0gc3Ry
ZWFtKFRleHRTdHJlYW06OkxpbmVNb2RlOjpNdWx0aXBsZUxpbmUsIFRleHRTdHJlYW06OkZvcm1h
dHRpbmc6OlNWR1N0eWxlUmVjdCk7CiAgICAgZm9yIChhdXRvIGRpc3BsYXlMaXN0SXRlbSA6ICp0
aGlzKSB7Ci0gICAgICAgIGF1dG8gW2l0ZW0sIGV4dGVudCwgaXRlbVNpemVJbkJ1ZmZlcl0gPSBk
aXNwbGF5TGlzdEl0ZW0udmFsdWUoKTsKKyAgICAgICAgY29uc3QgYXV0byYgW2l0ZW0sIGV4dGVu
dCwgaXRlbVNpemVJbkJ1ZmZlcl0gPSBkaXNwbGF5TGlzdEl0ZW0udmFsdWUoKTsKICAgICAgICAg
aWYgKCFzaG91bGREdW1wRm9yRmxhZ3MoZmxhZ3MsIGl0ZW0pKQogICAgICAgICAgICAgY29udGlu
dWU7CiAKICAgICAgICAgVGV4dFN0cmVhbTo6R3JvdXBTY29wZSBncm91cChzdHJlYW0pOwogICAg
ICAgICBzdHJlYW0gPDwgaXRlbTsKLSAgICAgICAgaWYgKGl0ZW0uaXNEcmF3aW5nSXRlbSgpKQor
ICAgICAgICBpZiAoaXNEcmF3aW5nSXRlbShpdGVtKSkKICAgICAgICAgICAgIHN0cmVhbSA8PCAi
IGV4dGVudCAiIDw8IGV4dGVudDsKICAgICB9CiAgICAgcmV0dXJuIHN0cmVhbS5yZWxlYXNlKCk7
CkBAIC0xMzQsMTAgKzEzMCwxMCBAQCB2b2lkIERpc3BsYXlMaXN0OjpkdW1wKFRleHRTdHJlYW0m
IHRzKSBjb25zdAogICAgIHRzIDw8ICJkaXNwbGF5IGxpc3QiOwogCiAgICAgZm9yIChhdXRvIGRp
c3BsYXlMaXN0SXRlbSA6ICp0aGlzKSB7Ci0gICAgICAgIGF1dG8gW2l0ZW0sIGV4dGVudCwgaXRl
bVNpemVJbkJ1ZmZlcl0gPSBkaXNwbGF5TGlzdEl0ZW0udmFsdWUoKTsKKyAgICAgICAgY29uc3Qg
YXV0byYgW2l0ZW0sIGV4dGVudCwgaXRlbVNpemVJbkJ1ZmZlcl0gPSBkaXNwbGF5TGlzdEl0ZW0u
dmFsdWUoKTsKICAgICAgICAgVGV4dFN0cmVhbTo6R3JvdXBTY29wZSBncm91cCh0cyk7CiAgICAg
ICAgIHRzIDw8IGl0ZW07Ci0gICAgICAgIGlmIChpdGVtLmlzRHJhd2luZ0l0ZW0oKSkKKyAgICAg
ICAgaWYgKGlzRHJhd2luZ0l0ZW0oaXRlbSkpCiAgICAgICAgICAgICB0cyA8PCAiIGV4dGVudCAi
IDw8IGV4dGVudDsKICAgICB9CiAgICAgdHMuc3RhcnRHcm91cCgpOwpAQCAtMTk3LDE0MiArMTkz
LDEyIEBAIHZvaWQgRGlzcGxheUxpc3Q6OnNldFRyYWNrc0RyYXdpbmdJdGVtRXh0ZW50cyhib29s
IHZhbHVlKQogICAgIG1fdHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzID0gdmFsdWU7CiB9CiAKLXZv
aWQgRGlzcGxheUxpc3Q6OmFwcGVuZChJdGVtSGFuZGxlIGl0ZW0pCit2b2lkIERpc3BsYXlMaXN0
OjphcHBlbmQoY29uc3QgRGlzcGxheUxpc3RJdGVtJiBpdGVtKQogewotICAgIHN3aXRjaCAoaXRl
bS50eXBlKCkpIHsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTYXZlOgotICAgICAgICByZXR1cm4gYXBw
ZW5kPFNhdmU+KGl0ZW0uZ2V0PFNhdmU+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlJlc3RvcmU6
Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8UmVzdG9yZT4oaXRlbS5nZXQ8UmVzdG9yZT4oKSk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6VHJhbnNsYXRlOgotICAgICAgICByZXR1cm4gYXBwZW5kPFRyYW5z
bGF0ZT4oaXRlbS5nZXQ8VHJhbnNsYXRlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpSb3RhdGU6
Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8Um90YXRlPihpdGVtLmdldDxSb3RhdGU+KCkpOwotICAg
IGNhc2UgSXRlbVR5cGU6OlNjYWxlOgotICAgICAgICByZXR1cm4gYXBwZW5kPFNjYWxlPihpdGVt
LmdldDxTY2FsZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06Ci0gICAg
ICAgIHJldHVybiBhcHBlbmQ8Q29uY2F0ZW5hdGVDVE0+KGl0ZW0uZ2V0PENvbmNhdGVuYXRlQ1RN
PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRDVE06Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8
U2V0Q1RNPihpdGVtLmdldDxTZXRDVE0+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGlu
ZUZpbGxHcmFkaWVudDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTZXRJbmxpbmVGaWxsR3JhZGll
bnQ+KGl0ZW0uZ2V0PFNldElubGluZUZpbGxHcmFkaWVudD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6U2V0SW5saW5lRmlsbENvbG9yOgotICAgICAgICByZXR1cm4gYXBwZW5kPFNldElubGluZUZp
bGxDb2xvcj4oaXRlbS5nZXQ8U2V0SW5saW5lRmlsbENvbG9yPigpKTsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpTZXRJbmxpbmVTdHJva2VDb2xvcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTZXRJbmxp
bmVTdHJva2VDb2xvcj4oaXRlbS5nZXQ8U2V0SW5saW5lU3Ryb2tlQ29sb3I+KCkpOwotICAgIGNh
c2UgSXRlbVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxT
ZXRTdHJva2VUaGlja25lc3M+KGl0ZW0uZ2V0PFNldFN0cm9rZVRoaWNrbmVzcz4oKSk7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2V0U3RhdGU+
KGl0ZW0uZ2V0PFNldFN0YXRlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lQ2FwOgot
ICAgICAgICByZXR1cm4gYXBwZW5kPFNldExpbmVDYXA+KGl0ZW0uZ2V0PFNldExpbmVDYXA+KCkp
OwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVEYXNoOgotICAgICAgICByZXR1cm4gYXBwZW5k
PFNldExpbmVEYXNoPihpdGVtLmdldDxTZXRMaW5lRGFzaD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6U2V0TGluZUpvaW46Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2V0TGluZUpvaW4+KGl0ZW0u
Z2V0PFNldExpbmVKb2luPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRNaXRlckxpbWl0Ogot
ICAgICAgICByZXR1cm4gYXBwZW5kPFNldE1pdGVyTGltaXQ+KGl0ZW0uZ2V0PFNldE1pdGVyTGlt
aXQ+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyU2hhZG93OgotICAgICAgICByZXR1cm4g
YXBwZW5kPENsZWFyU2hhZG93PihpdGVtLmdldDxDbGVhclNoYWRvdz4oKSk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6Q2xpcDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxDbGlwPihpdGVtLmdldDxDbGlw
PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0OgotICAgICAgICByZXR1cm4gYXBwZW5k
PENsaXBPdXQ+KGl0ZW0uZ2V0PENsaXBPdXQ+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBU
b0ltYWdlQnVmZmVyOgotICAgICAgICByZXR1cm4gYXBwZW5kPENsaXBUb0ltYWdlQnVmZmVyPihp
dGVtLmdldDxDbGlwVG9JbWFnZUJ1ZmZlcj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91
dFRvUGF0aDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxDbGlwT3V0VG9QYXRoPihpdGVtLmdldDxD
bGlwT3V0VG9QYXRoPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKLSAgICAgICAg
cmV0dXJuIGFwcGVuZDxDbGlwUGF0aD4oaXRlbS5nZXQ8Q2xpcFBhdGg+KCkpOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICByZXR1cm4gYXBw
ZW5kPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPihpdGVtLmdldDxCZWdpbkNsaXBUb0RyYXdp
bmdDb21tYW5kcz4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzOgotICAgICAgICByZXR1cm4gYXBwZW5kPEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oaXRl
bS5nZXQ8RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3R2x5cGhzOgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdHbHlwaHM+KGl0ZW0uZ2V0PERy
YXdHbHlwaHM+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKLSAgICAg
ICAgcmV0dXJuIGFwcGVuZDxEcmF3SW1hZ2VCdWZmZXI+KGl0ZW0uZ2V0PERyYXdJbWFnZUJ1ZmZl
cj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgotICAgICAgICByZXR1
cm4gYXBwZW5kPERyYXdOYXRpdmVJbWFnZT4oaXRlbS5nZXQ8RHJhd05hdGl2ZUltYWdlPigpKTsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxE
cmF3UGF0dGVybj4oaXRlbS5nZXQ8RHJhd1BhdHRlcm4+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdSZWN0OgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdSZWN0PihpdGVtLmdldDxEcmF3
UmVjdD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6Ci0gICAgICAgIHJldHVybiBh
cHBlbmQ8RHJhd0xpbmU+KGl0ZW0uZ2V0PERyYXdMaW5lPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3TGluZXNGb3JUZXh0OgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdMaW5lc0ZvclRl
eHQ+KGl0ZW0uZ2V0PERyYXdMaW5lc0ZvclRleHQ+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd0RvdHNG
b3JEb2N1bWVudE1hcmtlcj4oaXRlbS5nZXQ8RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcj4oKSk7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8
RHJhd0VsbGlwc2U+KGl0ZW0uZ2V0PERyYXdFbGxpcHNlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3UGF0aDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3UGF0aD4oaXRlbS5nZXQ8RHJh
d1BhdGg+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgotICAgICAg
ICByZXR1cm4gYXBwZW5kPERyYXdGb2N1c1JpbmdQYXRoPihpdGVtLmdldDxEcmF3Rm9jdXNSaW5n
UGF0aD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3RzOgotICAgICAg
ICByZXR1cm4gYXBwZW5kPERyYXdGb2N1c1JpbmdSZWN0cz4oaXRlbS5nZXQ8RHJhd0ZvY3VzUmlu
Z1JlY3RzPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdDoKLSAgICAgICAgcmV0dXJu
IGFwcGVuZDxGaWxsUmVjdD4oaXRlbS5nZXQ8RmlsbFJlY3Q+KCkpOwotICAgIGNhc2UgSXRlbVR5
cGU6OkZpbGxSZWN0V2l0aENvbG9yOgotICAgICAgICByZXR1cm4gYXBwZW5kPEZpbGxSZWN0V2l0
aENvbG9yPihpdGVtLmdldDxGaWxsUmVjdFdpdGhDb2xvcj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQ6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RmlsbFJlY3RX
aXRoR3JhZGllbnQ+KGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aEdyYWRpZW50PigpKTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRlZFJlY3Q6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8Rmls
bENvbXBvc2l0ZWRSZWN0PihpdGVtLmdldDxGaWxsQ29tcG9zaXRlZFJlY3Q+KCkpOwotICAgIGNh
c2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxGaWxs
Um91bmRlZFJlY3Q+KGl0ZW0uZ2V0PEZpbGxSb3VuZGVkUmVjdD4oKSk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8Rmls
bFJlY3RXaXRoUm91bmRlZEhvbGU+KGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlPigp
KTsKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxs
SW5saW5lUGF0aDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxGaWxsSW5saW5lUGF0aD4oaXRlbS5n
ZXQ8RmlsbElubGluZVBhdGg+KCkpOwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFBh
dGg6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RmlsbFBhdGg+KGl0ZW0uZ2V0PEZpbGxQYXRoPigp
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZDxGaWxsRWxsaXBzZT4oaXRlbS5nZXQ8RmlsbEVsbGlwc2U+KCkpOwotICAgIGNhc2UgSXRlbVR5
cGU6OkZsdXNoQ29udGV4dDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxGbHVzaENvbnRleHQ+KGl0
ZW0uZ2V0PEZsdXNoQ29udGV4dD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRD
aGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOgotICAgICAgICByZXR1cm4gYXBwZW5kPE1ldGFD
b21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4oaXRlbS5nZXQ8TWV0YUNvbW1hbmRD
aGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRh
Q29tbWFuZENoYW5nZUl0ZW1CdWZmZXI6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8TWV0YUNvbW1h
bmRDaGFuZ2VJdGVtQnVmZmVyPihpdGVtLmdldDxNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI+
KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkdldEltYWdlRGF0YToKLSAgICAgICAgcmV0dXJuIGFw
cGVuZDxHZXRJbWFnZURhdGE+KGl0ZW0uZ2V0PEdldEltYWdlRGF0YT4oKSk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgotICAgICAgICByZXR1cm4gYXBwZW5kPFB1dEltYWdlRGF0
YT4oaXRlbS5nZXQ8UHV0SW1hZ2VEYXRhPigpKTsKLSNpZiBFTkFCTEUoVklERU8pCi0gICAgY2Fz
ZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgotICAgICAgICByZXR1cm4gYXBwZW5kPFBh
aW50RnJhbWVGb3JNZWRpYT4oaXRlbS5nZXQ8UGFpbnRGcmFtZUZvck1lZGlhPigpKTsKLSNlbmRp
ZgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVJlY3Q6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8
U3Ryb2tlUmVjdD4oaXRlbS5nZXQ8U3Ryb2tlUmVjdD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
U3Ryb2tlTGluZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTdHJva2VMaW5lPihpdGVtLmdldDxT
dHJva2VMaW5lPigpKTsKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBjYXNlIEl0
ZW1UeXBlOjpTdHJva2VJbmxpbmVQYXRoOgotICAgICAgICByZXR1cm4gYXBwZW5kPFN0cm9rZUlu
bGluZVBhdGg+KGl0ZW0uZ2V0PFN0cm9rZUlubGluZVBhdGg+KCkpOwotI2VuZGlmCi0gICAgY2Fz
ZSBJdGVtVHlwZTo6U3Ryb2tlUGF0aDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTdHJva2VQYXRo
PihpdGVtLmdldDxTdHJva2VQYXRoPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VFbGxp
cHNlOgotICAgICAgICByZXR1cm4gYXBwZW5kPFN0cm9rZUVsbGlwc2U+KGl0ZW0uZ2V0PFN0cm9r
ZUVsbGlwc2U+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyUmVjdDoKLSAgICAgICAgcmV0
dXJuIGFwcGVuZDxDbGVhclJlY3Q+KGl0ZW0uZ2V0PENsZWFyUmVjdD4oKSk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lMYXllcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxC
ZWdpblRyYW5zcGFyZW5jeUxheWVyPihpdGVtLmdldDxCZWdpblRyYW5zcGFyZW5jeUxheWVyPigp
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVuY3lMYXllcjoKLSAgICAgICAgcmV0
dXJuIGFwcGVuZDxFbmRUcmFuc3BhcmVuY3lMYXllcj4oaXRlbS5nZXQ8RW5kVHJhbnNwYXJlbmN5
TGF5ZXI+KCkpOwotI2lmIFVTRShDRykKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBh
dHRlcm46Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8QXBwbHlTdHJva2VQYXR0ZXJuPihpdGVtLmdl
dDxBcHBseVN0cm9rZVBhdHRlcm4+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RmlsbFBh
dHRlcm46Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8QXBwbHlGaWxsUGF0dGVybj4oaXRlbS5nZXQ8
QXBwbHlGaWxsUGF0dGVybj4oKSk7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseURl
dmljZVNjYWxlRmFjdG9yOgotICAgICAgICByZXR1cm4gYXBwZW5kPEFwcGx5RGV2aWNlU2NhbGVG
YWN0b3I+KGl0ZW0uZ2V0PEFwcGx5RGV2aWNlU2NhbGVGYWN0b3I+KCkpOwotICAgIH0KKyAgICBX
VEY6OnN3aXRjaE9uKGl0ZW0sIFsmXShjb25zdCBhdXRvJiBpdGVtKSB7CisgICAgICAgIHVzaW5n
IERpc3BsYXlMaXN0SXRlbVR5cGUgPSB0eXBlbmFtZSBXVEY6OlJlbW92ZUNWQW5kUmVmZXJlbmNl
PGRlY2x0eXBlKGl0ZW0pPjo6dHlwZTsKKyAgICAgICAgYXBwZW5kPERpc3BsYXlMaXN0SXRlbVR5
cGU+KGl0ZW0pOworICAgIH0pOwogfQogCiBhdXRvIERpc3BsYXlMaXN0OjpiZWdpbigpIGNvbnN0
IC0+IEl0ZXJhdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IDk5MzIyMjYyZGY3MC4uOGNl
ZWU0NTBlN2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaApAQCAtOTEsNyArOTEsNyBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoSXRlbUJ1ZmZlcihGdW5jdGlvbjx2
b2lkKGNvbnN0IEl0ZW1CdWZmZXJIYW5kbGUmKT4mJikgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBjbGFzcy4uLiBBcmdzPiB2b2lkIGFwcGVuZChBcmdzJiYuLi4gYXJncyk7Ci0g
ICAgdm9pZCBhcHBlbmQoSXRlbUhhbmRsZSk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgRGlzcGxh
eUxpc3RJdGVtJik7CiAKICAgICBib29sIHRyYWNrc0RyYXdpbmdJdGVtRXh0ZW50cygpIGNvbnN0
IHsgcmV0dXJuIG1fdHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzOyB9CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRUcmFja3NEcmF3aW5nSXRlbUV4dGVudHMoYm9vbCk7CkBAIC0xMzIsNyArMTMy
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgc2hv
dWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzLCBJdGVtSGFuZGxlKTsKKyAgICBzdGF0aWMgYm9v
bCBzaG91bGREdW1wRm9yRmxhZ3MoQXNUZXh0RmxhZ3MsIGNvbnN0IERpc3BsYXlMaXN0SXRlbSYp
OwogCiAgICAgSW1hZ2VCdWZmZXJIYXNoTWFwIG1faW1hZ2VCdWZmZXJzOwogICAgIE5hdGl2ZUlt
YWdlSGFzaE1hcCBtX25hdGl2ZUltYWdlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbUJ1ZmZlci5jcHAKaW5kZXggODQ2YzQyMDAxZDViLi4yMWVlZGQ3NGMxZDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCkBAIC0zNCwxNSArMzQsNiBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotI2lmICFk
ZWZpbmVkKE5ERUJVRykgfHwgIUxPR19ESVNBQkxFRAotQ1N0cmluZyBJdGVtSGFuZGxlOjpkZXNj
cmlwdGlvbigpIGNvbnN0Ci17Ci0gICAgVGV4dFN0cmVhbSB0czsKLSAgICB0cyA8PCAqdGhpczsK
LSAgICByZXR1cm4gdHMucmVsZWFzZSgpLnV0ZjgoKTsKLX0KLSNlbmRpZgotCiB2b2lkIEl0ZW1I
YW5kbGU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBzd2l0Y2ggKHR5
cGUoKSkgewpAQCAtNTk2LDEzICs1ODcsMTMgQEAgYm9vbCBJdGVtSGFuZGxlOjpzYWZlQ29weShJ
dGVtSGFuZGxlIGRlc3RpbmF0aW9uKSBjb25zdAogCiBib29sIHNhZmVDb3B5KEl0ZW1IYW5kbGUg
ZGVzdGluYXRpb24sIGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgc291cmNlKQogewotICAgIHJldHVy
biBXVEY6OnZpc2l0KFsmXShjb25zdCBhdXRvJiBzb3VyY2UpIHsKKyAgICByZXR1cm4gV1RGOjpz
d2l0Y2hPbihzb3VyY2UsIFsmXShjb25zdCBhdXRvJiBzb3VyY2UpIHsKICAgICAgICAgdXNpbmcg
RGlzcGxheUxpc3RJdGVtVHlwZSA9IHR5cGVuYW1lIFdURjo6UmVtb3ZlQ1ZBbmRSZWZlcmVuY2U8
ZGVjbHR5cGUoc291cmNlKT46OnR5cGU7CiAgICAgICAgIGNvbnN0ZXhwciBhdXRvIGl0ZW1UeXBl
ID0gRGlzcGxheUxpc3RJdGVtVHlwZTo6aXRlbVR5cGU7CiAgICAgICAgIGRlc3RpbmF0aW9uLmRh
dGFbMF0gPSBzdGF0aWNfY2FzdDx1aW50OF90PihpdGVtVHlwZSk7CiAgICAgICAgIGF1dG8gaXRl
bU9mZnNldCA9IGRlc3RpbmF0aW9uLmRhdGEgKyBzaXplb2YodWludDY0X3QpOwogICAgICAgICBy
ZXR1cm4gY29weUludG88RGlzcGxheUxpc3RJdGVtVHlwZT4oaXRlbU9mZnNldCwgc291cmNlKTsK
LSAgICB9LCBzb3VyY2UpOworICAgIH0pOwogfQogCiBPcHRpb25hbDxEaXNwbGF5TGlzdEl0ZW0+
IHNhZmVDb3B5KEl0ZW1IYW5kbGUgc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbVR5cGUuY3BwCmluZGV4IGVmNTVmNzZlM2EzYy4uMmQyYzA2MThmMWZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwCkBAIC0yNjEsMTcgKzI2MSwxNyBAQCBz
aXplX3QgcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKEl0ZW1UeXBlIHR5cGUpCiAKIHNp
emVfdCBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoY29uc3QgRGlzcGxheUxpc3RJdGVt
JiBkaXNwbGF5TGlzdEl0ZW0pCiB7Ci0gICAgYXV0byBpdGVtU2l6ZSA9IFdURjo6dmlzaXQoW10o
Y29uc3QgYXV0byYgaXRlbSkgeworICAgIGF1dG8gaXRlbVNpemUgPSBXVEY6OnN3aXRjaE9uKGRp
c3BsYXlMaXN0SXRlbSwgW10oY29uc3QgYXV0byYgaXRlbSkgewogICAgICAgICByZXR1cm4gc2l6
ZW9mKGl0ZW0pOwotICAgIH0sIGRpc3BsYXlMaXN0SXRlbSk7CisgICAgfSk7CiAgICAgcmV0dXJu
IHNpemVvZih1aW50NjRfdCkgKyByb3VuZFVwVG9NdWx0aXBsZU9mPGFsaWdub2YodWludDY0X3Qp
PihpdGVtU2l6ZSk7CiB9CiAKIEl0ZW1UeXBlIGRpc3BsYXlMaXN0SXRlbVR5cGUoY29uc3QgRGlz
cGxheUxpc3RJdGVtJiBkaXNwbGF5TGlzdEl0ZW0pCiB7Ci0gICAgcmV0dXJuIFdURjo6dmlzaXQo
W10oY29uc3QgYXV0byYgaXRlbSkgeworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGRpc3BsYXlM
aXN0SXRlbSwgW10oY29uc3QgYXV0byYgaXRlbSkgewogICAgICAgICByZXR1cm4gaXRlbS5pdGVt
VHlwZTsKLSAgICB9LCBkaXNwbGF5TGlzdEl0ZW0pOworICAgIH0pOwogfQogCiBib29sIGlzSW5s
aW5lSXRlbShJdGVtVHlwZSB0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3Bw
CmluZGV4IDQ5YjJjMWIyNWM4Mi4uYzc2M2UzMjY0OWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuY3BwCkBAIC00OSwxMSArNDksMjEgQEAgdm9pZCBTYXZlOjphcHBseShHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiAgICAgY29udGV4dC5zYXZlKCk7CiB9CiAKK3N0
YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTYXZlJikK
K3sKKyAgICByZXR1cm4gdHM7Cit9CisKIHZvaWQgUmVzdG9yZTo6YXBwbHkoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGNvbnRleHQucmVzdG9yZSgpOwogfQogCitzdGF0
aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVzdG9yZSYp
Cit7CisgICAgcmV0dXJuIHRzOworfQorCiB2b2lkIFRyYW5zbGF0ZTo6YXBwbHkoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGNvbnRleHQudHJhbnNsYXRlKG1feCwgbV95
KTsKQEAgLTIyMCwxMiArMjMwLDEyIEBAIFNldFN0YXRlOjpTZXRTdGF0ZShjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVDaGFuZ2UsIGNvbnN0IFBhdHRlcm5ECiB7CiB9CiAK
LXZvaWQgU2V0U3RhdGU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgTmF0aXZlSW1h
Z2UqIHN0cm9rZVBhdHRlcm5JbWFnZSwgTmF0aXZlSW1hZ2UqIGZpbGxQYXR0ZXJuSW1hZ2UpCit2
b2lkIFNldFN0YXRlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE5hdGl2ZUltYWdl
KiBzdHJva2VQYXR0ZXJuSW1hZ2UsIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlKSBjb25z
dAogewogICAgIGlmIChtX3N0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UpICYmIHN0cm9rZVBhdHRlcm5JbWFn
ZSkKLSAgICAgICAgbV9zdGF0ZUNoYW5nZS5tX3N0YXRlLnN0cm9rZVBhdHRlcm4gPSBQYXR0ZXJu
OjpjcmVhdGUobWFrZVJlZigqc3Ryb2tlUGF0dGVybkltYWdlKSwgbV9zdHJva2VQYXR0ZXJuLnBh
cmFtZXRlcnMpOworICAgICAgICBjb25zdF9jYXN0PFNldFN0YXRlKj4odGhpcyktPm1fc3RhdGVD
aGFuZ2UubV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKG1ha2VSZWYoKnN0
cm9rZVBhdHRlcm5JbWFnZSksIG1fc3Ryb2tlUGF0dGVybi5wYXJhbWV0ZXJzKTsKICAgICBpZiAo
bV9zdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpGaWxsUGF0dGVybkNoYW5nZSkgJiYgZmlsbFBhdHRlcm5JbWFnZSkKLSAgICAgICAgbV9zdGF0
ZUNoYW5nZS5tX3N0YXRlLmZpbGxQYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKG1ha2VSZWYoKmZp
bGxQYXR0ZXJuSW1hZ2UpLCBtX2ZpbGxQYXR0ZXJuLnBhcmFtZXRlcnMpOworICAgICAgICBjb25z
dF9jYXN0PFNldFN0YXRlKj4odGhpcyktPm1fc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsUGF0dGVy
biA9IFBhdHRlcm46OmNyZWF0ZShtYWtlUmVmKCpmaWxsUGF0dGVybkltYWdlKSwgbV9maWxsUGF0
dGVybi5wYXJhbWV0ZXJzKTsKICAgICBtX3N0YXRlQ2hhbmdlLmFwcGx5KGNvbnRleHQpOwogfQog
CkBAIC0yODUsNiArMjk1LDExIEBAIHZvaWQgQ2xlYXJTaGFkb3c6OmFwcGx5KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkgY29uc3QKICAgICBjb250ZXh0LmNsZWFyU2hhZG93KCk7CiB9CiAKK3N0
YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBDbGVhclNo
YWRvdyYpCit7CisgICAgcmV0dXJuIHRzOworfQorCiB2b2lkIENsaXA6OmFwcGx5KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBjb250ZXh0LmNsaXAobV9yZWN0KTsKQEAg
LTk2NSw2ICs5ODAsMTEgQEAgdm9pZCBFbmRUcmFuc3BhcmVuY3lMYXllcjo6YXBwbHkoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5
ZXIoKTsKIH0KIAorc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IEVuZFRyYW5zcGFyZW5jeUxheWVyJikKK3sKKyAgICByZXR1cm4gdHM7Cit9CisKICNp
ZiBVU0UoQ0cpCiAKIHZvaWQgQXBwbHlTdHJva2VQYXR0ZXJuOjphcHBseShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpIGNvbnN0CkBAIC05NzIsMTAgKzk5MiwyMSBAQCB2b2lkIEFwcGx5U3Ryb2tl
UGF0dGVybjo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogICAgIGNvbnRl
eHQuYXBwbHlTdHJva2VQYXR0ZXJuKCk7CiB9CiAKK3N0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBBcHBseVN0cm9rZVBhdHRlcm4mKQoreworICAgIHJl
dHVybiB0czsKK30KKwogdm9pZCBBcHBseUZpbGxQYXR0ZXJuOjphcHBseShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgY29udGV4dC5hcHBseUZpbGxQYXR0ZXJuKCk7CiB9
CisKK3N0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBB
cHBseUZpbGxQYXR0ZXJuJikKK3sKKyAgICByZXR1cm4gdHM7Cit9CisKICNlbmRpZgogCiB2b2lk
IEFwcGx5RGV2aWNlU2NhbGVGYWN0b3I6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkg
Y29uc3QKQEAgLTEwODksMTk5ICsxMTIwLDIxIEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBJdGVtVHlwZSB0eXBlKQogICAgIHJldHVybiB0czsKIH0KIAot
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgSXRlbUhhbmRsZSBpdGVtKQot
ewotICAgIHRzIDw8IGl0ZW0udHlwZSgpOwotCi0gICAgc3dpdGNoIChpdGVtLnR5cGUoKSkgewot
ICAgIGNhc2UgSXRlbVR5cGU6OlRyYW5zbGF0ZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8VHJh
bnNsYXRlPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpSb3RhdGU6Ci0g
ICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFJvdGF0ZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U2NhbGU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNjYWxlPigpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRDVE06Ci0gICAgICAgIHRzIDw8IGl0
ZW0uZ2V0PFNldENUTT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q29u
Y2F0ZW5hdGVDVE06Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENvbmNhdGVuYXRlQ1RNPigpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsR3JhZGllbnQ6
Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldElubGluZUZpbGxHcmFkaWVudD4oKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbENvbG9yOgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxTZXRJbmxpbmVGaWxsQ29sb3I+KCk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZVN0cm9rZUNvbG9yOgotICAgICAgICB0cyA8PCBp
dGVtLmdldDxTZXRJbmxpbmVTdHJva2VDb2xvcj4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U2V0U3Ryb2tlVGhpY2tuZXNzOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxT
ZXRTdHJva2VUaGlja25lc3M+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6
OlNldFN0YXRlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRTdGF0ZT4oKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUNhcDoKLSAgICAgICAgdHMgPDwgaXRl
bS5nZXQ8U2V0TGluZUNhcD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
U2V0TGluZURhc2g6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldExpbmVEYXNoPigpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lSm9pbjoKLSAgICAgICAgdHMg
PDwgaXRlbS5nZXQ8U2V0TGluZUpvaW4+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRl
bVR5cGU6OlNldE1pdGVyTGltaXQ6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldE1pdGVyTGlt
aXQ+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXA6Ci0gICAgICAg
IHRzIDw8IGl0ZW0uZ2V0PENsaXA+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5
cGU6OkNsaXBPdXQ6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENsaXBPdXQ+KCk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOgotICAgICAgICB0
cyA8PCBpdGVtLmdldDxDbGlwVG9JbWFnZUJ1ZmZlcj4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q2xp
cE91dFRvUGF0aD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBh
dGg6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENsaXBQYXRoPigpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAg
dHMgPDwgaXRlbS5nZXQ8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAg
ICAgdHMgPDwgaXRlbS5nZXQ8RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgotICAgICAgICB0cyA8PCBpdGVt
LmdldDxEcmF3R2x5cGhzPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3SW1hZ2VCdWZmZXI6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdJbWFnZUJ1ZmZlcj4o
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgot
ICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3TmF0aXZlSW1hZ2U+KCk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgotICAgICAgICB0cyA8PCBpdGVtLmdl
dDxEcmF3UGF0dGVybj4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJh
d1JlY3Q6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdSZWN0PigpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8
RHJhd0xpbmU+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5l
c0ZvclRleHQ6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdMaW5lc0ZvclRleHQ+KCk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJr
ZXI6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI+KCk7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxEcmF3RWxsaXBzZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6RHJhd1BhdGg6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdQYXRoPigp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoK
LSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0ZvY3VzUmluZ1BhdGg+KCk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKLSAgICAgICAgdHMg
PDwgaXRlbS5nZXQ8RHJhd0ZvY3VzUmluZ1JlY3RzPigpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpGaWxsUmVjdDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RmlsbFJlY3Q+
KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9y
OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsUmVjdFdpdGhDb2xvcj4oKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQ6Ci0gICAgICAg
IHRzIDw8IGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aEdyYWRpZW50PigpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRlZFJlY3Q6Ci0gICAgICAgIHRzIDw8IGl0
ZW0uZ2V0PEZpbGxDb21wb3NpdGVkUmVjdD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RmlsbFJvdW5kZWRSZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsUm91
bmRlZFJlY3Q+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0
V2l0aFJvdW5kZWRIb2xlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsUmVjdFdpdGhSb3Vu
ZGVkSG9sZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEp
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbElubGluZVBhdGg6Ci0gICAgICAgIHRzIDw8IGl0ZW0u
Z2V0PEZpbGxJbmxpbmVQYXRoPigpOwotICAgICAgICBicmVhazsKLSNlbmRpZgotICAgIGNhc2Ug
SXRlbVR5cGU6OkZpbGxQYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsUGF0aD4oKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbEVsbGlwc2U6Ci0gICAgICAg
IHRzIDw8IGl0ZW0uZ2V0PEZpbGxFbGxpcHNlPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEZsdXNoQ29u
dGV4dD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRD
aGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxNZXRh
Q29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI+KCk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjoKLSAgICAgICAg
dHMgPDwgaXRlbS5nZXQ8TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyPigpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpHZXRJbWFnZURhdGE6Ci0gICAgICAgIHRzIDw8IGl0
ZW0uZ2V0PEdldEltYWdlRGF0YT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6UHV0SW1hZ2VEYXRhOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxQdXRJbWFnZURhdGE+KCk7
Ci0gICAgICAgIGJyZWFrOwotI2lmIEVOQUJMRShWSURFTykKLSAgICBjYXNlIEl0ZW1UeXBlOjpQ
YWludEZyYW1lRm9yTWVkaWE6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFBhaW50RnJhbWVGb3JN
ZWRpYT4oKTsKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJv
a2VSZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTdHJva2VSZWN0PigpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VMaW5lOgotICAgICAgICB0cyA8PCBpdGVt
LmdldDxTdHJva2VMaW5lPigpOwotICAgICAgICBicmVhazsKLSNpZiBFTkFCTEUoSU5MSU5FX1BB
VEhfREFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VJbmxpbmVQYXRoOgotICAgICAgICB0
cyA8PCBpdGVtLmdldDxTdHJva2VJbmxpbmVQYXRoPigpOwotICAgICAgICBicmVhazsKLSNlbmRp
ZgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVBhdGg6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0
PFN0cm9rZVBhdGg+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9r
ZUVsbGlwc2U6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFN0cm9rZUVsbGlwc2U+KCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyUmVjdDoKLSAgICAgICAgdHMgPDwg
aXRlbS5nZXQ8Q2xlYXJSZWN0PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpCZWdpblRyYW5zcGFyZW5jeUxheWVyOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxCZWdpblRy
YW5zcGFyZW5jeUxheWVyPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpB
cHBseURldmljZVNjYWxlRmFjdG9yOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxBcHBseURldmlj
ZVNjYWxlRmFjdG9yPigpOwotICAgICAgICBicmVhazsKLQotICAgIC8vIEl0ZW1zIHdpdGggbm8g
YWRkaXRpb25hbCBkYXRhLgotICAgIGNhc2UgSXRlbVR5cGU6OlNhdmU6Ci0gICAgY2FzZSBJdGVt
VHlwZTo6UmVzdG9yZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVuY3lMYXllcjoK
LSNpZiBVU0UoQ0cpCi0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuOgotICAg
IGNhc2UgSXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRlcm46Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1U
eXBlOjpDbGVhclNoYWRvdzoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQorVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRGlzcGxheUxpc3RJdGVtJiBpdGVtKQorewor
ICAgIFdURjo6c3dpdGNoT24oaXRlbSwgWyZdKGNvbnN0IGF1dG8mIGRpc3BsYXlMaXN0SXRlbSkg
eworICAgICAgICB0cyA8PCBkaXNwbGF5TGlzdEl0ZW0uaXRlbVR5cGU7CisgICAgICAgIHRzIDw8
IGRpc3BsYXlMaXN0SXRlbTsKKyAgICB9KTsKICAgICByZXR1cm4gdHM7CiB9CiAKK2Jvb2wgaXNE
cmF3aW5nSXRlbShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGRpc3BsYXlMaXN0SXRlbSkKK3sKKyAg
ICByZXR1cm4gV1RGOjpzd2l0Y2hPbihkaXNwbGF5TGlzdEl0ZW0sIFtdKGNvbnN0IGF1dG8mIGRp
c3BsYXlMaXN0SXRlbSkgeworICAgICAgICByZXR1cm4gZGlzcGxheUxpc3RJdGVtLmlzRHJhd2lu
Z0l0ZW07CisgICAgfSk7Cit9CisKIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5o
CmluZGV4IDZkZGI1MzZiZWJlZS4uMWQ5NDRhMDIxOWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmgKQEAgLTI4Myw3ICsyODMsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxTZXRTdGF0ZT4gZGVjb2RlKERlY29kZXImKTsK
IAotICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JiwgTmF0aXZlSW1hZ2UqIHN0cm9rZVBh
dHRlcm5JbWFnZSwgTmF0aXZlSW1hZ2UqIGZpbGxQYXR0ZXJuSW1hZ2UpOworICAgIHZvaWQgYXBw
bHkoR3JhcGhpY3NDb250ZXh0JiwgTmF0aXZlSW1hZ2UqIHN0cm9rZVBhdHRlcm5JbWFnZSwgTmF0
aXZlSW1hZ2UqIGZpbGxQYXR0ZXJuSW1hZ2UpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIHN0cnVj
dCBQYXR0ZXJuRGF0YSB7CkBAIC05MTcsNyArOTE3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSBmYWxzZTsKICAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgaXNEcmF3aW5nSXRlbSA9IHRydWU7CiAKLSAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgZm9udElkZW50aWZpZXIoKSB7IHJldHVybiBtX2ZvbnRJZGVudGlmaWVyOyB9CisgICAg
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGZvbnRJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV9mb250SWRlbnRpZmllcjsgfQogICAgIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9y
KCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbEFuY2hvcjsgfQogICAgIEZsb2F0UG9pbnQgYW5jaG9y
UG9pbnQoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsQW5jaG9yOyB9CiAgICAgY29uc3QgVmVjdG9y
PEdseXBoQnVmZmVyR2x5cGgsIDE2PiYgZ2x5cGhzKCkgY29uc3QgeyByZXR1cm4gbV9nbHlwaHM7
IH0KQEAgLTIzNjksMTMgKzIzNjksMTUgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSXRlbT4gdHlwZW5h
bWUgc3RkOjplbmFibGVfaWZfdDxIYXNJc1ZhbGlkPEl0ZW0+LCBib29sPiBpc1ZhbGkKICAgICBy
ZXR1cm4gaXRlbS5pc1ZhbGlkKCk7CiB9CiAKLUl0ZW1UeXBlIGRpc3BsYXlMaXN0SXRlbVR5cGUo
Y29uc3QgRGlzcGxheUxpc3RJdGVtJik7CitXRUJDT1JFX0VYUE9SVCBJdGVtVHlwZSBkaXNwbGF5
TGlzdEl0ZW1UeXBlKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpOwogCiBzaXplX3QgcGFkZGVkU2l6
ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpOwogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgc2l6ZV90IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5C
eXRlc0Zvckl0ZW0gPSBzaXplb2YodWludDY0X3QpICsgcm91bmRVcFRvTXVsdGlwbGVPZjxhbGln
bm9mKHVpbnQ2NF90KT4oc2l6ZW9mKFQpKTsKIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiwgSXRlbUhhbmRsZSk7CitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
LCBjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsKKworYm9vbCBpc0RyYXdpbmdJdGVtKGNvbnN0IERp
c3BsYXlMaXN0SXRlbSYpOwogCiB9IC8vIG5hbWVzcGFjZSBEaXNwbGF5TGlzdAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwCmlu
ZGV4IDY5ZTAxOWFhNmZhMi4uODI2ZDNhMTBhZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlcmF0b3IuY3BwCkBAIC00MSwxMSArNDEsNiBAQCBEaXNwbGF5TGlzdDo6SXRlcmF0
b3I6Okl0ZXJhdG9yKGNvbnN0IERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgSW1tZWRpYXRlbHlN
b3ZlVAogICAgICAgICBtb3ZlQ3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcigpOwogfQogCi1E
aXNwbGF5TGlzdDo6SXRlcmF0b3I6On5JdGVyYXRvcigpCi17Ci0gICAgY2xlYXJDdXJyZW50SXRl
bSgpOwotfQotCiAjaWYgQVNTRVJUX0VOQUJMRUQKIGJvb2wgRGlzcGxheUxpc3Q6Okl0ZXJhdG9y
OjphdEVuZCgpIGNvbnN0CiB7CkBAIC02MSwxMyArNTYsNiBAQCBib29sIERpc3BsYXlMaXN0OjpJ
dGVyYXRvcjo6YXRFbmQoKSBjb25zdAogfQogI2VuZGlmCiAKLS8vIFRoaXMgaXMgdGVtcG9yYXJ5
LCBhbmQgd2lsbCBiZSByZW1vdmVkIGJ5IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjM1NjAuCi12b2lkIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6Y2xlYXJDdXJyZW50
SXRlbSgpCi17Ci0gICAgaWYgKG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gJiYgbV9jdXJyZW50QnVm
ZmVyRm9ySXRlbSAhPSBtX2ZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW0pCi0gICAgICAgIGZhc3RG
cmVlKG1fY3VycmVudEJ1ZmZlckZvckl0ZW0pOwotfQotCiBhdXRvIERpc3BsYXlMaXN0OjpJdGVy
YXRvcjo6b3BlcmF0b3IqKCkgY29uc3QgLT4gT3B0aW9uYWw8VmFsdWU+CiB7CiAgICAgQVNTRVJU
KCFhdEVuZCgpKTsKQEAgLTgzLDE0ICs3MSw3IEBAIGF1dG8gRGlzcGxheUxpc3Q6Okl0ZXJhdG9y
OjpvcGVyYXRvciooKSBjb25zdCAtPiBPcHRpb25hbDxWYWx1ZT4KICAgICBpZiAoY3VycmVudEl0
ZW1JbmZvLT5pc0RyYXdpbmdJdGVtICYmICFtX2Rpc3BsYXlMaXN0Lm1fZHJhd2luZ0l0ZW1FeHRl
bnRzLmlzRW1wdHkoKSkKICAgICAgICAgY3VycmVudEV4dGVudCA9IG1fZGlzcGxheUxpc3QubV9k
cmF3aW5nSXRlbUV4dGVudHNbbV9kcmF3aW5nSXRlbUluZGV4XTsKIAotICAgIC8vIFRoaXMgaXMg
dGVtcG9yYXJ5LCBhbmQgd2lsbCBiZSByZW1vdmVkIGJ5IGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjM1NjAuCi0gICAgY29uc3RfY2FzdDxJdGVyYXRvcio+KHRoaXMp
LT5jbGVhckN1cnJlbnRJdGVtKCk7Ci0gICAgYXV0byBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbSA9
IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyhkaXNwbGF5TGlzdEl0ZW1UeXBlKGN1cnJl
bnRJdGVtSW5mby0+ZGlzcGxheUxpc3RJdGVtKSk7Ci0gICAgbV9jdXJyZW50QnVmZmVyRm9ySXRl
bSA9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtIDw9IHNpemVPZkZpeGVkQnVmZmVyRm9yQ3VycmVu
dEl0ZW0gPyBtX2ZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW0gOiByZWludGVycHJldF9jYXN0PHVp
bnQ4X3QqPihmYXN0TWFsbG9jKHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtKSk7Ci0gICAgYXV0byBz
dWNjZXNzID0gc2FmZUNvcHkoeyBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtIH0sIGN1cnJlbnRJdGVt
SW5mby0+ZGlzcGxheUxpc3RJdGVtKTsKLSAgICBBU1NFUlRfVU5VU0VEKHN1Y2Nlc3MsIHN1Y2Nl
c3MpOwotCi0gICAgcmV0dXJuIHt7IHsgbV9jdXJyZW50QnVmZmVyRm9ySXRlbSB9LCBXVEZNb3Zl
KGN1cnJlbnRFeHRlbnQpLCBjdXJyZW50SXRlbUluZm8tPnNpemVJbkJ1ZmZlciB9fTsKKyAgICBy
ZXR1cm4ge3sgY3VycmVudEl0ZW1JbmZvLT5kaXNwbGF5TGlzdEl0ZW0sIFdURk1vdmUoY3VycmVu
dEV4dGVudCksIGN1cnJlbnRJdGVtSW5mby0+c2l6ZUluQnVmZmVyIH19OwogfQogCiB2b2lkIERp
c3BsYXlMaXN0OjpJdGVyYXRvcjo6b3BlcmF0b3IrKygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlcmF0b3IuaAppbmRleCAzMjc0NGE1MWFmYzcuLjU4MmEwNzkzYzI2ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5oCkBAIC0zNSwxNCArMzUsMTMgQEAgY2xhc3Mg
RGlzcGxheUxpc3Q6Okl0ZXJhdG9yIHsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIEltbWVkaWF0
ZWx5TW92ZVRvRW5kIHsgTm8sIFllcyB9OwogICAgIEl0ZXJhdG9yKGNvbnN0IERpc3BsYXlMaXN0
JiwgSW1tZWRpYXRlbHlNb3ZlVG9FbmQgPSBJbW1lZGlhdGVseU1vdmVUb0VuZDo6Tm8pOwotICAg
IFdFQkNPUkVfRVhQT1JUIH5JdGVyYXRvcigpOwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEl0ZXJhdG9yJiBvdGhlcikgeyByZXR1cm4gJm1fZGlzcGxheUxpc3QgPT0gJm90aGVyLm1fZGlz
cGxheUxpc3QgJiYgbV9jdXJzb3IgPT0gb3RoZXIubV9jdXJzb3I7IH0KICAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgSXRlcmF0b3ImIG90aGVyKSB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsg
fQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgb3BlcmF0b3IrKygpOwogCiAgICAgc3RydWN0IFZh
bHVlIHsKLSAgICAgICAgSXRlbUhhbmRsZSBpdGVtOworICAgICAgICBEaXNwbGF5TGlzdEl0ZW0g
aXRlbTsKICAgICAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBleHRlbnQ7CiAgICAgICAgIHNpemVf
dCBpdGVtU2l6ZUluQnVmZmVyIHsgMCB9OwogICAgIH07CkBAIC01MCwxMCArNDksNiBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8VmFsdWU+IG9wZXJhdG9yKigpIGNvbnN0
OwogCiBwcml2YXRlOgotICAgIC8vIFRoZXNlIGFyZSB0ZW1wb3JhcnksIGFuZCB3aWxsIGJlIHJl
bW92ZWQgYnkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzU2MC4K
LSAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBzaXplT2ZGaXhlZEJ1ZmZlckZvckN1cnJlbnRJ
dGVtID0gMjU2OwotICAgIHZvaWQgY2xlYXJDdXJyZW50SXRlbSgpOwotCiAgICAgc3RydWN0IEN1
cnJlbnRJdGVtUmVzdWx0IHsKICAgICAgICAgRGlzcGxheUxpc3RJdGVtIGRpc3BsYXlMaXN0SXRl
bTsKICAgICAgICAgc3RkOjpzaXplX3Qgc2l6ZUluQnVmZmVyOwpAQCAtNzAsMTAgKzY1LDYgQEAg
cHJpdmF0ZToKIAogICAgIEl0ZW1CdWZmZXIqIGl0ZW1CdWZmZXIoKSBjb25zdCB7IHJldHVybiBt
X2Rpc3BsYXlMaXN0Lml0ZW1CdWZmZXJJZkV4aXN0cygpOyB9CiAKLSAgICAvLyBUaGVzZSBhcmUg
dGVtcG9yYXJ5LCBhbmQgd2lsbCBiZSByZW1vdmVkIGJ5IGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjM1NjAuCi0gICAgbXV0YWJsZSB1aW50OF90IG1fZml4ZWRCdWZm
ZXJGb3JDdXJyZW50SXRlbVtzaXplT2ZGaXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtXSB7IDAgfTsK
LSAgICBtdXRhYmxlIHVpbnQ4X3QqIG1fY3VycmVudEJ1ZmZlckZvckl0ZW0geyBudWxscHRyIH07
Ci0KICAgICBjb25zdCBEaXNwbGF5TGlzdCYgbV9kaXNwbGF5TGlzdDsKICAgICBzdHJ1Y3QgQ3Vy
cmVudEl0ZW1JbmZvIHsKICAgICAgICAgc3RkOjpzaXplX3Qgc2l6ZUluQnVmZmVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmluZGV4IDEwN2YyMGVjNGYxYy4uODY3
ZjY1YjQyODk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBA
IC01NCw5ICs1NCw4IEBAIEdyYXBoaWNzQ29udGV4dCYgUmVwbGF5ZXI6OmNvbnRleHQoKSBjb25z
dAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5SW1hZ2VCdWZmZXJJdGVtKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwJiBpbWFnZUJ1ZmZlcnMsIEl0ZW1I
YW5kbGUgaXRlbSkKK2lubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyPiBhcHBseUltYWdlQnVmZmVySXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEltYWdlQnVmZmVySGFzaE1hcCYgaW1hZ2VCdWZmZXJzLCBjb25zdCBUJiBpbWFnZUJ1ZmZl
ckl0ZW0pCiB7Ci0gICAgYXV0byYgaW1hZ2VCdWZmZXJJdGVtID0gaXRlbS5nZXQ8VD4oKTsKICAg
ICBhdXRvIHJlc291cmNlSWRlbnRpZmllciA9IGltYWdlQnVmZmVySXRlbS5pbWFnZUJ1ZmZlcklk
ZW50aWZpZXIoKTsKICAgICBpZiAoYXV0byogaW1hZ2VCdWZmZXIgPSBpbWFnZUJ1ZmZlcnMuZ2V0
KHJlc291cmNlSWRlbnRpZmllcikpIHsKICAgICAgICAgaW1hZ2VCdWZmZXJJdGVtLmFwcGx5KGNv
bnRleHQsICppbWFnZUJ1ZmZlcik7CkBAIC02Niw5ICs2NSw4IEBAIGlubGluZSBzdGF0aWMgT3B0
aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseUltYWdlQnVmZmVySXRlbShH
cmFwaGljCiB9CiAKIHRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlOYXRpdmVJbWFnZUl0ZW0oR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdlcywg
SXRlbUhhbmRsZSBpdGVtKQoraW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXI+IGFwcGx5TmF0aXZlSW1hZ2VJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwJiBuYXRpdmVJbWFnZXMsIGNvbnN0IFQmIG5hdGl2
ZUltYWdlSXRlbSkKIHsKLSAgICBhdXRvJiBuYXRpdmVJbWFnZUl0ZW0gPSBpdGVtLmdldDxUPigp
OwogICAgIGF1dG8gcmVzb3VyY2VJZGVudGlmaWVyID0gbmF0aXZlSW1hZ2VJdGVtLmltYWdlSWRl
bnRpZmllcigpOwogICAgIGlmIChhdXRvKiBpbWFnZSA9IG5hdGl2ZUltYWdlcy5nZXQocmVzb3Vy
Y2VJZGVudGlmaWVyKSkgewogICAgICAgICBuYXRpdmVJbWFnZUl0ZW0uYXBwbHkoY29udGV4dCwg
KmltYWdlKTsKQEAgLTc3LDEwICs3NSw4IEBAIGlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseU5hdGl2ZUltYWdlSXRlbShHcmFwaGljCiAgICAg
cmV0dXJuIHJlc291cmNlSWRlbnRpZmllcjsKIH0KIAotaW5saW5lIHN0YXRpYyBPcHRpb25hbDxS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5U2V0U3RhdGVJdGVtKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwJiBuYXRpdmVJbWFnZXMsIEl0
ZW1IYW5kbGUgaXRlbSkKK2lubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyPiBhcHBseVNldFN0YXRlSXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzLCBjb25zdCBTZXRTdGF0ZSYgc2V0
U3RhdGVJdGVtKQogewotICAgIGF1dG8mIHNldFN0YXRlSXRlbSA9IGl0ZW0uZ2V0PFNldFN0YXRl
PigpOwotCiAgICAgTmF0aXZlSW1hZ2UqIHN0cm9rZVBhdHRlcm5JbWFnZSA9IG51bGxwdHI7CiAg
ICAgTmF0aXZlSW1hZ2UqIGZpbGxQYXR0ZXJuSW1hZ2UgPSBudWxscHRyOwogCkBAIC0xMDEsOSAr
OTcsOCBAQCBpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGhpY3NDbwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBUPgot
aW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5
Rm9udEl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250UmVuZGVyaW5nUmVz
b3VyY2VNYXAmIGZvbnRzLCBJdGVtSGFuZGxlIGl0ZW0pCitpbmxpbmUgc3RhdGljIE9wdGlvbmFs
PFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlGb250SXRlbShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEZvbnRSZW5kZXJpbmdSZXNvdXJjZU1hcCYgZm9udHMsIGNvbnN0
IFQmIGZvbnRJdGVtKQogewotICAgIGF1dG8mIGZvbnRJdGVtID0gaXRlbS5nZXQ8VD4oKTsKICAg
ICBhdXRvIHJlc291cmNlSWRlbnRpZmllciA9IGZvbnRJdGVtLmZvbnRJZGVudGlmaWVyKCk7CiAg
ICAgaWYgKGF1dG8qIGZvbnQgPSBmb250cy5nZXQocmVzb3VyY2VJZGVudGlmaWVyKSkgewogICAg
ICAgICBmb250SXRlbS5hcHBseShjb250ZXh0LCAqZm9udCk7CkBAIC0xMTIsNjggKzEwNyw2NSBA
QCBpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBw
bHlGb250SXRlbShHcmFwaGljc0NvbnRleAogICAgIHJldHVybiByZXNvdXJjZUlkZW50aWZpZXI7
CiB9CiAKLXN0ZDo6cGFpcjxPcHRpb25hbDxTdG9wUmVwbGF5UmVhc29uPiwgT3B0aW9uYWw8UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPj4gUmVwbGF5ZXI6OmFwcGx5SXRlbShJdGVtSGFuZGxl
IGl0ZW0pCitleHRlcm4gR3JhcGhpY3NDb250ZXh0JiBzeW50aGVzaXplTFZhbHVlR3JhcGhpY3ND
b250ZXh0OwordGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lID0gdm9pZD4gc3RhdGljIGlubGlu
ZSBjb25zdGV4cHIgYm9vbCBIYXNBcHBseSA9IGZhbHNlOwordGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RhdGljIGlubGluZSBjb25zdGV4cHIgYm9vbCBIYXNBcHBseTxULCBzdGQ6OnZvaWRfdDxkZWNs
dHlwZShzdGQ6OmRlY2x2YWw8VD4oKS5hcHBseShzeW50aGVzaXplTFZhbHVlR3JhcGhpY3NDb250
ZXh0KSk+PiA9IHRydWU7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEl0ZW0+IHN0YXRpYyBpbmxpbmUg
dHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDwhSGFzQXBwbHk8SXRlbT4sIHZvaWQ+IGFwcGx5KGNv
bnN0IEl0ZW0mLCBHcmFwaGljc0NvbnRleHQmKQoreworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBJ
dGVtPiBzdGF0aWMgaW5saW5lIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8SGFzQXBwbHk8SXRl
bT4sIHZvaWQ+IGFwcGx5KGNvbnN0IEl0ZW0mIGl0ZW0sIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhp
Y3NDb250ZXh0KQoreworICAgIHJldHVybiBpdGVtLmFwcGx5KGdyYXBoaWNzQ29udGV4dCk7Cit9
CisKK2F1dG8gUmVwbGF5ZXI6OmFwcGx5SXRlbShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGl0ZW0p
IC0+IEFwcGx5SXRlbVJlc3VsdAogewogICAgIGlmIChtX2RlbGVnYXRlICYmIG1fZGVsZWdhdGUt
PmFwcGx5KGl0ZW0sIGNvbnRleHQoKSkpCiAgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwg
V1RGOjpudWxsb3B0IH07CiAKLSAgICBpZiAoaXRlbS5pczxEcmF3SW1hZ2VCdWZmZXI+KCkpIHsK
KyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVtLCBbJl0oY29uc3QgRHJhd0ltYWdlQnVmZmVy
JiBpdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQgewogICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2Fj
aGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlJbWFnZUJ1ZmZlckl0ZW08RHJhd0ltYWdlQnVm
ZmVyPihjb250ZXh0KCksIG1faW1hZ2VCdWZmZXJzLCBpdGVtKSkKICAgICAgICAgICAgIHJldHVy
biB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNz
aW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICByZXR1cm4geyBXVEY6Om51
bGxvcHQsIFdURjo6bnVsbG9wdCB9OwotICAgIH0KLQotICAgIGlmIChpdGVtLmlzPENsaXBUb0lt
YWdlQnVmZmVyPigpKSB7CisgICAgfSwgWyZdKGNvbnN0IENsaXBUb0ltYWdlQnVmZmVyJiBpdGVt
KSAtPiBzdGQ6OnBhaXI8T3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4sIE9wdGlvbmFsPFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcj4+IHsKICAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hl
ZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5SW1hZ2VCdWZmZXJJdGVtPENsaXBUb0ltYWdlQnVm
ZmVyPihjb250ZXh0KCksIG1faW1hZ2VCdWZmZXJzLCBpdGVtKSkKICAgICAgICAgICAgIHJldHVy
biB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNz
aW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICByZXR1cm4geyBXVEY6Om51
bGxvcHQsIFdURjo6bnVsbG9wdCB9OwotICAgIH0KLQotICAgIGlmIChpdGVtLmlzPERyYXdOYXRp
dmVJbWFnZT4oKSkgeworICAgIH0sIFsmXShjb25zdCBEcmF3TmF0aXZlSW1hZ2UmIGl0ZW0pIC0+
IEFwcGx5SXRlbVJlc3VsdCB7CiAgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJj
ZUlkZW50aWZpZXIgPSBhcHBseU5hdGl2ZUltYWdlSXRlbTxEcmF3TmF0aXZlSW1hZ2U+KGNvbnRl
eHQoKSwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJl
cGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRS
ZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RG
OjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAgaWYgKGl0ZW0uaXM8RHJhd0dseXBocz4oKSkgewot
ICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlG
b250SXRlbTxEcmF3R2x5cGhzPihjb250ZXh0KCksIG1fZm9udHMsIGl0ZW0pKQorICAgIH0sIFsm
XShjb25zdCBEcmF3UGF0dGVybiYgaXRlbSkgLT4gQXBwbHlJdGVtUmVzdWx0IHsKKyAgICAgICAg
aWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1h
Z2VJdGVtPERyYXdQYXR0ZXJuPihjb250ZXh0KCksIG1fbmF0aXZlSW1hZ2VzLCBpdGVtKSkKICAg
ICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJj
ZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICBy
ZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwotICAgIH0KLQotICAgIGlmIChp
dGVtLmlzPERyYXdQYXR0ZXJuPigpKSB7Ci0gICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRS
ZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseU5hdGl2ZUltYWdlSXRlbTxEcmF3UGF0dGVybj4oY29u
dGV4dCgpLCBtX25hdGl2ZUltYWdlcywgaXRlbSkpCisgICAgfSwgWyZdKGNvbnN0IERyYXdHbHlw
aHMmIGl0ZW0pIC0+IEFwcGx5SXRlbVJlc3VsdCB7CisgICAgICAgIGlmIChhdXRvIG1pc3NpbmdD
YWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUZvbnRJdGVtPERyYXdHbHlwaHM+KGNvbnRl
eHQoKSwgbV9mb250cywgaXRlbSkpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVh
c29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNl
SWRlbnRpZmllcikgfTsKICAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxv
cHQgfTsKLSAgICB9Ci0KLSAgICBpZiAoaXRlbS5pczxTZXRTdGF0ZT4oKSkgeworICAgIH0sIFsm
XShjb25zdCBTZXRTdGF0ZSYgaXRlbSkgLT4gQXBwbHlJdGVtUmVzdWx0IHsKICAgICAgICAgaWYg
KGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5U2V0U3RhdGVJdGVt
KGNvbnRleHQoKSwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJuIHsg
U3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdD
YWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9w
dCwgV1RGOjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAgaWYgKGl0ZW0uaXM8QmVnaW5DbGlwVG9E
cmF3aW5nQ29tbWFuZHM+KCkpIHsKKyAgICB9LCBbJl0oY29uc3QgQmVnaW5DbGlwVG9EcmF3aW5n
Q29tbWFuZHMmIGNsaXBJdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQgewogICAgICAgICBpZiAobV9t
YXNrSW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpJ
bnZhbGlkSXRlbU9yRXh0ZW50LCBXVEY6Om51bGxvcHQgfTsKLSAgICAgICAgYXV0byYgY2xpcEl0
ZW0gPSBpdGVtLmdldDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oKTsKICAgICAgICAgbV9t
YXNrSW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjbGlw
SXRlbS5kZXN0aW5hdGlvbigpLnNpemUoKSwgY2xpcEl0ZW0uY29sb3JTcGFjZSgpLCBtX2NvbnRl
eHQpOwogICAgICAgICBpZiAoIW1fbWFza0ltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJu
IHsgU3RvcFJlcGxheVJlYXNvbjo6T3V0T2ZNZW1vcnksIFdURjo6bnVsbG9wdCB9OwogICAgICAg
ICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwotICAgIH0KLQotICAgIGlm
IChpdGVtLmlzPEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKSkgeworICAgIH0sIFsmXShjb25z
dCBFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMmIGNsaXBJdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQg
ewogICAgICAgICBpZiAoIW1fbWFza0ltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIHsg
U3RvcFJlcGxheVJlYXNvbjo6SW52YWxpZEl0ZW1PckV4dGVudCwgV1RGOjpudWxsb3B0IH07Ci0g
ICAgICAgIGF1dG8mIGNsaXBJdGVtID0gaXRlbS5nZXQ8RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRz
PigpOwogICAgICAgICBtX2NvbnRleHQuY2xpcFRvSW1hZ2VCdWZmZXIoKm1fbWFza0ltYWdlQnVm
ZmVyLCBjbGlwSXRlbS5kZXN0aW5hdGlvbigpKTsKICAgICAgICAgbV9tYXNrSW1hZ2VCdWZmZXIg
PSBudWxscHRyOwogICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9
OwotICAgIH0KLQotICAgIGl0ZW0uYXBwbHkoY29udGV4dCgpKTsKLSAgICByZXR1cm4geyBXVEY6
Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OworICAgIH0sIFsmXShjb25zdCBhdXRvJiBpdGVtKSAt
PiBBcHBseUl0ZW1SZXN1bHQgeworICAgICAgICBhcHBseShpdGVtLCBjb250ZXh0KCkpOworICAg
ICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OworICAgIH0pOwogfQog
CiBSZXBsYXlSZXN1bHQgUmVwbGF5ZXI6OnJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxD
bGlwLCBib29sIHRyYWNrUmVwbGF5TGlzdCkKQEAgLTE5NSw3ICsxODcsNyBAQCBSZXBsYXlSZXN1
bHQgUmVwbGF5ZXI6OnJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBib29sIHRy
YWNrUmVwbGF5TGlzdAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBh
dXRvIFtpdGVtLCBleHRlbnQsIGl0ZW1TaXplSW5CdWZmZXJdID0gZGlzcGxheUxpc3RJdGVtLnZh
bHVlKCk7CisgICAgICAgIGNvbnN0IGF1dG8mIFtpdGVtLCBleHRlbnQsIGl0ZW1TaXplSW5CdWZm
ZXJdID0gZGlzcGxheUxpc3RJdGVtLnZhbHVlKCk7CiAKICAgICAgICAgaWYgKCFpbml0aWFsQ2xp
cC5pc1plcm8oKSAmJiBleHRlbnQgJiYgIWV4dGVudC0+aW50ZXJzZWN0cyhpbml0aWFsQ2xpcCkp
IHsKICAgICAgICAgICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGlzdHMsIHN0cmVhbSA8PCAi
c2tpcHBpbmcgIiA8PCBpKysgPDwgIiAiIDw8IGl0ZW0pOwpAQCAtMjA1LDEwICsxOTcsMTAgQEAg
UmVwbGF5UmVzdWx0IFJlcGxheWVyOjpyZXBsYXkoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xp
cCwgYm9vbCB0cmFja1JlcGxheUxpc3QKIAogICAgICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxh
eUxpc3RzLCBzdHJlYW0gPDwgImFwcGx5aW5nICIgPDwgaSsrIDw8ICIgIiA8PCBpdGVtKTsKIAot
ICAgICAgICBpZiAoaXRlbS5pczxNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZm
ZXI+KCkpIHsKKyAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8TWV0YUNvbW1hbmRD
aGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPihpdGVtKSkgewogICAgICAgICAgICAgcmVzdWx0
Lm51bWJlck9mQnl0ZXNSZWFkICs9IGl0ZW1TaXplSW5CdWZmZXI7CiAgICAgICAgICAgICByZXN1
bHQucmVhc29uRm9yU3RvcHBpbmcgPSBTdG9wUmVwbGF5UmVhc29uOjpDaGFuZ2VEZXN0aW5hdGlv
bkltYWdlQnVmZmVyOwotICAgICAgICAgICAgcmVzdWx0Lm5leHREZXN0aW5hdGlvbkltYWdlQnVm
ZmVyID0gaXRlbS5nZXQ8TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPigp
LmlkZW50aWZpZXIoKTsKKyAgICAgICAgICAgIHJlc3VsdC5uZXh0RGVzdGluYXRpb25JbWFnZUJ1
ZmZlciA9IFdURjo6Z2V0PE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4o
aXRlbSkuaWRlbnRpZmllcigpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAt
MjIyLDggKzIxNCw4IEBAIFJlcGxheVJlc3VsdCBSZXBsYXllcjo6cmVwbGF5KGNvbnN0IEZsb2F0
UmVjdCYgaW5pdGlhbENsaXAsIGJvb2wgdHJhY2tSZXBsYXlMaXN0CiAKICAgICAgICAgaWYgKFVO
TElLRUxZKHRyYWNrUmVwbGF5TGlzdCkpIHsKICAgICAgICAgICAgIHJlcGxheUxpc3QtPmFwcGVu
ZChpdGVtKTsKLSAgICAgICAgICAgIGlmIChpdGVtLmlzRHJhd2luZ0l0ZW0oKSkKLSAgICAgICAg
ICAgICAgICByZXBsYXlMaXN0LT5hZGREcmF3aW5nSXRlbUV4dGVudChXVEZNb3ZlKGV4dGVudCkp
OworICAgICAgICAgICAgaWYgKGlzRHJhd2luZ0l0ZW0oaXRlbSkpCisgICAgICAgICAgICAgICAg
cmVwbGF5TGlzdC0+YWRkRHJhd2luZ0l0ZW1FeHRlbnQoT3B0aW9uYWw8RmxvYXRSZWN0PihleHRl
bnQpKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxh
eWVyLmgKaW5kZXggYWMwZGY2MDYzOTIzLi4xMGRmNGFlYjBiZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxh
eWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaApAQCAtNjYsMTIgKzY2LDEzIEBAIHB1YmxpYzoKICAgICBj
bGFzcyBEZWxlZ2F0ZSB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5EZWxlZ2F0ZSgp
IHsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoSXRlbUhhbmRsZSwgR3JhcGhpY3NDb250
ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGFwcGx5KGNvbnN0
IERpc3BsYXlMaXN0SXRlbSYsIEdyYXBoaWNzQ29udGV4dCYpIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgfTsKICAgICAKIHByaXZhdGU6CiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29u
c3Q7Ci0gICAgc3RkOjpwYWlyPE9wdGlvbmFsPFN0b3BSZXBsYXlSZWFzb24+LCBPcHRpb25hbDxS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+PiBhcHBseUl0ZW0oSXRlbUhhbmRsZSk7CisgICAg
dXNpbmcgQXBwbHlJdGVtUmVzdWx0ID0gc3RkOjpwYWlyPE9wdGlvbmFsPFN0b3BSZXBsYXlSZWFz
b24+LCBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+PjsKKyAgICBBcHBseUl0
ZW1SZXN1bHQgYXBwbHlJdGVtKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpOwogCiAgICAgR3JhcGhp
Y3NDb250ZXh0JiBtX2NvbnRleHQ7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBt
X21hc2tJbWFnZUJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmNw
cAppbmRleCAzNDJiMTdiZTcxMTIuLjNkMmJmNGE0NWRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9J
bk1lbW9yeURpc3BsYXlMaXN0LmNwcApAQCAtNjAsMTEgKzYwLDEwIEBAIEluTWVtb3J5RGlzcGxh
eUxpc3Q6OkluTWVtb3J5RGlzcGxheUxpc3QoKQogSW5NZW1vcnlEaXNwbGF5TGlzdDo6fkluTWVt
b3J5RGlzcGxheUxpc3QoKQogewogICAgIGZvciAoYXV0byBkaXNwbGF5TGlzdEl0ZW0gOiAqdGhp
cykgewotICAgICAgICBhdXRvIGl0ZW0gPSBkaXNwbGF5TGlzdEl0ZW0tPml0ZW07Ci0gICAgICAg
IEFTU0VSVChpdGVtKTsKLSAgICAgICAgaWYgKCFpdGVtKQotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGl0ZW0uZGVzdHJveSgpOworICAgICAgICBXVEY6OnN3aXRjaE9uKGRpc3BsYXlMaXN0
SXRlbS0+aXRlbSwgWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsKKyAgICAgICAgICAgIHVzaW5nIERp
c3BsYXlMaXN0SXRlbVR5cGUgPSB0eXBlbmFtZSBXVEY6OlJlbW92ZUNWQW5kUmVmZXJlbmNlPGRl
Y2x0eXBlKGl0ZW0pPjo6dHlwZTsKKyAgICAgICAgICAgIGl0ZW0ufkRpc3BsYXlMaXN0SXRlbVR5
cGUoKTsKKyAgICAgICAgfSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGMzNDdmZjVmY2ZlNi4u
NTZhNTQ1YWRjMGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtNjgsNiArNjgsMTkgQEAKICAgICAgICAgVGhpcyBk
ZWNvZGVyIGRldGVjdHMgd2hldGhlciB0aGUgc2hhcmVkIG1lbW9yeSBpcyB3cml0YWJsZSBvciBu
b3QgYnkgYXR0ZW1wdGluZyB0byBtYXAgaXQKICAgICAgICAgYXMgUHJvdGVjdGlvbjo6UmVhZFdy
aXRlIGFuZCBmYWxsaW5nIGJhY2sgdG8gUHJvdGVjdGlvbjo6UmVhZE9ubHkgaWYgdGhlIGZvcm1l
ciBmYWlscy4KIAorMjAyMS0wNS0wOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gU2ltcGxpZnkgRGlzcGxheUxpc3Q6Okl0
ZXJhdG9yIHBhcnQgOTogTWlncmF0ZSBEaXNwbGF5TGlzdDo6SXRlcmF0b3IncyBBUEkgdG8gdXNl
IERpc3BsYXlMaXN0SXRlbSByYXRoZXIgdGhhbiBJdGVtSGFuZGxlLCBhbmQgdXBkYXRlIGNhbGxl
cnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTU4
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oOgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5TWVkaWFJdGVtKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c3VibWl0KToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKwogMjAyMS0wNS0wOSAgTXlsZXMg
Qy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vz
c10gU2ltcGxpZnkgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yIHBhcnQgNjogTWlncmF0ZSBJdGVtQnVm
ZmVyV3JpdGluZ0NsaWVudCBmcm9tIEl0ZW1IYW5kbGUgdG8gYSBjb25zdCBWYXJpYW50JgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVm
ZmVyLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXIuaAppbmRleCA0YTAxZWU2NzY5YTYuLjYzOTE2MzU5N2Y4ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKQEAgLTc0
LDM1ICs3NCwyOCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBib29sIGFwcGx5
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlIGl0ZW0sIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkgb3ZlcnJpZGUKKyAgICBib29sIGFwcGx5KGNvbnN0IFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdEl0ZW0mIGl0ZW0sIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGlmIChpdGVtLmlzPFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpHZXRJbWFnZURhdGE+KCkpIHsKLSAgICAgICAgICAgIGF1dG8mIGdl
dEltYWdlRGF0YUl0ZW0gPSBpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6R2V0SW1hZ2VE
YXRhPigpOworICAgICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKFsmXShjb25z
dCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6R2V0SW1hZ2VEYXRhJiBnZXRJbWFnZURhdGFJdGVtKSB7
CiAgICAgICAgICAgICBhdXRvIGltYWdlRGF0YSA9IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpn
ZXRJbWFnZURhdGEoZ2V0SW1hZ2VEYXRhSXRlbS5vdXRwdXRGb3JtYXQoKSwgZ2V0SW1hZ2VEYXRh
SXRlbS5zcmNSZWN0KCkpOwogICAgICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnBv
cHVsYXRlR2V0SW1hZ2VEYXRhU2hhcmVkTWVtb3J5KGltYWdlRGF0YS5nZXQoKSk7CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChpdGVtLmlzPFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGE+KCkpIHsKLSAgICAgICAgICAgIGF1dG8mIHB1
dEltYWdlRGF0YUl0ZW0gPSBpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VE
YXRhPigpOworICAgICAgICB9LCBbJl0oY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlB1dElt
YWdlRGF0YSYgcHV0SW1hZ2VEYXRhSXRlbSkgewogICAgICAgICAgICAgcHV0SW1hZ2VEYXRhKHB1
dEltYWdlRGF0YUl0ZW0uaW5wdXRGb3JtYXQoKSwgcHV0SW1hZ2VEYXRhSXRlbS5pbWFnZURhdGEo
KSwgcHV0SW1hZ2VEYXRhSXRlbS5zcmNSZWN0KCksIHB1dEltYWdlRGF0YUl0ZW0uZGVzdFBvaW50
KCksIHB1dEltYWdlRGF0YUl0ZW0uZGVzdEZvcm1hdCgpKTsKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGl0ZW0uaXM8V2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkZsdXNoQ29udGV4dD4oKSkgeworICAgICAgICB9LCBbJl0oY29uc3QgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkZsdXNoQ29udGV4dCYgZmx1c2hDb250ZXh0KSB7CiAgICAgICAgICAgICBCYXNl
Q29uY3JldGVJbWFnZUJ1ZmZlcjo6Zmx1c2hDb250ZXh0KCk7Ci0gICAgICAgICAgICBhdXRvIGlk
ZW50aWZpZXIgPSBpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hDb250ZXh0Pigp
LmlkZW50aWZpZXIoKTsKKyAgICAgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IGZsdXNoQ29udGV4
dC5pZGVudGlmaWVyKCk7CiAgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuZGlk
Rmx1c2goaWRlbnRpZmllciwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaXRlbS5pczxXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyPigpKSB7Ci0gICAg
ICAgICAgICBhdXRvIG5leHRCdWZmZXJJZGVudGlmaWVyID0gaXRlbS5nZXQ8V2ViQ29yZTo6RGlz
cGxheUxpc3Q6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcj4oKS5pZGVudGlmaWVyKCk7Cisg
ICAgICAgIH0sIFsmXShjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6TWV0YUNvbW1hbmRDaGFu
Z2VJdGVtQnVmZmVyJiBtZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXIpIHsKKyAgICAgICAgICAg
IGF1dG8gbmV4dEJ1ZmZlcklkZW50aWZpZXIgPSBtZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXIu
aWRlbnRpZmllcigpOwogICAgICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnNldE5l
eHRJdGVtQnVmZmVyVG9SZWFkKG5leHRCdWZmZXJJZGVudGlmaWVyLCBtX3JlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcik7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuYXBwbHlNZWRpYUl0ZW0oaXRl
bSwgY29udGV4dCk7CisgICAgICAgIH0sIFsmXShjb25zdCBhdXRvJiBpdGVtKSB7CisgICAgICAg
ICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmFwcGx5TWVkaWFJdGVtKGl0ZW0s
IGNvbnRleHQpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIFdURjo6dmlzaXQodmlzaXRv
ciwgaXRlbSk7CiAgICAgfQogCiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IDFkMDI4MzBmNmM0
ZS4uMDEyYzQ2MDQzNmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0xMTcsMjAgKzEx
NywxOCBAQCB1aW50NjRfdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptZXNzYWdlU2VuZGVyRGVz
dGluYXRpb25JRCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIudG9VSW50NjQoKTsKIH0KIAotYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseU1l
ZGlhSXRlbShEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZSBpdGVtLCBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQpCitib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmFwcGx5TWVkaWFJdGVtKGNvbnN0
IERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdEl0ZW0mIGl0ZW0sIEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGlmICghaXRl
bS5pczxEaXNwbGF5TGlzdDo6UGFpbnRGcmFtZUZvck1lZGlhPigpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBhdXRvJiBtZWRpYUl0ZW0gPSBpdGVtLmdldDxEaXNwbGF5TGlzdDo6UGFp
bnRGcmFtZUZvck1lZGlhPigpOwotICAgIGF1dG8gcGxheWVyID0gbV9ncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLT5yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpLm1lZGlhUGxheWVyKG1l
ZGlhSXRlbS5pZGVudGlmaWVyKCkpOwotICAgIGlmICghcGxheWVyKQorICAgIGF1dG8gdmlzaXRv
ciA9IFdURjo6bWFrZVZpc2l0b3IoWyZdKGNvbnN0IERpc3BsYXlMaXN0OjpQYWludEZyYW1lRm9y
TWVkaWEmIG1lZGlhSXRlbSkgeworICAgICAgICBpZiAoYXV0byBwbGF5ZXIgPSBtX2dwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MtPnJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5KCkubWVkaWFQ
bGF5ZXIobWVkaWFJdGVtLmlkZW50aWZpZXIoKSkpCisgICAgICAgICAgICBjb250ZXh0LnBhaW50
RnJhbWVGb3JNZWRpYSgqcGxheWVyLCBtZWRpYUl0ZW0uZGVzdGluYXRpb24oKSk7CiAgICAgICAg
IHJldHVybiB0cnVlOwotCi0gICAgY29udGV4dC5wYWludEZyYW1lRm9yTWVkaWEoKnBsYXllciwg
bWVkaWFJdGVtLmRlc3RpbmF0aW9uKCkpOwotICAgIHJldHVybiB0cnVlOworICAgIH0sIFtdKGNv
bnN0IGF1dG8mIGl0ZW0pIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0pOworICAgIHJl
dHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIGl0ZW0pOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUgaGFuZGxlLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKQpAQCAtMTg2LDcgKzE4NCw3IEBAIERpc3BsYXlMaXN0OjpSZXBsYXlSZXN1
bHQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c3VibWl0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNw
CiAgICAgZWxzZQogICAgICAgICByZXBsYXllckRlbGVnYXRlID0gc3RhdGljX2Nhc3Q8VW5hY2Nl
bGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyKj4oJmRlc3RpbmF0aW9uKTsKIAotICAgIHJldHVybiBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgeworICAgIHJldHVybiBEaXNwbGF5TGlzdDo6
UmVwbGF5ZXIgewogICAgICAgICBkZXN0aW5hdGlvbi5jb250ZXh0KCksCiAgICAgICAgIGRpc3Bs
YXlMaXN0LAogICAgICAgICAmcmVtb3RlUmVzb3VyY2VDYWNoZSgpLmltYWdlQnVmZmVycygpLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggNjY1NmRlM2RkNDEwLi4yODE3MTI1ODQzNzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuaApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgUmVtb3RlUmVz
b3VyY2VDYWNoZSYgcmVtb3RlUmVzb3VyY2VDYWNoZSgpIHsgcmV0dXJuIG1fcmVtb3RlUmVzb3Vy
Y2VDYWNoZTsgfQogCiAgICAgLy8gUmVuZGVyaW5nIG9wZXJhdGlvbnMuCi0gICAgYm9vbCBhcHBs
eU1lZGlhSXRlbShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZSwgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0Jik7CisgICAgYm9vbCBhcHBseU1lZGlhSXRlbShjb25zdCBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtJiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jik7
CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSBzZW50LgogICAgIHZvaWQgZGlkQ3JlYXRlSW1hZ2VC
dWZmZXJCYWNrZW5kKEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSwgV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCBmMmI0YjRjZjNjYjcuLmI5NTU1ZjZmZjA0NCAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMjMsNiArMjMsMTYgQEAK
ICAgICAgICAgKElQQ1Rlc3RpbmdBUEkuQ2FuU2VuZFNlbWFwaHByZSk6IEFkZGVkIGFmdGVyIHIy
NzcxOTkuCiAgICAgICAgIChJUENUZXN0aW5nQVBJLkNhblNlbmRTaGFyZWRNZW1vcnkpOiBBZGRl
ZC4KIAorMjAyMS0wNS0wOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29t
PgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gU2ltcGxpZnkgRGlzcGxheUxpc3Q6Okl0ZXJhdG9y
IHBhcnQgOTogTWlncmF0ZSBEaXNwbGF5TGlzdDo6SXRlcmF0b3IncyBBUEkgdG8gdXNlIERpc3Bs
YXlMaXN0SXRlbSByYXRoZXIgdGhhbiBJdGVtSGFuZGxlLCBhbmQgdXBkYXRlIGNhbGxlcnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTU4MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVCk6CisKIDIwMjEtMDUtMDkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZp
ZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIFNpbXBsaWZ5IERpc3BsYXlM
aXN0OjpJdGVyYXRvciBwYXJ0IDY6IE1pZ3JhdGUgSXRlbUJ1ZmZlcldyaXRpbmdDbGllbnQgZnJv
bSBJdGVtSGFuZGxlIHRvIGEgY29uc3QgVmFyaWFudCYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcAppbmRleCA1Y2JmZDJk
NDQ0YjMuLmNmYTAzMzhmMWY3YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcApAQCAtODAsNTcgKzgwLDM1IEBAIFRF
U1QoRGlzcGxheUxpc3RUZXN0cywgQXBwZW5kSXRlbXMpCiAgICAgRVhQRUNUX0ZBTFNFKGxpc3Qu
aXNFbXB0eSgpKTsKIAogICAgIGJvb2wgb2JzZXJ2ZWRVbmV4cGVjdGVkSXRlbSA9IGZhbHNlOwot
ICAgIGZvciAoYXV0byBkaXNwbGF5TGlzdEl0ZW0gOiBsaXN0KSB7Ci0gICAgICAgIGF1dG8gaGFu
ZGxlID0gZGlzcGxheUxpc3RJdGVtLT5pdGVtOwotICAgICAgICBzd2l0Y2ggKGhhbmRsZS50eXBl
KCkpIHsKLSAgICAgICAgY2FzZSBJdGVtVHlwZTo6U2V0U3Ryb2tlVGhpY2tuZXNzOiB7Ci0gICAg
ICAgICAgICBFWFBFQ1RfRkFMU0UoaGFuZGxlLmlzRHJhd2luZ0l0ZW0oKSk7Ci0gICAgICAgICAg
ICBFWFBFQ1RfVFJVRShoYW5kbGUuaXM8U2V0U3Ryb2tlVGhpY2tuZXNzPigpKTsKLSAgICAgICAg
ICAgIGF1dG8mIGl0ZW0gPSBoYW5kbGUuZ2V0PFNldFN0cm9rZVRoaWNrbmVzcz4oKTsKKyAgICBm
b3IgKGNvbnN0IGF1dG8mIGRpc3BsYXlMaXN0SXRlbSA6IGxpc3QpIHsKKyAgICAgICAgY29uc3Qg
YXV0byYgW2l0ZW0sIGV4dGVudCwgc2l6ZV0gPSBkaXNwbGF5TGlzdEl0ZW0udmFsdWUoKTsKKwor
ICAgICAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKFsmXShjb25zdCBTZXRTdHJv
a2VUaGlja25lc3MmIGl0ZW0pIHsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShpdGVtLmlzRHJh
d2luZ0l0ZW0pOwogICAgICAgICAgICAgRVhQRUNUX0VRKGl0ZW0udGhpY2tuZXNzKCksIDEuNSk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEl0ZW1UeXBlOjpG
aWxsUGF0aDogewotICAgICAgICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLmlzRHJhd2luZ0l0ZW0o
KSk7Ci0gICAgICAgICAgICBFWFBFQ1RfVFJVRShoYW5kbGUuaXM8RmlsbFBhdGg+KCkpOwotICAg
ICAgICAgICAgYXV0byYgaXRlbSA9IGhhbmRsZS5nZXQ8RmlsbFBhdGg+KCk7CisgICAgICAgIH0s
IFsmXShjb25zdCBGaWxsUGF0aCYgaXRlbSkgeworICAgICAgICAgICAgRVhQRUNUX1RSVUUoaXRl
bS5pc0RyYXdpbmdJdGVtKTsKICAgICAgICAgICAgIEVYUEVDVF9FUShpdGVtLnBhdGgoKS5wbGF0
Zm9ybVBhdGgoKSwgcGF0aC5wbGF0Zm9ybVBhdGgoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQotICAgICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDogewot
ICAgICAgICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLmlzRHJhd2luZ0l0ZW0oKSk7Ci0gICAgICAg
ICAgICBFWFBFQ1RfVFJVRShoYW5kbGUuaXM8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCkpOwotICAg
ICAgICAgICAgYXV0byYgaXRlbSA9IGhhbmRsZS5nZXQ8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCk7
CisgICAgICAgIH0sIFsmXShjb25zdCBGaWxsUmVjdFdpdGhHcmFkaWVudCYgaXRlbSkgeworICAg
ICAgICAgICAgRVhQRUNUX1RSVUUoaXRlbS5pc0RyYXdpbmdJdGVtKTsKICAgICAgICAgICAgIEVY
UEVDVF9FUShpdGVtLnJlY3QoKSwgRmxvYXRSZWN0KDEuLCAxLiwgMTAuLCAxMC4pKTsKICAgICAg
ICAgICAgIEVYUEVDVF9FUSgmaXRlbS5ncmFkaWVudCgpLCBncmFkaWVudC5wdHIoKSk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxp
bmVGaWxsQ29sb3I6IHsKLSAgICAgICAgICAgIEVYUEVDVF9GQUxTRShoYW5kbGUuaXNEcmF3aW5n
SXRlbSgpKTsKLSAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS5pczxTZXRJbmxpbmVGaWxs
Q29sb3I+KCkpOwotICAgICAgICAgICAgYXV0byYgaXRlbSA9IGhhbmRsZS5nZXQ8U2V0SW5saW5l
RmlsbENvbG9yPigpOworICAgICAgICB9LCBbJl0oY29uc3QgU2V0SW5saW5lRmlsbENvbG9yJiBp
dGVtKSB7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoaXRlbS5pc0RyYXdpbmdJdGVtKTsKICAg
ICAgICAgICAgIEVYUEVDVF9FUShpdGVtLmNvbG9yKCksIENvbG9yOjpyZWQpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KICNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICAg
ICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDogewotICAgICAgICAgICAgRVhQRUNU
X1RSVUUoaGFuZGxlLmlzRHJhd2luZ0l0ZW0oKSk7Ci0gICAgICAgICAgICBFWFBFQ1RfVFJVRSho
YW5kbGUuaXM8U3Ryb2tlSW5saW5lUGF0aD4oKSk7Ci0gICAgICAgICAgICBhdXRvJiBpdGVtID0g
aGFuZGxlLmdldDxTdHJva2VJbmxpbmVQYXRoPigpOworICAgICAgICB9LCBbJl0oY29uc3QgU3Ry
b2tlSW5saW5lUGF0aCYgaXRlbSkgeworICAgICAgICAgICAgRVhQRUNUX1RSVUUoaXRlbS5pc0Ry
YXdpbmdJdGVtKTsKICAgICAgICAgICAgIGNvbnN0IGF1dG8gcGF0aCA9IGl0ZW0ucGF0aCgpOwog
ICAgICAgICAgICAgYXV0byYgbGluZSA9IHBhdGguaW5saW5lRGF0YTxMaW5lRGF0YT4oKTsKICAg
ICAgICAgICAgIEVYUEVDVF9FUShsaW5lLnN0YXJ0LCBGbG9hdFBvaW50KDAsIDApKTsKICAgICAg
ICAgICAgIEVYUEVDVF9FUShsaW5lLmVuZCwgRmxvYXRQb2ludCgxMC4sIDE1LikpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KICNlbmRpZgotICAgICAgICBjYXNlIEl0ZW1UeXBlOjpN
ZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ZGVmYXVsdDogeworICAgICAgICB9LCBbJl0oY29uc3QgTWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVm
ZmVyJikgeworICAgICAgICB9LCBbJl0oY29uc3QgYXV0byYpIHsKICAgICAgICAgICAgIG9ic2Vy
dmVkVW5leHBlY3RlZEl0ZW0gPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgICAgV1RGOjp2aXNpdCh2aXNpdG9yLCBpdGVt
KTsKICAgICB9CiAKICAgICBFWFBFQ1RfRkFMU0Uob2JzZXJ2ZWRVbmV4cGVjdGVkSXRlbSk7CkBA
IC0xNTAsMTIgKzEyOCwxMSBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEFwcGVuZEl0ZW1zKQog
CiAgICAgbGlzdC5hcHBlbmQ8RmlsbFJlY3RXaXRoQ29sb3I+KEZsb2F0UmVjdCB7IDAsIDAsIDEw
MCwgMTAwIH0sIENvbG9yOjpibGFjayk7CiAKLSAgICBmb3IgKGF1dG8gZGlzcGxheUxpc3RJdGVt
IDogbGlzdCkgewotICAgICAgICBhdXRvIGhhbmRsZSA9IGRpc3BsYXlMaXN0SXRlbS0+aXRlbTsK
LSAgICAgICAgRVhQRUNUX0VRKGhhbmRsZS50eXBlKCksIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhD
b2xvcik7Ci0gICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS5pczxGaWxsUmVjdFdpdGhDb2xvcj4o
KSk7CisgICAgZm9yIChjb25zdCBhdXRvJiBkaXNwbGF5TGlzdEl0ZW0gOiBsaXN0KSB7CisgICAg
ICAgIEVYUEVDVF9UUlVFKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8RmlsbFJlY3RXaXRoQ29sb3I+
KGRpc3BsYXlMaXN0SXRlbS0+aXRlbSkpOworICAgICAgICBjb25zdCBhdXRvJiBpdGVtID0gV1RG
OjpnZXQ8RmlsbFJlY3RXaXRoQ29sb3I+KGRpc3BsYXlMaXN0SXRlbS0+aXRlbSk7CisgICAgICAg
IEVYUEVDVF9FUShpdGVtLml0ZW1UeXBlLCBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29sb3IpOwog
Ci0gICAgICAgIGF1dG8mIGl0ZW0gPSBoYW5kbGUuZ2V0PEZpbGxSZWN0V2l0aENvbG9yPigpOwog
ICAgICAgICBFWFBFQ1RfRVEoKml0ZW0uY29sb3IoKS50cnlHZXRBc1NSR0JBQnl0ZXMoKSwgQ29s
b3I6OmJsYWNrKTsKICAgICAgICAgRVhQRUNUX0VRKGl0ZW0ucmVjdCgpLCBGbG9hdFJlY3QoMCwg
MCwgMTAwLCAxMDApKTsKICAgICB9CkBAIC0xOTcsNyArMTc0LDcgQEAgVEVTVChEaXNwbGF5TGlz
dFRlc3RzLCBJdGVtQnVmZmVyQ2xpZW50KQogICAgIHByaXZhdGU6CiAgICAgICAgIEl0ZW1CdWZm
ZXJIYW5kbGUgY3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QgY2FwYWNpdHkpIGZpbmFsCiAgICAgICAg
IHsKLSAgICAgICAgICAgIEVYUEVDVF9MVChjYXBhY2l0eSwgZ2xvYmFsSXRlbUJ1ZmZlckNhcGFj
aXR5KTsKKyAgICAgICAgICAgIEVYUEVDVF9MRShjYXBhY2l0eSwgZ2xvYmFsSXRlbUJ1ZmZlckNh
cGFjaXR5KTsKICAgICAgICAgICAgIHJldHVybiB7IGdsb2JhbEJ1ZmZlcklkZW50aWZpZXIsIGds
b2JhbEl0ZW1CdWZmZXIsIGdsb2JhbEl0ZW1CdWZmZXJDYXBhY2l0eSB9OwogICAgICAgICB9CiAK
QEAgLTIyNiw4ICsyMDMsOCBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEl0ZW1CdWZmZXJDbGll
bnQpCiAgICAgc2hhbGxvd0NvcHkuc2V0SXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQoJnJlYWRlcik7
CiAKICAgICBWZWN0b3I8SXRlbVR5cGU+IGl0ZW1UeXBlczsKLSAgICBmb3IgKGF1dG8gZGlzcGxh
eUxpc3RJdGVtIDogc2hhbGxvd0NvcHkpCi0gICAgICAgIGl0ZW1UeXBlcy5hcHBlbmQoZGlzcGxh
eUxpc3RJdGVtLT5pdGVtLnR5cGUoKSk7CisgICAgZm9yIChjb25zdCBhdXRvJiBkaXNwbGF5TGlz
dEl0ZW0gOiBzaGFsbG93Q29weSkKKyAgICAgICAgaXRlbVR5cGVzLmFwcGVuZChkaXNwbGF5TGlz
dEl0ZW1UeXBlKGRpc3BsYXlMaXN0SXRlbS0+aXRlbSkpOwogCiAgICAgRVhQRUNUX0ZBTFNFKHNo
YWxsb3dDb3B5LmlzRW1wdHkoKSk7CiAgICAgRVhQRUNUX0VRKGl0ZW1UeXBlcy5zaXplKCksIDRV
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428160</attachid>
            <date>2021-05-10 02:58:35 -0700</date>
            <delta_ts>2021-05-10 02:58:35 -0700</delta_ts>
            <desc>Patch for committing</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>56177</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IGRkZjZjODQ1YzFlNzUwYzM3NjY3ODU2NmVhMjM5MjFkNTAyN2ExYTkKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBTdW4gTWF5IDkg
MTU6NTU6MjMgMjAyMSAtMDcwMAoKICAgIFBhcnQgOQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlNTU1Mjk3YTFl
NzguLjI1YzIyMGYzODQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIxLTA1LTA5
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQ
VSBQcm9jZXNzXSBTaW1wbGlmeSBEaXNwbGF5TGlzdDo6SXRlcmF0b3IgcGFydCA5OiBNaWdyYXRl
IERpc3BsYXlMaXN0OjpJdGVyYXRvcidzIEFQSSB0byB1c2UgRGlzcGxheUxpc3RJdGVtIHJhdGhl
ciB0aGFuIEl0ZW1IYW5kbGUsIGFuZCB1cGRhdGUgY2FsbGVycworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1NTgyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgU2FtIFdlaW5pZy4KKworICAgICAgICBUaGlzIGlzIGEgZmFpcmx5IG1lY2hhbmljYWwgcmVw
bGFjZW1lbnQgaW4gdXNlcnMgb2YgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yLgorICAgICAgICBUaGlz
IHBhdGNoIGp1c3QgbWlncmF0ZXMgZnJvbSBJdGVtSGFuZGxlIHRvIGNvbnN0IERpc3BsYXlMaXN0
SXRlbSYuCisKKyAgICAgICAgVGhlIGJlbmVmaXRzIGFyZToKKyAgICAgICAgLSBEaXNwbGF5TGlz
dDo6YXBwZW5kKCkgZ29lcyBmcm9tIDEzNCBsaW5lcyB0byAzCisgICAgICAgIC0gVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgSXRlbUhhbmRsZSBpdGVtKSBnb2VzIGZyb20g
MTkwIGxpbmVzIHRvIDUKKyAgICAgICAgLSBVc2luZyBWaXNpdG9yIG1lYW5zIHRoZXJlIGlzIGEg
bG90IGxlc3MgbWFudWFsIGRvd25jYXN0aW5nCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGlu
ZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OnNob3VsZER1
bXBGb3JGbGFncyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6
OmFzVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxp
c3Q6OmR1bXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0OjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1IYW5kbGU6OmRlc2NyaXB0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmFwcGx5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpvcGVyYXRvcjw8KToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpTZXRTdGF0ZTo6YXBwbHkpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBoczo6Zm9udElkZW50aWZpZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmlzRHJhd2luZ0l0ZW0pOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHM6OmZvbnRJZGVudGlmaWVyKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVy
YXRvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlcGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjphcHBseUlt
YWdlQnVmZmVySXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YXBwbHlOYXRp
dmVJbWFnZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5U2V0U3Rh
dGVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjphcHBseUZvbnRJdGVtKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjphcHBseSk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OmFwcGx5SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVwbGF5ZXI6OnJlcGxheSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6RGVsZWdhdGU6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW5NZW1vcnlEaXNwbGF5TGlzdDo6fkluTWVtb3J5
RGlzcGxheUxpc3QpOgorCiAyMDIxLTA1LTA5ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgYmFjayBwcm90ZWN0aW9uIG9mIHRoZSBwaXhlbCBidWZmZXIgaW4g
SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnRvQ0ZEYXRhIHJlbW92ZWQgaW4gcjI3NzIzNwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRl
eCBjNzhhZjdlMjVkZGIuLjE4YzlmZWI4MTcyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTE2MCw3ICsxNjAsNyBAQCBz
dHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGUgewogICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNz
Q29udGV4dFN0YXRlKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgfkdyYXBoaWNzQ29udGV4dFN0YXRl
KCk7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0
ZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlKGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0U3Rh
dGUoR3JhcGhpY3NDb250ZXh0U3RhdGUmJik7CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSYg
b3BlcmF0b3I9KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0LmNwcAppbmRleCA2MDVmOWEwYTY0NjYuLjk2NWQ3N2JiMzc3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3QuY3BwCkBAIC04NSwxMiArODUsMTAgQEAgdm9pZCBEaXNwbGF5TGlzdDo6Y2xlYXIo
KQogICAgIG1fbmF0aXZlSW1hZ2VzLmNsZWFyKCk7CiB9CiAKLWJvb2wgRGlzcGxheUxpc3Q6OnNo
b3VsZER1bXBGb3JGbGFncyhBc1RleHRGbGFncyBmbGFncywgSXRlbUhhbmRsZSBpdGVtKQorYm9v
bCBEaXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzIGZsYWdzLCBjb25z
dCBEaXNwbGF5TGlzdEl0ZW0mIGl0ZW0pCiB7Ci0gICAgc3dpdGNoIChpdGVtLnR5cGUoKSkgewot
ICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgorICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGl0
ZW0sIFsmXShjb25zdCBTZXRTdGF0ZSYgc3RhdGVJdGVtKSAtPiBib29sIHsKICAgICAgICAgaWYg
KCEoZmxhZ3MgJiBBc1RleHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9ucykpIHsKLSAg
ICAgICAgICAgIGNvbnN0IGF1dG8mIHN0YXRlSXRlbSA9IGl0ZW0uZ2V0PFNldFN0YXRlPigpOwog
ICAgICAgICAgICAgLy8gRklYTUU6IGZvciBub3csIG9ubHkgZHJvcCB0aGUgaXRlbSBpZiB0aGUg
b25seSBzdGF0ZS1jaGFuZ2UgZmxhZ3MgYXJlIHBsYXRmb3JtLXNwZWNpZmljLgogICAgICAgICAg
ICAgaWYgKHN0YXRlSXRlbS5zdGF0ZUNoYW5nZSgpLm1fY2hhbmdlRmxhZ3MgPT0gR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05OCwzMSArOTYsMjkgQEAgYm9vbCBEaXNwbGF5TGlz
dDo6c2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzIGZsYWdzLCBJdGVtSGFuZGxlIGl0ZW0p
CiAgICAgICAgICAgICBpZiAoc3RhdGVJdGVtLnN0YXRlQ2hhbmdlKCkubV9jaGFuZ2VGbGFncyA9
PSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdl
KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICBicmVh
azsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAjaWYgVVNFKENHKQotICAgIGNhc2UgSXRlbVR5cGU6
OkFwcGx5RmlsbFBhdHRlcm46Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJu
OgotICAgICAgICBpZiAoIShmbGFncyAmIEFzVGV4dEZsYWc6OkluY2x1ZGVzUGxhdGZvcm1PcGVy
YXRpb25zKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgYnJlYWs7CisgICAg
fSwgWyZdKGNvbnN0IEFwcGx5RmlsbFBhdHRlcm4mKSAtPiBib29sIHsKKyAgICAgICAgcmV0dXJu
IGZsYWdzICYgQXNUZXh0RmxhZzo6SW5jbHVkZXNQbGF0Zm9ybU9wZXJhdGlvbnM7CisgICAgfSwg
WyZdKGNvbnN0IEFwcGx5U3Ryb2tlUGF0dGVybiYpIC0+IGJvb2wgeworICAgICAgICByZXR1cm4g
ZmxhZ3MgJiBBc1RleHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9uczsKICNlbmRpZgot
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9LCBbXShjb25zdCBhdXRvJikgLT4gYm9vbCB7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0pOwogfQogCiBTdHJpbmcgRGlzcGxheUxpc3Q6OmFzVGV4dChBc1RleHRGbGFncyBmbGFncykg
Y29uc3QKIHsKICAgICBUZXh0U3RyZWFtIHN0cmVhbShUZXh0U3RyZWFtOjpMaW5lTW9kZTo6TXVs
dGlwbGVMaW5lLCBUZXh0U3RyZWFtOjpGb3JtYXR0aW5nOjpTVkdTdHlsZVJlY3QpOwogICAgIGZv
ciAoYXV0byBkaXNwbGF5TGlzdEl0ZW0gOiAqdGhpcykgewotICAgICAgICBhdXRvIFtpdGVtLCBl
eHRlbnQsIGl0ZW1TaXplSW5CdWZmZXJdID0gZGlzcGxheUxpc3RJdGVtLnZhbHVlKCk7CisgICAg
ICAgIGNvbnN0IGF1dG8mIFtpdGVtLCBleHRlbnQsIGl0ZW1TaXplSW5CdWZmZXJdID0gZGlzcGxh
eUxpc3RJdGVtLnZhbHVlKCk7CiAgICAgICAgIGlmICghc2hvdWxkRHVtcEZvckZsYWdzKGZsYWdz
LCBpdGVtKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIFRleHRTdHJlYW06Okdy
b3VwU2NvcGUgZ3JvdXAoc3RyZWFtKTsKICAgICAgICAgc3RyZWFtIDw8IGl0ZW07Ci0gICAgICAg
IGlmIChpdGVtLmlzRHJhd2luZ0l0ZW0oKSkKKyAgICAgICAgaWYgKGlzRHJhd2luZ0l0ZW0oaXRl
bSkpCiAgICAgICAgICAgICBzdHJlYW0gPDwgIiBleHRlbnQgIiA8PCBleHRlbnQ7CiAgICAgfQog
ICAgIHJldHVybiBzdHJlYW0ucmVsZWFzZSgpOwpAQCAtMTM0LDEwICsxMzAsMTAgQEAgdm9pZCBE
aXNwbGF5TGlzdDo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKICAgICB0cyA8PCAiZGlzcGxh
eSBsaXN0IjsKIAogICAgIGZvciAoYXV0byBkaXNwbGF5TGlzdEl0ZW0gOiAqdGhpcykgewotICAg
ICAgICBhdXRvIFtpdGVtLCBleHRlbnQsIGl0ZW1TaXplSW5CdWZmZXJdID0gZGlzcGxheUxpc3RJ
dGVtLnZhbHVlKCk7CisgICAgICAgIGNvbnN0IGF1dG8mIFtpdGVtLCBleHRlbnQsIGl0ZW1TaXpl
SW5CdWZmZXJdID0gZGlzcGxheUxpc3RJdGVtLnZhbHVlKCk7CiAgICAgICAgIFRleHRTdHJlYW06
Okdyb3VwU2NvcGUgZ3JvdXAodHMpOwogICAgICAgICB0cyA8PCBpdGVtOwotICAgICAgICBpZiAo
aXRlbS5pc0RyYXdpbmdJdGVtKCkpCisgICAgICAgIGlmIChpc0RyYXdpbmdJdGVtKGl0ZW0pKQog
ICAgICAgICAgICAgdHMgPDwgIiBleHRlbnQgIiA8PCBleHRlbnQ7CiAgICAgfQogICAgIHRzLnN0
YXJ0R3JvdXAoKTsKQEAgLTE5NywxNDIgKzE5MywxMiBAQCB2b2lkIERpc3BsYXlMaXN0OjpzZXRU
cmFja3NEcmF3aW5nSXRlbUV4dGVudHMoYm9vbCB2YWx1ZSkKICAgICBtX3RyYWNrc0RyYXdpbmdJ
dGVtRXh0ZW50cyA9IHZhbHVlOwogfQogCi12b2lkIERpc3BsYXlMaXN0OjphcHBlbmQoSXRlbUhh
bmRsZSBpdGVtKQordm9pZCBEaXNwbGF5TGlzdDo6YXBwZW5kKGNvbnN0IERpc3BsYXlMaXN0SXRl
bSYgaXRlbSkKIHsKLSAgICBzd2l0Y2ggKGl0ZW0udHlwZSgpKSB7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6U2F2ZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTYXZlPihpdGVtLmdldDxTYXZlPigpKTsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0b3JlOgotICAgICAgICByZXR1cm4gYXBwZW5kPFJlc3Rv
cmU+KGl0ZW0uZ2V0PFJlc3RvcmU+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlRyYW5zbGF0ZToK
LSAgICAgICAgcmV0dXJuIGFwcGVuZDxUcmFuc2xhdGU+KGl0ZW0uZ2V0PFRyYW5zbGF0ZT4oKSk7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6Um90YXRlOgotICAgICAgICByZXR1cm4gYXBwZW5kPFJvdGF0
ZT4oaXRlbS5nZXQ8Um90YXRlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTY2FsZToKLSAgICAg
ICAgcmV0dXJuIGFwcGVuZDxTY2FsZT4oaXRlbS5nZXQ8U2NhbGU+KCkpOwotICAgIGNhc2UgSXRl
bVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgotICAgICAgICByZXR1cm4gYXBwZW5kPENvbmNhdGVuYXRl
Q1RNPihpdGVtLmdldDxDb25jYXRlbmF0ZUNUTT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0
Q1RNOgotICAgICAgICByZXR1cm4gYXBwZW5kPFNldENUTT4oaXRlbS5nZXQ8U2V0Q1RNPigpKTsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsR3JhZGllbnQ6Ci0gICAgICAgIHJldHVy
biBhcHBlbmQ8U2V0SW5saW5lRmlsbEdyYWRpZW50PihpdGVtLmdldDxTZXRJbmxpbmVGaWxsR3Jh
ZGllbnQ+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxDb2xvcjoKLSAgICAg
ICAgcmV0dXJuIGFwcGVuZDxTZXRJbmxpbmVGaWxsQ29sb3I+KGl0ZW0uZ2V0PFNldElubGluZUZp
bGxDb2xvcj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6Ci0g
ICAgICAgIHJldHVybiBhcHBlbmQ8U2V0SW5saW5lU3Ryb2tlQ29sb3I+KGl0ZW0uZ2V0PFNldElu
bGluZVN0cm9rZUNvbG9yPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25l
c3M6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8U2V0U3Ryb2tlVGhpY2tuZXNzPihpdGVtLmdldDxT
ZXRTdHJva2VUaGlja25lc3M+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgotICAg
ICAgICByZXR1cm4gYXBwZW5kPFNldFN0YXRlPihpdGVtLmdldDxTZXRTdGF0ZT4oKSk7Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6U2V0TGluZUNhcDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTZXRMaW5l
Q2FwPihpdGVtLmdldDxTZXRMaW5lQ2FwPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5l
RGFzaDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTZXRMaW5lRGFzaD4oaXRlbS5nZXQ8U2V0TGlu
ZURhc2g+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVKb2luOgotICAgICAgICByZXR1
cm4gYXBwZW5kPFNldExpbmVKb2luPihpdGVtLmdldDxTZXRMaW5lSm9pbj4oKSk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U2V0TWl0ZXJMaW1pdDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTZXRNaXRl
ckxpbWl0PihpdGVtLmdldDxTZXRNaXRlckxpbWl0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpD
bGVhclNoYWRvdzoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxDbGVhclNoYWRvdz4oaXRlbS5nZXQ8
Q2xlYXJTaGFkb3c+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXA6Ci0gICAgICAgIHJldHVy
biBhcHBlbmQ8Q2xpcD4oaXRlbS5nZXQ8Q2xpcD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xp
cE91dDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxDbGlwT3V0PihpdGVtLmdldDxDbGlwT3V0Pigp
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjoKLSAgICAgICAgcmV0dXJu
IGFwcGVuZDxDbGlwVG9JbWFnZUJ1ZmZlcj4oaXRlbS5nZXQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KCkp
OwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6Ci0gICAgICAgIHJldHVybiBhcHBl
bmQ8Q2xpcE91dFRvUGF0aD4oaXRlbS5nZXQ8Q2xpcE91dFRvUGF0aD4oKSk7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6Q2xpcFBhdGg6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8Q2xpcFBhdGg+KGl0ZW0u
Z2V0PENsaXBQYXRoPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdD
b21tYW5kczoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5k
cz4oaXRlbS5nZXQ8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkpOwotICAgIGNhc2UgSXRl
bVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxF
bmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KGl0ZW0uZ2V0PEVuZENsaXBUb0RyYXdpbmdDb21tYW5k
cz4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKLSAgICAgICAgcmV0dXJuIGFw
cGVuZDxEcmF3R2x5cGhzPihpdGVtLmdldDxEcmF3R2x5cGhzPigpKTsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3SW1hZ2VCdWZmZXI6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd0ltYWdlQnVm
ZmVyPihpdGVtLmdldDxEcmF3SW1hZ2VCdWZmZXI+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdOYXRpdmVJbWFnZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3TmF0aXZlSW1hZ2U+KGl0
ZW0uZ2V0PERyYXdOYXRpdmVJbWFnZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRl
cm46Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd1BhdHRlcm4+KGl0ZW0uZ2V0PERyYXdQYXR0
ZXJuPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoKLSAgICAgICAgcmV0dXJuIGFw
cGVuZDxEcmF3UmVjdD4oaXRlbS5nZXQ8RHJhd1JlY3Q+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdMaW5lOgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdMaW5lPihpdGVtLmdldDxEcmF3
TGluZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmVzRm9yVGV4dDoKLSAgICAgICAg
cmV0dXJuIGFwcGVuZDxEcmF3TGluZXNGb3JUZXh0PihpdGVtLmdldDxEcmF3TGluZXNGb3JUZXh0
PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgotICAg
ICAgICByZXR1cm4gYXBwZW5kPERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI+KGl0ZW0uZ2V0PERy
YXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxp
cHNlOgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdFbGxpcHNlPihpdGVtLmdldDxEcmF3RWxs
aXBzZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdGg6Ci0gICAgICAgIHJldHVybiBh
cHBlbmQ8RHJhd1BhdGg+KGl0ZW0uZ2V0PERyYXdQYXRoPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3Rm9jdXNSaW5nUGF0aDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3Rm9jdXNSaW5n
UGF0aD4oaXRlbS5nZXQ8RHJhd0ZvY3VzUmluZ1BhdGg+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdGb2N1c1JpbmdSZWN0czoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3Rm9jdXNSaW5n
UmVjdHM+KGl0ZW0uZ2V0PERyYXdGb2N1c1JpbmdSZWN0cz4oKSk7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6RmlsbFJlY3Q6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RmlsbFJlY3Q+KGl0ZW0uZ2V0PEZp
bGxSZWN0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcjoKLSAgICAg
ICAgcmV0dXJuIGFwcGVuZDxGaWxsUmVjdFdpdGhDb2xvcj4oaXRlbS5nZXQ8RmlsbFJlY3RXaXRo
Q29sb3I+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50OgotICAg
ICAgICByZXR1cm4gYXBwZW5kPEZpbGxSZWN0V2l0aEdyYWRpZW50PihpdGVtLmdldDxGaWxsUmVj
dFdpdGhHcmFkaWVudD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0
OgotICAgICAgICByZXR1cm4gYXBwZW5kPEZpbGxDb21wb3NpdGVkUmVjdD4oaXRlbS5nZXQ8Rmls
bENvbXBvc2l0ZWRSZWN0PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUm91bmRlZFJlY3Q6
Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RmlsbFJvdW5kZWRSZWN0PihpdGVtLmdldDxGaWxsUm91
bmRlZFJlY3Q+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xl
OgotICAgICAgICByZXR1cm4gYXBwZW5kPEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlPihpdGVtLmdl
dDxGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4oKSk7Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RB
VEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbElubGluZVBhdGg6Ci0gICAgICAgIHJldHVybiBh
cHBlbmQ8RmlsbElubGluZVBhdGg+KGl0ZW0uZ2V0PEZpbGxJbmxpbmVQYXRoPigpKTsKLSNlbmRp
ZgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRoOgotICAgICAgICByZXR1cm4gYXBwZW5kPEZp
bGxQYXRoPihpdGVtLmdldDxGaWxsUGF0aD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbEVs
bGlwc2U6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RmlsbEVsbGlwc2U+KGl0ZW0uZ2V0PEZpbGxF
bGxpcHNlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6Ci0gICAgICAgIHJl
dHVybiBhcHBlbmQ8Rmx1c2hDb250ZXh0PihpdGVtLmdldDxGbHVzaENvbnRleHQ+KCkpOwotICAg
IGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoK
LSAgICAgICAgcmV0dXJuIGFwcGVuZDxNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VC
dWZmZXI+KGl0ZW0uZ2V0PE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4o
KSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyOgotICAg
ICAgICByZXR1cm4gYXBwZW5kPE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcj4oaXRlbS5nZXQ8
TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpHZXRJ
bWFnZURhdGE6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8R2V0SW1hZ2VEYXRhPihpdGVtLmdldDxH
ZXRJbWFnZURhdGE+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlB1dEltYWdlRGF0YToKLSAgICAg
ICAgcmV0dXJuIGFwcGVuZDxQdXRJbWFnZURhdGE+KGl0ZW0uZ2V0PFB1dEltYWdlRGF0YT4oKSk7
Ci0jaWYgRU5BQkxFKFZJREVPKQotICAgIGNhc2UgSXRlbVR5cGU6OlBhaW50RnJhbWVGb3JNZWRp
YToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxQYWludEZyYW1lRm9yTWVkaWE+KGl0ZW0uZ2V0PFBh
aW50RnJhbWVGb3JNZWRpYT4oKSk7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VS
ZWN0OgotICAgICAgICByZXR1cm4gYXBwZW5kPFN0cm9rZVJlY3Q+KGl0ZW0uZ2V0PFN0cm9rZVJl
Y3Q+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUxpbmU6Ci0gICAgICAgIHJldHVybiBh
cHBlbmQ8U3Ryb2tlTGluZT4oaXRlbS5nZXQ8U3Ryb2tlTGluZT4oKSk7Ci0jaWYgRU5BQkxFKElO
TElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDoKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZDxTdHJva2VJbmxpbmVQYXRoPihpdGVtLmdldDxTdHJva2VJbmxp
bmVQYXRoPigpKTsKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVBhdGg6Ci0gICAg
ICAgIHJldHVybiBhcHBlbmQ8U3Ryb2tlUGF0aD4oaXRlbS5nZXQ8U3Ryb2tlUGF0aD4oKSk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlRWxsaXBzZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxT
dHJva2VFbGxpcHNlPihpdGVtLmdldDxTdHJva2VFbGxpcHNlPigpKTsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpDbGVhclJlY3Q6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8Q2xlYXJSZWN0PihpdGVtLmdl
dDxDbGVhclJlY3Q+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5
ZXI6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8QmVnaW5UcmFuc3BhcmVuY3lMYXllcj4oaXRlbS5n
ZXQ8QmVnaW5UcmFuc3BhcmVuY3lMYXllcj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5kVHJh
bnNwYXJlbmN5TGF5ZXI6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RW5kVHJhbnNwYXJlbmN5TGF5
ZXI+KGl0ZW0uZ2V0PEVuZFRyYW5zcGFyZW5jeUxheWVyPigpKTsKLSNpZiBVU0UoQ0cpCi0gICAg
Y2FzZSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuOgotICAgICAgICByZXR1cm4gYXBwZW5k
PEFwcGx5U3Ryb2tlUGF0dGVybj4oaXRlbS5nZXQ8QXBwbHlTdHJva2VQYXR0ZXJuPigpKTsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpBcHBseUZpbGxQYXR0ZXJuOgotICAgICAgICByZXR1cm4gYXBwZW5k
PEFwcGx5RmlsbFBhdHRlcm4+KGl0ZW0uZ2V0PEFwcGx5RmlsbFBhdHRlcm4+KCkpOwotI2VuZGlm
Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjoKLSAgICAgICAgcmV0
dXJuIGFwcGVuZDxBcHBseURldmljZVNjYWxlRmFjdG9yPihpdGVtLmdldDxBcHBseURldmljZVNj
YWxlRmFjdG9yPigpKTsKLSAgICB9CisgICAgV1RGOjpzd2l0Y2hPbihpdGVtLCBbJl0oY29uc3Qg
YXV0byYgaXRlbSkgeworICAgICAgICB1c2luZyBEaXNwbGF5TGlzdEl0ZW1UeXBlID0gdHlwZW5h
bWUgV1RGOjpSZW1vdmVDVkFuZFJlZmVyZW5jZTxkZWNsdHlwZShpdGVtKT46OnR5cGU7CisgICAg
ICAgIGFwcGVuZDxEaXNwbGF5TGlzdEl0ZW1UeXBlPihpdGVtKTsKKyAgICB9KTsKIH0KIAogYXV0
byBEaXNwbGF5TGlzdDo6YmVnaW4oKSBjb25zdCAtPiBJdGVyYXRvcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3QuaAppbmRleCA5OTMyMjI2MmRmNzAuLjhjZWVlNDUwZTdiZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0LmgKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Zm9yRWFjaEl0ZW1CdWZmZXIoRnVuY3Rpb248dm9pZChjb25zdCBJdGVtQnVmZmVySGFuZGxlJik+
JiYpIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgY2xhc3MuLi4gQXJncz4gdm9p
ZCBhcHBlbmQoQXJncyYmLi4uIGFyZ3MpOwotICAgIHZvaWQgYXBwZW5kKEl0ZW1IYW5kbGUpOwor
ICAgIHZvaWQgYXBwZW5kKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpOwogCiAgICAgYm9vbCB0cmFj
a3NEcmF3aW5nSXRlbUV4dGVudHMoKSBjb25zdCB7IHJldHVybiBtX3RyYWNrc0RyYXdpbmdJdGVt
RXh0ZW50czsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VHJhY2tzRHJhd2luZ0l0ZW1F
eHRlbnRzKGJvb2wpOwpAQCAtMTMyLDcgKzEzMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0pOwog
ICAgIH0KIAotICAgIHN0YXRpYyBib29sIHNob3VsZER1bXBGb3JGbGFncyhBc1RleHRGbGFncywg
SXRlbUhhbmRsZSk7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZs
YWdzLCBjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsKIAogICAgIEltYWdlQnVmZmVySGFzaE1hcCBt
X2ltYWdlQnVmZmVyczsKICAgICBOYXRpdmVJbWFnZUhhc2hNYXAgbV9uYXRpdmVJbWFnZXM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCmluZGV4IDg0NmM0MjAw
MWQ1Yi4uMjFlZWRkNzRjMWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
QnVmZmVyLmNwcApAQCAtMzQsMTUgKzM0LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVz
cGFjZSBEaXNwbGF5TGlzdCB7CiAKLSNpZiAhZGVmaW5lZChOREVCVUcpIHx8ICFMT0dfRElTQUJM
RUQKLUNTdHJpbmcgSXRlbUhhbmRsZTo6ZGVzY3JpcHRpb24oKSBjb25zdAotewotICAgIFRleHRT
dHJlYW0gdHM7Ci0gICAgdHMgPDwgKnRoaXM7Ci0gICAgcmV0dXJuIHRzLnJlbGVhc2UoKS51dGY4
KCk7Ci19Ci0jZW5kaWYKLQogdm9pZCBJdGVtSGFuZGxlOjphcHBseShHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQpCiB7CiAgICAgc3dpdGNoICh0eXBlKCkpIHsKQEAgLTU5NiwxMyArNTg3LDEzIEBA
IGJvb2wgSXRlbUhhbmRsZTo6c2FmZUNvcHkoSXRlbUhhbmRsZSBkZXN0aW5hdGlvbikgY29uc3QK
IAogYm9vbCBzYWZlQ29weShJdGVtSGFuZGxlIGRlc3RpbmF0aW9uLCBjb25zdCBEaXNwbGF5TGlz
dEl0ZW0mIHNvdXJjZSkKIHsKLSAgICByZXR1cm4gV1RGOjp2aXNpdChbJl0oY29uc3QgYXV0byYg
c291cmNlKSB7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oc291cmNlLCBbJl0oY29uc3QgYXV0
byYgc291cmNlKSB7CiAgICAgICAgIHVzaW5nIERpc3BsYXlMaXN0SXRlbVR5cGUgPSB0eXBlbmFt
ZSBXVEY6OlJlbW92ZUNWQW5kUmVmZXJlbmNlPGRlY2x0eXBlKHNvdXJjZSk+Ojp0eXBlOwogICAg
ICAgICBjb25zdGV4cHIgYXV0byBpdGVtVHlwZSA9IERpc3BsYXlMaXN0SXRlbVR5cGU6Oml0ZW1U
eXBlOwogICAgICAgICBkZXN0aW5hdGlvbi5kYXRhWzBdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4o
aXRlbVR5cGUpOwogICAgICAgICBhdXRvIGl0ZW1PZmZzZXQgPSBkZXN0aW5hdGlvbi5kYXRhICsg
c2l6ZW9mKHVpbnQ2NF90KTsKICAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERpc3BsYXlMaXN0SXRl
bVR5cGU+KGl0ZW1PZmZzZXQsIHNvdXJjZSk7Ci0gICAgfSwgc291cmNlKTsKKyAgICB9KTsKIH0K
IAogT3B0aW9uYWw8RGlzcGxheUxpc3RJdGVtPiBzYWZlQ29weShJdGVtSGFuZGxlIHNvdXJjZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcAppbmRleCBlZjU1Zjc2ZTNh
M2MuLjJkMmMwNjE4ZjFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBl
LmNwcApAQCAtMjYxLDE3ICsyNjEsMTcgQEAgc2l6ZV90IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVt
SW5CeXRlcyhJdGVtVHlwZSB0eXBlKQogCiBzaXplX3QgcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1J
bkJ5dGVzKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgZGlzcGxheUxpc3RJdGVtKQogewotICAgIGF1
dG8gaXRlbVNpemUgPSBXVEY6OnZpc2l0KFtdKGNvbnN0IGF1dG8mIGl0ZW0pIHsKKyAgICBhdXRv
IGl0ZW1TaXplID0gV1RGOjpzd2l0Y2hPbihkaXNwbGF5TGlzdEl0ZW0sIFtdKGNvbnN0IGF1dG8m
IGl0ZW0pIHsKICAgICAgICAgcmV0dXJuIHNpemVvZihpdGVtKTsKLSAgICB9LCBkaXNwbGF5TGlz
dEl0ZW0pOworICAgIH0pOwogICAgIHJldHVybiBzaXplb2YodWludDY0X3QpICsgcm91bmRVcFRv
TXVsdGlwbGVPZjxhbGlnbm9mKHVpbnQ2NF90KT4oaXRlbVNpemUpOwogfQogCiBJdGVtVHlwZSBk
aXNwbGF5TGlzdEl0ZW1UeXBlKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgZGlzcGxheUxpc3RJdGVt
KQogewotICAgIHJldHVybiBXVEY6OnZpc2l0KFtdKGNvbnN0IGF1dG8mIGl0ZW0pIHsKKyAgICBy
ZXR1cm4gV1RGOjpzd2l0Y2hPbihkaXNwbGF5TGlzdEl0ZW0sIFtdKGNvbnN0IGF1dG8mIGl0ZW0p
IHsKICAgICAgICAgcmV0dXJuIGl0ZW0uaXRlbVR5cGU7Ci0gICAgfSwgZGlzcGxheUxpc3RJdGVt
KTsKKyAgICB9KTsKIH0KIAogYm9vbCBpc0lubGluZUl0ZW0oSXRlbVR5cGUgdHlwZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCA0OWIyYzFiMjVjODIuLmM3NjNlMzI2
NDljNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtNDksMTEgKzQ5
LDIxIEBAIHZvaWQgU2F2ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAog
ICAgIGNvbnRleHQuc2F2ZSgpOwogfQogCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgU2F2ZSYpCit7CisgICAgcmV0dXJuIHRzOworfQorCiB2b2lk
IFJlc3RvcmU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBj
b250ZXh0LnJlc3RvcmUoKTsKIH0KIAorc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IFJlc3RvcmUmKQoreworICAgIHJldHVybiB0czsKK30KKwogdm9p
ZCBUcmFuc2xhdGU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAg
ICBjb250ZXh0LnRyYW5zbGF0ZShtX3gsIG1feSk7CkBAIC0yMjAsMTIgKzIzMCwxMiBAQCBTZXRT
dGF0ZTo6U2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlQ2hh
bmdlLCBjb25zdCBQYXR0ZXJuRAogewogfQogCi12b2lkIFNldFN0YXRlOjphcHBseShHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIE5hdGl2ZUltYWdlKiBzdHJva2VQYXR0ZXJuSW1hZ2UsIE5hdGl2
ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlKQordm9pZCBTZXRTdGF0ZTo6YXBwbHkoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBOYXRpdmVJbWFnZSogc3Ryb2tlUGF0dGVybkltYWdlLCBOYXRpdmVJ
bWFnZSogZmlsbFBhdHRlcm5JbWFnZSkgY29uc3QKIHsKICAgICBpZiAobV9zdGF0ZUNoYW5nZS5t
X2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJu
Q2hhbmdlKSAmJiBzdHJva2VQYXR0ZXJuSW1hZ2UpCi0gICAgICAgIG1fc3RhdGVDaGFuZ2UubV9z
dGF0ZS5zdHJva2VQYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKG1ha2VSZWYoKnN0cm9rZVBhdHRl
cm5JbWFnZSksIG1fc3Ryb2tlUGF0dGVybi5wYXJhbWV0ZXJzKTsKKyAgICAgICAgY29uc3RfY2Fz
dDxTZXRTdGF0ZSo+KHRoaXMpLT5tX3N0YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9
IFBhdHRlcm46OmNyZWF0ZShtYWtlUmVmKCpzdHJva2VQYXR0ZXJuSW1hZ2UpLCBtX3N0cm9rZVBh
dHRlcm4ucGFyYW1ldGVycyk7CiAgICAgaWYgKG1fc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpICYmIGZpbGxQ
YXR0ZXJuSW1hZ2UpCi0gICAgICAgIG1fc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsUGF0dGVybiA9
IFBhdHRlcm46OmNyZWF0ZShtYWtlUmVmKCpmaWxsUGF0dGVybkltYWdlKSwgbV9maWxsUGF0dGVy
bi5wYXJhbWV0ZXJzKTsKKyAgICAgICAgY29uc3RfY2FzdDxTZXRTdGF0ZSo+KHRoaXMpLT5tX3N0
YXRlQ2hhbmdlLm1fc3RhdGUuZmlsbFBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUobWFrZVJlZigq
ZmlsbFBhdHRlcm5JbWFnZSksIG1fZmlsbFBhdHRlcm4ucGFyYW1ldGVycyk7CiAgICAgbV9zdGF0
ZUNoYW5nZS5hcHBseShjb250ZXh0KTsKIH0KIApAQCAtMjg1LDYgKzI5NSwxMSBAQCB2b2lkIENs
ZWFyU2hhZG93OjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiAgICAgY29u
dGV4dC5jbGVhclNoYWRvdygpOwogfQogCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xlYXJTaGFkb3cmKQoreworICAgIHJldHVybiB0czsKK30K
Kwogdm9pZCBDbGlwOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAg
ICAgY29udGV4dC5jbGlwKG1fcmVjdCk7CkBAIC05NjUsNiArOTgwLDExIEBAIHZvaWQgRW5kVHJh
bnNwYXJlbmN5TGF5ZXI6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAg
ICBjb250ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiB9CiAKK3N0YXRpYyBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBFbmRUcmFuc3BhcmVuY3lMYXllciYp
Cit7CisgICAgcmV0dXJuIHRzOworfQorCiAjaWYgVVNFKENHKQogCiB2b2lkIEFwcGx5U3Ryb2tl
UGF0dGVybjo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdApAQCAtOTcyLDEw
ICs5OTIsMjEgQEAgdm9pZCBBcHBseVN0cm9rZVBhdHRlcm46OmFwcGx5KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkgY29uc3QKICAgICBjb250ZXh0LmFwcGx5U3Ryb2tlUGF0dGVybigpOwogfQog
CitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQXBw
bHlTdHJva2VQYXR0ZXJuJikKK3sKKyAgICByZXR1cm4gdHM7Cit9CisKIHZvaWQgQXBwbHlGaWxs
UGF0dGVybjo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGNv
bnRleHQuYXBwbHlGaWxsUGF0dGVybigpOwogfQorCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQXBwbHlGaWxsUGF0dGVybiYpCit7CisgICAgcmV0
dXJuIHRzOworfQorCiAjZW5kaWYKIAogdm9pZCBBcHBseURldmljZVNjYWxlRmFjdG9yOjphcHBs
eShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CkBAIC0xMDg5LDE5OSArMTEyMCwyMSBA
QCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgSXRlbVR5cGUg
dHlwZSkKICAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIEl0ZW1IYW5kbGUgaXRlbSkKLXsKLSAgICB0cyA8PCBpdGVtLnR5cGUoKTsKLQot
ICAgIHN3aXRjaCAoaXRlbS50eXBlKCkpIHsKLSAgICBjYXNlIEl0ZW1UeXBlOjpUcmFuc2xhdGU6
Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFRyYW5zbGF0ZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6Um90YXRlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxSb3RhdGU+
KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNjYWxlOgotICAgICAgICB0
cyA8PCBpdGVtLmdldDxTY2FsZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6U2V0Q1RNOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRDVE0+KCk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgotICAgICAgICB0cyA8PCBp
dGVtLmdldDxDb25jYXRlbmF0ZUNUTT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6U2V0SW5saW5lRmlsbEdyYWRpZW50OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRJ
bmxpbmVGaWxsR3JhZGllbnQ+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6
OlNldElubGluZUZpbGxDb2xvcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0SW5saW5lRmls
bENvbG9yPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVT
dHJva2VDb2xvcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0SW5saW5lU3Ryb2tlQ29sb3I+
KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0cm9rZVRoaWNrbmVz
czoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0U3Ryb2tlVGhpY2tuZXNzPigpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToKLSAgICAgICAgdHMgPDwgaXRl
bS5nZXQ8U2V0U3RhdGU+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNl
dExpbmVDYXA6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldExpbmVDYXA+KCk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVEYXNoOgotICAgICAgICB0cyA8PCBp
dGVtLmdldDxTZXRMaW5lRGFzaD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6U2V0TGluZUpvaW46Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldExpbmVKb2luPigpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRNaXRlckxpbWl0OgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxTZXRNaXRlckxpbWl0PigpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpDbGlwOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGlwPigpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0OgotICAgICAgICB0cyA8PCBp
dGVtLmdldDxDbGlwT3V0PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpD
bGlwVG9JbWFnZUJ1ZmZlcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q2xpcFRvSW1hZ2VCdWZm
ZXI+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6
Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENsaXBPdXRUb1BhdGg+KCk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxD
bGlwUGF0aD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlw
VG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEJlZ2luQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRD
bGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEVuZENsaXBUb0Ry
YXdpbmdDb21tYW5kcz4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJh
d0dseXBoczoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0dseXBocz4oKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgotICAgICAgICB0cyA8
PCBpdGVtLmdldDxEcmF3SW1hZ2VCdWZmZXI+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd05h
dGl2ZUltYWdlPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0
dGVybjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd1BhdHRlcm4+KCk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdl
dDxEcmF3UmVjdD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xp
bmU6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdMaW5lPigpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OgotICAgICAgICB0cyA8PCBpdGVt
LmdldDxEcmF3TGluZXNGb3JUZXh0PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxE
cmF3RG90c0ZvckRvY3VtZW50TWFya2VyPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3RWxsaXBzZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0VsbGlwc2U+
KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXRoOgotICAgICAg
ICB0cyA8PCBpdGVtLmdldDxEcmF3UGF0aD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdG
b2N1c1JpbmdQYXRoPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
Rm9jdXNSaW5nUmVjdHM6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdGb2N1c1JpbmdSZWN0
cz4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAg
ICAgIHRzIDw8IGl0ZW0uZ2V0PEZpbGxSZWN0PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Rmls
bFJlY3RXaXRoQ29sb3I+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkZp
bGxSZWN0V2l0aEdyYWRpZW50OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsUmVjdFdpdGhH
cmFkaWVudD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbENvbXBv
c2l0ZWRSZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsQ29tcG9zaXRlZFJlY3Q+KCk7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAg
ICAgICAgdHMgPDwgaXRlbS5nZXQ8RmlsbFJvdW5kZWRSZWN0PigpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZToKLSAgICAgICAgdHMg
PDwgaXRlbS5nZXQ8RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU+KCk7Ci0gICAgICAgIGJyZWFrOwot
I2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxJbmxp
bmVQYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsSW5saW5lUGF0aD4oKTsKLSAgICAg
ICAgYnJlYWs7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUGF0aDoKLSAgICAgICAg
dHMgPDwgaXRlbS5nZXQ8RmlsbFBhdGg+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRl
bVR5cGU6OkZpbGxFbGxpcHNlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsRWxsaXBzZT4o
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OgotICAg
ICAgICB0cyA8PCBpdGVtLmdldDxGbHVzaENvbnRleHQ+KCk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoK
LSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdl
QnVmZmVyPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFu
ZENoYW5nZUl0ZW1CdWZmZXI6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PE1ldGFDb21tYW5kQ2hh
bmdlSXRlbUJ1ZmZlcj4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6R2V0
SW1hZ2VEYXRhOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxHZXRJbWFnZURhdGE+KCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlB1dEltYWdlRGF0YToKLSAgICAgICAgdHMg
PDwgaXRlbS5nZXQ8UHV0SW1hZ2VEYXRhPigpOwotICAgICAgICBicmVhazsKLSNpZiBFTkFCTEUo
VklERU8pCi0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgotICAgICAgICB0
cyA8PCBpdGVtLmdldDxQYWludEZyYW1lRm9yTWVkaWE+KCk7Ci0gICAgICAgIGJyZWFrOwotI2Vu
ZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDoKLSAgICAgICAgdHMgPDwgaXRlbS5n
ZXQ8U3Ryb2tlUmVjdD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ry
b2tlTGluZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U3Ryb2tlTGluZT4oKTsKLSAgICAgICAg
YnJlYWs7Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6
U3Ryb2tlSW5saW5lUGF0aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U3Ryb2tlSW5saW5lUGF0
aD4oKTsKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQ
YXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTdHJva2VQYXRoPigpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VFbGxpcHNlOgotICAgICAgICB0cyA8PCBpdGVt
LmdldDxTdHJva2VFbGxpcHNlPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpDbGVhclJlY3Q6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENsZWFyUmVjdD4oKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lMYXllcjoKLSAg
ICAgICAgdHMgPDwgaXRlbS5nZXQ8QmVnaW5UcmFuc3BhcmVuY3lMYXllcj4oKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjoKLSAgICAg
ICAgdHMgPDwgaXRlbS5nZXQ8QXBwbHlEZXZpY2VTY2FsZUZhY3Rvcj4oKTsKLSAgICAgICAgYnJl
YWs7Ci0KLSAgICAvLyBJdGVtcyB3aXRoIG5vIGFkZGl0aW9uYWwgZGF0YS4KLSAgICBjYXNlIEl0
ZW1UeXBlOjpTYXZlOgotICAgIGNhc2UgSXRlbVR5cGU6OlJlc3RvcmU6Ci0gICAgY2FzZSBJdGVt
VHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6Ci0jaWYgVVNFKENHKQotICAgIGNhc2UgSXRlbVR5
cGU6OkFwcGx5U3Ryb2tlUGF0dGVybjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseUZpbGxQYXR0
ZXJuOgotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJTaGFkb3c6Ci0gICAgICAgIGJy
ZWFrOwotICAgIH0KK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IERpc3BsYXlMaXN0SXRlbSYgaXRlbSkKK3sKKyAgICBXVEY6OnN3aXRjaE9uKGl0ZW0sIFsmXShj
b25zdCBhdXRvJiBkaXNwbGF5TGlzdEl0ZW0pIHsKKyAgICAgICAgdHMgPDwgZGlzcGxheUxpc3RJ
dGVtLml0ZW1UeXBlOworICAgICAgICB0cyA8PCBkaXNwbGF5TGlzdEl0ZW07CisgICAgfSk7CiAg
ICAgcmV0dXJuIHRzOwogfQogCitib29sIGlzRHJhd2luZ0l0ZW0oY29uc3QgRGlzcGxheUxpc3RJ
dGVtJiBkaXNwbGF5TGlzdEl0ZW0pCit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oZGlzcGxh
eUxpc3RJdGVtLCBbXShjb25zdCBhdXRvJiBkaXNwbGF5TGlzdEl0ZW0pIHsKKyAgICAgICAgcmV0
dXJuIGRpc3BsYXlMaXN0SXRlbS5pc0RyYXdpbmdJdGVtOworICAgIH0pOworfQorCiB9CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCA2ZGRiNTM2YmViZWUuLjFkOTQ0YTAy
MTlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC0yODMsNyArMjgzLDcg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8
U2V0U3RhdGU+IGRlY29kZShEZWNvZGVyJik7CiAKLSAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29u
dGV4dCYsIE5hdGl2ZUltYWdlKiBzdHJva2VQYXR0ZXJuSW1hZ2UsIE5hdGl2ZUltYWdlKiBmaWxs
UGF0dGVybkltYWdlKTsKKyAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYsIE5hdGl2ZUlt
YWdlKiBzdHJva2VQYXR0ZXJuSW1hZ2UsIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlKSBj
b25zdDsKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgUGF0dGVybkRhdGEgewpAQCAtOTE3LDcgKzkx
Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtID0g
ZmFsc2U7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0gPSB0cnVlOwog
Ci0gICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGZvbnRJZGVudGlmaWVyKCkgeyByZXR1
cm4gbV9mb250SWRlbnRpZmllcjsgfQorICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBm
b250SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fZm9udElkZW50aWZpZXI7IH0KICAgICBj
b25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxBbmNo
b3I7IH0KICAgICBGbG9hdFBvaW50IGFuY2hvclBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9sb2Nh
bEFuY2hvcjsgfQogICAgIGNvbnN0IFZlY3RvcjxHbHlwaEJ1ZmZlckdseXBoLCAxNj4mIGdseXBo
cygpIGNvbnN0IHsgcmV0dXJuIG1fZ2x5cGhzOyB9CkBAIC0yMzY5LDEzICsyMzY5LDE1IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIEl0ZW0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8SGFzSXNWYWxp
ZDxJdGVtPiwgYm9vbD4gaXNWYWxpCiAgICAgcmV0dXJuIGl0ZW0uaXNWYWxpZCgpOwogfQogCi1J
dGVtVHlwZSBkaXNwbGF5TGlzdEl0ZW1UeXBlKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpOworV0VC
Q09SRV9FWFBPUlQgSXRlbVR5cGUgZGlzcGxheUxpc3RJdGVtVHlwZShjb25zdCBEaXNwbGF5TGlz
dEl0ZW0mKTsKIAogc2l6ZV90IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyhjb25zdCBE
aXNwbGF5TGlzdEl0ZW0mKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIHNpemVf
dCBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXNGb3JJdGVtID0gc2l6ZW9mKHVpbnQ2NF90
KSArIHJvdW5kVXBUb011bHRpcGxlT2Y8YWxpZ25vZih1aW50NjRfdCk+KHNpemVvZihUKSk7CiAK
LVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIEl0ZW1IYW5kbGUpOworVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRGlzcGxheUxpc3RJdGVtJik7CisK
K2Jvb2wgaXNEcmF3aW5nSXRlbShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsKIAogfSAvLyBuYW1l
c3BhY2UgRGlzcGxheUxpc3QKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcAppbmRleCA2OWUwMTlhYTZmYTIuLjgyNmQzYTEwYWYz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcApAQCAtNDEsMTEg
KzQxLDYgQEAgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpJdGVyYXRvcihjb25zdCBEaXNwbGF5TGlz
dCYgZGlzcGxheUxpc3QsIEltbWVkaWF0ZWx5TW92ZVQKICAgICAgICAgbW92ZUN1cnNvclRvU3Rh
cnRPZkN1cnJlbnRCdWZmZXIoKTsKIH0KIAotRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjp+SXRlcmF0
b3IoKQotewotICAgIGNsZWFyQ3VycmVudEl0ZW0oKTsKLX0KLQogI2lmIEFTU0VSVF9FTkFCTEVE
CiBib29sIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6YXRFbmQoKSBjb25zdAogewpAQCAtNjEsMTMg
KzU2LDYgQEAgYm9vbCBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OmF0RW5kKCkgY29uc3QKIH0KICNl
bmRpZgogCi0vLyBUaGlzIGlzIHRlbXBvcmFyeSwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBieSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNTYwLgotdm9pZCBEaXNwbGF5
TGlzdDo6SXRlcmF0b3I6OmNsZWFyQ3VycmVudEl0ZW0oKQotewotICAgIGlmIChtX2N1cnJlbnRC
dWZmZXJGb3JJdGVtICYmIG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gIT0gbV9maXhlZEJ1ZmZlckZv
ckN1cnJlbnRJdGVtKQotICAgICAgICBmYXN0RnJlZShtX2N1cnJlbnRCdWZmZXJGb3JJdGVtKTsK
LX0KLQogYXV0byBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9yKigpIGNvbnN0IC0+IE9w
dGlvbmFsPFZhbHVlPgogewogICAgIEFTU0VSVCghYXRFbmQoKSk7CkBAIC04MywxNCArNzEsNyBA
QCBhdXRvIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3BlcmF0b3IqKCkgY29uc3QgLT4gT3B0aW9u
YWw8VmFsdWU+CiAgICAgaWYgKGN1cnJlbnRJdGVtSW5mby0+aXNEcmF3aW5nSXRlbSAmJiAhbV9k
aXNwbGF5TGlzdC5tX2RyYXdpbmdJdGVtRXh0ZW50cy5pc0VtcHR5KCkpCiAgICAgICAgIGN1cnJl
bnRFeHRlbnQgPSBtX2Rpc3BsYXlMaXN0Lm1fZHJhd2luZ0l0ZW1FeHRlbnRzW21fZHJhd2luZ0l0
ZW1JbmRleF07CiAKLSAgICAvLyBUaGlzIGlzIHRlbXBvcmFyeSwgYW5kIHdpbGwgYmUgcmVtb3Zl
ZCBieSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNTYwLgotICAg
IGNvbnN0X2Nhc3Q8SXRlcmF0b3IqPih0aGlzKS0+Y2xlYXJDdXJyZW50SXRlbSgpOwotICAgIGF1
dG8gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW0gPSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0
ZXMoZGlzcGxheUxpc3RJdGVtVHlwZShjdXJyZW50SXRlbUluZm8tPmRpc3BsYXlMaXN0SXRlbSkp
OwotICAgIG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gPSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbSA8
PSBzaXplT2ZGaXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtID8gbV9maXhlZEJ1ZmZlckZvckN1cnJl
bnRJdGVtIDogcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZmFzdE1hbGxvYyhwYWRkZWRTaXpl
T2ZUeXBlQW5kSXRlbSkpOwotICAgIGF1dG8gc3VjY2VzcyA9IHNhZmVDb3B5KHsgbV9jdXJyZW50
QnVmZmVyRm9ySXRlbSB9LCBjdXJyZW50SXRlbUluZm8tPmRpc3BsYXlMaXN0SXRlbSk7Ci0gICAg
QVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKLQotICAgIHJldHVybiB7eyB7IG1fY3Vy
cmVudEJ1ZmZlckZvckl0ZW0gfSwgV1RGTW92ZShjdXJyZW50RXh0ZW50KSwgY3VycmVudEl0ZW1J
bmZvLT5zaXplSW5CdWZmZXIgfX07CisgICAgcmV0dXJuIHt7IGN1cnJlbnRJdGVtSW5mby0+ZGlz
cGxheUxpc3RJdGVtLCBXVEZNb3ZlKGN1cnJlbnRFeHRlbnQpLCBjdXJyZW50SXRlbUluZm8tPnNp
emVJbkJ1ZmZlciB9fTsKIH0KIAogdm9pZCBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJhdG9y
KysoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmgKaW5kZXggMzI3NDRhNTFh
ZmM3Li41ODJhMDc5M2MyNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3Iu
aApAQCAtMzUsMTQgKzM1LDEzIEBAIGNsYXNzIERpc3BsYXlMaXN0OjpJdGVyYXRvciB7CiBwdWJs
aWM6CiAgICAgZW51bSBjbGFzcyBJbW1lZGlhdGVseU1vdmVUb0VuZCB7IE5vLCBZZXMgfTsKICAg
ICBJdGVyYXRvcihjb25zdCBEaXNwbGF5TGlzdCYsIEltbWVkaWF0ZWx5TW92ZVRvRW5kID0gSW1t
ZWRpYXRlbHlNb3ZlVG9FbmQ6Ok5vKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB+SXRlcmF0b3IoKTsK
IAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJdGVyYXRvciYgb3RoZXIpIHsgcmV0dXJuICZt
X2Rpc3BsYXlMaXN0ID09ICZvdGhlci5tX2Rpc3BsYXlMaXN0ICYmIG1fY3Vyc29yID09IG90aGVy
Lm1fY3Vyc29yOyB9CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikg
eyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG9w
ZXJhdG9yKysoKTsKIAogICAgIHN0cnVjdCBWYWx1ZSB7Ci0gICAgICAgIEl0ZW1IYW5kbGUgaXRl
bTsKKyAgICAgICAgRGlzcGxheUxpc3RJdGVtIGl0ZW07CiAgICAgICAgIE9wdGlvbmFsPEZsb2F0
UmVjdD4gZXh0ZW50OwogICAgICAgICBzaXplX3QgaXRlbVNpemVJbkJ1ZmZlciB7IDAgfTsKICAg
ICB9OwpAQCAtNTAsMTAgKzQ5LDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlv
bmFsPFZhbHVlPiBvcGVyYXRvciooKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICAvLyBUaGVzZSBh
cmUgdGVtcG9yYXJ5LCBhbmQgd2lsbCBiZSByZW1vdmVkIGJ5IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjM1NjAuCi0gICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qg
c2l6ZU9mRml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbSA9IDI1NjsKLSAgICB2b2lkIGNsZWFyQ3Vy
cmVudEl0ZW0oKTsKLQogICAgIHN0cnVjdCBDdXJyZW50SXRlbVJlc3VsdCB7CiAgICAgICAgIERp
c3BsYXlMaXN0SXRlbSBkaXNwbGF5TGlzdEl0ZW07CiAgICAgICAgIHN0ZDo6c2l6ZV90IHNpemVJ
bkJ1ZmZlcjsKQEAgLTcwLDEwICs2NSw2IEBAIHByaXZhdGU6CiAKICAgICBJdGVtQnVmZmVyKiBp
dGVtQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TGlzdC5pdGVtQnVmZmVySWZFeGlz
dHMoKTsgfQogCi0gICAgLy8gVGhlc2UgYXJlIHRlbXBvcmFyeSwgYW5kIHdpbGwgYmUgcmVtb3Zl
ZCBieSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzNTYwLgotICAg
IG11dGFibGUgdWludDhfdCBtX2ZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW1bc2l6ZU9mRml4ZWRC
dWZmZXJGb3JDdXJyZW50SXRlbV0geyAwIH07Ci0gICAgbXV0YWJsZSB1aW50OF90KiBtX2N1cnJl
bnRCdWZmZXJGb3JJdGVtIHsgbnVsbHB0ciB9OwotCiAgICAgY29uc3QgRGlzcGxheUxpc3QmIG1f
ZGlzcGxheUxpc3Q7CiAgICAgc3RydWN0IEN1cnJlbnRJdGVtSW5mbyB7CiAgICAgICAgIHN0ZDo6
c2l6ZV90IHNpemVJbkJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVy
LmNwcAppbmRleCAxMDdmMjBlYzRmMWMuLjg2N2Y2NWI0Mjg5OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcApAQCAtNTQsOSArNTQsOCBAQCBHcmFwaGljc0NvbnRl
eHQmIFJlcGxheWVyOjpjb250ZXh0KCkgY29uc3QKIH0KIAogdGVtcGxhdGU8Y2xhc3MgVD4KLWlu
bGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseUlt
YWdlQnVmZmVySXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEltYWdlQnVmZmVy
SGFzaE1hcCYgaW1hZ2VCdWZmZXJzLCBJdGVtSGFuZGxlIGl0ZW0pCitpbmxpbmUgc3RhdGljIE9w
dGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlJbWFnZUJ1ZmZlckl0ZW0o
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdl
QnVmZmVycywgY29uc3QgVCYgaW1hZ2VCdWZmZXJJdGVtKQogewotICAgIGF1dG8mIGltYWdlQnVm
ZmVySXRlbSA9IGl0ZW0uZ2V0PFQ+KCk7CiAgICAgYXV0byByZXNvdXJjZUlkZW50aWZpZXIgPSBp
bWFnZUJ1ZmZlckl0ZW0uaW1hZ2VCdWZmZXJJZGVudGlmaWVyKCk7CiAgICAgaWYgKGF1dG8qIGlt
YWdlQnVmZmVyID0gaW1hZ2VCdWZmZXJzLmdldChyZXNvdXJjZUlkZW50aWZpZXIpKSB7CiAgICAg
ICAgIGltYWdlQnVmZmVySXRlbS5hcHBseShjb250ZXh0LCAqaW1hZ2VCdWZmZXIpOwpAQCAtNjYs
OSArNjUsOCBAQCBpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcj4gYXBwbHlJbWFnZUJ1ZmZlckl0ZW0oR3JhcGhpYwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBU
PgotaW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFw
cGx5TmF0aXZlSW1hZ2VJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTmF0aXZl
SW1hZ2VIYXNoTWFwJiBuYXRpdmVJbWFnZXMsIEl0ZW1IYW5kbGUgaXRlbSkKK2lubGluZSBzdGF0
aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseU5hdGl2ZUltYWdl
SXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYg
bmF0aXZlSW1hZ2VzLCBjb25zdCBUJiBuYXRpdmVJbWFnZUl0ZW0pCiB7Ci0gICAgYXV0byYgbmF0
aXZlSW1hZ2VJdGVtID0gaXRlbS5nZXQ8VD4oKTsKICAgICBhdXRvIHJlc291cmNlSWRlbnRpZmll
ciA9IG5hdGl2ZUltYWdlSXRlbS5pbWFnZUlkZW50aWZpZXIoKTsKICAgICBpZiAoYXV0byogaW1h
Z2UgPSBuYXRpdmVJbWFnZXMuZ2V0KHJlc291cmNlSWRlbnRpZmllcikpIHsKICAgICAgICAgbmF0
aXZlSW1hZ2VJdGVtLmFwcGx5KGNvbnRleHQsICppbWFnZSk7CkBAIC03NywxMCArNzUsOCBAQCBp
bmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlO
YXRpdmVJbWFnZUl0ZW0oR3JhcGhpYwogICAgIHJldHVybiByZXNvdXJjZUlkZW50aWZpZXI7CiB9
CiAKLWlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBh
cHBseVNldFN0YXRlSXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IE5hdGl2ZUlt
YWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzLCBJdGVtSGFuZGxlIGl0ZW0pCitpbmxpbmUgc3RhdGlj
IE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0ZW0o
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAmIG5hdGl2
ZUltYWdlcywgY29uc3QgU2V0U3RhdGUmIHNldFN0YXRlSXRlbSkKIHsKLSAgICBhdXRvJiBzZXRT
dGF0ZUl0ZW0gPSBpdGVtLmdldDxTZXRTdGF0ZT4oKTsKLQogICAgIE5hdGl2ZUltYWdlKiBzdHJv
a2VQYXR0ZXJuSW1hZ2UgPSBudWxscHRyOwogICAgIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybklt
YWdlID0gbnVsbHB0cjsKIApAQCAtMTAxLDkgKzk3LDggQEAgaW5saW5lIHN0YXRpYyBPcHRpb25h
bDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5U2V0U3RhdGVJdGVtKEdyYXBoaWNz
Q28KIH0KIAogdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseUZvbnRJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRm9udFJlbmRlcmluZ1Jlc291cmNlTWFwJiBmb250cywgSXRlbUhhbmRsZSBp
dGVtKQoraW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+
IGFwcGx5Rm9udEl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250UmVuZGVy
aW5nUmVzb3VyY2VNYXAmIGZvbnRzLCBjb25zdCBUJiBmb250SXRlbSkKIHsKLSAgICBhdXRvJiBm
b250SXRlbSA9IGl0ZW0uZ2V0PFQ+KCk7CiAgICAgYXV0byByZXNvdXJjZUlkZW50aWZpZXIgPSBm
b250SXRlbS5mb250SWRlbnRpZmllcigpOwogICAgIGlmIChhdXRvKiBmb250ID0gZm9udHMuZ2V0
KHJlc291cmNlSWRlbnRpZmllcikpIHsKICAgICAgICAgZm9udEl0ZW0uYXBwbHkoY29udGV4dCwg
KmZvbnQpOwpAQCAtMTEyLDY4ICsxMDcsNjUgQEAgaW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5Rm9udEl0ZW0oR3JhcGhpY3NDb250ZXgKICAg
ICByZXR1cm4gcmVzb3VyY2VJZGVudGlmaWVyOwogfQogCi1zdGQ6OnBhaXI8T3B0aW9uYWw8U3Rv
cFJlcGxheVJlYXNvbj4sIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4+IFJl
cGxheWVyOjphcHBseUl0ZW0oSXRlbUhhbmRsZSBpdGVtKQorZXh0ZXJuIEdyYXBoaWNzQ29udGV4
dCYgc3ludGhlc2l6ZUxWYWx1ZUdyYXBoaWNzQ29udGV4dDsKK3RlbXBsYXRlPHR5cGVuYW1lLCB0
eXBlbmFtZSA9IHZvaWQ+IHN0YXRpYyBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFzQXBwbHkgPSBm
YWxzZTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBpbmxpbmUgY29uc3RleHByIGJvb2wg
SGFzQXBwbHk8VCwgc3RkOjp2b2lkX3Q8ZGVjbHR5cGUoc3RkOjpkZWNsdmFsPFQ+KCkuYXBwbHko
c3ludGhlc2l6ZUxWYWx1ZUdyYXBoaWNzQ29udGV4dCkpPj4gPSB0cnVlOworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBJdGVtPiBzdGF0aWMgaW5saW5lIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8IUhh
c0FwcGx5PEl0ZW0+LCB2b2lkPiBhcHBseShjb25zdCBJdGVtJiwgR3JhcGhpY3NDb250ZXh0JikK
K3sKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgSXRlbT4gc3RhdGljIGlubGluZSB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZl90PEhhc0FwcGx5PEl0ZW0+LCB2b2lkPiBhcHBseShjb25zdCBJdGVtJiBp
dGVtLCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCkKK3sKKyAgICByZXR1cm4gaXRl
bS5hcHBseShncmFwaGljc0NvbnRleHQpOworfQorCithdXRvIFJlcGxheWVyOjphcHBseUl0ZW0o
Y29uc3QgRGlzcGxheUxpc3RJdGVtJiBpdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQKIHsKICAgICBp
ZiAobV9kZWxlZ2F0ZSAmJiBtX2RlbGVnYXRlLT5hcHBseShpdGVtLCBjb250ZXh0KCkpKQogICAg
ICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwogCi0gICAgaWYgKGl0
ZW0uaXM8RHJhd0ltYWdlQnVmZmVyPigpKSB7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRl
bSwgWyZdKGNvbnN0IERyYXdJbWFnZUJ1ZmZlciYgaXRlbSkgLT4gQXBwbHlJdGVtUmVzdWx0IHsK
ICAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5
SW1hZ2VCdWZmZXJJdGVtPERyYXdJbWFnZUJ1ZmZlcj4oY29udGV4dCgpLCBtX2ltYWdlQnVmZmVy
cywgaXRlbSkpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5n
Q2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikg
fTsKICAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKLSAgICB9
Ci0KLSAgICBpZiAoaXRlbS5pczxDbGlwVG9JbWFnZUJ1ZmZlcj4oKSkgeworICAgIH0sIFsmXShj
b25zdCBDbGlwVG9JbWFnZUJ1ZmZlciYgaXRlbSkgLT4gc3RkOjpwYWlyPE9wdGlvbmFsPFN0b3BS
ZXBsYXlSZWFzb24+LCBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+PiB7CiAg
ICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUlt
YWdlQnVmZmVySXRlbTxDbGlwVG9JbWFnZUJ1ZmZlcj4oY29udGV4dCgpLCBtX2ltYWdlQnVmZmVy
cywgaXRlbSkpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5n
Q2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikg
fTsKICAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKLSAgICB9
Ci0KLSAgICBpZiAoaXRlbS5pczxEcmF3TmF0aXZlSW1hZ2U+KCkpIHsKKyAgICB9LCBbJl0oY29u
c3QgRHJhd05hdGl2ZUltYWdlJiBpdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQgewogICAgICAgICBp
ZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlOYXRpdmVJbWFn
ZUl0ZW08RHJhd05hdGl2ZUltYWdlPihjb250ZXh0KCksIG1fbmF0aXZlSW1hZ2VzLCBpdGVtKSkK
ICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNv
dXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAg
ICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwotICAgIH0KLQotICAgIGlm
IChpdGVtLmlzPERyYXdHbHlwaHM+KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hl
ZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5Rm9udEl0ZW08RHJhd0dseXBocz4oY29udGV4dCgp
LCBtX2ZvbnRzLCBpdGVtKSkKKyAgICB9LCBbJl0oY29uc3QgRHJhd1BhdHRlcm4mIGl0ZW0pIC0+
IEFwcGx5SXRlbVJlc3VsdCB7CisgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJj
ZUlkZW50aWZpZXIgPSBhcHBseU5hdGl2ZUltYWdlSXRlbTxEcmF3UGF0dGVybj4oY29udGV4dCgp
LCBtX25hdGl2ZUltYWdlcywgaXRlbSkpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5
UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291
cmNlSWRlbnRpZmllcikgfTsKICAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51
bGxvcHQgfTsKLSAgICB9Ci0KLSAgICBpZiAoaXRlbS5pczxEcmF3UGF0dGVybj4oKSkgewotICAg
ICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlOYXRp
dmVJbWFnZUl0ZW08RHJhd1BhdHRlcm4+KGNvbnRleHQoKSwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0p
KQorICAgIH0sIFsmXShjb25zdCBEcmF3R2x5cGhzJiBpdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQg
eworICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBw
bHlGb250SXRlbTxEcmF3R2x5cGhzPihjb250ZXh0KCksIG1fZm9udHMsIGl0ZW0pKQogICAgICAg
ICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBX
VEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVy
biB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAgaWYgKGl0ZW0u
aXM8U2V0U3RhdGU+KCkpIHsKKyAgICB9LCBbJl0oY29uc3QgU2V0U3RhdGUmIGl0ZW0pIC0+IEFw
cGx5SXRlbVJlc3VsdCB7CiAgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlk
ZW50aWZpZXIgPSBhcHBseVNldFN0YXRlSXRlbShjb250ZXh0KCksIG1fbmF0aXZlSW1hZ2VzLCBp
dGVtKSkKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNo
ZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9Owog
ICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwotICAgIH0KLQot
ICAgIGlmIChpdGVtLmlzPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpKSB7CisgICAgfSwg
WyZdKGNvbnN0IEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzJiBjbGlwSXRlbSkgLT4gQXBwbHlJ
dGVtUmVzdWx0IHsKICAgICAgICAgaWYgKG1fbWFza0ltYWdlQnVmZmVyKQogICAgICAgICAgICAg
cmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6SW52YWxpZEl0ZW1PckV4dGVudCwgV1RGOjpudWxs
b3B0IH07Ci0gICAgICAgIGF1dG8mIGNsaXBJdGVtID0gaXRlbS5nZXQ8QmVnaW5DbGlwVG9EcmF3
aW5nQ29tbWFuZHM+KCk7CiAgICAgICAgIG1fbWFza0ltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY2xpcEl0ZW0uZGVzdGluYXRpb24oKS5zaXplKCksIGNs
aXBJdGVtLmNvbG9yU3BhY2UoKSwgbV9jb250ZXh0KTsKICAgICAgICAgaWYgKCFtX21hc2tJbWFn
ZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok91dE9mTWVt
b3J5LCBXVEY6Om51bGxvcHQgfTsKICAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6
Om51bGxvcHQgfTsKLSAgICB9Ci0KLSAgICBpZiAoaXRlbS5pczxFbmRDbGlwVG9EcmF3aW5nQ29t
bWFuZHM+KCkpIHsKKyAgICB9LCBbJl0oY29uc3QgRW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzJiBj
bGlwSXRlbSkgLT4gQXBwbHlJdGVtUmVzdWx0IHsKICAgICAgICAgaWYgKCFtX21hc2tJbWFnZUJ1
ZmZlcikKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246OkludmFsaWRJdGVt
T3JFeHRlbnQsIFdURjo6bnVsbG9wdCB9OwotICAgICAgICBhdXRvJiBjbGlwSXRlbSA9IGl0ZW0u
Z2V0PEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKTsKICAgICAgICAgbV9jb250ZXh0LmNsaXBU
b0ltYWdlQnVmZmVyKCptX21hc2tJbWFnZUJ1ZmZlciwgY2xpcEl0ZW0uZGVzdGluYXRpb24oKSk7
CiAgICAgICAgIG1fbWFza0ltYWdlQnVmZmVyID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIHsg
V1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKLSAgICB9Ci0KLSAgICBpdGVtLmFwcGx5KGNv
bnRleHQoKSk7Ci0gICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKKyAg
ICB9LCBbJl0oY29uc3QgYXV0byYgaXRlbSkgLT4gQXBwbHlJdGVtUmVzdWx0IHsKKyAgICAgICAg
YXBwbHkoaXRlbSwgY29udGV4dCgpKTsKKyAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBX
VEY6Om51bGxvcHQgfTsKKyAgICB9KTsKIH0KIAogUmVwbGF5UmVzdWx0IFJlcGxheWVyOjpyZXBs
YXkoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgYm9vbCB0cmFja1JlcGxheUxpc3QpCkBA
IC0xOTUsNyArMTg3LDcgQEAgUmVwbGF5UmVzdWx0IFJlcGxheWVyOjpyZXBsYXkoY29uc3QgRmxv
YXRSZWN0JiBpbml0aWFsQ2xpcCwgYm9vbCB0cmFja1JlcGxheUxpc3QKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBbaXRlbSwgZXh0ZW50LCBpdGVtU2l6ZUlu
QnVmZmVyXSA9IGRpc3BsYXlMaXN0SXRlbS52YWx1ZSgpOworICAgICAgICBjb25zdCBhdXRvJiBb
aXRlbSwgZXh0ZW50LCBpdGVtU2l6ZUluQnVmZmVyXSA9IGRpc3BsYXlMaXN0SXRlbS52YWx1ZSgp
OwogCiAgICAgICAgIGlmICghaW5pdGlhbENsaXAuaXNaZXJvKCkgJiYgZXh0ZW50ICYmICFleHRl
bnQtPmludGVyc2VjdHMoaW5pdGlhbENsaXApKSB7CiAgICAgICAgICAgICBMT0dfV0lUSF9TVFJF
QU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwgInNraXBwaW5nICIgPDwgaSsrIDw8ICIgIiA8PCBp
dGVtKTsKQEAgLTIwNSwxMCArMTk3LDEwIEBAIFJlcGxheVJlc3VsdCBSZXBsYXllcjo6cmVwbGF5
KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGJvb2wgdHJhY2tSZXBsYXlMaXN0CiAKICAg
ICAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8ICJhcHBseWluZyAi
IDw8IGkrKyA8PCAiICIgPDwgaXRlbSk7CiAKLSAgICAgICAgaWYgKGl0ZW0uaXM8TWV0YUNvbW1h
bmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPigpKSB7CisgICAgICAgIGlmIChXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4o
aXRlbSkpIHsKICAgICAgICAgICAgIHJlc3VsdC5udW1iZXJPZkJ5dGVzUmVhZCArPSBpdGVtU2l6
ZUluQnVmZmVyOwogICAgICAgICAgICAgcmVzdWx0LnJlYXNvbkZvclN0b3BwaW5nID0gU3RvcFJl
cGxheVJlYXNvbjo6Q2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjsKLSAgICAgICAgICAgIHJl
c3VsdC5uZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlciA9IGl0ZW0uZ2V0PE1ldGFDb21tYW5kQ2hh
bmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4oKS5pZGVudGlmaWVyKCk7CisgICAgICAgICAgICBy
ZXN1bHQubmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXIgPSBXVEY6OmdldDxNZXRhQ29tbWFuZENo
YW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI+KGl0ZW0pLmlkZW50aWZpZXIoKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTIyMiw4ICsyMTQsOCBAQCBSZXBsYXlSZXN1bHQg
UmVwbGF5ZXI6OnJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBib29sIHRyYWNr
UmVwbGF5TGlzdAogCiAgICAgICAgIGlmIChVTkxJS0VMWSh0cmFja1JlcGxheUxpc3QpKSB7CiAg
ICAgICAgICAgICByZXBsYXlMaXN0LT5hcHBlbmQoaXRlbSk7Ci0gICAgICAgICAgICBpZiAoaXRl
bS5pc0RyYXdpbmdJdGVtKCkpCi0gICAgICAgICAgICAgICAgcmVwbGF5TGlzdC0+YWRkRHJhd2lu
Z0l0ZW1FeHRlbnQoV1RGTW92ZShleHRlbnQpKTsKKyAgICAgICAgICAgIGlmIChpc0RyYXdpbmdJ
dGVtKGl0ZW0pKQorICAgICAgICAgICAgICAgIHJlcGxheUxpc3QtPmFkZERyYXdpbmdJdGVtRXh0
ZW50KE9wdGlvbmFsPEZsb2F0UmVjdD4oZXh0ZW50KSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlcGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCmluZGV4IGFjMGRmNjA2MzkyMy4uMTBk
ZjRhZWIwYmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKQEAgLTY2
LDEyICs2NiwxMyBAQCBwdWJsaWM6CiAgICAgY2xhc3MgRGVsZWdhdGUgewogICAgIHB1YmxpYzoK
ICAgICAgICAgdmlydHVhbCB+RGVsZWdhdGUoKSB7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGFw
cGx5KEl0ZW1IYW5kbGUsIEdyYXBoaWNzQ29udGV4dCYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
ICAgIHZpcnR1YWwgYm9vbCBhcHBseShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mLCBHcmFwaGljc0Nv
bnRleHQmKSB7IHJldHVybiBmYWxzZTsgfQogICAgIH07CiAgICAgCiBwcml2YXRlOgogICAgIEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0OwotICAgIHN0ZDo6cGFpcjxPcHRpb25hbDxT
dG9wUmVwbGF5UmVhc29uPiwgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPj4g
YXBwbHlJdGVtKEl0ZW1IYW5kbGUpOworICAgIHVzaW5nIEFwcGx5SXRlbVJlc3VsdCA9IHN0ZDo6
cGFpcjxPcHRpb25hbDxTdG9wUmVwbGF5UmVhc29uPiwgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyPj47CisgICAgQXBwbHlJdGVtUmVzdWx0IGFwcGx5SXRlbShjb25zdCBEaXNw
bGF5TGlzdEl0ZW0mKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgbV9jb250ZXh0OwogICAgIFJl
ZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gbV9tYXNrSW1hZ2VCdWZmZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlE
aXNwbGF5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5jcHAKaW5kZXggMzQyYjE3YmU3MTEyLi4zZDJiZjRh
NDVkZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5jcHAKQEAgLTYw
LDExICs2MCwxMCBAQCBJbk1lbW9yeURpc3BsYXlMaXN0OjpJbk1lbW9yeURpc3BsYXlMaXN0KCkK
IEluTWVtb3J5RGlzcGxheUxpc3Q6On5Jbk1lbW9yeURpc3BsYXlMaXN0KCkKIHsKICAgICBmb3Ig
KGF1dG8gZGlzcGxheUxpc3RJdGVtIDogKnRoaXMpIHsKLSAgICAgICAgYXV0byBpdGVtID0gZGlz
cGxheUxpc3RJdGVtLT5pdGVtOwotICAgICAgICBBU1NFUlQoaXRlbSk7Ci0gICAgICAgIGlmICgh
aXRlbSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpdGVtLmRlc3Ryb3koKTsKKyAgICAg
ICAgV1RGOjpzd2l0Y2hPbihkaXNwbGF5TGlzdEl0ZW0tPml0ZW0sIFsmXShjb25zdCBhdXRvJiBp
dGVtKSB7CisgICAgICAgICAgICB1c2luZyBEaXNwbGF5TGlzdEl0ZW1UeXBlID0gdHlwZW5hbWUg
V1RGOjpSZW1vdmVDVkFuZFJlZmVyZW5jZTxkZWNsdHlwZShpdGVtKT46OnR5cGU7CisgICAgICAg
ICAgICBpdGVtLn5EaXNwbGF5TGlzdEl0ZW1UeXBlKCk7CisgICAgICAgIH0pOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCBjMzQ3ZmY1ZmNmZTYuLjhmMDU3ZWU4MmZkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMS0wNS0wOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gU2ltcGxpZnkgRGlzcGxheUxpc3Q6Okl0
ZXJhdG9yIHBhcnQgOTogTWlncmF0ZSBEaXNwbGF5TGlzdDo6SXRlcmF0b3IncyBBUEkgdG8gdXNl
IERpc3BsYXlMaXN0SXRlbSByYXRoZXIgdGhhbiBJdGVtSGFuZGxlLCBhbmQgdXBkYXRlIGNhbGxl
cnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTU4
MgorCisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlNZWRpYUl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzdWJtaXQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorCiAyMDIxLTA1LTA5ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIElQQyB0ZXN0aW5nIEFQSSBzaG91bGQg
aGF2ZSB0aGUgYWJpbGl0eSB0byBzZW5kIGFuZCByZWNlaXZlIHNoYXJlZCBtZW1vcnkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
ci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVy
LmgKaW5kZXggNGEwMWVlNjc2OWE2Li42MzkxNjM1OTdmOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCkBAIC03NCwz
NSArNzQsMjggQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgYm9vbCBhcHBseShX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZSBpdGVtLCBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQpIG92ZXJyaWRlCisgICAgYm9vbCBhcHBseShjb25zdCBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtJiBpdGVtLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBpZiAoaXRlbS5pczxXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6R2V0SW1hZ2VEYXRhPigpKSB7Ci0gICAgICAgICAgICBhdXRvJiBnZXRJ
bWFnZURhdGFJdGVtID0gaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkdldEltYWdlRGF0
YT4oKTsKKyAgICAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3Qg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkdldEltYWdlRGF0YSYgZ2V0SW1hZ2VEYXRhSXRlbSkgewog
ICAgICAgICAgICAgYXV0byBpbWFnZURhdGEgPSBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6Z2V0
SW1hZ2VEYXRhKGdldEltYWdlRGF0YUl0ZW0ub3V0cHV0Rm9ybWF0KCksIGdldEltYWdlRGF0YUl0
ZW0uc3JjUmVjdCgpKTsKICAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5wb3B1
bGF0ZUdldEltYWdlRGF0YVNoYXJlZE1lbW9yeShpbWFnZURhdGEuZ2V0KCkpOwogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaXRlbS5pczxXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UHV0SW1hZ2VEYXRhPigpKSB7Ci0gICAgICAgICAgICBhdXRvJiBwdXRJ
bWFnZURhdGFJdGVtID0gaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlB1dEltYWdlRGF0
YT4oKTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJbWFn
ZURhdGEmIHB1dEltYWdlRGF0YUl0ZW0pIHsKICAgICAgICAgICAgIHB1dEltYWdlRGF0YShwdXRJ
bWFnZURhdGFJdGVtLmlucHV0Rm9ybWF0KCksIHB1dEltYWdlRGF0YUl0ZW0uaW1hZ2VEYXRhKCks
IHB1dEltYWdlRGF0YUl0ZW0uc3JjUmVjdCgpLCBwdXRJbWFnZURhdGFJdGVtLmRlc3RQb2ludCgp
LCBwdXRJbWFnZURhdGFJdGVtLmRlc3RGb3JtYXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChpdGVtLmlzPFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpGbHVzaENvbnRleHQ+KCkpIHsKKyAgICAgICAgfSwgWyZdKGNvbnN0IFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpGbHVzaENvbnRleHQmIGZsdXNoQ29udGV4dCkgewogICAgICAgICAgICAgQmFzZUNv
bmNyZXRlSW1hZ2VCdWZmZXI6OmZsdXNoQ29udGV4dCgpOwotICAgICAgICAgICAgYXV0byBpZGVu
dGlmaWVyID0gaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoQ29udGV4dD4oKS5p
ZGVudGlmaWVyKCk7CisgICAgICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBmbHVzaENvbnRleHQu
aWRlbnRpZmllcigpOwogICAgICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmRpZEZs
dXNoKGlkZW50aWZpZXIsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGl0ZW0uaXM8V2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcj4oKSkgewotICAgICAg
ICAgICAgYXV0byBuZXh0QnVmZmVySWRlbnRpZmllciA9IGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI+KCkuaWRlbnRpZmllcigpOworICAg
ICAgICB9LCBbJl0oY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Ok1ldGFDb21tYW5kQ2hhbmdl
SXRlbUJ1ZmZlciYgbWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyKSB7CisgICAgICAgICAgICBh
dXRvIG5leHRCdWZmZXJJZGVudGlmaWVyID0gbWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyLmlk
ZW50aWZpZXIoKTsKICAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5zZXROZXh0
SXRlbUJ1ZmZlclRvUmVhZChuZXh0QnVmZmVySWRlbnRpZmllciwgbV9yZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAg
ICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmFwcGx5TWVkaWFJdGVtKGl0ZW0s
IGNvbnRleHQpOworICAgICAgICB9LCBbJl0oY29uc3QgYXV0byYgaXRlbSkgeworICAgICAgICAg
ICAgcmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5hcHBseU1lZGlhSXRlbShpdGVtLCBj
b250ZXh0KTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3Is
IGl0ZW0pOwogICAgIH0KIAogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCAxZDAyODMwZjZjNGUu
LjAxMmM0NjA0MzZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtMTE3LDIwICsxMTcs
MTggQEAgdWludDY0X3QgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6bWVzc2FnZVNlbmRlckRlc3Rp
bmF0aW9uSUQoKSBjb25zdAogICAgIHJldHVybiBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
LnRvVUludDY0KCk7CiB9CiAKLWJvb2wgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlNZWRp
YUl0ZW0oRGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGUgaXRlbSwgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KQorYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjphcHBseU1lZGlhSXRlbShjb25zdCBE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtJiBpdGVtLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBpZiAoIWl0ZW0u
aXM8RGlzcGxheUxpc3Q6OlBhaW50RnJhbWVGb3JNZWRpYT4oKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgYXV0byYgbWVkaWFJdGVtID0gaXRlbS5nZXQ8RGlzcGxheUxpc3Q6OlBhaW50
RnJhbWVGb3JNZWRpYT4oKTsKLSAgICBhdXRvIHBsYXllciA9IG1fZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy0+cmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoKS5tZWRpYVBsYXllcihtZWRp
YUl0ZW0uaWRlbnRpZmllcigpKTsKLSAgICBpZiAoIXBsYXllcikKKyAgICBhdXRvIHZpc2l0b3Ig
PSBXVEY6Om1ha2VWaXNpdG9yKFsmXShjb25zdCBEaXNwbGF5TGlzdDo6UGFpbnRGcmFtZUZvck1l
ZGlhJiBtZWRpYUl0ZW0pIHsKKyAgICAgICAgaWYgKGF1dG8gcGxheWVyID0gbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLT5yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpLm1lZGlhUGxh
eWVyKG1lZGlhSXRlbS5pZGVudGlmaWVyKCkpKQorICAgICAgICAgICAgY29udGV4dC5wYWludEZy
YW1lRm9yTWVkaWEoKnBsYXllciwgbWVkaWFJdGVtLmRlc3RpbmF0aW9uKCkpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLQotICAgIGNvbnRleHQucGFpbnRGcmFtZUZvck1lZGlhKCpwbGF5ZXIsIG1l
ZGlhSXRlbS5kZXN0aW5hdGlvbigpKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LCBbXShjb25z
dCBhdXRvJiBpdGVtKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9KTsKKyAgICByZXR1
cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBpdGVtKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpkaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlIGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcikKQEAgLTE4Niw3ICsxODQsNyBAQCBEaXNwbGF5TGlzdDo6UmVwbGF5UmVzdWx0
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnN1Ym1pdChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcAog
ICAgIGVsc2UKICAgICAgICAgcmVwbGF5ZXJEZWxlZ2F0ZSA9IHN0YXRpY19jYXN0PFVuYWNjZWxl
cmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlcio+KCZkZXN0aW5hdGlvbik7CiAKLSAgICByZXR1cm4gV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyIHsKKyAgICByZXR1cm4gRGlzcGxheUxpc3Q6OlJl
cGxheWVyIHsKICAgICAgICAgZGVzdGluYXRpb24uY29udGV4dCgpLAogICAgICAgICBkaXNwbGF5
TGlzdCwKICAgICAgICAgJnJlbW90ZVJlc291cmNlQ2FjaGUoKS5pbWFnZUJ1ZmZlcnMoKSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5oCmluZGV4IDY2NTZkZTNkZDQxMC4uMjgxNzEyNTg0Mzc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmgKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIFJlbW90ZVJlc291
cmNlQ2FjaGUmIHJlbW90ZVJlc291cmNlQ2FjaGUoKSB7IHJldHVybiBtX3JlbW90ZVJlc291cmNl
Q2FjaGU7IH0KIAogICAgIC8vIFJlbmRlcmluZyBvcGVyYXRpb25zLgotICAgIGJvb2wgYXBwbHlN
ZWRpYUl0ZW0oV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGUsIFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dCYpOworICAgIGJvb2wgYXBwbHlNZWRpYUl0ZW0oY29uc3QgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRpc3BsYXlMaXN0SXRlbSYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpOwog
CiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgc2VudC4KICAgICB2b2lkIGRpZENyZWF0ZUltYWdlQnVm
ZmVyQmFja2VuZChJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggZjJiNGI0Y2YzY2I3Li44YjY5MGJlMzg2MmIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAy
MS0wNS0wOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAg
ICAgIFtHUFUgUHJvY2Vzc10gU2ltcGxpZnkgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yIHBhcnQgOTog
TWlncmF0ZSBEaXNwbGF5TGlzdDo6SXRlcmF0b3IncyBBUEkgdG8gdXNlIERpc3BsYXlMaXN0SXRl
bSByYXRoZXIgdGhhbiBJdGVtSGFuZGxlLCBhbmQgdXBkYXRlIGNhbGxlcnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTU4MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
KToKKwogMjAyMS0wNS0wOSAgS2hlbSBSYWogIDxyYWoua2hlbUBnbWFpbC5jb20+CiAKICAgICAg
ICAgW1Rvb2xzXSBHZW5lcmF0ZSBtYXJzaGFsbGluZyBjb2RlIHdpdGhvdXQgc291cmNlIHJlZmVy
ZW5jZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3Bs
YXlMaXN0VGVzdHMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3Bs
YXlMaXN0VGVzdHMuY3BwCmluZGV4IDVjYmZkMmQ0NDRiMy4uY2ZhMDMzOGYxZjdiIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVz
dHMuY3BwCkBAIC04MCw1NyArODAsMzUgQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBBcHBlbmRJ
dGVtcykKICAgICBFWFBFQ1RfRkFMU0UobGlzdC5pc0VtcHR5KCkpOwogCiAgICAgYm9vbCBvYnNl
cnZlZFVuZXhwZWN0ZWRJdGVtID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvIGRpc3BsYXlMaXN0SXRl
bSA6IGxpc3QpIHsKLSAgICAgICAgYXV0byBoYW5kbGUgPSBkaXNwbGF5TGlzdEl0ZW0tPml0ZW07
Ci0gICAgICAgIHN3aXRjaCAoaGFuZGxlLnR5cGUoKSkgewotICAgICAgICBjYXNlIEl0ZW1UeXBl
OjpTZXRTdHJva2VUaGlja25lc3M6IHsKLSAgICAgICAgICAgIEVYUEVDVF9GQUxTRShoYW5kbGUu
aXNEcmF3aW5nSXRlbSgpKTsKLSAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS5pczxTZXRT
dHJva2VUaGlja25lc3M+KCkpOwotICAgICAgICAgICAgYXV0byYgaXRlbSA9IGhhbmRsZS5nZXQ8
U2V0U3Ryb2tlVGhpY2tuZXNzPigpOworICAgIGZvciAoY29uc3QgYXV0byYgZGlzcGxheUxpc3RJ
dGVtIDogbGlzdCkgeworICAgICAgICBjb25zdCBhdXRvJiBbaXRlbSwgZXh0ZW50LCBzaXplXSA9
IGRpc3BsYXlMaXN0SXRlbS52YWx1ZSgpOworCisgICAgICAgIGF1dG8gdmlzaXRvciA9IFdURjo6
bWFrZVZpc2l0b3IoWyZdKGNvbnN0IFNldFN0cm9rZVRoaWNrbmVzcyYgaXRlbSkgeworICAgICAg
ICAgICAgRVhQRUNUX0ZBTFNFKGl0ZW0uaXNEcmF3aW5nSXRlbSk7CiAgICAgICAgICAgICBFWFBF
Q1RfRVEoaXRlbS50aGlja25lc3MoKSwgMS41KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRoOiB7Ci0gICAgICAgICAgICBFWFBF
Q1RfVFJVRShoYW5kbGUuaXNEcmF3aW5nSXRlbSgpKTsKLSAgICAgICAgICAgIEVYUEVDVF9UUlVF
KGhhbmRsZS5pczxGaWxsUGF0aD4oKSk7Ci0gICAgICAgICAgICBhdXRvJiBpdGVtID0gaGFuZGxl
LmdldDxGaWxsUGF0aD4oKTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IEZpbGxQYXRoJiBpdGVtKSB7
CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShpdGVtLmlzRHJhd2luZ0l0ZW0pOwogICAgICAgICAg
ICAgRVhQRUNUX0VRKGl0ZW0ucGF0aCgpLnBsYXRmb3JtUGF0aCgpLCBwYXRoLnBsYXRmb3JtUGF0
aCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSXRlbVR5
cGU6OkZpbGxSZWN0V2l0aEdyYWRpZW50OiB7Ci0gICAgICAgICAgICBFWFBFQ1RfVFJVRShoYW5k
bGUuaXNEcmF3aW5nSXRlbSgpKTsKLSAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS5pczxG
aWxsUmVjdFdpdGhHcmFkaWVudD4oKSk7Ci0gICAgICAgICAgICBhdXRvJiBpdGVtID0gaGFuZGxl
LmdldDxGaWxsUmVjdFdpdGhHcmFkaWVudD4oKTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IEZpbGxS
ZWN0V2l0aEdyYWRpZW50JiBpdGVtKSB7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShpdGVtLmlz
RHJhd2luZ0l0ZW0pOwogICAgICAgICAgICAgRVhQRUNUX0VRKGl0ZW0ucmVjdCgpLCBGbG9hdFJl
Y3QoMS4sIDEuLCAxMC4sIDEwLikpOwogICAgICAgICAgICAgRVhQRUNUX0VRKCZpdGVtLmdyYWRp
ZW50KCksIGdyYWRpZW50LnB0cigpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxDb2xvcjogewotICAgICAgICAgICAg
RVhQRUNUX0ZBTFNFKGhhbmRsZS5pc0RyYXdpbmdJdGVtKCkpOwotICAgICAgICAgICAgRVhQRUNU
X1RSVUUoaGFuZGxlLmlzPFNldElubGluZUZpbGxDb2xvcj4oKSk7Ci0gICAgICAgICAgICBhdXRv
JiBpdGVtID0gaGFuZGxlLmdldDxTZXRJbmxpbmVGaWxsQ29sb3I+KCk7CisgICAgICAgIH0sIFsm
XShjb25zdCBTZXRJbmxpbmVGaWxsQ29sb3ImIGl0ZW0pIHsKKyAgICAgICAgICAgIEVYUEVDVF9G
QUxTRShpdGVtLmlzRHJhd2luZ0l0ZW0pOwogICAgICAgICAgICAgRVhQRUNUX0VRKGl0ZW0uY29s
b3IoKSwgQ29sb3I6OnJlZCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQogI2lmIEVO
QUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VJbmxp
bmVQYXRoOiB7Ci0gICAgICAgICAgICBFWFBFQ1RfVFJVRShoYW5kbGUuaXNEcmF3aW5nSXRlbSgp
KTsKLSAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS5pczxTdHJva2VJbmxpbmVQYXRoPigp
KTsKLSAgICAgICAgICAgIGF1dG8mIGl0ZW0gPSBoYW5kbGUuZ2V0PFN0cm9rZUlubGluZVBhdGg+
KCk7CisgICAgICAgIH0sIFsmXShjb25zdCBTdHJva2VJbmxpbmVQYXRoJiBpdGVtKSB7CisgICAg
ICAgICAgICBFWFBFQ1RfVFJVRShpdGVtLmlzRHJhd2luZ0l0ZW0pOwogICAgICAgICAgICAgY29u
c3QgYXV0byBwYXRoID0gaXRlbS5wYXRoKCk7CiAgICAgICAgICAgICBhdXRvJiBsaW5lID0gcGF0
aC5pbmxpbmVEYXRhPExpbmVEYXRhPigpOwogICAgICAgICAgICAgRVhQRUNUX0VRKGxpbmUuc3Rh
cnQsIEZsb2F0UG9pbnQoMCwgMCkpOwogICAgICAgICAgICAgRVhQRUNUX0VRKGxpbmUuZW5kLCBG
bG9hdFBvaW50KDEwLiwgMTUuKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQogI2Vu
ZGlmCi0gICAgICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjoK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OiB7CisgICAgICAgIH0sIFsmXShj
b25zdCBNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXImKSB7CisgICAgICAgIH0sIFsmXShjb25z
dCBhdXRvJikgewogICAgICAgICAgICAgb2JzZXJ2ZWRVbmV4cGVjdGVkSXRlbSA9IHRydWU7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIH0pOworICAg
ICAgICBXVEY6OnZpc2l0KHZpc2l0b3IsIGl0ZW0pOwogICAgIH0KIAogICAgIEVYUEVDVF9GQUxT
RShvYnNlcnZlZFVuZXhwZWN0ZWRJdGVtKTsKQEAgLTE1MCwxMiArMTI4LDExIEBAIFRFU1QoRGlz
cGxheUxpc3RUZXN0cywgQXBwZW5kSXRlbXMpCiAKICAgICBsaXN0LmFwcGVuZDxGaWxsUmVjdFdp
dGhDb2xvcj4oRmxvYXRSZWN0IHsgMCwgMCwgMTAwLCAxMDAgfSwgQ29sb3I6OmJsYWNrKTsKIAot
ICAgIGZvciAoYXV0byBkaXNwbGF5TGlzdEl0ZW0gOiBsaXN0KSB7Ci0gICAgICAgIGF1dG8gaGFu
ZGxlID0gZGlzcGxheUxpc3RJdGVtLT5pdGVtOwotICAgICAgICBFWFBFQ1RfRVEoaGFuZGxlLnR5
cGUoKSwgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yKTsKLSAgICAgICAgRVhQRUNUX1RSVUUo
aGFuZGxlLmlzPEZpbGxSZWN0V2l0aENvbG9yPigpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGRp
c3BsYXlMaXN0SXRlbSA6IGxpc3QpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoV1RGOjpob2xkc19h
bHRlcm5hdGl2ZTxGaWxsUmVjdFdpdGhDb2xvcj4oZGlzcGxheUxpc3RJdGVtLT5pdGVtKSk7Cisg
ICAgICAgIGNvbnN0IGF1dG8mIGl0ZW0gPSBXVEY6OmdldDxGaWxsUmVjdFdpdGhDb2xvcj4oZGlz
cGxheUxpc3RJdGVtLT5pdGVtKTsKKyAgICAgICAgRVhQRUNUX0VRKGl0ZW0uaXRlbVR5cGUsIEl0
ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcik7CiAKLSAgICAgICAgYXV0byYgaXRlbSA9IGhhbmRs
ZS5nZXQ8RmlsbFJlY3RXaXRoQ29sb3I+KCk7CiAgICAgICAgIEVYUEVDVF9FUSgqaXRlbS5jb2xv
cigpLnRyeUdldEFzU1JHQkFCeXRlcygpLCBDb2xvcjo6YmxhY2spOwogICAgICAgICBFWFBFQ1Rf
RVEoaXRlbS5yZWN0KCksIEZsb2F0UmVjdCgwLCAwLCAxMDAsIDEwMCkpOwogICAgIH0KQEAgLTE5
Nyw3ICsxNzQsNyBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEl0ZW1CdWZmZXJDbGllbnQpCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgSXRlbUJ1ZmZlckhhbmRsZSBjcmVhdGVJdGVtQnVmZmVyKHNp
emVfdCBjYXBhY2l0eSkgZmluYWwKICAgICAgICAgewotICAgICAgICAgICAgRVhQRUNUX0xUKGNh
cGFjaXR5LCBnbG9iYWxJdGVtQnVmZmVyQ2FwYWNpdHkpOworICAgICAgICAgICAgRVhQRUNUX0xF
KGNhcGFjaXR5LCBnbG9iYWxJdGVtQnVmZmVyQ2FwYWNpdHkpOwogICAgICAgICAgICAgcmV0dXJu
IHsgZ2xvYmFsQnVmZmVySWRlbnRpZmllciwgZ2xvYmFsSXRlbUJ1ZmZlciwgZ2xvYmFsSXRlbUJ1
ZmZlckNhcGFjaXR5IH07CiAgICAgICAgIH0KIApAQCAtMjI2LDggKzIwMyw4IEBAIFRFU1QoRGlz
cGxheUxpc3RUZXN0cywgSXRlbUJ1ZmZlckNsaWVudCkKICAgICBzaGFsbG93Q29weS5zZXRJdGVt
QnVmZmVyUmVhZGluZ0NsaWVudCgmcmVhZGVyKTsKIAogICAgIFZlY3RvcjxJdGVtVHlwZT4gaXRl
bVR5cGVzOwotICAgIGZvciAoYXV0byBkaXNwbGF5TGlzdEl0ZW0gOiBzaGFsbG93Q29weSkKLSAg
ICAgICAgaXRlbVR5cGVzLmFwcGVuZChkaXNwbGF5TGlzdEl0ZW0tPml0ZW0udHlwZSgpKTsKKyAg
ICBmb3IgKGNvbnN0IGF1dG8mIGRpc3BsYXlMaXN0SXRlbSA6IHNoYWxsb3dDb3B5KQorICAgICAg
ICBpdGVtVHlwZXMuYXBwZW5kKGRpc3BsYXlMaXN0SXRlbVR5cGUoZGlzcGxheUxpc3RJdGVtLT5p
dGVtKSk7CiAKICAgICBFWFBFQ1RfRkFMU0Uoc2hhbGxvd0NvcHkuaXNFbXB0eSgpKTsKICAgICBF
WFBFQ1RfRVEoaXRlbVR5cGVzLnNpemUoKSwgNFUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428161</attachid>
            <date>2021-05-10 02:59:09 -0700</date>
            <delta_ts>2021-05-10 02:59:09 -0700</delta_ts>
            <desc>Updated patch for EWS</desc>
            <filename>bug-225582-20210510025908.patch</filename>
            <type>text/plain</type>
            <size>85844</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTRlYzI0YTM4ZDFmZDZi
MjE3ZWNiYmEwNGFiOTI3YTEzN2UzNTc3Mi4uMjVjMjIwZjM4NDQxOTFiMjk2OWZhZTVkYzBkZDE4
NDg2ZGNjNmU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIxLTA1LTA5ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzXSBTaW1wbGlmeSBEaXNwbGF5TGlzdDo6SXRlcmF0b3IgcGFydCA5OiBNaWdyYXRlIERpc3Bs
YXlMaXN0OjpJdGVyYXRvcidzIEFQSSB0byB1c2UgRGlzcGxheUxpc3RJdGVtIHJhdGhlciB0aGFu
IEl0ZW1IYW5kbGUsIGFuZCB1cGRhdGUgY2FsbGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1NTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2Ft
IFdlaW5pZy4KKworICAgICAgICBUaGlzIGlzIGEgZmFpcmx5IG1lY2hhbmljYWwgcmVwbGFjZW1l
bnQgaW4gdXNlcnMgb2YgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yLgorICAgICAgICBUaGlzIHBhdGNo
IGp1c3QgbWlncmF0ZXMgZnJvbSBJdGVtSGFuZGxlIHRvIGNvbnN0IERpc3BsYXlMaXN0SXRlbSYu
CisKKyAgICAgICAgVGhlIGJlbmVmaXRzIGFyZToKKyAgICAgICAgLSBEaXNwbGF5TGlzdDo6YXBw
ZW5kKCkgZ29lcyBmcm9tIDEzNCBsaW5lcyB0byAzCisgICAgICAgIC0gVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgSXRlbUhhbmRsZSBpdGVtKSBnb2VzIGZyb20gMTkwIGxp
bmVzIHRvIDUKKyAgICAgICAgLSBVc2luZyBWaXNpdG9yIG1lYW5zIHRoZXJlIGlzIGEgbG90IGxl
c3MgbWFudWFsIGRvd25jYXN0aW5nCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0
cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OnNob3VsZER1bXBGb3JG
bGFncyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmFzVGV4
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmR1
bXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Ojph
cHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1I
YW5kbGU6OmRlc2NyaXB0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpvcGVyYXRvcjw8KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpTZXRTdGF0ZTo6YXBwbHkpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd0dseXBoczo6Zm9udElkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OmlzRHJhd2luZ0l0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHM6OmZvbnRJZGVudGlmaWVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
cGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjphcHBseUltYWdlQnVm
ZmVySXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YXBwbHlOYXRpdmVJbWFn
ZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5U2V0U3RhdGVJdGVt
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjphcHBseUZvbnRJdGVtKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjphcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVwbGF5ZXI6OmFwcGx5SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVwbGF5ZXI6OnJlcGxheSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZXBsYXllcjo6RGVsZWdhdGU6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW5NZW1vcnlEaXNwbGF5TGlzdDo6fkluTWVtb3J5RGlzcGxh
eUxpc3QpOgorCiAyMDIxLTA1LTA5ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgYmFjayBwcm90ZWN0aW9uIG9mIHRoZSBwaXhlbCBidWZmZXIgaW4gSW1hZ2VC
dWZmZXJDR0JhY2tlbmQ6OnRvQ0ZEYXRhIHJlbW92ZWQgaW4gcjI3NzIzNwpAQCAtMzI4LDYgKzM3
Niw1NiBAQAogICAgICAgICB0byByZW1vdmUgcmFuZ2UgY2hlY2tpbmcuIEFsc28gdXNlIFN0cmlu
Z1ZpZXc6OnN1YnN0cmluZyBpbnN0ZWFkIG9mCiAgICAgICAgIHdyaXRpbmcgb3V0IHNwZWNpYWwg
Y2FzZXMgZm9yIDgtYml0IGFuZCAxNi1iaXQgY2hhcmFjdGVycy4KIAorMjAyMS0wNS0wOSAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJv
Y2Vzc10gU2ltcGxpZnkgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yIHBhcnQgODogUmVwbGFjZSB0aGUg
Z3V0cyBvZiBEaXNwbGF5TGlzdDo6SXRlcmF0b3Igd2l0aG91dCBhZmZlY3RpbmcgaXRzIHB1Ymxp
YyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NTU3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggaXMgYSBoYWxmLXN0ZXAgdG93YXJkIGEgd29ybGQgd2hlcmUgRGlzcGxheUxpc3Q6
Okl0ZXJhdG9yOjpvcGVyYXRvciooKSByZXR1cm5zIGEgRGlzcGxheUxpc3RJdGVtIGluc3RlYWQg
b2YgYW4gSXRlbUhhbmRsZS4KKyAgICAgICAgSXQgZG9lcyB0aGlzIGJ5IHN3YXBwaW5nIG91dCB0
aGUgZ3V0cyBvZiBEaXNwbGF5bGlzdDo6SXRlcmF0b3Igc28gdGhhdCBpdCBjcmVhdGVzIGEgRGlz
cGxheUxpc3RJdGVtLCBidXQgdGhlbiBpdCBjb252ZXJ0cyB0aGUKKyAgICAgICAgRGlzcGxheUxp
c3RJdGVtIHRvIGFuIEl0ZW1IYW5kbGUgYXQgdGhlIGxhc3Qgc2Vjb25kIGluIG9yZGVyIHRvIHBy
ZXNlcnZlIERpc3BsYXlMaXN0OjpJdGVyYXRvcidzIEFQSSBzaWduYXR1cmVzLiBUaGlzIHdheSwg
d2UgY2FuCisgICAgICAgIHNwbGl0IHRoZSB1cGRhdGUgb2YgdGhlIGltcGxlbWVudGF0aW9uIG9m
IERpc3BsYXlMaXN0OjpJdGVyYXRvciBpbnRvIGEgc2VwYXJhdGUgcGF0Y2ggZnJvbSB1cGRhdGlu
ZyBhbGwgdGhlIGNhbGxlcnMgdG8gdGhlIG5ldworICAgICAgICBzaWduYXR1cmUuCisKKyAgICAg
ICAgVGhlIG5ldyBpbXBsZW1lbnRhdGlvbiBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBiZWNh
dXNlIERpc3BsYXlMaXN0SXRlbXMgYXJlIHNpbXBsZXIgdGhhbiBJdGVtSGFuZGxlcy4gQmVjYXVz
ZSBhbGwgdGhlIHVzZXJzIG9mCisgICAgICAgIHRoZSBpdGVyYXRvciB1c2UgaXQgaW4gYSBmb3Jl
YWNoIGxvb3AsIHdlIGNhbiBleHBlY3QgdGhhdCBhbGwgdXNlcnMgd2lsbCBwaW5nLXBvbmcgYmV0
d2VlbiBvcGVyYXRvciooKSBhbmQgb3BlcmF0b3IrKygpLiBUaGlzIG1lYW5zCisgICAgICAgIHRo
YXQgb3BlcmF0b3IqKCkgY2FuIGNvbXB1dGUgYSBDdXJyZW50SXRlbUluZm8sIHdoaWNoIGluY2x1
ZGVzIHRoaW5ncyBsaWtlIHRoZSBzaXplIG9mIHRoZSBjdXJyZW50IGl0ZW0gaW4gdGhlIGRpc3Bs
YXkgbGlzdCBzaG1lbSwKKyAgICAgICAgc28gdGhhdCB0aGUgaXRlcmF0b3IgY2FuIHJldGFpbiB0
aGF0IGluZm9ybWF0aW9uLCBhbmQgdGhlIG5leHQgY2FsbCB0byBvcGVyYXRvcisrKCkgY2FuIGp1
c3QgdXNlIGl0IHRvIGtub3cgaG93IG11Y2ggdG8gaW5jcmVtZW50IGJ5LgorICAgICAgICBTbywg
dGhlcmUncyBhIGN1cnJlbnRJdGVtKCkgZnVuY3Rpb24gd2hpY2ggaXMgY29uc3QgYW5kIHJldHVy
bnMgYSBDdXJyZW50SXRlbVJlc3VsdCwgYW5kIGl0J3Mgb3BlcmF0b3IqKCkncyBqb2IgdG8gY2Fs
bCBpdCBhbmQgcmVjb3JkCisgICAgICAgIHRoZSByZWxldmFudCBpbmZvIGZvciBvcGVyYXRvcisr
KCkuCisKKyAgICAgICAgVGhlIGN1cnJlbnRJdGVtKCkgZnVuY3Rpb24gdXNlcyBicmlnYW5kIHRv
IGl0ZXJhdGUgb3ZlciBhbGwgdGhlIHR5cGVzIGluIHRoZSBEaXNwbGF5TGlzdEl0ZW0gVmFyaWFu
dCwgYW5kIGNvbXBhcmVzIHRoYXQgdHlwZSdzCisgICAgICAgIGl0ZW1UeXBlIHRvIHRoZSBmaXJz
dCBzZXJpYWxpemVkIGJ5dGUgaW4gdGhlIHNobWVtLiBJZiBpdCBtYXRjaGVzLCB3ZSB0cnkgdG8g
cGFyc2UgaXQgYWNjb3JkaW5nIHRvIHRoZSByZWxldmFudCBzZXJpYWxpemF0aW9uIHJ1bGVzLAor
ICAgICAgICBhbmQgaWYgaXQgZG9lc24ndCBtYXRjaCwgYnJpZ2FuZCB3aWxsIGp1c3QgY29udGlu
dWUgbG9vcGluZyB0byB0aGUgbmV4dCB0eXBlIGluIHRoZSBEaXNwbGF5TGlzdEl0ZW0gVmFyaWFu
dC4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBj
aGFuZ2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojppc1Zh
bGlkKTogRGVsZXRlZC4gTW92ZWQgdG8gRGlzcGxheUxpc3RJdGVtcy5oLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNWYWxpZCk6IE1vdmVkIGZyb20gRGlzcGxheUxpc3RJ
dGVtQnVmZmVyLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpwYWRkZWRTaXpl
T2ZUeXBlQW5kSXRlbUluQnl0ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Okl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OmF0RW5kIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om9wZXJh
dG9yKiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6
Okl0ZXJhdG9yOjpvcGVyYXRvcisrKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpE
aXNwbGF5TGlzdDo6SXRlcmF0b3I6OmN1cnJlbnRJdGVtIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om1vdmVDdXJzb3JUb1N0YXJ0
T2ZDdXJyZW50QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdDo6SXRlcmF0b3I6OmVuZE9mQ3VycmVudEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjp1cGRhdGVDdXJyZW50RHJh
d2luZ0l0ZW1FeHRlbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6dXBkYXRlQ3VycmVudEl0ZW0pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0OjpJdGVyYXRvcjo6YWR2YW5j
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6
Okl0ZXJhdG9yOjpjbGVhckN1cnJlbnRJdGVtKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6Om1vdmVUb0VuZCk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
cmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRl
cmF0b3I6Okl0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6On5JdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpvcGVyYXRvcisrKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRl
cmF0b3I6Om9wZXJhdG9yKiBjb25zdCk6IERlbGV0ZWQuCisKIDIwMjEtMDUtMDkgIE15bGVzIEMu
IE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3Nd
IFNpbXBsaWZ5IERpc3BsYXlMaXN0OjpJdGVyYXRvciBwYXJ0IDY6IE1pZ3JhdGUgSXRlbUJ1ZmZl
cldyaXRpbmdDbGllbnQgZnJvbSBJdGVtSGFuZGxlIHRvIGEgY29uc3QgVmFyaWFudCYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggYzM0N2ZmNWZjZmU2MzA5ZDNjNTMxYmI1ZmFmOTBjZmI0ZjExYzE2Ni4uOGYwNTdlZTgy
ZmQ5ZDcyOWE2MWM3MDJiMzA1ZjEyZTc4ODE4MmMwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBA
QAorMjAyMS0wNS0wOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgor
CisgICAgICAgIFtHUFUgUHJvY2Vzc10gU2ltcGxpZnkgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yIHBh
cnQgOTogTWlncmF0ZSBEaXNwbGF5TGlzdDo6SXRlcmF0b3IncyBBUEkgdG8gdXNlIERpc3BsYXlM
aXN0SXRlbSByYXRoZXIgdGhhbiBJdGVtSGFuZGxlLCBhbmQgdXBkYXRlIGNhbGxlcnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTU4MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUltYWdlQnVmZmVyLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6YXBwbHlNZWRpYUl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpzdWJtaXQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5oOgorCiAyMDIxLTA1LTA5ICBSeW9zdWtlIE5pd2EgIDxybml3
YUB3ZWJraXQub3JnPgogCiAgICAgICAgIElQQyB0ZXN0aW5nIEFQSSBzaG91bGQgaGF2ZSB0aGUg
YWJpbGl0eSB0byBzZW5kIGFuZCByZWNlaXZlIHNoYXJlZCBtZW1vcnkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggYzc4YWY3
ZTI1ZGRiNTQxNDNjZWI1OWExMWZmZmMyM2FhYTM0NzE2Ny4uMThjOWZlYjgxNzJiOWRiYjQ0ZDQ1
NzY0OGNjZWYzNDUzZWQ5ZGUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTE2MCw3ICsxNjAsNyBAQCBzdHJ1Y3QgR3Jh
cGhpY3NDb250ZXh0U3RhdGUgewogICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0
YXRlKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgfkdyYXBoaWNzQ29udGV4dFN0YXRlKCk7CiAKLSAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpOworICAg
IFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzQ29udGV4dFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0U3RhdGUoR3JhcGhp
Y3NDb250ZXh0U3RhdGUmJik7CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSYgb3BlcmF0b3I9
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcApp
bmRleCA2MDVmOWEwYTY0NjY2YWJjNjQ4Y2QxOWQxN2M2ODQ2ZGQ5OGI3YmYxLi45NjVkNzdiYjM3
NzVjZTQxYmE4OTAxYWZmZjExMzdiOWI5MDc5MTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5j
cHAKQEAgLTg1LDEyICs4NSwxMCBAQCB2b2lkIERpc3BsYXlMaXN0OjpjbGVhcigpCiAgICAgbV9u
YXRpdmVJbWFnZXMuY2xlYXIoKTsKIH0KIAotYm9vbCBEaXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZv
ckZsYWdzKEFzVGV4dEZsYWdzIGZsYWdzLCBJdGVtSGFuZGxlIGl0ZW0pCitib29sIERpc3BsYXlM
aXN0OjpzaG91bGREdW1wRm9yRmxhZ3MoQXNUZXh0RmxhZ3MgZmxhZ3MsIGNvbnN0IERpc3BsYXlM
aXN0SXRlbSYgaXRlbSkKIHsKLSAgICBzd2l0Y2ggKGl0ZW0udHlwZSgpKSB7Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6U2V0U3RhdGU6CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlbSwgWyZdKGNv
bnN0IFNldFN0YXRlJiBzdGF0ZUl0ZW0pIC0+IGJvb2wgewogICAgICAgICBpZiAoIShmbGFncyAm
IEFzVGV4dEZsYWc6OkluY2x1ZGVzUGxhdGZvcm1PcGVyYXRpb25zKSkgewotICAgICAgICAgICAg
Y29uc3QgYXV0byYgc3RhdGVJdGVtID0gaXRlbS5nZXQ8U2V0U3RhdGU+KCk7CiAgICAgICAgICAg
ICAvLyBGSVhNRTogZm9yIG5vdywgb25seSBkcm9wIHRoZSBpdGVtIGlmIHRoZSBvbmx5IHN0YXRl
LWNoYW5nZSBmbGFncyBhcmUgcGxhdGZvcm0tc3BlY2lmaWMuCiAgICAgICAgICAgICBpZiAoc3Rh
dGVJdGVtLnN0YXRlQ2hhbmdlKCkubV9jaGFuZ2VGbGFncyA9PSBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKQogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTk4LDMxICs5NiwyOSBAQCBib29sIERpc3BsYXlMaXN0OjpzaG91bGRE
dW1wRm9yRmxhZ3MoQXNUZXh0RmxhZ3MgZmxhZ3MsIEl0ZW1IYW5kbGUgaXRlbSkKICAgICAgICAg
ICAgIGlmIChzdGF0ZUl0ZW0uc3RhdGVDaGFuZ2UoKS5tX2NoYW5nZUZsYWdzID09IEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIGJyZWFrOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKICNpZiBVU0UoQ0cpCi0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlGaWxs
UGF0dGVybjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm46Ci0gICAgICAg
IGlmICghKGZsYWdzICYgQXNUZXh0RmxhZzo6SW5jbHVkZXNQbGF0Zm9ybU9wZXJhdGlvbnMpKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBicmVhazsKKyAgICB9LCBbJl0oY29u
c3QgQXBwbHlGaWxsUGF0dGVybiYpIC0+IGJvb2wgeworICAgICAgICByZXR1cm4gZmxhZ3MgJiBB
c1RleHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9uczsKKyAgICB9LCBbJl0oY29uc3Qg
QXBwbHlTdHJva2VQYXR0ZXJuJikgLT4gYm9vbCB7CisgICAgICAgIHJldHVybiBmbGFncyAmIEFz
VGV4dEZsYWc6OkluY2x1ZGVzUGxhdGZvcm1PcGVyYXRpb25zOwogI2VuZGlmCi0gICAgZGVmYXVs
dDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOworICAgIH0sIFtdKGNv
bnN0IGF1dG8mKSAtPiBib29sIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSk7CiB9CiAK
IFN0cmluZyBEaXNwbGF5TGlzdDo6YXNUZXh0KEFzVGV4dEZsYWdzIGZsYWdzKSBjb25zdAogewog
ICAgIFRleHRTdHJlYW0gc3RyZWFtKFRleHRTdHJlYW06OkxpbmVNb2RlOjpNdWx0aXBsZUxpbmUs
IFRleHRTdHJlYW06OkZvcm1hdHRpbmc6OlNWR1N0eWxlUmVjdCk7CiAgICAgZm9yIChhdXRvIGRp
c3BsYXlMaXN0SXRlbSA6ICp0aGlzKSB7Ci0gICAgICAgIGF1dG8gW2l0ZW0sIGV4dGVudCwgaXRl
bVNpemVJbkJ1ZmZlcl0gPSBkaXNwbGF5TGlzdEl0ZW0udmFsdWUoKTsKKyAgICAgICAgY29uc3Qg
YXV0byYgW2l0ZW0sIGV4dGVudCwgaXRlbVNpemVJbkJ1ZmZlcl0gPSBkaXNwbGF5TGlzdEl0ZW0u
dmFsdWUoKTsKICAgICAgICAgaWYgKCFzaG91bGREdW1wRm9yRmxhZ3MoZmxhZ3MsIGl0ZW0pKQog
ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgVGV4dFN0cmVhbTo6R3JvdXBTY29wZSBn
cm91cChzdHJlYW0pOwogICAgICAgICBzdHJlYW0gPDwgaXRlbTsKLSAgICAgICAgaWYgKGl0ZW0u
aXNEcmF3aW5nSXRlbSgpKQorICAgICAgICBpZiAoaXNEcmF3aW5nSXRlbShpdGVtKSkKICAgICAg
ICAgICAgIHN0cmVhbSA8PCAiIGV4dGVudCAiIDw8IGV4dGVudDsKICAgICB9CiAgICAgcmV0dXJu
IHN0cmVhbS5yZWxlYXNlKCk7CkBAIC0xMzQsMTAgKzEzMCwxMCBAQCB2b2lkIERpc3BsYXlMaXN0
OjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdAogICAgIHRzIDw8ICJkaXNwbGF5IGxpc3QiOwog
CiAgICAgZm9yIChhdXRvIGRpc3BsYXlMaXN0SXRlbSA6ICp0aGlzKSB7Ci0gICAgICAgIGF1dG8g
W2l0ZW0sIGV4dGVudCwgaXRlbVNpemVJbkJ1ZmZlcl0gPSBkaXNwbGF5TGlzdEl0ZW0udmFsdWUo
KTsKKyAgICAgICAgY29uc3QgYXV0byYgW2l0ZW0sIGV4dGVudCwgaXRlbVNpemVJbkJ1ZmZlcl0g
PSBkaXNwbGF5TGlzdEl0ZW0udmFsdWUoKTsKICAgICAgICAgVGV4dFN0cmVhbTo6R3JvdXBTY29w
ZSBncm91cCh0cyk7CiAgICAgICAgIHRzIDw8IGl0ZW07Ci0gICAgICAgIGlmIChpdGVtLmlzRHJh
d2luZ0l0ZW0oKSkKKyAgICAgICAgaWYgKGlzRHJhd2luZ0l0ZW0oaXRlbSkpCiAgICAgICAgICAg
ICB0cyA8PCAiIGV4dGVudCAiIDw8IGV4dGVudDsKICAgICB9CiAgICAgdHMuc3RhcnRHcm91cCgp
OwpAQCAtMTk3LDE0MiArMTkzLDEyIEBAIHZvaWQgRGlzcGxheUxpc3Q6OnNldFRyYWNrc0RyYXdp
bmdJdGVtRXh0ZW50cyhib29sIHZhbHVlKQogICAgIG1fdHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRz
ID0gdmFsdWU7CiB9CiAKLXZvaWQgRGlzcGxheUxpc3Q6OmFwcGVuZChJdGVtSGFuZGxlIGl0ZW0p
Cit2b2lkIERpc3BsYXlMaXN0OjphcHBlbmQoY29uc3QgRGlzcGxheUxpc3RJdGVtJiBpdGVtKQog
ewotICAgIHN3aXRjaCAoaXRlbS50eXBlKCkpIHsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTYXZlOgot
ICAgICAgICByZXR1cm4gYXBwZW5kPFNhdmU+KGl0ZW0uZ2V0PFNhdmU+KCkpOwotICAgIGNhc2Ug
SXRlbVR5cGU6OlJlc3RvcmU6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8UmVzdG9yZT4oaXRlbS5n
ZXQ8UmVzdG9yZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6VHJhbnNsYXRlOgotICAgICAgICBy
ZXR1cm4gYXBwZW5kPFRyYW5zbGF0ZT4oaXRlbS5nZXQ8VHJhbnNsYXRlPigpKTsKLSAgICBjYXNl
IEl0ZW1UeXBlOjpSb3RhdGU6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8Um90YXRlPihpdGVtLmdl
dDxSb3RhdGU+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNjYWxlOgotICAgICAgICByZXR1cm4g
YXBwZW5kPFNjYWxlPihpdGVtLmdldDxTY2FsZT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q29u
Y2F0ZW5hdGVDVE06Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8Q29uY2F0ZW5hdGVDVE0+KGl0ZW0u
Z2V0PENvbmNhdGVuYXRlQ1RNPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRDVE06Ci0gICAg
ICAgIHJldHVybiBhcHBlbmQ8U2V0Q1RNPihpdGVtLmdldDxTZXRDVE0+KCkpOwotICAgIGNhc2Ug
SXRlbVR5cGU6OlNldElubGluZUZpbGxHcmFkaWVudDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxT
ZXRJbmxpbmVGaWxsR3JhZGllbnQ+KGl0ZW0uZ2V0PFNldElubGluZUZpbGxHcmFkaWVudD4oKSk7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbENvbG9yOgotICAgICAgICByZXR1cm4g
YXBwZW5kPFNldElubGluZUZpbGxDb2xvcj4oaXRlbS5nZXQ8U2V0SW5saW5lRmlsbENvbG9yPigp
KTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VDb2xvcjoKLSAgICAgICAgcmV0
dXJuIGFwcGVuZDxTZXRJbmxpbmVTdHJva2VDb2xvcj4oaXRlbS5nZXQ8U2V0SW5saW5lU3Ryb2tl
Q29sb3I+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczoKLSAgICAg
ICAgcmV0dXJuIGFwcGVuZDxTZXRTdHJva2VUaGlja25lc3M+KGl0ZW0uZ2V0PFNldFN0cm9rZVRo
aWNrbmVzcz4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6Ci0gICAgICAgIHJldHVy
biBhcHBlbmQ8U2V0U3RhdGU+KGl0ZW0uZ2V0PFNldFN0YXRlPigpKTsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpTZXRMaW5lQ2FwOgotICAgICAgICByZXR1cm4gYXBwZW5kPFNldExpbmVDYXA+KGl0ZW0u
Z2V0PFNldExpbmVDYXA+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVEYXNoOgotICAg
ICAgICByZXR1cm4gYXBwZW5kPFNldExpbmVEYXNoPihpdGVtLmdldDxTZXRMaW5lRGFzaD4oKSk7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUpvaW46Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8
U2V0TGluZUpvaW4+KGl0ZW0uZ2V0PFNldExpbmVKb2luPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpTZXRNaXRlckxpbWl0OgotICAgICAgICByZXR1cm4gYXBwZW5kPFNldE1pdGVyTGltaXQ+KGl0
ZW0uZ2V0PFNldE1pdGVyTGltaXQ+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyU2hhZG93
OgotICAgICAgICByZXR1cm4gYXBwZW5kPENsZWFyU2hhZG93PihpdGVtLmdldDxDbGVhclNoYWRv
dz4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxD
bGlwPihpdGVtLmdldDxDbGlwPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0OgotICAg
ICAgICByZXR1cm4gYXBwZW5kPENsaXBPdXQ+KGl0ZW0uZ2V0PENsaXBPdXQ+KCkpOwotICAgIGNh
c2UgSXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOgotICAgICAgICByZXR1cm4gYXBwZW5kPENs
aXBUb0ltYWdlQnVmZmVyPihpdGVtLmdldDxDbGlwVG9JbWFnZUJ1ZmZlcj4oKSk7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxDbGlwT3V0
VG9QYXRoPihpdGVtLmdldDxDbGlwT3V0VG9QYXRoPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpD
bGlwUGF0aDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxDbGlwUGF0aD4oaXRlbS5nZXQ8Q2xpcFBh
dGg+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgot
ICAgICAgICByZXR1cm4gYXBwZW5kPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPihpdGVtLmdl
dDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RW5k
Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICByZXR1cm4gYXBwZW5kPEVuZENsaXBUb0Ry
YXdpbmdDb21tYW5kcz4oaXRlbS5nZXQ8RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpKTsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdH
bHlwaHM+KGl0ZW0uZ2V0PERyYXdHbHlwaHM+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJ
bWFnZUJ1ZmZlcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3SW1hZ2VCdWZmZXI+KGl0ZW0u
Z2V0PERyYXdJbWFnZUJ1ZmZlcj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUlt
YWdlOgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdOYXRpdmVJbWFnZT4oaXRlbS5nZXQ8RHJh
d05hdGl2ZUltYWdlPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKLSAgICAg
ICAgcmV0dXJuIGFwcGVuZDxEcmF3UGF0dGVybj4oaXRlbS5nZXQ8RHJhd1BhdHRlcm4+KCkpOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdS
ZWN0PihpdGVtLmdldDxEcmF3UmVjdD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6
Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd0xpbmU+KGl0ZW0uZ2V0PERyYXdMaW5lPigpKTsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OgotICAgICAgICByZXR1cm4gYXBw
ZW5kPERyYXdMaW5lc0ZvclRleHQ+KGl0ZW0uZ2V0PERyYXdMaW5lc0ZvclRleHQ+KCkpOwotICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6Ci0gICAgICAgIHJldHVy
biBhcHBlbmQ8RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcj4oaXRlbS5nZXQ8RHJhd0RvdHNGb3JE
b2N1bWVudE1hcmtlcj4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6Ci0gICAg
ICAgIHJldHVybiBhcHBlbmQ8RHJhd0VsbGlwc2U+KGl0ZW0uZ2V0PERyYXdFbGxpcHNlPigpKTsK
LSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3
UGF0aD4oaXRlbS5nZXQ8RHJhd1BhdGg+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1
c1JpbmdQYXRoOgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdGb2N1c1JpbmdQYXRoPihpdGVt
LmdldDxEcmF3Rm9jdXNSaW5nUGF0aD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3Vz
UmluZ1JlY3RzOgotICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdGb2N1c1JpbmdSZWN0cz4oaXRl
bS5nZXQ8RHJhd0ZvY3VzUmluZ1JlY3RzPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVj
dDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxGaWxsUmVjdD4oaXRlbS5nZXQ8RmlsbFJlY3Q+KCkp
OwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOgotICAgICAgICByZXR1cm4g
YXBwZW5kPEZpbGxSZWN0V2l0aENvbG9yPihpdGVtLmdldDxGaWxsUmVjdFdpdGhDb2xvcj4oKSk7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQ6Ci0gICAgICAgIHJldHVy
biBhcHBlbmQ8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KGl0ZW0uZ2V0PEZpbGxSZWN0V2l0aEdyYWRp
ZW50PigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRlZFJlY3Q6Ci0gICAgICAg
IHJldHVybiBhcHBlbmQ8RmlsbENvbXBvc2l0ZWRSZWN0PihpdGVtLmdldDxGaWxsQ29tcG9zaXRl
ZFJlY3Q+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAgICAgICAg
cmV0dXJuIGFwcGVuZDxGaWxsUm91bmRlZFJlY3Q+KGl0ZW0uZ2V0PEZpbGxSb3VuZGVkUmVjdD4o
KSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU6Ci0gICAgICAg
IHJldHVybiBhcHBlbmQ8RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU+KGl0ZW0uZ2V0PEZpbGxSZWN0
V2l0aFJvdW5kZWRIb2xlPigpKTsKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAgICBj
YXNlIEl0ZW1UeXBlOjpGaWxsSW5saW5lUGF0aDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxGaWxs
SW5saW5lUGF0aD4oaXRlbS5nZXQ8RmlsbElubGluZVBhdGg+KCkpOwotI2VuZGlmCi0gICAgY2Fz
ZSBJdGVtVHlwZTo6RmlsbFBhdGg6Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8RmlsbFBhdGg+KGl0
ZW0uZ2V0PEZpbGxQYXRoPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKLSAg
ICAgICAgcmV0dXJuIGFwcGVuZDxGaWxsRWxsaXBzZT4oaXRlbS5nZXQ8RmlsbEVsbGlwc2U+KCkp
OwotICAgIGNhc2UgSXRlbVR5cGU6OkZsdXNoQ29udGV4dDoKLSAgICAgICAgcmV0dXJuIGFwcGVu
ZDxGbHVzaENvbnRleHQ+KGl0ZW0uZ2V0PEZsdXNoQ29udGV4dD4oKSk7Ci0gICAgY2FzZSBJdGVt
VHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOgotICAgICAgICBy
ZXR1cm4gYXBwZW5kPE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcj4oaXRl
bS5nZXQ8TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPigpKTsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI6Ci0gICAgICAgIHJldHVy
biBhcHBlbmQ8TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyPihpdGVtLmdldDxNZXRhQ29tbWFu
ZENoYW5nZUl0ZW1CdWZmZXI+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkdldEltYWdlRGF0YToK
LSAgICAgICAgcmV0dXJuIGFwcGVuZDxHZXRJbWFnZURhdGE+KGl0ZW0uZ2V0PEdldEltYWdlRGF0
YT4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgotICAgICAgICByZXR1cm4g
YXBwZW5kPFB1dEltYWdlRGF0YT4oaXRlbS5nZXQ8UHV0SW1hZ2VEYXRhPigpKTsKLSNpZiBFTkFC
TEUoVklERU8pCi0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgotICAgICAg
ICByZXR1cm4gYXBwZW5kPFBhaW50RnJhbWVGb3JNZWRpYT4oaXRlbS5nZXQ8UGFpbnRGcmFtZUZv
ck1lZGlhPigpKTsKLSNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVJlY3Q6Ci0gICAg
ICAgIHJldHVybiBhcHBlbmQ8U3Ryb2tlUmVjdD4oaXRlbS5nZXQ8U3Ryb2tlUmVjdD4oKSk7Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlTGluZToKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxTdHJv
a2VMaW5lPihpdGVtLmdldDxTdHJva2VMaW5lPigpKTsKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhf
REFUQSkKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VJbmxpbmVQYXRoOgotICAgICAgICByZXR1
cm4gYXBwZW5kPFN0cm9rZUlubGluZVBhdGg+KGl0ZW0uZ2V0PFN0cm9rZUlubGluZVBhdGg+KCkp
OwotI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUGF0aDoKLSAgICAgICAgcmV0dXJu
IGFwcGVuZDxTdHJva2VQYXRoPihpdGVtLmdldDxTdHJva2VQYXRoPigpKTsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpTdHJva2VFbGxpcHNlOgotICAgICAgICByZXR1cm4gYXBwZW5kPFN0cm9rZUVsbGlw
c2U+KGl0ZW0uZ2V0PFN0cm9rZUVsbGlwc2U+KCkpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFy
UmVjdDoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxDbGVhclJlY3Q+KGl0ZW0uZ2V0PENsZWFyUmVj
dD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lMYXllcjoKLSAgICAg
ICAgcmV0dXJuIGFwcGVuZDxCZWdpblRyYW5zcGFyZW5jeUxheWVyPihpdGVtLmdldDxCZWdpblRy
YW5zcGFyZW5jeUxheWVyPigpKTsKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVuY3lM
YXllcjoKLSAgICAgICAgcmV0dXJuIGFwcGVuZDxFbmRUcmFuc3BhcmVuY3lMYXllcj4oaXRlbS5n
ZXQ8RW5kVHJhbnNwYXJlbmN5TGF5ZXI+KCkpOwotI2lmIFVTRShDRykKLSAgICBjYXNlIEl0ZW1U
eXBlOjpBcHBseVN0cm9rZVBhdHRlcm46Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8QXBwbHlTdHJv
a2VQYXR0ZXJuPihpdGVtLmdldDxBcHBseVN0cm9rZVBhdHRlcm4+KCkpOwotICAgIGNhc2UgSXRl
bVR5cGU6OkFwcGx5RmlsbFBhdHRlcm46Ci0gICAgICAgIHJldHVybiBhcHBlbmQ8QXBwbHlGaWxs
UGF0dGVybj4oaXRlbS5nZXQ8QXBwbHlGaWxsUGF0dGVybj4oKSk7Ci0jZW5kaWYKLSAgICBjYXNl
IEl0ZW1UeXBlOjpBcHBseURldmljZVNjYWxlRmFjdG9yOgotICAgICAgICByZXR1cm4gYXBwZW5k
PEFwcGx5RGV2aWNlU2NhbGVGYWN0b3I+KGl0ZW0uZ2V0PEFwcGx5RGV2aWNlU2NhbGVGYWN0b3I+
KCkpOwotICAgIH0KKyAgICBXVEY6OnN3aXRjaE9uKGl0ZW0sIFsmXShjb25zdCBhdXRvJiBpdGVt
KSB7CisgICAgICAgIHVzaW5nIERpc3BsYXlMaXN0SXRlbVR5cGUgPSB0eXBlbmFtZSBXVEY6OlJl
bW92ZUNWQW5kUmVmZXJlbmNlPGRlY2x0eXBlKGl0ZW0pPjo6dHlwZTsKKyAgICAgICAgYXBwZW5k
PERpc3BsYXlMaXN0SXRlbVR5cGU+KGl0ZW0pOworICAgIH0pOwogfQogCiBhdXRvIERpc3BsYXlM
aXN0OjpiZWdpbigpIGNvbnN0IC0+IEl0ZXJhdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4
IDk5MzIyMjYyZGY3MDI5MDQwNzkzYjY1OTAzYzU3NTViYmEyMjZlZDIuLjhjZWVlNDUwZTdiZWFk
YTMwOTNhNWY4Nzk4NjFiNGYyZTYyZjllN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC05
MSw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hJdGVt
QnVmZmVyKEZ1bmN0aW9uPHZvaWQoY29uc3QgSXRlbUJ1ZmZlckhhbmRsZSYpPiYmKSBjb25zdDsK
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzLi4uIEFyZ3M+IHZvaWQgYXBwZW5kKEFy
Z3MmJi4uLiBhcmdzKTsKLSAgICB2b2lkIGFwcGVuZChJdGVtSGFuZGxlKTsKKyAgICB2b2lkIGFw
cGVuZChjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsKIAogICAgIGJvb2wgdHJhY2tzRHJhd2luZ0l0
ZW1FeHRlbnRzKCkgY29uc3QgeyByZXR1cm4gbV90cmFja3NEcmF3aW5nSXRlbUV4dGVudHM7IH0K
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRyYWNrc0RyYXdpbmdJdGVtRXh0ZW50cyhib29s
KTsKQEAgLTEzMiw3ICsxMzIsNyBAQCBwcml2YXRlOgogICAgICAgICB9KTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgYm9vbCBzaG91bGREdW1wRm9yRmxhZ3MoQXNUZXh0RmxhZ3MsIEl0ZW1IYW5kbGUp
OworICAgIHN0YXRpYyBib29sIHNob3VsZER1bXBGb3JGbGFncyhBc1RleHRGbGFncywgY29uc3Qg
RGlzcGxheUxpc3RJdGVtJik7CiAKICAgICBJbWFnZUJ1ZmZlckhhc2hNYXAgbV9pbWFnZUJ1ZmZl
cnM7CiAgICAgTmF0aXZlSW1hZ2VIYXNoTWFwIG1fbmF0aXZlSW1hZ2VzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCA1YTcyNTAxNDE1NTAyNDRmY2Yw
ZTVhZDZkNjVmN2E0MTQ3NjlhYzIyLi4yMWVlZGQ3NGMxZDVhYjJlOTdmODZmMmJlYzgyOGIzMzcw
MDQxNjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApA
QCAtMjgsMjAgKzI4LDEyIEBACiAKICNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtcy5oIgorI2luY2x1ZGUgPHd0Zi9C
cmlnYW5kLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotI2lmICFkZWZpbmVkKE5ERUJVRykgfHwg
IUxPR19ESVNBQkxFRAotQ1N0cmluZyBJdGVtSGFuZGxlOjpkZXNjcmlwdGlvbigpIGNvbnN0Ci17
Ci0gICAgVGV4dFN0cmVhbSB0czsKLSAgICB0cyA8PCAqdGhpczsKLSAgICByZXR1cm4gdHMucmVs
ZWFzZSgpLnV0ZjgoKTsKLX0KLSNlbmRpZgotCiB2b2lkIEl0ZW1IYW5kbGU6OmFwcGx5KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBzd2l0Y2ggKHR5cGUoKSkgewpAQCAtNDM4LDIx
ICs0MzAsNiBAQCB2b2lkIEl0ZW1IYW5kbGU6OmRlc3Ryb3koKQogICAgIH0KIH0KIAotdGVtcGxh
dGU8dHlwZW5hbWUsIHR5cGVuYW1lID0gdm9pZD4gaW5saW5lIGNvbnN0ZXhwciBib29sIEhhc0lz
VmFsaWQgPSBmYWxzZTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBjb25zdGV4cHIgYm9v
bCBIYXNJc1ZhbGlkPFQsIHN0ZDo6dm9pZF90PGRlY2x0eXBlKHN0ZDo6ZGVjbHZhbDxUPigpLmlz
VmFsaWQoKSk+PiA9IHRydWU7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEl0ZW0+Ci1zdGF0aWMgaW5s
aW5lIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8IUhhc0lzVmFsaWQ8SXRlbT4sIGJvb2w+IGlz
VmFsaWQoY29uc3QgSXRlbSYpCi17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlPHR5
cGVuYW1lIEl0ZW0+Ci1zdGF0aWMgaW5saW5lIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8SGFz
SXNWYWxpZDxJdGVtPiwgYm9vbD4gaXNWYWxpZChjb25zdCBJdGVtJiBpdGVtKQotewotICAgIHJl
dHVybiBpdGVtLmlzVmFsaWQoKTsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgSXRlbT4KIHN0YXRp
YyBpbmxpbmUgYm9vbCBjb3B5SW50byh1aW50OF90KiBkZXN0aW5hdGlvbldpdGhPZmZzZXQsIGNv
bnN0IEl0ZW0mIGl0ZW0pCiB7CkBAIC02MTAsMTMgKzU4NywzNCBAQCBib29sIEl0ZW1IYW5kbGU6
OnNhZmVDb3B5KEl0ZW1IYW5kbGUgZGVzdGluYXRpb24pIGNvbnN0CiAKIGJvb2wgc2FmZUNvcHko
SXRlbUhhbmRsZSBkZXN0aW5hdGlvbiwgY29uc3QgRGlzcGxheUxpc3RJdGVtJiBzb3VyY2UpCiB7
Ci0gICAgcmV0dXJuIFdURjo6dmlzaXQoWyZdKGNvbnN0IGF1dG8mIHNvdXJjZSkgeworICAgIHJl
dHVybiBXVEY6OnN3aXRjaE9uKHNvdXJjZSwgWyZdKGNvbnN0IGF1dG8mIHNvdXJjZSkgewogICAg
ICAgICB1c2luZyBEaXNwbGF5TGlzdEl0ZW1UeXBlID0gdHlwZW5hbWUgV1RGOjpSZW1vdmVDVkFu
ZFJlZmVyZW5jZTxkZWNsdHlwZShzb3VyY2UpPjo6dHlwZTsKICAgICAgICAgY29uc3RleHByIGF1
dG8gaXRlbVR5cGUgPSBEaXNwbGF5TGlzdEl0ZW1UeXBlOjppdGVtVHlwZTsKICAgICAgICAgZGVz
dGluYXRpb24uZGF0YVswXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGl0ZW1UeXBlKTsKICAgICAg
ICAgYXV0byBpdGVtT2Zmc2V0ID0gZGVzdGluYXRpb24uZGF0YSArIHNpemVvZih1aW50NjRfdCk7
CiAgICAgICAgIHJldHVybiBjb3B5SW50bzxEaXNwbGF5TGlzdEl0ZW1UeXBlPihpdGVtT2Zmc2V0
LCBzb3VyY2UpOwotICAgIH0sIHNvdXJjZSk7CisgICAgfSk7Cit9CisKK09wdGlvbmFsPERpc3Bs
YXlMaXN0SXRlbT4gc2FmZUNvcHkoSXRlbUhhbmRsZSBzb3VyY2UpCit7CisgICAgdXNpbmcgU2Vx
dWVuY2UgPSBicmlnYW5kOjptYWtlX3NlcXVlbmNlPGJyaWdhbmQ6OnB0cmRpZmZfdDwwPiwgV1RG
Ojp2YXJpYW50X3NpemU8RGlzcGxheUxpc3RJdGVtPjo6dmFsdWU+OworCisgICAgT3B0aW9uYWw8
RGlzcGxheUxpc3RJdGVtPiByZXN1bHQ7CisgICAgYnJpZ2FuZDo6Zm9yX2VhY2g8U2VxdWVuY2U+
KFsmXShhdXRvJiYgdHlwZSkgeworICAgICAgICB1c2luZyBJID0gdHlwZW5hbWUgV1RGOjpSZW1v
dmVDVkFuZFJlZmVyZW5jZTxkZWNsdHlwZSh0eXBlKT46OnR5cGU6OnR5cGU7CisgICAgICAgIHVz
aW5nIERpc3BsYXlMaXN0SXRlbVR5cGUgPSBXVEY6OnZhcmlhbnRfYWx0ZXJuYXRpdmVfdDxJOjp2
YWx1ZSwgRGlzcGxheUxpc3RJdGVtPjsKKworICAgICAgICBpZiAoc291cmNlLnR5cGUoKSAhPSBE
aXNwbGF5TGlzdEl0ZW1UeXBlOjppdGVtVHlwZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBhdXRvIGRpc3BsYXlMaXN0SXRlbSA9IHNvdXJjZS5nZXQ8RGlzcGxheUxpc3RJdGVtVHlw
ZT4oKTsKKyAgICAgICAgaWYgKGlzVmFsaWQoZGlzcGxheUxpc3RJdGVtKSkgeworICAgICAgICAg
ICAgQVNTRVJUKCFyZXN1bHQpOworICAgICAgICAgICAgcmVzdWx0ID0gRGlzcGxheUxpc3RJdGVt
KFdURk1vdmUoZGlzcGxheUxpc3RJdGVtKSk7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICByZXR1
cm4gcmVzdWx0OwogfQogCiBJdGVtQnVmZmVyOjpJdGVtQnVmZmVyKEl0ZW1CdWZmZXJIYW5kbGVz
JiYgaGFuZGxlcykKQEAgLTcyMyw3ICs3MjEsNyBAQCB2b2lkIEl0ZW1CdWZmZXI6OmFwcGVuZChj
b25zdCBEaXNwbGF5TGlzdEl0ZW0mIHRlbXBvcmFyeUl0ZW0pCiAgICAgICAgIEFTU0VSVChvdXRP
ZkxpbmVJdGVtKTsKICAgICAgICAgcmV0dXJuIG91dE9mTGluZUl0ZW0tPnNpemUoKTsKICAgICB9
KTsKLSAgICBhdXRvIGFkZGl0aW9uYWxDYXBhY2l0eUZvckVuY29kZWRJdGVtID0gMiAqIHNpemVv
Zih1aW50NjRfdCkgKyByb3VuZFVwVG9NdWx0aXBsZU9mKGFsaWdub2YodWludDY0X3QpLCBkYXRh
TGVuZ3RoKTsKKyAgICBhdXRvIGFkZGl0aW9uYWxDYXBhY2l0eUZvckVuY29kZWRJdGVtID0gMiAq
IHNpemVvZih1aW50NjRfdCkgKyByb3VuZFVwVG9NdWx0aXBsZU9mPGFsaWdub2YodWludDY0X3Qp
PihkYXRhTGVuZ3RoKTsKIAogICAgIGF1dG8gYnVmZmVyQ2hhbmdlZCA9IHN3YXBXcml0YWJsZUJ1
ZmZlcklmTmVlZGVkKGFkZGl0aW9uYWxDYXBhY2l0eUZvckVuY29kZWRJdGVtKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCmluZGV4IGI5OTE3NTdjMjJkYzc3ZTBk
ODdiYzNjNWNiMWQwMTlmZDA3YzQzODYuLjMzNmEyMWEyNTQxMTQ0YzY5OGNlOGRhYWFmNzJkMzQ5
ODdiOGI0NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKQEAg
LTgzLDYgKzgzLDcgQEAgc3RydWN0IEl0ZW1IYW5kbGUgewogfTsKIAogYm9vbCBzYWZlQ29weShJ
dGVtSGFuZGxlIGRlc3RpbmF0aW9uLCBjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIHNvdXJjZSk7CitP
cHRpb25hbDxEaXNwbGF5TGlzdEl0ZW0+IHNhZmVDb3B5KEl0ZW1IYW5kbGUpOwogCiBlbnVtIGNs
YXNzIERpZENoYW5nZUl0ZW1CdWZmZXIgOiBib29sIHsgTm8sIFllcyB9OwogCkBAIC0xMjMsNyAr
MTI0LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPEl0
ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBkYXRhTGVuZ3RoLCBJdGVtVHlwZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24p
ID0gMDsKKyAgICB2aXJ0dWFsIE9wdGlvbmFsPERpc3BsYXlMaXN0SXRlbT4gV0FSTl9VTlVTRURf
UkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgs
IEl0ZW1UeXBlKSA9IDA7CiB9OwogCiAvLyBBbiBJdGVtQnVmZmVyIGNvbnRhaW5zIGRpc3BsYXkg
bGlzdCBpdGVtIGRhdGEsIGFuZCBjb25zaXN0cyBvZiBhIHJlYWR3cml0ZSBJdGVtQnVmZmVySGFu
ZGxlICh0byB3aGljaCBkaXNwbGF5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlw
ZS5jcHAKaW5kZXggYTFlMDkxZTQ1N2Y1ODlkYzgzMjRmMDk0ZjY3YTE3ZTI4NDZmYmI3ZC4uMmQy
YzA2MThmMWZlMGQyYjJkMzk5YThkYjc1MzZkODE5NGIwOTNmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcApAQCAtMjU2LDIyICsyNTYsMjIgQEAgYm9vbCBpc0Ry
YXdpbmdJdGVtKEl0ZW1UeXBlIHR5cGUpCiAKIHNpemVfdCBwYWRkZWRTaXplT2ZUeXBlQW5kSXRl
bUluQnl0ZXMoSXRlbVR5cGUgdHlwZSkKIHsKLSAgICByZXR1cm4gc2l6ZW9mKHVpbnQ2NF90KSAr
IHJvdW5kVXBUb011bHRpcGxlT2YoYWxpZ25vZih1aW50NjRfdCksIHNpemVPZkl0ZW1JbkJ5dGVz
KHR5cGUpKTsKKyAgICByZXR1cm4gc2l6ZW9mKHVpbnQ2NF90KSArIHJvdW5kVXBUb011bHRpcGxl
T2Y8YWxpZ25vZih1aW50NjRfdCk+KHNpemVPZkl0ZW1JbkJ5dGVzKHR5cGUpKTsKIH0KIAogc2l6
ZV90IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtSW5CeXRlcyhjb25zdCBEaXNwbGF5TGlzdEl0ZW0m
IGRpc3BsYXlMaXN0SXRlbSkKIHsKLSAgICBhdXRvIGl0ZW1TaXplID0gV1RGOjp2aXNpdChbXShj
b25zdCBhdXRvJiBpdGVtKSB7CisgICAgYXV0byBpdGVtU2l6ZSA9IFdURjo6c3dpdGNoT24oZGlz
cGxheUxpc3RJdGVtLCBbXShjb25zdCBhdXRvJiBpdGVtKSB7CiAgICAgICAgIHJldHVybiBzaXpl
b2YoaXRlbSk7Ci0gICAgfSwgZGlzcGxheUxpc3RJdGVtKTsKLSAgICByZXR1cm4gc2l6ZW9mKHVp
bnQ2NF90KSArIHJvdW5kVXBUb011bHRpcGxlT2YoYWxpZ25vZih1aW50NjRfdCksIGl0ZW1TaXpl
KTsKKyAgICB9KTsKKyAgICByZXR1cm4gc2l6ZW9mKHVpbnQ2NF90KSArIHJvdW5kVXBUb011bHRp
cGxlT2Y8YWxpZ25vZih1aW50NjRfdCk+KGl0ZW1TaXplKTsKIH0KIAogSXRlbVR5cGUgZGlzcGxh
eUxpc3RJdGVtVHlwZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGRpc3BsYXlMaXN0SXRlbSkKIHsK
LSAgICByZXR1cm4gV1RGOjp2aXNpdChbXShjb25zdCBhdXRvJiBpdGVtKSB7CisgICAgcmV0dXJu
IFdURjo6c3dpdGNoT24oZGlzcGxheUxpc3RJdGVtLCBbXShjb25zdCBhdXRvJiBpdGVtKSB7CiAg
ICAgICAgIHJldHVybiBpdGVtLml0ZW1UeXBlOwotICAgIH0sIGRpc3BsYXlMaXN0SXRlbSk7Cisg
ICAgfSk7CiB9CiAKIGJvb2wgaXNJbmxpbmVJdGVtKEl0ZW1UeXBlIHR5cGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggNDliMmMxYjI1YzgyMzBhMTg5ZmY4MDE3NWYz
ZDNiMGExYmM1ZjI4NS4uYzc2M2UzMjY0OWM2NGUzYWM1YWU1YjRlNjhhZmNiODNiYTg5YzM5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtNDksMTEgKzQ5LDIxIEBA
IHZvaWQgU2F2ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogICAgIGNv
bnRleHQuc2F2ZSgpOwogfQogCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgU2F2ZSYpCit7CisgICAgcmV0dXJuIHRzOworfQorCiB2b2lkIFJlc3Rv
cmU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBjb250ZXh0
LnJlc3RvcmUoKTsKIH0KIAorc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IFJlc3RvcmUmKQoreworICAgIHJldHVybiB0czsKK30KKwogdm9pZCBUcmFu
c2xhdGU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBjb250
ZXh0LnRyYW5zbGF0ZShtX3gsIG1feSk7CkBAIC0yMjAsMTIgKzIzMCwxMiBAQCBTZXRTdGF0ZTo6
U2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlQ2hhbmdlLCBj
b25zdCBQYXR0ZXJuRAogewogfQogCi12b2lkIFNldFN0YXRlOjphcHBseShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIE5hdGl2ZUltYWdlKiBzdHJva2VQYXR0ZXJuSW1hZ2UsIE5hdGl2ZUltYWdl
KiBmaWxsUGF0dGVybkltYWdlKQordm9pZCBTZXRTdGF0ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBOYXRpdmVJbWFnZSogc3Ryb2tlUGF0dGVybkltYWdlLCBOYXRpdmVJbWFnZSog
ZmlsbFBhdHRlcm5JbWFnZSkgY29uc3QKIHsKICAgICBpZiAobV9zdGF0ZUNoYW5nZS5tX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdl
KSAmJiBzdHJva2VQYXR0ZXJuSW1hZ2UpCi0gICAgICAgIG1fc3RhdGVDaGFuZ2UubV9zdGF0ZS5z
dHJva2VQYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKG1ha2VSZWYoKnN0cm9rZVBhdHRlcm5JbWFn
ZSksIG1fc3Ryb2tlUGF0dGVybi5wYXJhbWV0ZXJzKTsKKyAgICAgICAgY29uc3RfY2FzdDxTZXRT
dGF0ZSo+KHRoaXMpLT5tX3N0YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IFBhdHRl
cm46OmNyZWF0ZShtYWtlUmVmKCpzdHJva2VQYXR0ZXJuSW1hZ2UpLCBtX3N0cm9rZVBhdHRlcm4u
cGFyYW1ldGVycyk7CiAgICAgaWYgKG1fc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250YWlu
cyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpICYmIGZpbGxQYXR0ZXJu
SW1hZ2UpCi0gICAgICAgIG1fc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsUGF0dGVybiA9IFBhdHRl
cm46OmNyZWF0ZShtYWtlUmVmKCpmaWxsUGF0dGVybkltYWdlKSwgbV9maWxsUGF0dGVybi5wYXJh
bWV0ZXJzKTsKKyAgICAgICAgY29uc3RfY2FzdDxTZXRTdGF0ZSo+KHRoaXMpLT5tX3N0YXRlQ2hh
bmdlLm1fc3RhdGUuZmlsbFBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUobWFrZVJlZigqZmlsbFBh
dHRlcm5JbWFnZSksIG1fZmlsbFBhdHRlcm4ucGFyYW1ldGVycyk7CiAgICAgbV9zdGF0ZUNoYW5n
ZS5hcHBseShjb250ZXh0KTsKIH0KIApAQCAtMjg1LDYgKzI5NSwxMSBAQCB2b2lkIENsZWFyU2hh
ZG93OjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiAgICAgY29udGV4dC5j
bGVhclNoYWRvdygpOwogfQogCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgQ2xlYXJTaGFkb3cmKQoreworICAgIHJldHVybiB0czsKK30KKwogdm9p
ZCBDbGlwOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgY29u
dGV4dC5jbGlwKG1fcmVjdCk7CkBAIC05NjUsNiArOTgwLDExIEBAIHZvaWQgRW5kVHJhbnNwYXJl
bmN5TGF5ZXI6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICBjb250
ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiB9CiAKK3N0YXRpYyBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBFbmRUcmFuc3BhcmVuY3lMYXllciYpCit7Cisg
ICAgcmV0dXJuIHRzOworfQorCiAjaWYgVVNFKENHKQogCiB2b2lkIEFwcGx5U3Ryb2tlUGF0dGVy
bjo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdApAQCAtOTcyLDEwICs5OTIs
MjEgQEAgdm9pZCBBcHBseVN0cm9rZVBhdHRlcm46OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCkgY29uc3QKICAgICBjb250ZXh0LmFwcGx5U3Ryb2tlUGF0dGVybigpOwogfQogCitzdGF0
aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQXBwbHlTdHJv
a2VQYXR0ZXJuJikKK3sKKyAgICByZXR1cm4gdHM7Cit9CisKIHZvaWQgQXBwbHlGaWxsUGF0dGVy
bjo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGNvbnRleHQu
YXBwbHlGaWxsUGF0dGVybigpOwogfQorCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgQXBwbHlGaWxsUGF0dGVybiYpCit7CisgICAgcmV0dXJuIHRz
OworfQorCiAjZW5kaWYKIAogdm9pZCBBcHBseURldmljZVNjYWxlRmFjdG9yOjphcHBseShHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CkBAIC0xMDg5LDE5OSArMTEyMCwyMSBAQCBzdGF0
aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgSXRlbVR5cGUgdHlwZSkK
ICAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIEl0ZW1IYW5kbGUgaXRlbSkKLXsKLSAgICB0cyA8PCBpdGVtLnR5cGUoKTsKLQotICAgIHN3
aXRjaCAoaXRlbS50eXBlKCkpIHsKLSAgICBjYXNlIEl0ZW1UeXBlOjpUcmFuc2xhdGU6Ci0gICAg
ICAgIHRzIDw8IGl0ZW0uZ2V0PFRyYW5zbGF0ZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6Um90YXRlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxSb3RhdGU+KCk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNjYWxlOgotICAgICAgICB0cyA8PCBp
dGVtLmdldDxTY2FsZT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0
Q1RNOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRDVE0+KCk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgotICAgICAgICB0cyA8PCBpdGVtLmdl
dDxDb25jYXRlbmF0ZUNUTT4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6
U2V0SW5saW5lRmlsbEdyYWRpZW50OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxTZXRJbmxpbmVG
aWxsR3JhZGllbnQ+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldElu
bGluZUZpbGxDb2xvcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0SW5saW5lRmlsbENvbG9y
PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VD
b2xvcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0SW5saW5lU3Ryb2tlQ29sb3I+KCk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczoKLSAg
ICAgICAgdHMgPDwgaXRlbS5nZXQ8U2V0U3Ryb2tlVGhpY2tuZXNzPigpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8
U2V0U3RhdGU+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVD
YXA6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldExpbmVDYXA+KCk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVEYXNoOgotICAgICAgICB0cyA8PCBpdGVtLmdl
dDxTZXRMaW5lRGFzaD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0
TGluZUpvaW46Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PFNldExpbmVKb2luPigpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRNaXRlckxpbWl0OgotICAgICAgICB0cyA8
PCBpdGVtLmdldDxTZXRNaXRlckxpbWl0PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0
ZW1UeXBlOjpDbGlwOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGlwPigpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0OgotICAgICAgICB0cyA8PCBpdGVtLmdl
dDxDbGlwT3V0PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9J
bWFnZUJ1ZmZlcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KCk7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6Ci0gICAg
ICAgIHRzIDw8IGl0ZW0uZ2V0PENsaXBPdXRUb1BhdGg+KCk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxDbGlwUGF0
aD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3
aW5nQ29tbWFuZHM6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEJlZ2luQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9E
cmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PEVuZENsaXBUb0RyYXdpbmdD
b21tYW5kcz4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBo
czoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0dseXBocz4oKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgotICAgICAgICB0cyA8PCBpdGVt
LmdldDxEcmF3SW1hZ2VCdWZmZXI+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdOYXRpdmVJbWFnZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd05hdGl2ZUlt
YWdlPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoK
LSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd1BhdHRlcm4+KCk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3
UmVjdD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6Ci0g
ICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdMaW5lPigpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxE
cmF3TGluZXNGb3JUZXh0PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3RG90
c0ZvckRvY3VtZW50TWFya2VyPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3RWxsaXBzZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd0VsbGlwc2U+KCk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXRoOgotICAgICAgICB0cyA8
PCBpdGVtLmdldDxEcmF3UGF0aD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd0ZvY3VzUmluZ1BhdGg6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdGb2N1c1Jp
bmdQYXRoPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNS
aW5nUmVjdHM6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdGb2N1c1JpbmdSZWN0cz4oKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAgICAgIHRz
IDw8IGl0ZW0uZ2V0PEZpbGxSZWN0PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1U
eXBlOjpGaWxsUmVjdFdpdGhDb2xvcjoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RmlsbFJlY3RX
aXRoQ29sb3I+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0
V2l0aEdyYWRpZW50OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsUmVjdFdpdGhHcmFkaWVu
dD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRS
ZWN0OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsQ29tcG9zaXRlZFJlY3Q+KCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKLSAgICAgICAg
dHMgPDwgaXRlbS5nZXQ8RmlsbFJvdW5kZWRSZWN0PigpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZToKLSAgICAgICAgdHMgPDwgaXRl
bS5nZXQ8RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU+KCk7Ci0gICAgICAgIGJyZWFrOwotI2lmIEVO
QUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxJbmxpbmVQYXRo
OgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsSW5saW5lUGF0aD4oKTsKLSAgICAgICAgYnJl
YWs7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUGF0aDoKLSAgICAgICAgdHMgPDwg
aXRlbS5nZXQ8RmlsbFBhdGg+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6
OkZpbGxFbGxpcHNlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxGaWxsRWxsaXBzZT4oKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OgotICAgICAgICB0
cyA8PCBpdGVtLmdldDxGbHVzaENvbnRleHQ+KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
SXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoKLSAgICAg
ICAgdHMgPDwgaXRlbS5nZXQ8TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVy
PigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5n
ZUl0ZW1CdWZmZXI6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PE1ldGFDb21tYW5kQ2hhbmdlSXRl
bUJ1ZmZlcj4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6R2V0SW1hZ2VE
YXRhOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxHZXRJbWFnZURhdGE+KCk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgSXRlbVR5cGU6OlB1dEltYWdlRGF0YToKLSAgICAgICAgdHMgPDwgaXRl
bS5nZXQ8UHV0SW1hZ2VEYXRhPigpOwotICAgICAgICBicmVhazsKLSNpZiBFTkFCTEUoVklERU8p
Ci0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgotICAgICAgICB0cyA8PCBp
dGVtLmdldDxQYWludEZyYW1lRm9yTWVkaWE+KCk7Ci0gICAgICAgIGJyZWFrOwotI2VuZGlmCi0g
ICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U3Ry
b2tlUmVjdD4oKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlTGlu
ZToKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U3Ryb2tlTGluZT4oKTsKLSAgICAgICAgYnJlYWs7
Ci0jaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tl
SW5saW5lUGF0aDoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8U3Ryb2tlSW5saW5lUGF0aD4oKTsK
LSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQYXRoOgot
ICAgICAgICB0cyA8PCBpdGVtLmdldDxTdHJva2VQYXRoPigpOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VFbGxpcHNlOgotICAgICAgICB0cyA8PCBpdGVtLmdldDxT
dHJva2VFbGxpcHNlPigpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGVh
clJlY3Q6Ci0gICAgICAgIHRzIDw8IGl0ZW0uZ2V0PENsZWFyUmVjdD4oKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lMYXllcjoKLSAgICAgICAg
dHMgPDwgaXRlbS5nZXQ8QmVnaW5UcmFuc3BhcmVuY3lMYXllcj4oKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjoKLSAgICAgICAgdHMg
PDwgaXRlbS5nZXQ8QXBwbHlEZXZpY2VTY2FsZUZhY3Rvcj4oKTsKLSAgICAgICAgYnJlYWs7Ci0K
LSAgICAvLyBJdGVtcyB3aXRoIG5vIGFkZGl0aW9uYWwgZGF0YS4KLSAgICBjYXNlIEl0ZW1UeXBl
OjpTYXZlOgotICAgIGNhc2UgSXRlbVR5cGU6OlJlc3RvcmU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6
RW5kVHJhbnNwYXJlbmN5TGF5ZXI6Ci0jaWYgVVNFKENHKQotICAgIGNhc2UgSXRlbVR5cGU6OkFw
cGx5U3Ryb2tlUGF0dGVybjoKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseUZpbGxQYXR0ZXJuOgot
I2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJTaGFkb3c6Ci0gICAgICAgIGJyZWFrOwot
ICAgIH0KK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERpc3Bs
YXlMaXN0SXRlbSYgaXRlbSkKK3sKKyAgICBXVEY6OnN3aXRjaE9uKGl0ZW0sIFsmXShjb25zdCBh
dXRvJiBkaXNwbGF5TGlzdEl0ZW0pIHsKKyAgICAgICAgdHMgPDwgZGlzcGxheUxpc3RJdGVtLml0
ZW1UeXBlOworICAgICAgICB0cyA8PCBkaXNwbGF5TGlzdEl0ZW07CisgICAgfSk7CiAgICAgcmV0
dXJuIHRzOwogfQogCitib29sIGlzRHJhd2luZ0l0ZW0oY29uc3QgRGlzcGxheUxpc3RJdGVtJiBk
aXNwbGF5TGlzdEl0ZW0pCit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oZGlzcGxheUxpc3RJ
dGVtLCBbXShjb25zdCBhdXRvJiBkaXNwbGF5TGlzdEl0ZW0pIHsKKyAgICAgICAgcmV0dXJuIGRp
c3BsYXlMaXN0SXRlbS5pc0RyYXdpbmdJdGVtOworICAgIH0pOworfQorCiB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCAxZWI4MTU2ZDE2NjM3OGViZjA1ZWU2YmMyY2Vl
MTAxZjkyZTI2YzZhLi4xZDk0NGEwMjE5ZDY1NjJiZGRiNTE4YTAzNDJmYmZlNGFlZTJjNWYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTI4Myw3ICsyODMsNyBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxTZXRTdGF0
ZT4gZGVjb2RlKERlY29kZXImKTsKIAotICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0Jiwg
TmF0aXZlSW1hZ2UqIHN0cm9rZVBhdHRlcm5JbWFnZSwgTmF0aXZlSW1hZ2UqIGZpbGxQYXR0ZXJu
SW1hZ2UpOworICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JiwgTmF0aXZlSW1hZ2UqIHN0
cm9rZVBhdHRlcm5JbWFnZSwgTmF0aXZlSW1hZ2UqIGZpbGxQYXR0ZXJuSW1hZ2UpIGNvbnN0Owog
CiBwcml2YXRlOgogICAgIHN0cnVjdCBQYXR0ZXJuRGF0YSB7CkBAIC05MTcsNyArOTE3LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSBmYWxzZTsK
ICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9IHRydWU7CiAKLSAgICBS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZm9udElkZW50aWZpZXIoKSB7IHJldHVybiBtX2Zv
bnRJZGVudGlmaWVyOyB9CisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGZvbnRJZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9mb250SWRlbnRpZmllcjsgfQogICAgIGNvbnN0IEZs
b2F0UG9pbnQmIGxvY2FsQW5jaG9yKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbEFuY2hvcjsgfQog
ICAgIEZsb2F0UG9pbnQgYW5jaG9yUG9pbnQoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsQW5jaG9y
OyB9CiAgICAgY29uc3QgVmVjdG9yPEdseXBoQnVmZmVyR2x5cGgsIDE2PiYgZ2x5cGhzKCkgY29u
c3QgeyByZXR1cm4gbV9nbHlwaHM7IH0KQEAgLTIzNTYsMTAgKzIzNTYsMjggQEAgdXNpbmcgRGlz
cGxheUxpc3RJdGVtID0gVmFyaWFudAogI2VuZGlmCiA+OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSwg
dHlwZW5hbWUgPSB2b2lkPiBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFzSXNWYWxpZCA9IGZhbHNl
OwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIGNvbnN0ZXhwciBib29sIEhhc0lzVmFsaWQ8
VCwgc3RkOjp2b2lkX3Q8ZGVjbHR5cGUoc3RkOjpkZWNsdmFsPFQ+KCkuaXNWYWxpZCgpKT4+ID0g
dHJ1ZTsKKwordGVtcGxhdGU8dHlwZW5hbWUgSXRlbT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWZf
dDwhSGFzSXNWYWxpZDxJdGVtPiwgYm9vbD4gaXNWYWxpZChjb25zdCBJdGVtJikKK3sKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgSXRlbT4gdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWZfdDxIYXNJc1ZhbGlkPEl0ZW0+LCBib29sPiBpc1ZhbGlkKGNvbnN0IEl0ZW0mIGl0
ZW0pCit7CisgICAgcmV0dXJuIGl0ZW0uaXNWYWxpZCgpOworfQorCitXRUJDT1JFX0VYUE9SVCBJ
dGVtVHlwZSBkaXNwbGF5TGlzdEl0ZW1UeXBlKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYpOworCiBz
aXplX3QgcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKGNvbnN0IERpc3BsYXlMaXN0SXRl
bSYpOwotSXRlbVR5cGUgZGlzcGxheUxpc3RJdGVtVHlwZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0m
KTsKIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgSXRlbUhhbmRsZSk7Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIgc2l6ZV90IHBhZGRlZFNpemVPZlR5cGVBbmRJ
dGVtSW5CeXRlc0Zvckl0ZW0gPSBzaXplb2YodWludDY0X3QpICsgcm91bmRVcFRvTXVsdGlwbGVP
ZjxhbGlnbm9mKHVpbnQ2NF90KT4oc2l6ZW9mKFQpKTsKKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiwgY29uc3QgRGlzcGxheUxpc3RJdGVtJik7CisKK2Jvb2wgaXNEcmF3aW5n
SXRlbShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mKTsKIAogfSAvLyBuYW1lc3BhY2UgRGlzcGxheUxp
c3QKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZXJhdG9yLmNwcAppbmRleCBlNzY2NzcyYmVlYWMxNjU2NmQxNGI0NDBkZGIyNjZlYzdkNjY2Y2Mw
Li44MjZkM2ExMGFmMzgxYTY2NGE4NzE0YWY4MjAwMGZlZGFiZWI1MDhkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwCkBAIC0yOSwxMDggKzI5LDEyNSBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotYm9vbCBEaXNwbGF5
TGlzdDo6SXRlcmF0b3I6OmF0RW5kKCkgY29uc3QKK0Rpc3BsYXlMaXN0OjpJdGVyYXRvcjo6SXRl
cmF0b3IoY29uc3QgRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBJbW1lZGlhdGVseU1vdmVUb0Vu
ZCBpbW1lZGlhdGVseU1vdmVUb0VuZCkKKyAgICA6IG1fZGlzcGxheUxpc3QoZGlzcGxheUxpc3Qp
CiB7Ci0gICAgaWYgKG1fZGlzcGxheUxpc3QuaXNFbXB0eSgpIHx8ICFtX2lzVmFsaWQpCi0gICAg
ICAgIHJldHVybiB0cnVlOwotCi0gICAgYXV0byYgaXRlbXMgPSAqaXRlbUJ1ZmZlcigpOwotICAg
IGF1dG8gZW5kQ3Vyc29yID0gaXRlbXMubV93cml0YWJsZUJ1ZmZlci5kYXRhICsgaXRlbXMubV93
cml0dGVuTnVtYmVyT2ZCeXRlczsKLSAgICByZXR1cm4gbV9jdXJzb3IgPT0gZW5kQ3Vyc29yOwor
ICAgIGlmIChpbW1lZGlhdGVseU1vdmVUb0VuZCA9PSBJbW1lZGlhdGVseU1vdmVUb0VuZDo6WWVz
KSB7CisgICAgICAgIGlmIChhdXRvIGl0ZW1zID0gaXRlbUJ1ZmZlcigpKSB7CisgICAgICAgICAg
ICBtX3JlYWRPbmx5QnVmZmVySW5kZXggPSBpdGVtcy0+bV9yZWFkT25seUJ1ZmZlcnMuc2l6ZSgp
OworICAgICAgICAgICAgbV9jdXJzb3IgPSBlbmRPZkN1cnJlbnRCdWZmZXIoKTsKKyAgICAgICAg
fQorICAgIH0gZWxzZQorICAgICAgICBtb3ZlQ3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcigp
OwogfQogCi1hdXRvIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6dXBkYXRlQ3VycmVudERyYXdpbmdJ
dGVtRXh0ZW50KEl0ZW1UeXBlIGl0ZW1UeXBlKSAtPiBFeHRlbnRVcGRhdGVSZXN1bHQKKyNpZiBB
U1NFUlRfRU5BQkxFRAorYm9vbCBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OmF0RW5kKCkgY29uc3QK
IHsKLSAgICBhdXRvJiBleHRlbnRzID0gbV9kaXNwbGF5TGlzdC5tX2RyYXdpbmdJdGVtRXh0ZW50
czsKLSAgICBpZiAoZXh0ZW50cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBFeHRlbnRVcGRh
dGVSZXN1bHQ6OlN1Y2Nlc3M7Ci0KLSAgICBpZiAoIWlzRHJhd2luZ0l0ZW0oaXRlbVR5cGUpKSB7
Ci0gICAgICAgIG1fY3VycmVudEV4dGVudCA9IFdURjo6bnVsbG9wdDsKLSAgICAgICAgcmV0dXJu
IEV4dGVudFVwZGF0ZVJlc3VsdDo6U3VjY2VzczsKLSAgICB9CisgICAgaWYgKG1fZGlzcGxheUxp
c3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChtX2RyYXdpbmdJ
dGVtSW5kZXggPj0gZXh0ZW50cy5zaXplKCkpCi0gICAgICAgIHJldHVybiBFeHRlbnRVcGRhdGVS
ZXN1bHQ6OkZhaWx1cmU7CisgICAgY29uc3QgYXV0byogaXRlbXMgPSBpdGVtQnVmZmVyKCk7Cisg
ICAgaWYgKCFpdGVtcykKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBtX2N1cnJlbnRFeHRl
bnQgPSBleHRlbnRzW21fZHJhd2luZ0l0ZW1JbmRleF07Ci0gICAgbV9kcmF3aW5nSXRlbUluZGV4
Kys7Ci0gICAgcmV0dXJuIEV4dGVudFVwZGF0ZVJlc3VsdDo6U3VjY2VzczsKKyAgICBhdXRvIGVu
ZEN1cnNvciA9IGl0ZW1zLT5tX3dyaXRhYmxlQnVmZmVyLmRhdGEgKyBpdGVtcy0+bV93cml0dGVu
TnVtYmVyT2ZCeXRlczsKKyAgICByZXR1cm4gbV9jdXJzb3IgPT0gZW5kQ3Vyc29yOwogfQorI2Vu
ZGlmCiAKLXZvaWQgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjp1cGRhdGVDdXJyZW50SXRlbSgpCith
dXRvIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6b3BlcmF0b3IqKCkgY29uc3QgLT4gT3B0aW9uYWw8
VmFsdWU+CiB7Ci0gICAgY2xlYXJDdXJyZW50SXRlbSgpOwotCi0gICAgaWYgKGF0RW5kKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGF1dG8mIGl0ZW1zID0gKml0ZW1CdWZmZXIoKTsKLSAgICBh
dXRvIGl0ZW1UeXBlID0gc3RhdGljX2Nhc3Q8SXRlbVR5cGU+KG1fY3Vyc29yWzBdKTsKKyAgICBB
U1NFUlQoIWF0RW5kKCkpOworICAgIEFTU0VSVCghbV9jdXJyZW50SXRlbUluZm8pOwogCi0gICAg
aWYgKHVwZGF0ZUN1cnJlbnREcmF3aW5nSXRlbUV4dGVudChpdGVtVHlwZSkgPT0gRXh0ZW50VXBk
YXRlUmVzdWx0OjpGYWlsdXJlKSB7Ci0gICAgICAgIG1faXNWYWxpZCA9IGZhbHNlOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQorICAgIGF1dG8gY3VycmVudEl0ZW1JbmZvID0gY3VycmVudEl0ZW0o
KTsKKyAgICBpZiAoIWN1cnJlbnRJdGVtSW5mbykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKIAotICAgIGF1dG8gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW0gPSBwYWRkZWRTaXplT2ZUeXBl
QW5kSXRlbUluQnl0ZXMoaXRlbVR5cGUpOwotICAgIG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gPSBw
YWRkZWRTaXplT2ZUeXBlQW5kSXRlbSA8PSBzaXplT2ZGaXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVt
ID8gbV9maXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtIDogcmVpbnRlcnByZXRfY2FzdDx1aW50OF90
Kj4oZmFzdE1hbGxvYyhwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbSkpOwotICAgIGlmIChpc0lubGlu
ZUl0ZW0oaXRlbVR5cGUpKSB7Ci0gICAgICAgIGlmIChVTkxJS0VMWSghSXRlbUhhbmRsZSB7IG1f
Y3Vyc29yIH0uc2FmZUNvcHkoeyBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtIH0pKSkKLSAgICAgICAg
ICAgIG1faXNWYWxpZCA9IGZhbHNlOworICAgIG1fY3VycmVudEl0ZW1JbmZvID0ge3sgY3VycmVu
dEl0ZW1JbmZvLT5zaXplSW5CdWZmZXIsIGN1cnJlbnRJdGVtSW5mby0+aXNEcmF3aW5nSXRlbSB9
fTsKIAotICAgICAgICBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0gcGFkZGVkU2l6ZU9mVHlw
ZUFuZEl0ZW07Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgYXV0byogY2xpZW50ID0gaXRlbXMubV9y
ZWFkaW5nQ2xpZW50OwotICAgICAgICBSRUxFQVNFX0FTU0VSVChjbGllbnQpOwotICAgICAgICBh
dXRvIGRhdGFMZW5ndGggPSByZWludGVycHJldF9jYXN0PHVpbnQ2NF90Kj4obV9jdXJzb3IpWzFd
OwotICAgICAgICBhdXRvKiBzdGFydE9mRGF0YSA9IG1fY3Vyc29yICsgMiAqIHNpemVvZih1aW50
NjRfdCk7Ci0gICAgICAgIGF1dG8gZGVjb2RlZEl0ZW1IYW5kbGUgPSBjbGllbnQtPmRlY29kZUl0
ZW0oc3RhcnRPZkRhdGEsIGRhdGFMZW5ndGgsIGl0ZW1UeXBlLCBtX2N1cnJlbnRCdWZmZXJGb3JJ
dGVtKTsKLSAgICAgICAgaWYgKFVOTElLRUxZKCFkZWNvZGVkSXRlbUhhbmRsZSkpCi0gICAgICAg
ICAgICBtX2lzVmFsaWQgPSBmYWxzZTsKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGN1cnJlbnRF
eHRlbnQ7CisgICAgaWYgKGN1cnJlbnRJdGVtSW5mby0+aXNEcmF3aW5nSXRlbSAmJiAhbV9kaXNw
bGF5TGlzdC5tX2RyYXdpbmdJdGVtRXh0ZW50cy5pc0VtcHR5KCkpCisgICAgICAgIGN1cnJlbnRF
eHRlbnQgPSBtX2Rpc3BsYXlMaXN0Lm1fZHJhd2luZ0l0ZW1FeHRlbnRzW21fZHJhd2luZ0l0ZW1J
bmRleF07CiAKLSAgICAgICAgbV9jdXJyZW50QnVmZmVyRm9ySXRlbVswXSA9IHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KGl0ZW1UeXBlKTsKLSAgICAgICAgbV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlciA9
IDIgKiBzaXplb2YodWludDY0X3QpICsgcm91bmRVcFRvTXVsdGlwbGVPZihhbGlnbm9mKHVpbnQ2
NF90KSwgZGF0YUxlbmd0aCk7Ci0gICAgfQorICAgIHJldHVybiB7eyBjdXJyZW50SXRlbUluZm8t
PmRpc3BsYXlMaXN0SXRlbSwgV1RGTW92ZShjdXJyZW50RXh0ZW50KSwgY3VycmVudEl0ZW1JbmZv
LT5zaXplSW5CdWZmZXIgfX07CiB9CiAKLXZvaWQgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjphZHZh
bmNlKCkKK3ZvaWQgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjpvcGVyYXRvcisrKCkKIHsKLSAgICBp
ZiAoYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVCghYXRFbmQoKSk7CisgICAg
QVNTRVJUKG1fY3VycmVudEl0ZW1JbmZvKTsKKworICAgIGlmIChtX2N1cnJlbnRJdGVtSW5mby0+
aXNEcmF3aW5nSXRlbSkKKyAgICAgICAgKyttX2RyYXdpbmdJdGVtSW5kZXg7CiAKLSAgICBtX2N1
cnNvciArPSBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyOworICAgIG1fY3Vyc29yICs9IG1fY3Vy
cmVudEl0ZW1JbmZvLT5zaXplSW5CdWZmZXI7CiAKLSAgICBpZiAobV9jdXJzb3IgPT0gbV9jdXJy
ZW50RW5kT2ZCdWZmZXIgJiYgbV9yZWFkT25seUJ1ZmZlckluZGV4IDwgaXRlbUJ1ZmZlcigpLT5t
X3JlYWRPbmx5QnVmZmVycy5zaXplKCkpIHsKKyAgICBpZiAobV9jdXJzb3IgPT0gZW5kT2ZDdXJy
ZW50QnVmZmVyKCkgJiYgbV9yZWFkT25seUJ1ZmZlckluZGV4IDwgaXRlbUJ1ZmZlcigpLT5tX3Jl
YWRPbmx5QnVmZmVycy5zaXplKCkpIHsKICAgICAgICAgbV9yZWFkT25seUJ1ZmZlckluZGV4Kys7
CiAgICAgICAgIG1vdmVDdXJzb3JUb1N0YXJ0T2ZDdXJyZW50QnVmZmVyKCk7CiAgICAgfQogCi0g
ICAgdXBkYXRlQ3VycmVudEl0ZW0oKTsKKyAgICBtX2N1cnJlbnRJdGVtSW5mbyA9IHsgfTsKIH0K
IAotdm9pZCBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OmNsZWFyQ3VycmVudEl0ZW0oKQorYXV0byBE
aXNwbGF5TGlzdDo6SXRlcmF0b3I6OmN1cnJlbnRJdGVtKCkgY29uc3QgLT4gT3B0aW9uYWw8Q3Vy
cmVudEl0ZW1SZXN1bHQ+CiB7Ci0gICAgYXV0byBpdGVtcyA9IGl0ZW1CdWZmZXIoKTsKLSAgICBp
ZiAoaXRlbXMgJiYgaXRlbXMtPm1fcmVhZGluZ0NsaWVudCAmJiBtX2N1cnJlbnRCdWZmZXJGb3JJ
dGVtKSB7Ci0gICAgICAgIGlmIChMSUtFTFkobV9pc1ZhbGlkKSkKLSAgICAgICAgICAgIEl0ZW1I
YW5kbGUgeyBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtIH0uZGVzdHJveSgpOwotCi0gICAgICAgIGlm
IChVTkxJS0VMWShtX2N1cnJlbnRCdWZmZXJGb3JJdGVtICE9IG1fZml4ZWRCdWZmZXJGb3JDdXJy
ZW50SXRlbSkpCi0gICAgICAgICAgICBmYXN0RnJlZShtX2N1cnJlbnRCdWZmZXJGb3JJdGVtKTsK
LSAgICB9CisgICAgT3B0aW9uYWw8Q3VycmVudEl0ZW1SZXN1bHQ+IHJlc3VsdDsKKyAgICBicmln
YW5kOjpmb3JfZWFjaDxEaXNwbGF5TGlzdEl0ZW0+KFsmXShhdXRvJiYgdHlwZSkgeworICAgICAg
ICB1c2luZyBEaXNwbGF5TGlzdEl0ZW1UeXBlID0gdHlwZW5hbWUgV1RGOjpSZW1vdmVDVkFuZFJl
ZmVyZW5jZTxkZWNsdHlwZSh0eXBlKT46OnR5cGU6OnR5cGU7CisKKyAgICAgICAgY29uc3QgYXV0
byogZW5kT2ZDdXJyZW50QnVmZmVyID0gdGhpcy0+ZW5kT2ZDdXJyZW50QnVmZmVyKCk7CisKKyAg
ICAgICAgLy8gVGhlIGZpcnN0IGJ5dGUgaW4gdGhlIGJ1ZmZlciBpcyB0aGUgdHlwZSBpZGVudGlm
aWVyLgorICAgICAgICBpZiAobV9jdXJzb3IgKyAxID4gZW5kT2ZDdXJyZW50QnVmZmVyKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBhdXRvIGl0ZW1UeXBlID0gc3RhdGljX2Nhc3Q8SXRl
bVR5cGU+KG1fY3Vyc29yWzBdKTsKKyAgICAgICAgaWYgKGl0ZW1UeXBlICE9IERpc3BsYXlMaXN0
SXRlbVR5cGU6Oml0ZW1UeXBlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIElu
bGluZSBpdGVtcyBhcmUganVzdCBwbGFjZW1lbnQtbmV3J2VkIGRpcmVjdGx5IGludG8gdGhlIGJ1
ZmZlciwgc28gd2UgY2FuIGp1c3QgdXNlIHJlaW50ZXJwcmV0X2Nhc3QuCisgICAgICAgIGlmIGNv
bnN0ZXhwciAoRGlzcGxheUxpc3RJdGVtVHlwZTo6aXNJbmxpbmVJdGVtKSB7CisgICAgICAgICAg
ICBhdXRvIGN1cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1J
bkJ5dGVzRm9ySXRlbTxEaXNwbGF5TGlzdEl0ZW1UeXBlPjsKKyAgICAgICAgICAgIGlmIChtX2N1
cnNvciArIGN1cnJlbnRJdGVtU2l6ZUluQnVmZmVyID4gZW5kT2ZDdXJyZW50QnVmZmVyKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8mIGl0ZW0gPSAqcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBEaXNwbGF5TGlzdEl0ZW1UeXBlKj4obV9jdXJzb3IgKyBzaXpl
b2YodWludDY0X3QpKTsKKyAgICAgICAgICAgIGlmICghaXNWYWxpZChpdGVtKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICBBU1NFUlQoIXJlc3VsdCk7CisgICAgICAgICAg
ICByZXN1bHQgPSB7eyBpdGVtLCBjdXJyZW50SXRlbVNpemVJbkJ1ZmZlciwgRGlzcGxheUxpc3RJ
dGVtVHlwZTo6aXNEcmF3aW5nSXRlbSB9fTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIE5vbi1pbmxpbmUgaXRlbXMgYXJlIGRlc2VyaWFsaXplZCB2aWEgdGhl
IHJlYWRpbmdDbGllbnQuCisgICAgICAgIGF1dG8qIGNsaWVudCA9IGl0ZW1CdWZmZXIoKS0+bV9y
ZWFkaW5nQ2xpZW50OworICAgICAgICBpZiAoIWNsaWVudCkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICAvLyBGb3Igbm9uLWlubGluZSBpdGVtcywgdGhlIGRhdGEgaXMgbGFpZCBvdXQg
YXMgc3VjaDoKKyAgICAgICAgLy8KKyAgICAgICAgLy8gICBCeXRlIDAgICBCeXRlIDEgICBCeXRl
IDIgICBCeXRlIDMgICBCeXRlIDQgICBCeXRlIDUgICBCeXRlIDYgICBCeXRlIDcgICBCeXRlIDgg
ICBCeXRlIDkgICBCeXRlIEEgICBCeXRlIEIgICBCeXRlIEMgICBCeXRlIEQgICBCeXRlIEUgICBC
eXRlIEYKKyAgICAgICAgLy8gKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0t
LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t
LS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t
KworICAgICAgICAvLyB8ICBUeXBlICB8IDwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTm90aGlu
ZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPiB8IDwtLS0tLS0tLS0tLS0tLS0tLS0tLS0gQnl0
ZSBsZW5ndGggb2YgcGF5bG9hZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tPiB8IFBheWxvYWQgLi4u
CisgICAgICAgIC8vICstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t
LSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSst
LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSsKKwor
ICAgICAgICBpZiAobV9jdXJzb3IgKyAyICogc2l6ZW9mKHVpbnQ2NF90KSA+IGVuZE9mQ3VycmVu
dEJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgIG1fY3VycmVudEl0ZW1TaXplSW5C
dWZmZXIgPSAwOwotICAgIG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gPSBudWxscHRyOwotfQotCi12
b2lkIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6bW92ZVRvRW5kKCkKLXsKLSAgICBpZiAoYXV0byBp
dGVtcyA9IGl0ZW1CdWZmZXIoKSkgewotICAgICAgICBtX2N1cnNvciA9IGl0ZW1zLT5tX3dyaXRh
YmxlQnVmZmVyLmRhdGEgKyBpdGVtcy0+bV93cml0dGVuTnVtYmVyT2ZCeXRlczsKLSAgICAgICAg
bV9jdXJyZW50RW5kT2ZCdWZmZXIgPSBtX2N1cnNvcjsKLSAgICAgICAgbV9yZWFkT25seUJ1ZmZl
ckluZGV4ID0gaXRlbXMtPm1fcmVhZE9ubHlCdWZmZXJzLnNpemUoKTsKLSAgICB9CisgICAgICAg
IGF1dG8gZGF0YUxlbmd0aCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPihtX2N1cnNvcilb
MV07CisgICAgICAgIGNvbnN0IGF1dG8qIHN0YXJ0T2ZEYXRhID0gbV9jdXJzb3IgKyAyICogc2l6
ZW9mKHVpbnQ2NF90KTsKKyAgICAgICAgaWYgKHN0YXJ0T2ZEYXRhICsgZGF0YUxlbmd0aCA+IGVu
ZE9mQ3VycmVudEJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBhdXRvIGl0
ZW0gPSBjbGllbnQtPmRlY29kZUl0ZW0oc3RhcnRPZkRhdGEsIGRhdGFMZW5ndGgsIGl0ZW1UeXBl
KTsKKyAgICAgICAgaWYgKCFpdGVtIHx8ICFpc1ZhbGlkKGl0ZW0udmFsdWUoKSkpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIHN0ZDo6c2l6ZV90IGN1cnJlbnRJdGVtU2l6ZUluQnVmZmVy
ID0gMiAqIHNpemVvZih1aW50NjRfdCkgKyByb3VuZFVwVG9NdWx0aXBsZU9mPGFsaWdub2YodWlu
dDY0X3QpPihkYXRhTGVuZ3RoKTsKKyAgICAgICAgQVNTRVJUKCFyZXN1bHQpOworICAgICAgICBy
ZXN1bHQgPSB7eyBXVEZNb3ZlKGl0ZW0udmFsdWUoKSksIGN1cnJlbnRJdGVtU2l6ZUluQnVmZmVy
LCBEaXNwbGF5TGlzdEl0ZW1UeXBlOjppc0RyYXdpbmdJdGVtIH19OworICAgIH0pOworICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKIHZvaWQgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjptb3ZlQ3Vyc29y
VG9TdGFydE9mQ3VycmVudEJ1ZmZlcigpCkBAIC0xNDMsMTIgKzE2MCwyNiBAQCB2b2lkIERpc3Bs
YXlMaXN0OjpJdGVyYXRvcjo6bW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZmZXIoKQogICAg
IGlmIChtX3JlYWRPbmx5QnVmZmVySW5kZXggPCBudW1iZXJPZlJlYWRPbmx5QnVmZmVycykgewog
ICAgICAgICBhdXRvJiBuZXh0QnVmZmVySGFuZGxlID0gaXRlbXMtPm1fcmVhZE9ubHlCdWZmZXJz
W21fcmVhZE9ubHlCdWZmZXJJbmRleF07CiAgICAgICAgIG1fY3Vyc29yID0gbmV4dEJ1ZmZlckhh
bmRsZS5kYXRhOwotICAgICAgICBtX2N1cnJlbnRFbmRPZkJ1ZmZlciA9IG1fY3Vyc29yICsgbmV4
dEJ1ZmZlckhhbmRsZS5jYXBhY2l0eTsKLSAgICB9IGVsc2UgaWYgKG1fcmVhZE9ubHlCdWZmZXJJ
bmRleCA9PSBudW1iZXJPZlJlYWRPbmx5QnVmZmVycykgeworICAgIH0gZWxzZSB7CisgICAgICAg
IEFTU0VSVChtX3JlYWRPbmx5QnVmZmVySW5kZXggPT0gbnVtYmVyT2ZSZWFkT25seUJ1ZmZlcnMp
OwogICAgICAgICBtX2N1cnNvciA9IGl0ZW1zLT5tX3dyaXRhYmxlQnVmZmVyLmRhdGE7Ci0gICAg
ICAgIG1fY3VycmVudEVuZE9mQnVmZmVyID0gbV9jdXJzb3IgKyBpdGVtcy0+bV93cml0dGVuTnVt
YmVyT2ZCeXRlczsKICAgICB9CiB9CiAKK3VpbnQ4X3QqIERpc3BsYXlMaXN0OjpJdGVyYXRvcjo6
ZW5kT2ZDdXJyZW50QnVmZmVyKCkgY29uc3QKK3sKKyAgICBhdXRvIGl0ZW1zID0gaXRlbUJ1ZmZl
cigpOworICAgIEFTU0VSVChpdGVtcyk7CisKKyAgICBhdXRvIG51bWJlck9mUmVhZE9ubHlCdWZm
ZXJzID0gaXRlbXMtPm1fcmVhZE9ubHlCdWZmZXJzLnNpemUoKTsKKyAgICBpZiAobV9yZWFkT25s
eUJ1ZmZlckluZGV4IDwgbnVtYmVyT2ZSZWFkT25seUJ1ZmZlcnMpIHsKKyAgICAgICAgYXV0byYg
Y3VycmVudEJ1ZmZlckhhbmRsZSA9IGl0ZW1zLT5tX3JlYWRPbmx5QnVmZmVyc1ttX3JlYWRPbmx5
QnVmZmVySW5kZXhdOworICAgICAgICByZXR1cm4gY3VycmVudEJ1ZmZlckhhbmRsZS5kYXRhICsg
Y3VycmVudEJ1ZmZlckhhbmRsZS5jYXBhY2l0eTsKKyAgICB9CisKKyAgICBBU1NFUlQobV9yZWFk
T25seUJ1ZmZlckluZGV4ID09IG51bWJlck9mUmVhZE9ubHlCdWZmZXJzKTsKKyAgICByZXR1cm4g
aXRlbXMtPm1fd3JpdGFibGVCdWZmZXIuZGF0YSArIGl0ZW1zLT5tX3dyaXR0ZW5OdW1iZXJPZkJ5
dGVzOworfQorCiB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuaAppbmRl
eCAwY2JmNWYzNjk1NzU4YjIxYTM2N2M3ZDk4MzYwYmMxMmYzYTYwYjFjLi41ODJhMDc5M2MyNmQ1
ODIyOThhNGZmMWRkYTdiNjg2MjZhOTdiZDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZXJhdG9yLmgKQEAgLTM0LDcwICszNCw0NiBAQCBuYW1lc3BhY2UgRGlzcGxheUxpc3Qgewog
Y2xhc3MgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yIHsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIElt
bWVkaWF0ZWx5TW92ZVRvRW5kIHsgTm8sIFllcyB9OwotICAgIEl0ZXJhdG9yKGNvbnN0IERpc3Bs
YXlMaXN0JiBkaXNwbGF5TGlzdCwgSW1tZWRpYXRlbHlNb3ZlVG9FbmQgaW1tZWRpYXRlbHlNb3Zl
VG9FbmQgPSBJbW1lZGlhdGVseU1vdmVUb0VuZDo6Tm8pCi0gICAgICAgIDogbV9kaXNwbGF5TGlz
dChkaXNwbGF5TGlzdCkKLSAgICB7Ci0gICAgICAgIGlmIChpbW1lZGlhdGVseU1vdmVUb0VuZCA9
PSBJbW1lZGlhdGVseU1vdmVUb0VuZDo6WWVzKQotICAgICAgICAgICAgbW92ZVRvRW5kKCk7Ci0g
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgbW92ZUN1cnNvclRvU3RhcnRPZkN1cnJlbnRCdWZm
ZXIoKTsKLSAgICAgICAgICAgIHVwZGF0ZUN1cnJlbnRJdGVtKCk7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICB+SXRlcmF0b3IoKQotICAgIHsKLSAgICAgICAgY2xlYXJDdXJyZW50SXRlbSgpOwot
ICAgIH0KKyAgICBJdGVyYXRvcihjb25zdCBEaXNwbGF5TGlzdCYsIEltbWVkaWF0ZWx5TW92ZVRv
RW5kID0gSW1tZWRpYXRlbHlNb3ZlVG9FbmQ6Ok5vKTsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBJdGVyYXRvciYgb3RoZXIpIHsgcmV0dXJuICZtX2Rpc3BsYXlMaXN0ID09ICZvdGhlci5t
X2Rpc3BsYXlMaXN0ICYmIG1fY3Vyc29yID09IG90aGVyLm1fY3Vyc29yOyB9CiAgICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhl
cik7IH0KLSAgICB2b2lkIG9wZXJhdG9yKysoKSB7IGFkdmFuY2UoKTsgfQorICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgb3BlcmF0b3IrKygpOwogCiAgICAgc3RydWN0IFZhbHVlIHsKLSAgICAgICAg
SXRlbUhhbmRsZSBpdGVtOworICAgICAgICBEaXNwbGF5TGlzdEl0ZW0gaXRlbTsKICAgICAgICAg
T3B0aW9uYWw8RmxvYXRSZWN0PiBleHRlbnQ7CiAgICAgICAgIHNpemVfdCBpdGVtU2l6ZUluQnVm
ZmVyIHsgMCB9OwogICAgIH07CiAKLSAgICBPcHRpb25hbDxWYWx1ZT4gb3BlcmF0b3IqKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKLSAgICAgICAgcmV0dXJuIHt7Ci0gICAgICAgICAgICBJdGVtSGFuZGxlIHsg
bV9jdXJyZW50QnVmZmVyRm9ySXRlbSB9LAotICAgICAgICAgICAgbV9jdXJyZW50RXh0ZW50LAot
ICAgICAgICAgICAgbV9jdXJyZW50SXRlbVNpemVJbkJ1ZmZlciwKLSAgICAgICAgfX07Ci0gICAg
fQorICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFZhbHVlPiBvcGVyYXRvciooKSBjb25zdDsK
IAogcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBzaXplT2ZGaXhlZEJ1ZmZl
ckZvckN1cnJlbnRJdGVtID0gMjU2OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb3ZlQ3Vy
c29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcigpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbW92
ZVRvRW5kKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckN1cnJlbnRJdGVtKCk7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVDdXJyZW50SXRlbSgpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYWR2YW5jZSgpOworICAgIHN0cnVjdCBDdXJyZW50SXRlbVJlc3VsdCB7Cisg
ICAgICAgIERpc3BsYXlMaXN0SXRlbSBkaXNwbGF5TGlzdEl0ZW07CisgICAgICAgIHN0ZDo6c2l6
ZV90IHNpemVJbkJ1ZmZlcjsKKyAgICAgICAgYm9vbCBpc0RyYXdpbmdJdGVtOworICAgIH07Cisg
ICAgT3B0aW9uYWw8Q3VycmVudEl0ZW1SZXN1bHQ+IGN1cnJlbnRJdGVtKCkgY29uc3Q7CiAKLSAg
ICBlbnVtIGNsYXNzIEV4dGVudFVwZGF0ZVJlc3VsdCA6IGJvb2wgeyBGYWlsdXJlLCBTdWNjZXNz
IH07Ci0gICAgRXh0ZW50VXBkYXRlUmVzdWx0IHVwZGF0ZUN1cnJlbnREcmF3aW5nSXRlbUV4dGVu
dChJdGVtVHlwZSk7CisgICAgdm9pZCBtb3ZlQ3Vyc29yVG9TdGFydE9mQ3VycmVudEJ1ZmZlcigp
OworICAgIHVpbnQ4X3QqIGVuZE9mQ3VycmVudEJ1ZmZlcigpIGNvbnN0OwogCisjaWYgQVNTRVJU
X0VOQUJMRUQKICAgICBib29sIGF0RW5kKCkgY29uc3Q7CisjZW5kaWYKIAogICAgIEl0ZW1CdWZm
ZXIqIGl0ZW1CdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlMaXN0Lml0ZW1CdWZmZXJJ
ZkV4aXN0cygpOyB9CiAKICAgICBjb25zdCBEaXNwbGF5TGlzdCYgbV9kaXNwbGF5TGlzdDsKKyAg
ICBzdHJ1Y3QgQ3VycmVudEl0ZW1JbmZvIHsKKyAgICAgICAgc3RkOjpzaXplX3Qgc2l6ZUluQnVm
ZmVyOworICAgICAgICBib29sIGlzRHJhd2luZ0l0ZW07CisgICAgfTsKKyAgICBtdXRhYmxlIE9w
dGlvbmFsPEN1cnJlbnRJdGVtSW5mbz4gbV9jdXJyZW50SXRlbUluZm87CiAgICAgdWludDhfdCog
bV9jdXJzb3IgeyBudWxscHRyIH07CiAgICAgc2l6ZV90IG1fcmVhZE9ubHlCdWZmZXJJbmRleCB7
IDAgfTsKICAgICBzaXplX3QgbV9kcmF3aW5nSXRlbUluZGV4IHsgMCB9OwotICAgIHVpbnQ4X3Qq
IG1fY3VycmVudEVuZE9mQnVmZmVyIHsgbnVsbHB0ciB9OwotCi0gICAgdWludDhfdCBtX2ZpeGVk
QnVmZmVyRm9yQ3VycmVudEl0ZW1bc2l6ZU9mRml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbV0geyAw
IH07Ci0gICAgdWludDhfdCogbV9jdXJyZW50QnVmZmVyRm9ySXRlbSB7IG51bGxwdHIgfTsKLSAg
ICBPcHRpb25hbDxGbG9hdFJlY3Q+IG1fY3VycmVudEV4dGVudDsKLSAgICBzaXplX3QgbV9jdXJy
ZW50SXRlbVNpemVJbkJ1ZmZlciB7IDAgfTsKLSAgICBib29sIG1faXNWYWxpZCB7IHRydWUgfTsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCAx
MDdmMjBlYzRmMWM0MTJmODAxZTgyMGMwNGIwNzI4ZjI0ODgzYWEzLi44NjdmNjViNDI4OTg2YWJi
NDM0Y2ZmOGQ5ZjQ3ZmYwYmM3MWY4ODlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVwbGF5ZXIuY3BwCkBAIC01NCw5ICs1NCw4IEBAIEdyYXBoaWNzQ29udGV4dCYgUmVwbGF5ZXI6
OmNvbnRleHQoKSBjb25zdAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lIHN0YXRpYyBP
cHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5SW1hZ2VCdWZmZXJJdGVt
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwJiBpbWFn
ZUJ1ZmZlcnMsIEl0ZW1IYW5kbGUgaXRlbSkKK2lubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseUltYWdlQnVmZmVySXRlbShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCYgaW1hZ2VCdWZmZXJzLCBjb25z
dCBUJiBpbWFnZUJ1ZmZlckl0ZW0pCiB7Ci0gICAgYXV0byYgaW1hZ2VCdWZmZXJJdGVtID0gaXRl
bS5nZXQ8VD4oKTsKICAgICBhdXRvIHJlc291cmNlSWRlbnRpZmllciA9IGltYWdlQnVmZmVySXRl
bS5pbWFnZUJ1ZmZlcklkZW50aWZpZXIoKTsKICAgICBpZiAoYXV0byogaW1hZ2VCdWZmZXIgPSBp
bWFnZUJ1ZmZlcnMuZ2V0KHJlc291cmNlSWRlbnRpZmllcikpIHsKICAgICAgICAgaW1hZ2VCdWZm
ZXJJdGVtLmFwcGx5KGNvbnRleHQsICppbWFnZUJ1ZmZlcik7CkBAIC02Niw5ICs2NSw4IEBAIGlu
bGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseUlt
YWdlQnVmZmVySXRlbShHcmFwaGljCiB9CiAKIHRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUgc3Rh
dGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlOYXRpdmVJbWFn
ZUl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAm
IG5hdGl2ZUltYWdlcywgSXRlbUhhbmRsZSBpdGVtKQoraW5saW5lIHN0YXRpYyBPcHRpb25hbDxS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5TmF0aXZlSW1hZ2VJdGVtKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwJiBuYXRpdmVJbWFnZXMs
IGNvbnN0IFQmIG5hdGl2ZUltYWdlSXRlbSkKIHsKLSAgICBhdXRvJiBuYXRpdmVJbWFnZUl0ZW0g
PSBpdGVtLmdldDxUPigpOwogICAgIGF1dG8gcmVzb3VyY2VJZGVudGlmaWVyID0gbmF0aXZlSW1h
Z2VJdGVtLmltYWdlSWRlbnRpZmllcigpOwogICAgIGlmIChhdXRvKiBpbWFnZSA9IG5hdGl2ZUlt
YWdlcy5nZXQocmVzb3VyY2VJZGVudGlmaWVyKSkgewogICAgICAgICBuYXRpdmVJbWFnZUl0ZW0u
YXBwbHkoY29udGV4dCwgKmltYWdlKTsKQEAgLTc3LDEwICs3NSw4IEBAIGlubGluZSBzdGF0aWMg
T3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseU5hdGl2ZUltYWdlSXRl
bShHcmFwaGljCiAgICAgcmV0dXJuIHJlc291cmNlSWRlbnRpZmllcjsKIH0KIAotaW5saW5lIHN0
YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5U2V0U3RhdGVJ
dGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwJiBu
YXRpdmVJbWFnZXMsIEl0ZW1IYW5kbGUgaXRlbSkKK2lubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseVNldFN0YXRlSXRlbShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzLCBjb25z
dCBTZXRTdGF0ZSYgc2V0U3RhdGVJdGVtKQogewotICAgIGF1dG8mIHNldFN0YXRlSXRlbSA9IGl0
ZW0uZ2V0PFNldFN0YXRlPigpOwotCiAgICAgTmF0aXZlSW1hZ2UqIHN0cm9rZVBhdHRlcm5JbWFn
ZSA9IG51bGxwdHI7CiAgICAgTmF0aXZlSW1hZ2UqIGZpbGxQYXR0ZXJuSW1hZ2UgPSBudWxscHRy
OwogCkBAIC0xMDEsOSArOTcsOCBAQCBpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3JhcGhpY3NDbwogfQogCiB0ZW1w
bGF0ZTxjbGFzcyBUPgotaW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXI+IGFwcGx5Rm9udEl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
b250UmVuZGVyaW5nUmVzb3VyY2VNYXAmIGZvbnRzLCBJdGVtSGFuZGxlIGl0ZW0pCitpbmxpbmUg
c3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlGb250SXRl
bShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnRSZW5kZXJpbmdSZXNvdXJjZU1h
cCYgZm9udHMsIGNvbnN0IFQmIGZvbnRJdGVtKQogewotICAgIGF1dG8mIGZvbnRJdGVtID0gaXRl
bS5nZXQ8VD4oKTsKICAgICBhdXRvIHJlc291cmNlSWRlbnRpZmllciA9IGZvbnRJdGVtLmZvbnRJ
ZGVudGlmaWVyKCk7CiAgICAgaWYgKGF1dG8qIGZvbnQgPSBmb250cy5nZXQocmVzb3VyY2VJZGVu
dGlmaWVyKSkgewogICAgICAgICBmb250SXRlbS5hcHBseShjb250ZXh0LCAqZm9udCk7CkBAIC0x
MTIsNjggKzEwNyw2NSBAQCBpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcj4gYXBwbHlGb250SXRlbShHcmFwaGljc0NvbnRleAogICAgIHJldHVybiByZXNv
dXJjZUlkZW50aWZpZXI7CiB9CiAKLXN0ZDo6cGFpcjxPcHRpb25hbDxTdG9wUmVwbGF5UmVhc29u
PiwgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPj4gUmVwbGF5ZXI6OmFwcGx5
SXRlbShJdGVtSGFuZGxlIGl0ZW0pCitleHRlcm4gR3JhcGhpY3NDb250ZXh0JiBzeW50aGVzaXpl
TFZhbHVlR3JhcGhpY3NDb250ZXh0OwordGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lID0gdm9p
ZD4gc3RhdGljIGlubGluZSBjb25zdGV4cHIgYm9vbCBIYXNBcHBseSA9IGZhbHNlOwordGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RhdGljIGlubGluZSBjb25zdGV4cHIgYm9vbCBIYXNBcHBseTxULCBz
dGQ6OnZvaWRfdDxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VD4oKS5hcHBseShzeW50aGVzaXplTFZh
bHVlR3JhcGhpY3NDb250ZXh0KSk+PiA9IHRydWU7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEl0ZW0+
IHN0YXRpYyBpbmxpbmUgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDwhSGFzQXBwbHk8SXRlbT4s
IHZvaWQ+IGFwcGx5KGNvbnN0IEl0ZW0mLCBHcmFwaGljc0NvbnRleHQmKQoreworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBJdGVtPiBzdGF0aWMgaW5saW5lIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
X3Q8SGFzQXBwbHk8SXRlbT4sIHZvaWQ+IGFwcGx5KGNvbnN0IEl0ZW0mIGl0ZW0sIEdyYXBoaWNz
Q29udGV4dCYgZ3JhcGhpY3NDb250ZXh0KQoreworICAgIHJldHVybiBpdGVtLmFwcGx5KGdyYXBo
aWNzQ29udGV4dCk7Cit9CisKK2F1dG8gUmVwbGF5ZXI6OmFwcGx5SXRlbShjb25zdCBEaXNwbGF5
TGlzdEl0ZW0mIGl0ZW0pIC0+IEFwcGx5SXRlbVJlc3VsdAogewogICAgIGlmIChtX2RlbGVnYXRl
ICYmIG1fZGVsZWdhdGUtPmFwcGx5KGl0ZW0sIGNvbnRleHQoKSkpCiAgICAgICAgIHJldHVybiB7
IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07CiAKLSAgICBpZiAoaXRlbS5pczxEcmF3SW1h
Z2VCdWZmZXI+KCkpIHsKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVtLCBbJl0oY29uc3Qg
RHJhd0ltYWdlQnVmZmVyJiBpdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQgewogICAgICAgICBpZiAo
YXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlJbWFnZUJ1ZmZlckl0
ZW08RHJhd0ltYWdlQnVmZmVyPihjb250ZXh0KCksIG1faW1hZ2VCdWZmZXJzLCBpdGVtKSkKICAg
ICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJj
ZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICBy
ZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwotICAgIH0KLQotICAgIGlmIChp
dGVtLmlzPENsaXBUb0ltYWdlQnVmZmVyPigpKSB7CisgICAgfSwgWyZdKGNvbnN0IENsaXBUb0lt
YWdlQnVmZmVyJiBpdGVtKSAtPiBzdGQ6OnBhaXI8T3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4s
IE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4+IHsKICAgICAgICAgaWYgKGF1
dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5SW1hZ2VCdWZmZXJJdGVt
PENsaXBUb0ltYWdlQnVmZmVyPihjb250ZXh0KCksIG1faW1hZ2VCdWZmZXJzLCBpdGVtKSkKICAg
ICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJj
ZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICBy
ZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwotICAgIH0KLQotICAgIGlmIChp
dGVtLmlzPERyYXdOYXRpdmVJbWFnZT4oKSkgeworICAgIH0sIFsmXShjb25zdCBEcmF3TmF0aXZl
SW1hZ2UmIGl0ZW0pIC0+IEFwcGx5SXRlbVJlc3VsdCB7CiAgICAgICAgIGlmIChhdXRvIG1pc3Np
bmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseU5hdGl2ZUltYWdlSXRlbTxEcmF3TmF0
aXZlSW1hZ2U+KGNvbnRleHQoKSwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0pKQogICAgICAgICAgICAg
cmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3Zl
KG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IFdU
Rjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAgaWYgKGl0ZW0uaXM8RHJh
d0dseXBocz4oKSkgewotICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVu
dGlmaWVyID0gYXBwbHlGb250SXRlbTxEcmF3R2x5cGhzPihjb250ZXh0KCksIG1fZm9udHMsIGl0
ZW0pKQorICAgIH0sIFsmXShjb25zdCBEcmF3UGF0dGVybiYgaXRlbSkgLT4gQXBwbHlJdGVtUmVz
dWx0IHsKKyAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9
IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdQYXR0ZXJuPihjb250ZXh0KCksIG1fbmF0aXZlSW1h
Z2VzLCBpdGVtKSkKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3Np
bmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVy
KSB9OwogICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwotICAg
IH0KLQotICAgIGlmIChpdGVtLmlzPERyYXdQYXR0ZXJuPigpKSB7Ci0gICAgICAgIGlmIChhdXRv
IG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseU5hdGl2ZUltYWdlSXRlbTxE
cmF3UGF0dGVybj4oY29udGV4dCgpLCBtX25hdGl2ZUltYWdlcywgaXRlbSkpCisgICAgfSwgWyZd
KGNvbnN0IERyYXdHbHlwaHMmIGl0ZW0pIC0+IEFwcGx5SXRlbVJlc3VsdCB7CisgICAgICAgIGlm
IChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUZvbnRJdGVtPERy
YXdHbHlwaHM+KGNvbnRleHQoKSwgbV9mb250cywgaXRlbSkpCiAgICAgICAgICAgICByZXR1cm4g
eyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2lu
Z0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKICAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxs
b3B0LCBXVEY6Om51bGxvcHQgfTsKLSAgICB9Ci0KLSAgICBpZiAoaXRlbS5pczxTZXRTdGF0ZT4o
KSkgeworICAgIH0sIFsmXShjb25zdCBTZXRTdGF0ZSYgaXRlbSkgLT4gQXBwbHlJdGVtUmVzdWx0
IHsKICAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFw
cGx5U2V0U3RhdGVJdGVtKGNvbnRleHQoKSwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0pKQogICAgICAg
ICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBX
VEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVy
biB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07Ci0gICAgfQotCi0gICAgaWYgKGl0ZW0u
aXM8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkpIHsKKyAgICB9LCBbJl0oY29uc3QgQmVn
aW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMmIGNsaXBJdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQgewog
ICAgICAgICBpZiAobV9tYXNrSW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9w
UmVwbGF5UmVhc29uOjpJbnZhbGlkSXRlbU9yRXh0ZW50LCBXVEY6Om51bGxvcHQgfTsKLSAgICAg
ICAgYXV0byYgY2xpcEl0ZW0gPSBpdGVtLmdldDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4o
KTsKICAgICAgICAgbV9tYXNrSW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0
aWJsZUJ1ZmZlcihjbGlwSXRlbS5kZXN0aW5hdGlvbigpLnNpemUoKSwgY2xpcEl0ZW0uY29sb3JT
cGFjZSgpLCBtX2NvbnRleHQpOwogICAgICAgICBpZiAoIW1fbWFza0ltYWdlQnVmZmVyKQogICAg
ICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6T3V0T2ZNZW1vcnksIFdURjo6bnVs
bG9wdCB9OwogICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9Owot
ICAgIH0KLQotICAgIGlmIChpdGVtLmlzPEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKSkgewor
ICAgIH0sIFsmXShjb25zdCBFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMmIGNsaXBJdGVtKSAtPiBB
cHBseUl0ZW1SZXN1bHQgewogICAgICAgICBpZiAoIW1fbWFza0ltYWdlQnVmZmVyKQogICAgICAg
ICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6SW52YWxpZEl0ZW1PckV4dGVudCwgV1RG
OjpudWxsb3B0IH07Ci0gICAgICAgIGF1dG8mIGNsaXBJdGVtID0gaXRlbS5nZXQ8RW5kQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzPigpOwogICAgICAgICBtX2NvbnRleHQuY2xpcFRvSW1hZ2VCdWZmZXIo
Km1fbWFza0ltYWdlQnVmZmVyLCBjbGlwSXRlbS5kZXN0aW5hdGlvbigpKTsKICAgICAgICAgbV9t
YXNrSW1hZ2VCdWZmZXIgPSBudWxscHRyOwogICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQs
IFdURjo6bnVsbG9wdCB9OwotICAgIH0KLQotICAgIGl0ZW0uYXBwbHkoY29udGV4dCgpKTsKLSAg
ICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OworICAgIH0sIFsmXShjb25z
dCBhdXRvJiBpdGVtKSAtPiBBcHBseUl0ZW1SZXN1bHQgeworICAgICAgICBhcHBseShpdGVtLCBj
b250ZXh0KCkpOworICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9
OworICAgIH0pOwogfQogCiBSZXBsYXlSZXN1bHQgUmVwbGF5ZXI6OnJlcGxheShjb25zdCBGbG9h
dFJlY3QmIGluaXRpYWxDbGlwLCBib29sIHRyYWNrUmVwbGF5TGlzdCkKQEAgLTE5NSw3ICsxODcs
NyBAQCBSZXBsYXlSZXN1bHQgUmVwbGF5ZXI6OnJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRp
YWxDbGlwLCBib29sIHRyYWNrUmVwbGF5TGlzdAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KIAotICAgICAgICBhdXRvIFtpdGVtLCBleHRlbnQsIGl0ZW1TaXplSW5CdWZmZXJdID0gZGlz
cGxheUxpc3RJdGVtLnZhbHVlKCk7CisgICAgICAgIGNvbnN0IGF1dG8mIFtpdGVtLCBleHRlbnQs
IGl0ZW1TaXplSW5CdWZmZXJdID0gZGlzcGxheUxpc3RJdGVtLnZhbHVlKCk7CiAKICAgICAgICAg
aWYgKCFpbml0aWFsQ2xpcC5pc1plcm8oKSAmJiBleHRlbnQgJiYgIWV4dGVudC0+aW50ZXJzZWN0
cyhpbml0aWFsQ2xpcCkpIHsKICAgICAgICAgICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGlz
dHMsIHN0cmVhbSA8PCAic2tpcHBpbmcgIiA8PCBpKysgPDwgIiAiIDw8IGl0ZW0pOwpAQCAtMjA1
LDEwICsxOTcsMTAgQEAgUmVwbGF5UmVzdWx0IFJlcGxheWVyOjpyZXBsYXkoY29uc3QgRmxvYXRS
ZWN0JiBpbml0aWFsQ2xpcCwgYm9vbCB0cmFja1JlcGxheUxpc3QKIAogICAgICAgICBMT0dfV0lU
SF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwgImFwcGx5aW5nICIgPDwgaSsrIDw8ICIg
IiA8PCBpdGVtKTsKIAotICAgICAgICBpZiAoaXRlbS5pczxNZXRhQ29tbWFuZENoYW5nZURlc3Rp
bmF0aW9uSW1hZ2VCdWZmZXI+KCkpIHsKKyAgICAgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPihpdGVtKSkgewogICAg
ICAgICAgICAgcmVzdWx0Lm51bWJlck9mQnl0ZXNSZWFkICs9IGl0ZW1TaXplSW5CdWZmZXI7CiAg
ICAgICAgICAgICByZXN1bHQucmVhc29uRm9yU3RvcHBpbmcgPSBTdG9wUmVwbGF5UmVhc29uOjpD
aGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOwotICAgICAgICAgICAgcmVzdWx0Lm5leHREZXN0
aW5hdGlvbkltYWdlQnVmZmVyID0gaXRlbS5nZXQ8TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlv
bkltYWdlQnVmZmVyPigpLmlkZW50aWZpZXIoKTsKKyAgICAgICAgICAgIHJlc3VsdC5uZXh0RGVz
dGluYXRpb25JbWFnZUJ1ZmZlciA9IFdURjo6Z2V0PE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRp
b25JbWFnZUJ1ZmZlcj4oaXRlbSkuaWRlbnRpZmllcigpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KIApAQCAtMjIyLDggKzIxNCw4IEBAIFJlcGxheVJlc3VsdCBSZXBsYXllcjo6cmVw
bGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGJvb2wgdHJhY2tSZXBsYXlMaXN0CiAK
ICAgICAgICAgaWYgKFVOTElLRUxZKHRyYWNrUmVwbGF5TGlzdCkpIHsKICAgICAgICAgICAgIHJl
cGxheUxpc3QtPmFwcGVuZChpdGVtKTsKLSAgICAgICAgICAgIGlmIChpdGVtLmlzRHJhd2luZ0l0
ZW0oKSkKLSAgICAgICAgICAgICAgICByZXBsYXlMaXN0LT5hZGREcmF3aW5nSXRlbUV4dGVudChX
VEZNb3ZlKGV4dGVudCkpOworICAgICAgICAgICAgaWYgKGlzRHJhd2luZ0l0ZW0oaXRlbSkpCisg
ICAgICAgICAgICAgICAgcmVwbGF5TGlzdC0+YWRkRHJhd2luZ0l0ZW1FeHRlbnQoT3B0aW9uYWw8
RmxvYXRSZWN0PihleHRlbnQpKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVw
bGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlcGxheWVyLmgKaW5kZXggYWMwZGY2MDYzOTIzYmNhNDI4Yzk2NzIyMzk1MWM4
NWQ1YjkxNWE2ZS4uMTBkZjRhZWIwYmY4ZjE3YTg5NDMxNjVhY2Q1YjlkMWRmM2E3MWI0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVwbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCkBAIC02NiwxMiArNjYsMTMgQEAg
cHVibGljOgogICAgIGNsYXNzIERlbGVnYXRlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1
YWwgfkRlbGVnYXRlKCkgeyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBhcHBseShJdGVtSGFuZGxl
LCBHcmFwaGljc0NvbnRleHQmKSB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIGJv
b2wgYXBwbHkoY29uc3QgRGlzcGxheUxpc3RJdGVtJiwgR3JhcGhpY3NDb250ZXh0JikgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB9OwogICAgIAogcHJpdmF0ZToKICAgICBHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQoKSBjb25zdDsKLSAgICBzdGQ6OnBhaXI8T3B0aW9uYWw8U3RvcFJlcGxheVJlYXNv
bj4sIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4+IGFwcGx5SXRlbShJdGVt
SGFuZGxlKTsKKyAgICB1c2luZyBBcHBseUl0ZW1SZXN1bHQgPSBzdGQ6OnBhaXI8T3B0aW9uYWw8
U3RvcFJlcGxheVJlYXNvbj4sIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4+
OworICAgIEFwcGx5SXRlbVJlc3VsdCBhcHBseUl0ZW0oY29uc3QgRGlzcGxheUxpc3RJdGVtJik7
CiAKICAgICBHcmFwaGljc0NvbnRleHQmIG1fY29udGV4dDsKICAgICBSZWZQdHI8V2ViQ29yZTo6
SW1hZ2VCdWZmZXI+IG1fbWFza0ltYWdlQnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5
RGlzcGxheUxpc3QuY3BwCmluZGV4IDcwNzgxOGIwZTc5ZDVhMDM4NWMwMmI3YzU5ZTVjMzFhNjg3
NDZiMzEuLjNkMmJmNGE0NWRlMDRhZDNjZDAyZTIwYzczNGYwNTViY2YzZTVhZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9y
eURpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5jcHAKQEAgLTQxLDE1ICs0MSwxMiBAQCB2
b2lkIEluTWVtb3J5RGlzcGxheUxpc3Q6OldyaXRpbmdDbGllbnQ6OmVuY29kZUl0ZW1JbmxpbmUo
Y29uc3QgRGlzcGxheUxpc3RJdGVtJgogICAgIHNhZmVDb3B5KHsgbG9jYXRpb24gfSwgZGlzcGxh
eUxpc3RJdGVtKTsKIH0KIAotT3B0aW9uYWw8SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJO
IEluTWVtb3J5RGlzcGxheUxpc3Q6OlJlYWRpbmdDbGllbnQ6OmRlY29kZUl0ZW0oY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIEl0ZW1UeXBlIHR5cGUsIHVpbnQ4X3QqIGhh
bmRsZUxvY2F0aW9uKQorT3B0aW9uYWw8RGlzcGxheUxpc3RJdGVtPiBXQVJOX1VOVVNFRF9SRVRV
Uk4gSW5NZW1vcnlEaXNwbGF5TGlzdDo6UmVhZGluZ0NsaWVudDo6ZGVjb2RlSXRlbShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgSXRlbVR5cGUgdHlwZSkKIHsKICAgICBj
b25zdCBJdGVtSGFuZGxlIGRhdGFIYW5kbGUgeyBjb25zdF9jYXN0PHVpbnQ4X3QqPihkYXRhKSB9
OwogICAgIEFTU0VSVF9VTlVTRUQodHlwZSwgZGF0YUhhbmRsZS50eXBlKCkgPT0gdHlwZSk7CiAg
ICAgQVNTRVJUX1VOVVNFRChkYXRhTGVuZ3RoLCBkYXRhTGVuZ3RoID49IHBhZGRlZFNpemVPZlR5
cGVBbmRJdGVtSW5CeXRlcyhkYXRhSGFuZGxlLnR5cGUoKSkpOwotICAgIEl0ZW1IYW5kbGUgcmVz
dWx0IHsgaGFuZGxlTG9jYXRpb24gfTsKLSAgICBpZiAoZGF0YUhhbmRsZS5zYWZlQ29weShyZXN1
bHQpKQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIHNhZmVDb3B5KGRhdGFIYW5kbGUpOwogfQogCiBJbk1lbW9yeURpc3BsYXlMaXN0
OjpJbk1lbW9yeURpc3BsYXlMaXN0KCkKQEAgLTYyLDEzICs1OSwxMSBAQCBJbk1lbW9yeURpc3Bs
YXlMaXN0OjpJbk1lbW9yeURpc3BsYXlMaXN0KCkKIAogSW5NZW1vcnlEaXNwbGF5TGlzdDo6fklu
TWVtb3J5RGlzcGxheUxpc3QoKQogewotICAgIGF1dG8gZW5kID0gdGhpcy0+ZW5kKCk7CiAgICAg
Zm9yIChhdXRvIGRpc3BsYXlMaXN0SXRlbSA6ICp0aGlzKSB7Ci0gICAgICAgIGF1dG8gaXRlbSA9
IGRpc3BsYXlMaXN0SXRlbS0+aXRlbTsKLSAgICAgICAgQVNTRVJUKGl0ZW0pOwotICAgICAgICBp
ZiAoIWl0ZW0pCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgaXRlbS5kZXN0cm95KCk7Cisg
ICAgICAgIFdURjo6c3dpdGNoT24oZGlzcGxheUxpc3RJdGVtLT5pdGVtLCBbJl0oY29uc3QgYXV0
byYgaXRlbSkgeworICAgICAgICAgICAgdXNpbmcgRGlzcGxheUxpc3RJdGVtVHlwZSA9IHR5cGVu
YW1lIFdURjo6UmVtb3ZlQ1ZBbmRSZWZlcmVuY2U8ZGVjbHR5cGUoaXRlbSk+Ojp0eXBlOworICAg
ICAgICAgICAgaXRlbS5+RGlzcGxheUxpc3RJdGVtVHlwZSgpOworICAgICAgICB9KTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvSW5NZW1vcnlEaXNwbGF5TGlzdC5oCmluZGV4IDFjYzA4YWZh
YmZmMmRhNTdjMWMyZDE4ZDg5NmZkY2Y5NWRjYWEzZDEuLmU3YjhmMThmNDk0N2JjMzgwYzI1MGJl
ZmMzNDQ4OTcxNDgyYmNjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9Jbk1lbW9yeURpc3BsYXlMaXN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0luTWVtb3J5RGlzcGxheUxpc3Qu
aApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgUmVh
ZGluZ0NsaWVudCA6IHB1YmxpYyBJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCB7CiAgICAgICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHByaXZhdGU6Ci0gICAgICAgIE9wdGlvbmFsPEl0
ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqLCBz
aXplX3QsIEl0ZW1UeXBlLCB1aW50OF90KikgZmluYWw7CisgICAgICAgIE9wdGlvbmFsPERpc3Bs
YXlMaXN0SXRlbT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCos
IHNpemVfdCwgSXRlbVR5cGUpIGZpbmFsOwogICAgIH07CiAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCmlu
ZGV4IDRhMDFlZTY3NjlhNjk4YmU1ZTQ3ODA5MmU0OWJiZGE4MWM3NGI5NDguLjYzOTE2MzU5N2Y4
ZDgxMzNlNTVjODNjY2EwMGM3YzFlOTFhZGVmYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCkBAIC03NCwzNSArNzQs
MjggQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgYm9vbCBhcHBseShXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZSBpdGVtLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQpIG92ZXJyaWRlCisgICAgYm9vbCBhcHBseShjb25zdCBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3RJdGVtJiBpdGVtLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBpZiAoaXRlbS5pczxXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6R2V0SW1hZ2VEYXRhPigpKSB7Ci0gICAgICAgICAgICBhdXRvJiBnZXRJbWFnZURh
dGFJdGVtID0gaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkdldEltYWdlRGF0YT4oKTsK
KyAgICAgICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkdldEltYWdlRGF0YSYgZ2V0SW1hZ2VEYXRhSXRlbSkgewogICAgICAg
ICAgICAgYXV0byBpbWFnZURhdGEgPSBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6Z2V0SW1hZ2VE
YXRhKGdldEltYWdlRGF0YUl0ZW0ub3V0cHV0Rm9ybWF0KCksIGdldEltYWdlRGF0YUl0ZW0uc3Jj
UmVjdCgpKTsKICAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5wb3B1bGF0ZUdl
dEltYWdlRGF0YVNoYXJlZE1lbW9yeShpbWFnZURhdGEuZ2V0KCkpOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaXRlbS5pczxXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UHV0SW1hZ2VEYXRhPigpKSB7Ci0gICAgICAgICAgICBhdXRvJiBwdXRJbWFnZURh
dGFJdGVtID0gaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlB1dEltYWdlRGF0YT4oKTsK
KyAgICAgICAgfSwgWyZdKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQdXRJbWFnZURhdGEm
IHB1dEltYWdlRGF0YUl0ZW0pIHsKICAgICAgICAgICAgIHB1dEltYWdlRGF0YShwdXRJbWFnZURh
dGFJdGVtLmlucHV0Rm9ybWF0KCksIHB1dEltYWdlRGF0YUl0ZW0uaW1hZ2VEYXRhKCksIHB1dElt
YWdlRGF0YUl0ZW0uc3JjUmVjdCgpLCBwdXRJbWFnZURhdGFJdGVtLmRlc3RQb2ludCgpLCBwdXRJ
bWFnZURhdGFJdGVtLmRlc3RGb3JtYXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGlmIChpdGVtLmlzPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVz
aENvbnRleHQ+KCkpIHsKKyAgICAgICAgfSwgWyZdKGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpGbHVzaENvbnRleHQmIGZsdXNoQ29udGV4dCkgewogICAgICAgICAgICAgQmFzZUNvbmNyZXRl
SW1hZ2VCdWZmZXI6OmZsdXNoQ29udGV4dCgpOwotICAgICAgICAgICAgYXV0byBpZGVudGlmaWVy
ID0gaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoQ29udGV4dD4oKS5pZGVudGlm
aWVyKCk7CisgICAgICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBmbHVzaENvbnRleHQuaWRlbnRp
ZmllcigpOwogICAgICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmRpZEZsdXNoKGlk
ZW50aWZpZXIsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGl0ZW0uaXM8V2ViQ29yZTo6RGlz
cGxheUxpc3Q6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcj4oKSkgewotICAgICAgICAgICAg
YXV0byBuZXh0QnVmZmVySWRlbnRpZmllciA9IGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI+KCkuaWRlbnRpZmllcigpOworICAgICAgICB9
LCBbJl0oY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1
ZmZlciYgbWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyKSB7CisgICAgICAgICAgICBhdXRvIG5l
eHRCdWZmZXJJZGVudGlmaWVyID0gbWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyLmlkZW50aWZp
ZXIoKTsKICAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5zZXROZXh0SXRlbUJ1
ZmZlclRvUmVhZChuZXh0QnVmZmVySWRlbnRpZmllciwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICBy
ZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmFwcGx5TWVkaWFJdGVtKGl0ZW0sIGNvbnRl
eHQpOworICAgICAgICB9LCBbJl0oY29uc3QgYXV0byYgaXRlbSkgeworICAgICAgICAgICAgcmV0
dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5hcHBseU1lZGlhSXRlbShpdGVtLCBjb250ZXh0
KTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIGl0ZW0p
OwogICAgIH0KIAogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCBjNTM0MzE2ZjhkYjdlMzI0MTA0
OGRiNDJjY2U5YTNiN2RlMGY0NDYzLi4wMTJjNDYwNDM2ZWNiNDNlZmE0MTZkZGI1ZTVkMDdjZWU3
Y2Q0MDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5j
bHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCIKKyNpbmNsdWRlIDx3dGYvQnJpZ2FuZC5oPgogI2luY2x1ZGUgPHd0Zi9DaGVj
a2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRl
IDx3dGYvU3lzdGVtVHJhY2luZy5oPgpAQCAtMTE2LDIwICsxMTcsMTggQEAgdWludDY0X3QgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAog
ICAgIHJldHVybiBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyLnRvVUludDY0KCk7CiB9CiAK
LWJvb2wgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6YXBwbHlNZWRpYUl0ZW0oRGlzcGxheUxpc3Q6
Okl0ZW1IYW5kbGUgaXRlbSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQorYm9vbCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjphcHBseU1lZGlhSXRlbShjb25zdCBEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3RJdGVtJiBpdGVtLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBpZiAoIWl0ZW0uaXM8RGlzcGxheUxpc3Q6OlBh
aW50RnJhbWVGb3JNZWRpYT4oKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byYg
bWVkaWFJdGVtID0gaXRlbS5nZXQ8RGlzcGxheUxpc3Q6OlBhaW50RnJhbWVGb3JNZWRpYT4oKTsK
LSAgICBhdXRvIHBsYXllciA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+cmVtb3RlTWVk
aWFQbGF5ZXJNYW5hZ2VyUHJveHkoKS5tZWRpYVBsYXllcihtZWRpYUl0ZW0uaWRlbnRpZmllcigp
KTsKLSAgICBpZiAoIXBsYXllcikKKyAgICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9y
KFsmXShjb25zdCBEaXNwbGF5TGlzdDo6UGFpbnRGcmFtZUZvck1lZGlhJiBtZWRpYUl0ZW0pIHsK
KyAgICAgICAgaWYgKGF1dG8gcGxheWVyID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5y
ZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpLm1lZGlhUGxheWVyKG1lZGlhSXRlbS5pZGVu
dGlmaWVyKCkpKQorICAgICAgICAgICAgY29udGV4dC5wYWludEZyYW1lRm9yTWVkaWEoKnBsYXll
ciwgbWVkaWFJdGVtLmRlc3RpbmF0aW9uKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAg
IGNvbnRleHQucGFpbnRGcmFtZUZvck1lZGlhKCpwbGF5ZXIsIG1lZGlhSXRlbS5kZXN0aW5hdGlv
bigpKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LCBbXShjb25zdCBhdXRvJiBpdGVtKSB7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9KTsKKyAgICByZXR1cm4gV1RGOjp2aXNpdCh2aXNp
dG9yLCBpdGVtKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRDcmVhdGVJ
bWFnZUJ1ZmZlckJhY2tlbmQoSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGhhbmRsZSwgUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKQEAgLTE4
NSw3ICsxODQsNyBAQCBEaXNwbGF5TGlzdDo6UmVwbGF5UmVzdWx0IFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OnN1Ym1pdChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcAogICAgIGVsc2UKICAgICAgICAg
cmVwbGF5ZXJEZWxlZ2F0ZSA9IHN0YXRpY19jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1
ZmZlcio+KCZkZXN0aW5hdGlvbik7CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlcGxheWVyIHsKKyAgICByZXR1cm4gRGlzcGxheUxpc3Q6OlJlcGxheWVyIHsKICAgICAgICAg
ZGVzdGluYXRpb24uY29udGV4dCgpLAogICAgICAgICBkaXNwbGF5TGlzdCwKICAgICAgICAgJnJl
bW90ZVJlc291cmNlQ2FjaGUoKS5pbWFnZUJ1ZmZlcnMoKSwKQEAgLTQ4OCwxMDYgKzQ4NywyNyBA
QCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0
SGFuZGxlKERpc3BsYXlMaXN0OjpJdGVtQgogICAgICAgICB3YWtlVXBBbmRBcHBseURpc3BsYXlM
aXN0KHN0ZDo6ZXhjaGFuZ2UobV9wZW5kaW5nV2FrZXVwSW5mbywgV1RGOjpudWxsb3B0KS0+YXJn
dW1lbnRzKTsKIH0KIAotT3B0aW9uYWw8RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVU5V
U0VEX1JFVFVSTiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIERpc3BsYXlMaXN0OjpJdGVtVHlwZSB0eXBlLCB1aW50
OF90KiBoYW5kbGVMb2NhdGlvbikKLXsKLSAgICAvKiBUaGlzIG5lZWRzIHRvIG1hdGNoICgxKSBp
c0lubGluZUl0ZW0oKSBpbiBEaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcCwgKDIpIFJlbW90ZUltYWdl
QnVmZmVyUHJveHk6OmVuY29kZUl0ZW0oKSwKLSAgICAgKiBhbmQgKDMpIGFsbCB0aGUgInN0YXRp
YyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0icyBpbnNpZGUgdGhlIGluZGl2aWR1YWwgaXRl
bSBjbGFzc2VzLgotICAgICAqIFNlZSB0aGUgY29tbWVudCBhdCB0aGUgdG9wIG9mIERpc3BsYXlM
aXN0SXRlbXMuaCBmb3Igd2h5LiAqLwotCi0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6Ci0gICAgICAgIHJldHVybiBkZWNv
ZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkNsaXBPdXRUb1BhdGg+KGRhdGEsIGxlbmd0aCwgaGFu
ZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwUGF0aDoK
LSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6Q2xpcFBhdGg+KGRh
dGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxE
aXNwbGF5TGlzdDo6RHJhd0ZvY3VzUmluZ1BhdGg+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRp
b24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVjdHM6
Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkRyYXdGb2N1c1Jp
bmdSZWN0cz4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkRyYXdHbHlwaHM6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVh
dGU8RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHM+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24p
OwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OgotICAg
ICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpEcmF3TGluZXNGb3JUZXh0
PihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6RHJhd1BhdGg6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxh
eUxpc3Q6OkRyYXdQYXRoPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNl
IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0OgotICAgICAgICByZXR1
cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpGaWxsQ29tcG9zaXRlZFJlY3Q+KGRhdGEs
IGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpGaWxsUGF0aDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6
RmlsbFBhdGg+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcjoKLSAgICAgICAgcmV0dXJuIGRlY29k
ZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RmlsbFJlY3RXaXRoQ29sb3I+KGRhdGEsIGxlbmd0aCwg
aGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUmVj
dFdpdGhHcmFkaWVudDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlz
dDo6RmlsbFJlY3RXaXRoR3JhZGllbnQ+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwot
ICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZToK
LSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RmlsbFJlY3RXaXRo
Um91bmRlZEhvbGU+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwotICAgIGNhc2UgRGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUm91bmRlZFJlY3Q6Ci0gICAgICAgIHJldHVybiBkZWNv
ZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkZpbGxSb3VuZGVkUmVjdD4oZGF0YSwgbGVuZ3RoLCBo
YW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlB1dEltYWdl
RGF0YToKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6UHV0SW1h
Z2VEYXRhPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6U2V0TGluZURhc2g6Ci0gICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVh
dGU8RGlzcGxheUxpc3Q6OlNldExpbmVEYXNoPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9u
KTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0U3RhdGU6Ci0gICAgICAgIHJl
dHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OlNldFN0YXRlPihkYXRhLCBsZW5ndGgs
IGhhbmRsZUxvY2F0aW9uKTsKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tl
UGF0aDoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6U3Ryb2tl
UGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OkFwcGx5RGV2aWNlU2NhbGVGYWN0b3I6Ci0jaWYgVVNFKENHKQotICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpBcHBseUZpbGxQYXR0ZXJuOgotICAgIGNhc2UgRGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm46Ci0jZW5kaWYKLSAgICBjYXNl
IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lMYXllcjoKLSAgICBjYXNl
IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xlYXJSZWN0OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpDbGVhclNoYWRvdzoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
Q2xpcDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcE91dDoKLSAgICBjYXNl
IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAgY2FzZSBEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgIGNhc2Ug
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgY2Fz
ZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgotICAgIGNhc2UgRGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgotICAgIGNhc2UgRGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpEcmF3TmF0aXZlSW1hZ2U6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdQ
YXR0ZXJuOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TGluZToKLSAgICBj
YXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1JlY3Q6Ci0gICAgY2FzZSBEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxheWVyOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKLSNpZiBFTkFCTEUoSU5MSU5FX1BBVEhfREFUQSkKLSAg
ICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbElubGluZVBhdGg6Ci0jZW5kaWYKLSAg
ICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFJlY3Q6Ci0gICAgY2FzZSBEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkZsdXNoQ29udGV4dDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOgotICAgIGNhc2Ug
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI6Ci0jaWYg
RU5BQkxFKFZJREVPKQotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpQYWludEZyYW1l
Rm9yTWVkaWE6Ci0jZW5kaWYKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UmVzdG9y
ZToKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Um90YXRlOgotICAgIGNhc2UgRGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpTYXZlOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpTY2FsZToKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0Q1RNOgotICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsQ29sb3I6Ci0gICAgY2FzZSBE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldElubGluZUZpbGxHcmFkaWVudDoKLSAgICBjYXNlIERp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0SW5saW5lU3Ryb2tlQ29sb3I6Ci0gICAgY2FzZSBEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OlNldExpbmVDYXA6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OlNldExpbmVKb2luOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRN
aXRlckxpbWl0OgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRTdHJva2VUaGlj
a25lc3M6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6Ci0j
aWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OlN0cm9rZUlubGluZVBhdGg6Ci0jZW5kaWYKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6U3Ryb2tlUmVjdDoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tl
TGluZToKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6VHJhbnNsYXRlOgotICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpHZXRJbWFnZURhdGE6IHsKLSAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICB9Ci0gICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK09wdGlvbmFsPERpc3Bs
YXlMaXN0OjpEaXNwbGF5TGlzdEl0ZW0+IFdBUk5fVU5VU0VEX1JFVFVSTiBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgs
IERpc3BsYXlMaXN0OjpJdGVtVHlwZSBpdGVtVHlwZSkKK3sKKyAgICB1c2luZyBTZXF1ZW5jZSA9
IGJyaWdhbmQ6Om1ha2Vfc2VxdWVuY2U8YnJpZ2FuZDo6cHRyZGlmZl90PDA+LCBXVEY6OnZhcmlh
bnRfc2l6ZTxEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3RJdGVtPjo6dmFsdWU+OworCisgICAgT3B0
aW9uYWw8RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0SXRlbT4gcmVzdWx0OworICAgIGJyaWdhbmQ6
OmZvcl9lYWNoPFNlcXVlbmNlPihbJl0oYXV0byYmIHR5cGUpIHsKKyAgICAgICAgdXNpbmcgSSA9
IHR5cGVuYW1lIFdURjo6UmVtb3ZlQ1ZBbmRSZWZlcmVuY2U8ZGVjbHR5cGUodHlwZSk+Ojp0eXBl
Ojp0eXBlOworICAgICAgICB1c2luZyBEaXNwbGF5TGlzdEl0ZW1UeXBlID0gV1RGOjp2YXJpYW50
X2FsdGVybmF0aXZlX3Q8STo6dmFsdWUsIERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdEl0ZW0+Owor
CisgICAgICAgIGlmIChpdGVtVHlwZSAhPSBEaXNwbGF5TGlzdEl0ZW1UeXBlOjppdGVtVHlwZSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBBU1NFUlQoIURpc3BsYXlMaXN0SXRlbVR5
cGU6OmlzSW5saW5lSXRlbSk7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoIURpc3BsYXlMaXN0SXRl
bVR5cGU6OmlzSW5saW5lSXRlbSkgeworICAgICAgICAgICAgaWYgKGF1dG8gZGlzcGxheUxpc3RJ
dGVtID0gSVBDOjpEZWNvZGVyOjpkZWNvZGVTaW5nbGVPYmplY3Q8RGlzcGxheUxpc3RJdGVtVHlw
ZT4oZGF0YSwgbGVuZ3RoKSkgeworICAgICAgICAgICAgICAgIEFTU0VSVCghcmVzdWx0KTsKKyAg
ICAgICAgICAgICAgICByZXN1bHQgPSB7IFdURk1vdmUoZGlzcGxheUxpc3RJdGVtLnZhbHVlKCkp
IH07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9KTsKKyAgICByZXR1cm4gcmVzdWx0
OwogfQogCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnVwZGF0ZVJlbmRlcmluZ1Jlc291
cmNlUmVxdWVzdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCA0ZTQ4OWY0ZTQ4MDU0MzUyYzZl
MTgxODhiZWM5Y2VmZTliNDgxZmNkLi4yODE3MTI1ODQzNzlkN2YzOTIxYWMwOGM0NWRiMWZmNDM3
NDNmNzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgog
ICAgIFJlbW90ZVJlc291cmNlQ2FjaGUmIHJlbW90ZVJlc291cmNlQ2FjaGUoKSB7IHJldHVybiBt
X3JlbW90ZVJlc291cmNlQ2FjaGU7IH0KIAogICAgIC8vIFJlbmRlcmluZyBvcGVyYXRpb25zLgot
ICAgIGJvb2wgYXBwbHlNZWRpYUl0ZW0oV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGUs
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpOworICAgIGJvb2wgYXBwbHlNZWRpYUl0ZW0oY29u
c3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0SXRlbSYsIFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dCYpOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgc2VudC4KICAgICB2b2lkIGRp
ZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUsIFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CkBAIC05MiwxOSArOTIsNyBAQCBwcml2
YXRlOgogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAgICAgdm9p
ZCBzdGFydExpc3RlbmluZ0ZvcklQQygpOwogCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24pIG92ZXJyaWRlOwotCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KLSAgICBPcHRpb25hbDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4g
V0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUFuZENyZWF0ZShjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3QgbGVuZ3RoLCB1aW50OF90KiBoYW5kbGVMb2NhdGlvbikKLSAgICB7Ci0gICAgICAgIGlm
IChhdXRvIGl0ZW0gPSBJUEM6OkRlY29kZXI6OmRlY29kZVNpbmdsZU9iamVjdDxUPihkYXRhLCBs
ZW5ndGgpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogV2ViS2l0MiBzaG91bGQgbm90IG5lZWQg
dG8ga25vdyB0aGF0IHRoZSBmaXJzdCA4IGJ5dGVzIGF0IHRoZSBoYW5kbGUgYXJlIHJlc2VydmVk
IGZvciB0aGUgdHlwZS4KLSAgICAgICAgICAgIC8vIE5lZWQgdG8gZmlndXJlIG91dCBhIHdheSB0
byBrZWVwIHRoaXMga25vd2xlZGdlIHdpdGhpbiBkaXNwbGF5IGxpc3QgY29kZSBpbiBXZWJDb3Jl
LgotICAgICAgICAgICAgbmV3IChoYW5kbGVMb2NhdGlvbiArIHNpemVvZih1aW50NjRfdCkpIFQo
V1RGTW92ZSgqaXRlbSkpOwotICAgICAgICAgICAgcmV0dXJuIHt7IGhhbmRsZUxvY2F0aW9uIH19
OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgfQorICAgIE9w
dGlvbmFsPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdEl0ZW0+IFdBUk5fVU5VU0VE
X1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZSkgb3ZlcnJpZGU7CiAKICAgICBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVwbGF5UmVzdWx0IHN1Ym1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgZGVzdGluYXRpb24pOwogICAg
IFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gbmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJB
ZnRlckFwcGx5aW5nRGlzcGxheUxpc3RzKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbml0aWFsRGVz
dGluYXRpb24sIHNpemVfdCBpbml0aWFsT2Zmc2V0LCBEaXNwbGF5TGlzdFJlYWRlckhhbmRsZSYs
IEdQVVByb2Nlc3NXYWtldXBSZWFzb24pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGYyYjRiNGNmM2NiN2QzMWIyN2Y0MmRiNzcwNTQzZTVjYjlh
YjBhYTQuLjhiNjkwYmUzODYyYjczYzFmMjM2NjM4NWQ4YTc5MmIyZmQ1OWMxOWIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAyMS0wNS0wOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgor
CisgICAgICAgIFtHUFUgUHJvY2Vzc10gU2ltcGxpZnkgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yIHBh
cnQgOTogTWlncmF0ZSBEaXNwbGF5TGlzdDo6SXRlcmF0b3IncyBBUEkgdG8gdXNlIERpc3BsYXlM
aXN0SXRlbSByYXRoZXIgdGhhbiBJdGVtSGFuZGxlLCBhbmQgdXBkYXRlIGNhbGxlcnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTU4MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKwogMjAyMS0wNS0wOSAgS2hlbSBSYWogIDxyYWoua2hlbUBnbWFpbC5jb20+CiAK
ICAgICAgICAgW1Rvb2xzXSBHZW5lcmF0ZSBtYXJzaGFsbGluZyBjb2RlIHdpdGhvdXQgc291cmNl
IHJlZmVyZW5jZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0Rpc3BsYXlMaXN0VGVzdHMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0Rpc3BsYXlMaXN0VGVzdHMuY3BwCmluZGV4IGJjN2E4NDlhZDc0ZTRhNjQzNTg4MTk0NzhmZTQz
ODM1NzFlODc1MmEuLmNmYTAzMzhmMWY3YjM5ODFmYzg3ZjIxOWJjNGMwZGUxM2VmNDEwZWEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRl
c3RzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxp
c3RUZXN0cy5jcHAKQEAgLTgwLDU3ICs4MCwzNSBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIEFw
cGVuZEl0ZW1zKQogICAgIEVYUEVDVF9GQUxTRShsaXN0LmlzRW1wdHkoKSk7CiAKICAgICBib29s
IG9ic2VydmVkVW5leHBlY3RlZEl0ZW0gPSBmYWxzZTsKLSAgICBmb3IgKGF1dG8gZGlzcGxheUxp
c3RJdGVtIDogbGlzdCkgewotICAgICAgICBhdXRvIGhhbmRsZSA9IGRpc3BsYXlMaXN0SXRlbS0+
aXRlbTsKLSAgICAgICAgc3dpdGNoIChoYW5kbGUudHlwZSgpKSB7Ci0gICAgICAgIGNhc2UgSXRl
bVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczogewotICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGhh
bmRsZS5pc0RyYXdpbmdJdGVtKCkpOwotICAgICAgICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLmlz
PFNldFN0cm9rZVRoaWNrbmVzcz4oKSk7Ci0gICAgICAgICAgICBhdXRvJiBpdGVtID0gaGFuZGxl
LmdldDxTZXRTdHJva2VUaGlja25lc3M+KCk7CisgICAgZm9yIChjb25zdCBhdXRvJiBkaXNwbGF5
TGlzdEl0ZW0gOiBsaXN0KSB7CisgICAgICAgIGNvbnN0IGF1dG8mIFtpdGVtLCBleHRlbnQsIHNp
emVdID0gZGlzcGxheUxpc3RJdGVtLnZhbHVlKCk7CisKKyAgICAgICAgYXV0byB2aXNpdG9yID0g
V1RGOjptYWtlVmlzaXRvcihbJl0oY29uc3QgU2V0U3Ryb2tlVGhpY2tuZXNzJiBpdGVtKSB7Cisg
ICAgICAgICAgICBFWFBFQ1RfRkFMU0UoaXRlbS5pc0RyYXdpbmdJdGVtKTsKICAgICAgICAgICAg
IEVYUEVDVF9FUShpdGVtLnRoaWNrbmVzcygpLCAxLjUpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbFBhdGg6IHsKLSAgICAgICAgICAg
IEVYUEVDVF9UUlVFKGhhbmRsZS5pc0RyYXdpbmdJdGVtKCkpOwotICAgICAgICAgICAgRVhQRUNU
X1RSVUUoaGFuZGxlLmlzPEZpbGxQYXRoPigpKTsKLSAgICAgICAgICAgIGF1dG8mIGl0ZW0gPSBo
YW5kbGUuZ2V0PEZpbGxQYXRoPigpOworICAgICAgICB9LCBbJl0oY29uc3QgRmlsbFBhdGgmIGl0
ZW0pIHsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGl0ZW0uaXNEcmF3aW5nSXRlbSk7CiAgICAg
ICAgICAgICBFWFBFQ1RfRVEoaXRlbS5wYXRoKCkucGxhdGZvcm1QYXRoKCksIHBhdGgucGxhdGZv
cm1QYXRoKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJ
dGVtVHlwZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQ6IHsKLSAgICAgICAgICAgIEVYUEVDVF9UUlVF
KGhhbmRsZS5pc0RyYXdpbmdJdGVtKCkpOwotICAgICAgICAgICAgRVhQRUNUX1RSVUUoaGFuZGxl
LmlzPEZpbGxSZWN0V2l0aEdyYWRpZW50PigpKTsKLSAgICAgICAgICAgIGF1dG8mIGl0ZW0gPSBo
YW5kbGUuZ2V0PEZpbGxSZWN0V2l0aEdyYWRpZW50PigpOworICAgICAgICB9LCBbJl0oY29uc3Qg
RmlsbFJlY3RXaXRoR3JhZGllbnQmIGl0ZW0pIHsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGl0
ZW0uaXNEcmF3aW5nSXRlbSk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoaXRlbS5yZWN0KCksIEZs
b2F0UmVjdCgxLiwgMS4sIDEwLiwgMTAuKSk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoJml0ZW0u
Z3JhZGllbnQoKSwgZ3JhZGllbnQucHRyKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbENvbG9yOiB7Ci0gICAgICAg
ICAgICBFWFBFQ1RfRkFMU0UoaGFuZGxlLmlzRHJhd2luZ0l0ZW0oKSk7Ci0gICAgICAgICAgICBF
WFBFQ1RfVFJVRShoYW5kbGUuaXM8U2V0SW5saW5lRmlsbENvbG9yPigpKTsKLSAgICAgICAgICAg
IGF1dG8mIGl0ZW0gPSBoYW5kbGUuZ2V0PFNldElubGluZUZpbGxDb2xvcj4oKTsKKyAgICAgICAg
fSwgWyZdKGNvbnN0IFNldElubGluZUZpbGxDb2xvciYgaXRlbSkgeworICAgICAgICAgICAgRVhQ
RUNUX0ZBTFNFKGl0ZW0uaXNEcmF3aW5nSXRlbSk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoaXRl
bS5jb2xvcigpLCBDb2xvcjo6cmVkKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CiAj
aWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9r
ZUlubGluZVBhdGg6IHsKLSAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhhbmRsZS5pc0RyYXdpbmdJ
dGVtKCkpOwotICAgICAgICAgICAgRVhQRUNUX1RSVUUoaGFuZGxlLmlzPFN0cm9rZUlubGluZVBh
dGg+KCkpOwotICAgICAgICAgICAgYXV0byYgaXRlbSA9IGhhbmRsZS5nZXQ8U3Ryb2tlSW5saW5l
UGF0aD4oKTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IFN0cm9rZUlubGluZVBhdGgmIGl0ZW0pIHsK
KyAgICAgICAgICAgIEVYUEVDVF9UUlVFKGl0ZW0uaXNEcmF3aW5nSXRlbSk7CiAgICAgICAgICAg
ICBjb25zdCBhdXRvIHBhdGggPSBpdGVtLnBhdGgoKTsKICAgICAgICAgICAgIGF1dG8mIGxpbmUg
PSBwYXRoLmlubGluZURhdGE8TGluZURhdGE+KCk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEobGlu
ZS5zdGFydCwgRmxvYXRQb2ludCgwLCAwKSk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEobGluZS5l
bmQsIEZsb2F0UG9pbnQoMTAuLCAxNS4pKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
CiAjZW5kaWYKLSAgICAgICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVm
ZmVyOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgfSwg
WyZdKGNvbnN0IE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlciYpIHsKKyAgICAgICAgfSwgWyZd
KGNvbnN0IGF1dG8mKSB7CiAgICAgICAgICAgICBvYnNlcnZlZFVuZXhwZWN0ZWRJdGVtID0gdHJ1
ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgfSk7
CisgICAgICAgIFdURjo6dmlzaXQodmlzaXRvciwgaXRlbSk7CiAgICAgfQogCiAgICAgRVhQRUNU
X0ZBTFNFKG9ic2VydmVkVW5leHBlY3RlZEl0ZW0pOwpAQCAtMTUwLDEyICsxMjgsMTEgQEAgVEVT
VChEaXNwbGF5TGlzdFRlc3RzLCBBcHBlbmRJdGVtcykKIAogICAgIGxpc3QuYXBwZW5kPEZpbGxS
ZWN0V2l0aENvbG9yPihGbG9hdFJlY3QgeyAwLCAwLCAxMDAsIDEwMCB9LCBDb2xvcjo6YmxhY2sp
OwogCi0gICAgZm9yIChhdXRvIGRpc3BsYXlMaXN0SXRlbSA6IGxpc3QpIHsKLSAgICAgICAgYXV0
byBoYW5kbGUgPSBkaXNwbGF5TGlzdEl0ZW0tPml0ZW07Ci0gICAgICAgIEVYUEVDVF9FUShoYW5k
bGUudHlwZSgpLCBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoQ29sb3IpOwotICAgICAgICBFWFBFQ1Rf
VFJVRShoYW5kbGUuaXM8RmlsbFJlY3RXaXRoQ29sb3I+KCkpOworICAgIGZvciAoY29uc3QgYXV0
byYgZGlzcGxheUxpc3RJdGVtIDogbGlzdCkgeworICAgICAgICBFWFBFQ1RfVFJVRShXVEY6Omhv
bGRzX2FsdGVybmF0aXZlPEZpbGxSZWN0V2l0aENvbG9yPihkaXNwbGF5TGlzdEl0ZW0tPml0ZW0p
KTsKKyAgICAgICAgY29uc3QgYXV0byYgaXRlbSA9IFdURjo6Z2V0PEZpbGxSZWN0V2l0aENvbG9y
PihkaXNwbGF5TGlzdEl0ZW0tPml0ZW0pOworICAgICAgICBFWFBFQ1RfRVEoaXRlbS5pdGVtVHlw
ZSwgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yKTsKIAotICAgICAgICBhdXRvJiBpdGVtID0g
aGFuZGxlLmdldDxGaWxsUmVjdFdpdGhDb2xvcj4oKTsKICAgICAgICAgRVhQRUNUX0VRKCppdGVt
LmNvbG9yKCkudHJ5R2V0QXNTUkdCQUJ5dGVzKCksIENvbG9yOjpibGFjayk7CiAgICAgICAgIEVY
UEVDVF9FUShpdGVtLnJlY3QoKSwgRmxvYXRSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CiAgICAgfQpA
QCAtMTc3LDEyICsxNTQsMTEgQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBJdGVtQnVmZmVyQ2xp
ZW50KQogICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBPcHRpb25hbDxJdGVtSGFu
ZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2RlSXRlbShjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3QgZGF0YUxlbmd0aCwgSXRlbVR5cGUgdHlwZSwgdWludDhfdCogaGFuZGxlTG9jYXRpb24p
IGZpbmFsCisgICAgICAgIE9wdGlvbmFsPERpc3BsYXlMaXN0SXRlbT4gV0FSTl9VTlVTRURfUkVU
VVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIEl0
ZW1UeXBlIHR5cGUpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIEVYUEVDVF9FUSh0eXBl
LCBJdGVtVHlwZTo6U3Ryb2tlUGF0aCk7CiAgICAgICAgICAgICBFWFBFQ1RfRVEoZGF0YUxlbmd0
aCwgc2l6ZW9mKHNpemVfdCkpOwotICAgICAgICAgICAgbmV3IChoYW5kbGVMb2NhdGlvbiArIHNp
emVvZih1aW50NjRfdCkpIFN0cm9rZVBhdGgobV9pdGVtc1sqcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBzaXplX3QqPihkYXRhKV0pOwotICAgICAgICAgICAgcmV0dXJuIHt7IGhhbmRsZUxvY2F0aW9u
IH19OworICAgICAgICAgICAgcmV0dXJuIERpc3BsYXlMaXN0SXRlbShTdHJva2VQYXRoKG1faXRl
bXNbKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgc2l6ZV90Kj4oZGF0YSldKSk7CiAgICAgICAgIH0K
IAogICAgICAgICBjb25zdCBWZWN0b3I8U3Ryb2tlUGF0aD4mIG1faXRlbXM7CkBAIC0xOTgsNyAr
MTc0LDcgQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBJdGVtQnVmZmVyQ2xpZW50KQogICAgIHBy
aXZhdGU6CiAgICAgICAgIEl0ZW1CdWZmZXJIYW5kbGUgY3JlYXRlSXRlbUJ1ZmZlcihzaXplX3Qg
Y2FwYWNpdHkpIGZpbmFsCiAgICAgICAgIHsKLSAgICAgICAgICAgIEVYUEVDVF9MVChjYXBhY2l0
eSwgZ2xvYmFsSXRlbUJ1ZmZlckNhcGFjaXR5KTsKKyAgICAgICAgICAgIEVYUEVDVF9MRShjYXBh
Y2l0eSwgZ2xvYmFsSXRlbUJ1ZmZlckNhcGFjaXR5KTsKICAgICAgICAgICAgIHJldHVybiB7IGds
b2JhbEJ1ZmZlcklkZW50aWZpZXIsIGdsb2JhbEl0ZW1CdWZmZXIsIGdsb2JhbEl0ZW1CdWZmZXJD
YXBhY2l0eSB9OwogICAgICAgICB9CiAKQEAgLTIyNyw4ICsyMDMsOCBAQCBURVNUKERpc3BsYXlM
aXN0VGVzdHMsIEl0ZW1CdWZmZXJDbGllbnQpCiAgICAgc2hhbGxvd0NvcHkuc2V0SXRlbUJ1ZmZl
clJlYWRpbmdDbGllbnQoJnJlYWRlcik7CiAKICAgICBWZWN0b3I8SXRlbVR5cGU+IGl0ZW1UeXBl
czsKLSAgICBmb3IgKGF1dG8gZGlzcGxheUxpc3RJdGVtIDogc2hhbGxvd0NvcHkpCi0gICAgICAg
IGl0ZW1UeXBlcy5hcHBlbmQoZGlzcGxheUxpc3RJdGVtLT5pdGVtLnR5cGUoKSk7CisgICAgZm9y
IChjb25zdCBhdXRvJiBkaXNwbGF5TGlzdEl0ZW0gOiBzaGFsbG93Q29weSkKKyAgICAgICAgaXRl
bVR5cGVzLmFwcGVuZChkaXNwbGF5TGlzdEl0ZW1UeXBlKGRpc3BsYXlMaXN0SXRlbS0+aXRlbSkp
OwogCiAgICAgRVhQRUNUX0ZBTFNFKHNoYWxsb3dDb3B5LmlzRW1wdHkoKSk7CiAgICAgRVhQRUNU
X0VRKGl0ZW1UeXBlcy5zaXplKCksIDRVKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKaW5kZXggNDFh
YzM5ZTUzNmQ4ODc2ZWI2ZGZlYmYyMzNiOTY2MzVjMTQwODkwMC4uMmI2NTliNmY3YjJlZDZlOGUz
MTgwMTFkODc5YjA0NTlhNmVhYmMzZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKQEAgLTg1LDcg
Kzg1LDcgQEAgc3RhdGljIEl0ZW1CdWZmZXJJZGVudGlmaWVyIGdsb2JhbEJ1ZmZlcklkZW50aWZp
ZXIgPSBJdGVtQnVmZmVySWRlbnRpZmllcjo6Z2VuZXIKIAogY2xhc3MgUmVhZGluZ0NsaWVudCA6
IHB1YmxpYyBJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCB7CiBwcml2YXRlOgotICAgIE9wdGlvbmFs
PEl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBkZWNvZGVJdGVtKGNvbnN0IHVpbnQ4X3Qq
LCBzaXplX3QsIEl0ZW1UeXBlIHR5cGUsIHVpbnQ4X3QqKSBmaW5hbAorICAgIE9wdGlvbmFsPERp
c3BsYXlMaXN0SXRlbT4gV0FSTl9VTlVTRURfUkVUVVJOIGRlY29kZUl0ZW0oY29uc3QgdWludDhf
dCosIHNpemVfdCwgSXRlbVR5cGUgdHlwZSkgZmluYWwKICAgICB7CiAgICAgICAgIEVYUEVDVF9F
USh0eXBlLCBJdGVtVHlwZTo6RmlsbFBhdGgpOwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>