<?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>121449</bug_id>
          
          <creation_ts>2013-09-16 12:45:10 -0700</creation_ts>
          <short_desc>CTTE: Element::createRenderer() should take references</short_desc>
          <delta_ts>2013-09-16 15:18:59 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>929877</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-16 12:45:10 -0700</bug_when>
    <thetext>CTTE: Element::createRenderer() should take references</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929919</commentid>
    <comment_count>1</comment_count>
      <attachid>211829</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-16 14:26:17 -0700</bug_when>
    <thetext>Created attachment 211829
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929922</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-16 14:29:03 -0700</bug_when>
    <thetext>Attachment 211829 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/dom/Document.cpp&apos;, u&apos;Source/WebCore/dom/Element.cpp&apos;, u&apos;Source/WebCore/dom/Element.h&apos;, u&apos;Source/WebCore/dom/Text.cpp&apos;, u&apos;Source/WebCore/dom/Text.h&apos;, u&apos;Source/WebCore/html/BaseButtonInputType.cpp&apos;, u&apos;Source/WebCore/html/BaseButtonInputType.h&apos;, u&apos;Source/WebCore/html/FileInputType.cpp&apos;, u&apos;Source/WebCore/html/FileInputType.h&apos;, u&apos;Source/WebCore/html/HTMLAppletElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLAppletElement.h&apos;, u&apos;Source/WebCore/html/HTMLBRElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLBRElement.h&apos;, u&apos;Source/WebCore/html/HTMLButtonElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLButtonElement.h&apos;, u&apos;Source/WebCore/html/HTMLCanvasElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLCanvasElement.h&apos;, u&apos;Source/WebCore/html/HTMLDetailsElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLDetailsElement.h&apos;, u&apos;Source/WebCore/html/HTMLElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLElement.h&apos;, u&apos;Source/WebCore/html/HTMLFieldSetElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLFieldSetElement.h&apos;, u&apos;Source/WebCore/html/HTMLFrameElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLFrameElement.h&apos;, u&apos;Source/WebCore/html/HTMLFrameSetElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLFrameSetElement.h&apos;, u&apos;Source/WebCore/html/HTMLIFrameElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLIFrameElement.h&apos;, u&apos;Source/WebCore/html/HTMLImageElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLImageElement.h&apos;, u&apos;Source/WebCore/html/HTMLInputElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLInputElement.h&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.h&apos;, u&apos;Source/WebCore/html/HTMLMeterElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLMeterElement.h&apos;, u&apos;Source/WebCore/html/HTMLPlugInImageElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLPlugInImageElement.h&apos;, u&apos;Source/WebCore/html/HTMLProgressElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLProgressElement.h&apos;, u&apos;Source/WebCore/html/HTMLSelectElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLSelectElement.h&apos;, u&apos;Source/WebCore/html/HTMLSummaryElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLSummaryElement.h&apos;, u&apos;Source/WebCore/html/HTMLTextAreaElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLTextAreaElement.h&apos;, u&apos;Source/WebCore/html/HTMLVideoElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLVideoElement.h&apos;, u&apos;Source/WebCore/html/HiddenInputType.cpp&apos;, u&apos;Source/WebCore/html/HiddenInputType.h&apos;, u&apos;Source/WebCore/html/ImageInputType.cpp&apos;, u&apos;Source/WebCore/html/ImageInputType.h&apos;, u&apos;Source/WebCore/html/InputType.cpp&apos;, u&apos;Source/WebCore/html/InputType.h&apos;, u&apos;Source/WebCore/html/RangeInputType.cpp&apos;, u&apos;Source/WebCore/html/RangeInputType.h&apos;, u&apos;Source/WebCore/html/SearchInputType.cpp&apos;, u&apos;Source/WebCore/html/SearchInputType.h&apos;, u&apos;Source/WebCore/html/TextFieldInputType.cpp&apos;, u&apos;Source/WebCore/html/TextFieldInputType.h&apos;, u&apos;Source/WebCore/html/shadow/DetailsMarkerControl.cpp&apos;, u&apos;Source/WebCore/html/shadow/DetailsMarkerControl.h&apos;, u&apos;Source/WebCore/html/shadow/MediaControlElements.cpp&apos;, u&apos;Source/WebCore/html/shadow/MediaControlElements.h&apos;, u&apos;Source/WebCore/html/shadow/MeterShadowElement.cpp&apos;, u&apos;Source/WebCore/html/shadow/MeterShadowElement.h&apos;, u&apos;Source/WebCore/html/shadow/ProgressShadowElement.cpp&apos;, u&apos;Source/WebCore/html/shadow/ProgressShadowElement.h&apos;, u&apos;Source/WebCore/html/shadow/SliderThumbElement.cpp&apos;, u&apos;Source/WebCore/html/shadow/SliderThumbElement.h&apos;, u&apos;Source/WebCore/html/shadow/TextControlInnerElements.cpp&apos;, u&apos;Source/WebCore/html/shadow/TextControlInnerElements.h&apos;, u&apos;Source/WebCore/html/track/TextTrackCue.cpp&apos;, u&apos;Source/WebCore/html/track/TextTrackCue.h&apos;, u&apos;Source/WebCore/mathml/MathMLInlineContainerElement.cpp&apos;, u&apos;Source/WebCore/mathml/MathMLInlineContainerElement.h&apos;, u&apos;Source/WebCore/mathml/MathMLMathElement.cpp&apos;, u&apos;Source/WebCore/mathml/MathMLMathElement.h&apos;, u&apos;Source/WebCore/mathml/MathMLTextElement.cpp&apos;, u&apos;Source/WebCore/mathml/MathMLTextElement.h&apos;, u&apos;Source/WebCore/rendering/RenderBlock.cpp&apos;, u&apos;Source/WebCore/rendering/RenderButton.cpp&apos;, u&apos;Source/WebCore/rendering/RenderEmbeddedObject.cpp&apos;, u&apos;Source/WebCore/rendering/RenderFlexibleBox.cpp&apos;, u&apos;Source/WebCore/rendering/RenderFullScreen.cpp&apos;, u&apos;Source/WebCore/rendering/RenderImage.cpp&apos;, u&apos;Source/WebCore/rendering/RenderInline.cpp&apos;, u&apos;Source/WebCore/rendering/RenderListMarker.cpp&apos;, u&apos;Source/WebCore/rendering/RenderMenuList.cpp&apos;, u&apos;Source/WebCore/rendering/RenderMultiColumnFlowThread.cpp&apos;, u&apos;Source/WebCore/rendering/RenderMultiColumnSet.cpp&apos;, u&apos;Source/WebCore/rendering/RenderNamedFlowThread.cpp&apos;, u&apos;Source/WebCore/rendering/RenderObject.cpp&apos;, u&apos;Source/WebCore/rendering/RenderObject.h&apos;, u&apos;Source/WebCore/rendering/RenderReplica.cpp&apos;, u&apos;Source/WebCore/rendering/RenderRubyBase.cpp&apos;, u&apos;Source/WebCore/rendering/RenderRubyRun.cpp&apos;, u&apos;Source/WebCore/rendering/RenderScrollbarPart.cpp&apos;, u&apos;Source/WebCore/rendering/RenderTable.cpp&apos;, u&apos;Source/WebCore/rendering/RenderTableCell.cpp&apos;, u&apos;Source/WebCore/rendering/RenderTableRow.cpp&apos;, u&apos;Source/WebCore/rendering/RenderTableSection.cpp&apos;, u&apos;Source/WebCore/rendering/mathml/RenderMathMLBlock.cpp&apos;, u&apos;Source/WebCore/rendering/mathml/RenderMathMLFenced.cpp&apos;, u&apos;Source/WebCore/rendering/mathml/RenderMathMLOperator.cpp&apos;, u&apos;Source/WebCore/rendering/mathml/RenderMathMLRow.cpp&apos;, u&apos;Source/WebCore/rendering/mathml/RenderMathMLScripts.cpp&apos;, u&apos;Source/WebCore/rendering/style/ContentData.cpp&apos;, u&apos;Source/WebCore/style/StyleResolveTree.cpp&apos;, u&apos;Source/WebCore/svg/SVGAElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGAElement.h&apos;, u&apos;Source/WebCore/svg/SVGAltGlyphElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGAltGlyphElement.h&apos;, u&apos;Source/WebCore/svg/SVGCircleElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGCircleElement.h&apos;, u&apos;Source/WebCore/svg/SVGClipPathElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGClipPathElement.h&apos;, u&apos;Source/WebCore/svg/SVGDefsElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGDefsElement.h&apos;, u&apos;Source/WebCore/svg/SVGEllipseElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGEllipseElement.h&apos;, u&apos;Source/WebCore/svg/SVGFilterElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGFilterElement.h&apos;, u&apos;Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp&apos;, u&apos;Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h&apos;, u&apos;Source/WebCore/svg/SVGForeignObjectElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGForeignObjectElement.h&apos;, u&apos;Source/WebCore/svg/SVGGElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGGElement.h&apos;, u&apos;Source/WebCore/svg/SVGGraphicsElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGGraphicsElement.h&apos;, u&apos;Source/WebCore/svg/SVGImageElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGImageElement.h&apos;, u&apos;Source/WebCore/svg/SVGLinearGradientElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGLinearGradientElement.h&apos;, u&apos;Source/WebCore/svg/SVGMarkerElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGMarkerElement.h&apos;, u&apos;Source/WebCore/svg/SVGMaskElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGMaskElement.h&apos;, u&apos;Source/WebCore/svg/SVGPathElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGPathElement.h&apos;, u&apos;Source/WebCore/svg/SVGPatternElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGPatternElement.h&apos;, u&apos;Source/WebCore/svg/SVGRadialGradientElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGRadialGradientElement.h&apos;, u&apos;Source/WebCore/svg/SVGRectElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGRectElement.h&apos;, u&apos;Source/WebCore/svg/SVGSVGElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGSVGElement.h&apos;, u&apos;Source/WebCore/svg/SVGStopElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGStopElement.h&apos;, u&apos;Source/WebCore/svg/SVGSwitchElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGSwitchElement.h&apos;, u&apos;Source/WebCore/svg/SVGSymbolElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGSymbolElement.h&apos;, u&apos;Source/WebCore/svg/SVGTRefElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGTRefElement.h&apos;, u&apos;Source/WebCore/svg/SVGTSpanElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGTSpanElement.h&apos;, u&apos;Source/WebCore/svg/SVGTextElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGTextElement.h&apos;, u&apos;Source/WebCore/svg/SVGTextPathElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGTextPathElement.h&apos;, u&apos;Source/WebCore/svg/SVGUseElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGUseElement.h&apos;]&quot; exit_code: 1
Source/WebCore/rendering/RenderObject.cpp:189:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 1 in 167 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929951</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-16 15:18:59 -0700</bug_when>
    <thetext>Committed r155908: &lt;http://trac.webkit.org/changeset/155908&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211829</attachid>
            <date>2013-09-16 14:26:17 -0700</date>
            <delta_ts>2013-09-16 14:30:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121449-20130916142615.patch</filename>
            <type>text/plain</type>
            <size>123730</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NTkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEzLTA5LTE2ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ1RURTogRWxlbWVudDo6Y3JlYXRlUmVu
ZGVyZXIoKSBzaG91bGQgdGFrZSByZWZlcmVuY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE0NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqTWFueSBmaWxlIGVsaWRlZCoKKwogMjAxMy0wOS0xNiAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIE1lc3NhZ2VR
dWV1ZSBzaG91bGQgdXNlIGEgRGVxdWUgb2YgT3duUHRycwpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCShyZXZpc2lvbiAxNTU5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAwLDcgKzIwMDAsNyBAQCB2b2lkIERvY3VtZW50Ojpj
cmVhdGVSZW5kZXJUcmVlKCkKICAgICBpZiAoIW1fcmVuZGVyQXJlbmEpCiAgICAgICAgIG1fcmVu
ZGVyQXJlbmEgPSBjcmVhdGVPd25lZDxSZW5kZXJBcmVuYT4oKTsKICAgICAKLSAgICBzZXRSZW5k
ZXJWaWV3KG5ldyAobV9yZW5kZXJBcmVuYS5nZXQoKSkgUmVuZGVyVmlldygqdGhpcykpOworICAg
IHNldFJlbmRlclZpZXcobmV3ICgqbV9yZW5kZXJBcmVuYSkgUmVuZGVyVmlldygqdGhpcykpOwog
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICByZW5kZXJWaWV3KCktPnNldElz
SW5XaW5kb3codHJ1ZSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlz
aW9uIDE1NTkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTI1OSw5ICsxMjU5LDkgQEAgYm9vbCBFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVk
KGNvbnN0IFJlbgogICAgIHJldHVybiBzdHlsZS5kaXNwbGF5KCkgIT0gTk9ORTsKIH0KIAotUmVu
ZGVyT2JqZWN0KiBFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0
eWxlKiBzdHlsZSkKK1JlbmRlck9iamVjdCogRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEmLCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgcmV0dXJuIFJlbmRlck9iamVjdDo6
Y3JlYXRlT2JqZWN0KHRoaXMsIHN0eWxlKTsKKyAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpjcmVh
dGVPYmplY3QoKnRoaXMsIHN0eWxlKTsKIH0KIAogTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9u
UmVxdWVzdCBFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9p
bnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJKHJldmlzaW9uIDE1NTkwMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwMSw3ICszMDEsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBsYXp5QXR0YWNoKFNob3VsZFNldEF0dGFjaGVkID0gU2V0QXR0YWNo
ZWQpOwogICAgIHZvaWQgbGF6eVJlYXR0YWNoKFNob3VsZFNldEF0dGFjaGVkID0gU2V0QXR0YWNo
ZWQpOwogCi0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFy
ZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEmLCBSZW5kZXJTdHlsZSYpOwogICAgIHZpcnR1YWwgYm9vbCByZW5k
ZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJik7CiAgICAgdm9pZCBkaWRBZmZlY3RTZWxl
Y3RvcihBZmZlY3RlZFNlbGVjdG9yTWFzayk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9U
ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAJKHJldmlz
aW9uIDE1NTkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTkxLDEzICsxOTEsMTMgQEAgc3RhdGljIGJvb2wgaXNTVkdUZXh0KFRleHQqIHRleHQp
CiB9CiAjZW5kaWYKIAotUmVuZGVyVGV4dCogVGV4dDo6Y3JlYXRlVGV4dFJlbmRlcmVyKFJlbmRl
ckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqIHN0eWxlKQorUmVuZGVyVGV4dCogVGV4dDo6Y3Jl
YXRlVGV4dFJlbmRlcmVyKFJlbmRlckFyZW5hJiBhcmVuYSwgUmVuZGVyU3R5bGUmIHN0eWxlKQog
ewogI2lmIEVOQUJMRShTVkcpCiAgICAgaWYgKGlzU1ZHVGV4dCh0aGlzKSB8fCBpc1NWR1NoYWRv
d1RleHQodGhpcykpCiAgICAgICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdJbmxpbmVU
ZXh0KCp0aGlzLCBkYXRhSW1wbCgpKTsKICNlbmRpZgotICAgIGlmIChzdHlsZS0+aGFzVGV4dENv
bWJpbmUoKSkKKyAgICBpZiAoc3R5bGUuaGFzVGV4dENvbWJpbmUoKSkKICAgICAgICAgcmV0dXJu
IG5ldyAoYXJlbmEpIFJlbmRlckNvbWJpbmVUZXh0KCp0aGlzLCBkYXRhSW1wbCgpKTsKIAogICAg
IHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJUZXh0KHRoaXMsIGRhdGFJbXBsKCkpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL1RleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vVGV4dC5oCShyZXZpc2lvbiAxNTU5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgd2hv
bGVUZXh0KCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxUZXh0PiByZXBsYWNlV2hvbGVUZXh0KGNv
bnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAKLSAgICBSZW5kZXJUZXh0KiBjcmVh
dGVUZXh0UmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOworICAgIFJlbmRlclRl
eHQqIGNyZWF0ZVRleHRSZW5kZXJlcihSZW5kZXJBcmVuYSYsIFJlbmRlclN0eWxlJik7CiAgICAg
CiAgICAgdmlydHVhbCBib29sIGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3QgT1ZFUlJJ
REUgRklOQUwgeyByZXR1cm4gdHJ1ZTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0Jh
c2VCdXR0b25JbnB1dFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
QmFzZUJ1dHRvbklucHV0VHlwZS5jcHAJKHJldmlzaW9uIDE1NTkwMCkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcg
KzUyLDcgQEAgYm9vbCBCYXNlQnV0dG9uSW5wdXRUeXBlOjphcHBlbmRGb3JtRGF0YQogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotUmVuZGVyT2JqZWN0KiBCYXNlQnV0dG9uSW5wdXRUeXBlOjpjcmVh
dGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikgY29uc3QKK1JlbmRl
ck9iamVjdCogQmFzZUJ1dHRvbklucHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEm
IGFyZW5hLCBSZW5kZXJTdHlsZSYpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7IC8v
IEZJWE1FOiBlbGVtZW50KCkgc2hvdWxkIHJldHVybiBhIHJlZmVyZW5jZS4KICAgICByZXR1cm4g
bmV3IChhcmVuYSkgUmVuZGVyQnV0dG9uKCplbGVtZW50KCkpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmgJKHJldmlzaW9uIDE1NTkwMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Myw3ICs0Myw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHNob3Vs
ZFNhdmVBbmRSZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZp
cnR1YWwgYm9vbCBhcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmLCBib29sKSBjb25zdCBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJl
bmEqLCBSZW5kZXJTdHlsZSopIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYsIFJlbmRlclN0eWxlJikgY29uc3QgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCBib29sIHN0b3Jlc1ZhbHVlU2VwYXJhdGVGcm9tQXR0cmlidXRl
KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYsIGJv
b2wsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IpIE9WRVJSSURFOwogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAkocmV2aXNpb24gMTU1OTAwKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEyLDcgKzIx
Miw3IEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVFdmUKICAgICBldmVu
dC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBGaWxlSW5wdXRUeXBl
OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikgY29uc3QK
K1JlbmRlck9iamVjdCogRmlsZUlucHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEm
IGFyZW5hLCBSZW5kZXJTdHlsZSYpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7IC8v
IEZJWE1FOiBlbGVtZW50KCkgc2hvdWxkIHJldHVybiBhIHJlZmVyZW5jZS4KICAgICByZXR1cm4g
bmV3IChhcmVuYSkgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2woKmVsZW1lbnQoKSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaAkocmV2aXNpb24gMTU1OTAwKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5
LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgdmFsdWVNaXNzaW5nKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlTWlzc2luZ1RleHQo
KSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRE9NQWN0aXZhdGVFdmVu
dChFdmVudCopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5k
ZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKikgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiwgUmVuZGVyU3R5
bGUmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0U3RyaW5nVmFsdWUo
KSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuQ2hhbmdlRnJvbUFub3RoZXJU
eXBlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBGaWxlTGlzdCogZmlsZXMoKSBPVkVS
UklERTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxNTU5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsMTAgKzc1LDEwIEBAIGJvb2wgSFRNTEFwcGxldEVs
ZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQKICAgICByZXR1cm4gSFRNTFBsdWdJbkltYWdlRWxlbWVu
dDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CiB9CiAKLVJlbmRlck9iamVjdCogSFRNTEFwcGxl
dEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqIHN0eWxl
KQorUmVuZGVyT2JqZWN0KiBIVE1MQXBwbGV0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEmLCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7CiAgICAgaWYgKCFjYW5FbWJlZEphdmEoKSkK
LSAgICAgICAgcmV0dXJuIFJlbmRlck9iamVjdDo6Y3JlYXRlT2JqZWN0KHRoaXMsIHN0eWxlKTsK
KyAgICAgICAgcmV0dXJuIFJlbmRlck9iamVjdDo6Y3JlYXRlT2JqZWN0KCp0aGlzLCBzdHlsZSk7
CiAKICAgICByZXR1cm4gUmVuZGVyRW1iZWRkZWRPYmplY3Q6OmNyZWF0ZUZvckFwcGxldCgqdGhp
cyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5oCShyZXZp
c2lvbiAxNTU5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYpIE9WRVJSSURFOwogICAgIAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNv
bnN0IFJlbmRlclN0eWxlJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNy
ZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBSZW5kZXJT
dHlsZSYpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBSZW5kZXJXaWRnZXQqIHJlbmRlcldpZGdl
dEZvckpTQmluZGluZ3MoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlV2lkZ2V0KFBs
dWdpbkNyZWF0aW9uT3B0aW9uKSBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEJSRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QlJFbGVtZW50LmNwcAkocmV2aXNpb24gMTU1OTAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQlJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsMTIgKzcxLDEyIEBAIHZvaWQg
SFRNTEJSRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2UKICAgICAgICAgSFRNTEVsZW1lbnQ6
OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgc3R5bGUp
OwogfQogCi1SZW5kZXJPYmplY3QqIEhUTUxCUkVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRl
ckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqIHN0eWxlKQorUmVuZGVyT2JqZWN0KiBIVE1MQlJF
bGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYgYXJlbmEsIFJlbmRlclN0eWxlJiBz
dHlsZSkKIHsKLSAgICAgaWYgKHN0eWxlLT5oYXNDb250ZW50KCkpCi0gICAgICAgIHJldHVybiBS
ZW5kZXJPYmplY3Q6OmNyZWF0ZU9iamVjdCh0aGlzLCBzdHlsZSk7CisgICAgaWYgKHN0eWxlLmhh
c0NvbnRlbnQoKSkKKyAgICAgICAgcmV0dXJuIFJlbmRlck9iamVjdDo6Y3JlYXRlT2JqZWN0KCp0
aGlzLCBzdHlsZSk7CiAKLSAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlckJSKHRoaXMpOwor
ICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJCUih0aGlzKTsKIH0KIAogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmgJKHJldmlzaW9uIDE1NTkwMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY29s
bGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBj
b25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldCopIE9WRVJSSURFOwog
Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwg
UmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIo
UmVuZGVyQXJlbmEmLCBSZW5kZXJTdHlsZSYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTU5
MDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCB2b2lkIEhUTUxCdXR0b25FbGVtZW50OjpzZXRUeXBl
KGNvbnN0IEF0CiAgICAgc2V0QXR0cmlidXRlKHR5cGVBdHRyLCB0eXBlKTsKIH0KIAotUmVuZGVy
T2JqZWN0KiBIVE1MQnV0dG9uRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFy
ZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3QqIEhUTUxCdXR0b25FbGVtZW50OjpjcmVh
dGVSZW5kZXJlcihSZW5kZXJBcmVuYSYgYXJlbmEsIFJlbmRlclN0eWxlJikKIHsKICAgICByZXR1
cm4gbmV3IChhcmVuYSkgUmVuZGVyQnV0dG9uKCp0aGlzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmgJKHJldmlzaW9uIDE1NTkwMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyAr
NDUsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1D
b250cm9sVHlwZSgpIGNvbnN0OwogCi0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJl
bmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJlbmRlck9i
amVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBSZW5kZXJTdHlsZSYpOwogCiAgICAg
Ly8gSFRNTEZvcm1Db250cm9sRWxlbWVudCBhbHdheXMgY3JlYXRlcyBvbmUsIGJ1dCBidXR0b25z
IGRvbid0IG5lZWQgaXQuCiAgICAgdmlydHVhbCBib29sIGFsd2F5c0NyZWF0ZVVzZXJBZ2VudFNo
YWRvd1Jvb3QoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHJldmlzaW9uIDE1NTkwMCkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoYwogICAgIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CiAK
LVJlbmRlck9iamVjdCogSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFy
ZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqIHN0eWxlKQorUmVuZGVyT2JqZWN0KiBIVE1MQ2FudmFz
RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmIGFyZW5hLCBSZW5kZXJTdHlsZSYg
c3R5bGUpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlm
IChmcmFtZSAmJiBmcmFtZS0+c2NyaXB0KCkuY2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4
ZWN1dGVTY3JpcHQpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5oCShyZXZpc2lvbiAxNTU5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw3ICsxNDYsNyBAQCBwcml2YXRlOgogICAg
IEhUTUxDYW52YXNFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25z
dCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3Jl
YXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgUmVu
ZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYsIFJlbmRlclN0eWxlJik7CiAg
ICAgdmlydHVhbCB2b2lkIHdpbGxBdHRhY2hSZW5kZXJlcnMoKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIGJvb2wgYXJlQXV0aG9yU2hhZG93c0FsbG93ZWQoKSBjb25zdCBPVkVSUklERTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAkocmV2aXNpb24g
MTU1OTAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDcgQEAgSFRNTERldGFpbHNFbGVtZW50OjpIVE1M
RGV0YWlsc0VsZW1lbnQoYwogICAgIEFTU0VSVChoYXNUYWdOYW1lKGRldGFpbHNUYWcpKTsKIH0K
IAotUmVuZGVyT2JqZWN0KiBIVE1MRGV0YWlsc0VsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRl
ckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQorUmVuZGVyT2JqZWN0KiBIVE1MRGV0YWlsc0Vs
ZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiBhcmVuYSwgUmVuZGVyU3R5bGUmKQog
ewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJCbG9ja0Zsb3codGhpcyk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmgJKHJldmlzaW9uIDE1NTkw
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBIVE1MRGV0YWls
c0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFs
IFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSop
OworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYs
IFJlbmRlclN0eWxlJik7CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVy
ZXIoY29uc3QgTm9kZSopIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJ
REU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTU5
MDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzg4LDExICs3ODgsMTEgQEAgYm9vbCBIVE1MRWxlbWVudDo6cmVuZGVyZXJJc05lZWRl
ZChjb25zdAogICAgIHJldHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxl
KTsKIH0KIAotUmVuZGVyT2JqZWN0KiBIVE1MRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSogc3R5bGUpCitSZW5kZXJPYmplY3QqIEhUTUxFbGVt
ZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYgYXJlbmEsIFJlbmRlclN0eWxlJiBzdHls
ZSkKIHsKICAgICBpZiAoaGFzTG9jYWxOYW1lKHdiclRhZykpCiAgICAgICAgIHJldHVybiBuZXcg
KGFyZW5hKSBSZW5kZXJXb3JkQnJlYWsodGhpcyk7Ci0gICAgcmV0dXJuIFJlbmRlck9iamVjdDo6
Y3JlYXRlT2JqZWN0KHRoaXMsIHN0eWxlKTsKKyAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpjcmVh
dGVPYmplY3QoKnRoaXMsIHN0eWxlKTsKIH0KIAogSFRNTEZvcm1FbGVtZW50KiBIVE1MRWxlbWVu
dDo6dmlydHVhbEZvcm0oKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAko
cmV2aXNpb24gMTU1OTAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGllRm9yYmlk
c0luc2VydEhUTUwoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVk
KGNvbnN0IFJlbmRlclN0eWxlJik7Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJl
bmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJlbmRlck9i
amVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBSZW5kZXJTdHlsZSYpOwogCiAgICAg
SFRNTEZvcm1FbGVtZW50KiBmb3JtKCkgY29uc3QgeyByZXR1cm4gdmlydHVhbEZvcm0oKTsgfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAJKHJl
dmlzaW9uIDE1NTkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgY29uc3QgQXRvbWljU3RyaW5n
JiBIVE1MRmllbGRTZXRFbGVtZW50OgogICAgIHJldHVybiBmaWVsZHNldDsKIH0KIAotUmVuZGVy
T2JqZWN0KiBIVE1MRmllbGRTZXRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSog
YXJlbmEsIFJlbmRlclN0eWxlKikKK1JlbmRlck9iamVjdCogSFRNTEZpZWxkU2V0RWxlbWVudDo6
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmIGFyZW5hLCBSZW5kZXJTdHlsZSYpCiB7CiAgICAg
cmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlckZpZWxkc2V0KCp0aGlzKTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5oCShyZXZpc2lvbiAxNTU5MDApCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNDksNyArNDksNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIGlzRW51bWVy
YXRhYmxlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0
c0ZvY3VzKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0
ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJlbmRl
ck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBSZW5kZXJTdHlsZSYpOwogICAg
IHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdDsKICAg
ICB2aXJ0dWFsIGJvb2wgcmVjYWxjV2lsbFZhbGlkYXRlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikg
T1ZFUlJJREU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDE1NTkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgYm9vbCBIVE1MRnJhbWVFbGVt
ZW50OjpyZW5kZXJlcklzTmVlZGVkKAogICAgIHJldHVybiBpc1VSTEFsbG93ZWQoKTsKIH0KIAot
UmVuZGVyT2JqZWN0KiBIVE1MRnJhbWVFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVu
YSogYXJlbmEsIFJlbmRlclN0eWxlKikKK1JlbmRlck9iamVjdCogSFRNTEZyYW1lRWxlbWVudDo6
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmIGFyZW5hLCBSZW5kZXJTdHlsZSYpCiB7CiAgICAg
cmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlckZyYW1lKCp0aGlzKTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5oCShyZXZpc2lvbiAxNTU5MDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyAr
NDIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBP
VkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRl
clN0eWxlJik7Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRl
ckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBSZW5kZXJTdHlsZSYpOwogICAgIAogICAgIHZpcnR1YWwg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJikgT1ZFUlJJREU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVT
ZXRFbGVtZW50LmNwcAkocmV2aXNpb24gMTU1OTAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVTZXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDEwICsxNTYsMTAg
QEAgYm9vbCBIVE1MRnJhbWVTZXRFbGVtZW50OjpyZW5kZXJlcklzTmVlZAogICAgIHJldHVybiBz
dHlsZS5pc1N0eWxlQXZhaWxhYmxlKCk7CiB9CiAKLVJlbmRlck9iamVjdCogSFRNTEZyYW1lU2V0
RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSog
c3R5bGUpCitSZW5kZXJPYmplY3QqIEhUTUxGcmFtZVNldEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVy
KFJlbmRlckFyZW5hJiBhcmVuYSwgUmVuZGVyU3R5bGUmIHN0eWxlKQogewotICAgIGlmIChzdHls
ZS0+aGFzQ29udGVudCgpKQotICAgICAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpjcmVhdGVPYmpl
Y3QodGhpcywgc3R5bGUpOworICAgIGlmIChzdHlsZS5oYXNDb250ZW50KCkpCisgICAgICAgIHJl
dHVybiBSZW5kZXJPYmplY3Q6OmNyZWF0ZU9iamVjdCgqdGhpcywgc3R5bGUpOwogICAgIAogICAg
IHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJGcmFtZVNldCgqdGhpcyk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaAkocmV2aXNpb24gMTU1OTAwKQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsQXR0
YWNoUmVuZGVyZXJzKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVk
ZWQoY29uc3QgUmVuZGVyU3R5bGUmKTsKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgUmVuZGVy
T2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYsIFJlbmRlclN0eWxlJik7CiAgICAg
CiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAJKHJldmlzaW9uIDE1NTkw
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIGJvb2wgSFRNTElGcmFtZUVsZW1lbnQ6OnJlbmRlcmVy
SXNOZWVkZWQKICAgICByZXR1cm4gaXNVUkxBbGxvd2VkKCkgJiYgc3R5bGUuZGlzcGxheSgpICE9
IE5PTkU7CiB9CiAKLVJlbmRlck9iamVjdCogSFRNTElGcmFtZUVsZW1lbnQ6OmNyZWF0ZVJlbmRl
cmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQorUmVuZGVyT2JqZWN0KiBIVE1M
SUZyYW1lRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmIGFyZW5hLCBSZW5kZXJT
dHlsZSYpCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlcklGcmFtZSgqdGhpcyk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oCShyZXZpc2lvbiAx
NTU5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY29s
bGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBj
b25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldCopIE9WRVJSSURFOwog
CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKTsK
LSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBS
ZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihS
ZW5kZXJBcmVuYSYsIFJlbmRlclN0eWxlJik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjYWxj
U3R5bGUoU3R5bGU6OkNoYW5nZSkgT1ZFUlJJREU7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTU5MDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsMTAg
KzE2MywxMCBAQCBTdHJpbmcgSFRNTEltYWdlRWxlbWVudDo6YWx0VGV4dCgpIGNvbnN0CiAgICAg
cmV0dXJuIGFsdDsKIH0KIAotUmVuZGVyT2JqZWN0KiBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGVS
ZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKiBzdHlsZSkKK1JlbmRlck9i
amVjdCogSFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmIGFyZW5h
LCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgaWYgKHN0eWxlLT5oYXNDb250ZW50KCkpCi0g
ICAgICAgIHJldHVybiBSZW5kZXJPYmplY3Q6OmNyZWF0ZU9iamVjdCh0aGlzLCBzdHlsZSk7Cisg
ICAgaWYgKHN0eWxlLmhhc0NvbnRlbnQoKSkKKyAgICAgICAgcmV0dXJuIFJlbmRlck9iamVjdDo6
Y3JlYXRlT2JqZWN0KCp0aGlzLCBzdHlsZSk7CiAKICAgICBSZW5kZXJJbWFnZSogaW1hZ2UgPSBu
ZXcgKGFyZW5hKSBSZW5kZXJJbWFnZSh0aGlzKTsKICAgICBpbWFnZS0+c2V0SW1hZ2VSZXNvdXJj
ZShSZW5kZXJJbWFnZVJlc291cmNlOjpjcmVhdGUoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbWFnZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbWFnZUVsZW1lbnQuaAkocmV2aXNpb24gMTU1OTAwKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDcgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxl
U3R5bGVQcm9wZXJ0eVNldCopIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZEF0dGFj
aFJlbmRlcmVycygpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVS
ZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBSZW5kZXJP
YmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiwgUmVuZGVyU3R5bGUmKTsKIAogICAg
IHZpcnR1YWwgYm9vbCBjYW5TdGFydFNlbGVjdGlvbigpIGNvbnN0OwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE1NTkwMCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc5Miw3ICs3OTIsNyBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQo
CiAgICAgcmV0dXJuIG1faW5wdXRUeXBlLT5yZW5kZXJlcklzTmVlZGVkKCkgJiYgSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOwogfQogCi1SZW5kZXJP
YmplY3QqIEhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVu
YSwgUmVuZGVyU3R5bGUqIHN0eWxlKQorUmVuZGVyT2JqZWN0KiBIVE1MSW5wdXRFbGVtZW50Ojpj
cmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYgYXJlbmEsIFJlbmRlclN0eWxlJiBzdHlsZSkKIHsK
ICAgICByZXR1cm4gbV9pbnB1dFR5cGUtPmNyZWF0ZVJlbmRlcmVyKGFyZW5hLCBzdHlsZSk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAkocmV2aXNpb24gMTU1
OTAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE4OCw3ICsxODgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5IYXZlU2VsZWN0
aW9uKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBS
ZW5kZXJTdHlsZSYpOwotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihS
ZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNy
ZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiwgUmVuZGVyU3R5bGUmKTsKICAgICB2aXJ0dWFsIHZv
aWQgd2lsbEF0dGFjaFJlbmRlcmVycygpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRB
dHRhY2hSZW5kZXJlcnMoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0YWNoUmVu
ZGVyZXJzKCkgT1ZFUlJJREU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAJKHJldmlzaW9uIDE1NTkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1Niw3ICs1NTYsNyBAQCBib29sIEhU
TUxNZWRpYUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoCiAjZW5kaWYKIH0KIAotUmVuZGVyT2Jq
ZWN0KiBIVE1MTWVkaWFFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEs
IFJlbmRlclN0eWxlKikKK1JlbmRlck9iamVjdCogSFRNTE1lZGlhRWxlbWVudDo6Y3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEmIGFyZW5hLCBSZW5kZXJTdHlsZSYpCiB7CiAjaWYgRU5BQkxFKFBM
VUdJTl9QUk9YWV9GT1JfVklERU8pCiAgICAgLy8gU2V0dXAgdGhlIHJlbmRlcmVyIGlmIHdlIGFs
cmVhZHkgaGF2ZSBhIHByb3h5IHdpZGdldC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oCShyZXZpc2lvbiAxNTU5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDM0LDcgKzQzNCw3IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZp
cnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJik7Ci0gICAgdmly
dHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5
bGUqKTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJl
bmEmLCBSZW5kZXJTdHlsZSYpOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJl
bmRlcmVyKGNvbnN0IE5vZGUqKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIEluc2VydGlv
bk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSopIE9WRVJSSURF
OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCShyZXZpc2lv
biAxNTU5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01NiwxMCArNTYsMTAgQEAgUGFzc1JlZlB0cjxIVE1MTWV0ZXJFbGVt
ZW50PiBIVE1MTWV0ZXJFbAogICAgIHJldHVybiBtZXRlcjsKIH0KIAotUmVuZGVyT2JqZWN0KiBI
VE1MTWV0ZXJFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRl
clN0eWxlKiBzdHlsZSkKK1JlbmRlck9iamVjdCogSFRNTE1ldGVyRWxlbWVudDo6Y3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEmIGFyZW5hLCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgaWYg
KGhhc0F1dGhvclNoYWRvd1Jvb3QoKSB8fCAhZG9jdW1lbnQoKS5wYWdlKCktPnRoZW1lKCktPnN1
cHBvcnRzTWV0ZXIoc3R5bGUtPmFwcGVhcmFuY2UoKSkpCi0gICAgICAgIHJldHVybiBSZW5kZXJP
YmplY3Q6OmNyZWF0ZU9iamVjdCh0aGlzLCBzdHlsZSk7CisgICAgaWYgKGhhc0F1dGhvclNoYWRv
d1Jvb3QoKSB8fCAhZG9jdW1lbnQoKS5wYWdlKCktPnRoZW1lKCktPnN1cHBvcnRzTWV0ZXIoc3R5
bGUuYXBwZWFyYW5jZSgpKSkKKyAgICAgICAgcmV0dXJuIFJlbmRlck9iamVjdDo6Y3JlYXRlT2Jq
ZWN0KCp0aGlzLCBzdHlsZSk7CiAKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyTWV0ZXIo
dGhpcyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuaAkocmV2
aXNpb24gMTU1OTAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJv
b2wgc3VwcG9ydExhYmVscygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAogICAg
IHZpcnR1YWwgYm9vbCByZWNhbGNXaWxsVmFsaWRhdGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSos
IFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVy
KFJlbmRlckFyZW5hJiwgUmVuZGVyU3R5bGUmKTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91
bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlKikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNT
dHJpbmcmKSBPVkVSUklERTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTU5MDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTQs
NyArMTk0LDcgQEAgYm9vbCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp3b3VsZExvYWRBcwogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotUmVuZGVyT2JqZWN0KiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKiBzdHlsZSkK
K1JlbmRlck9iamVjdCogSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVu
ZGVyQXJlbmEmIGFyZW5hLCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7CiAgICAgLy8gT25jZSBhIFBs
dWdJbiBFbGVtZW50IGNyZWF0ZXMgaXRzIHJlbmRlcmVyLCBpdCBuZWVkcyB0byBiZSB0b2xkIHdo
ZW4gdGhlIERvY3VtZW50IGdvZXMKICAgICAvLyBpbmFjdGl2ZSBvciByZWFjdGl2YXRlcyBzbyBp
dCBjYW4gY2xlYXIgdGhlIHJlbmRlcmVyIGJlZm9yZSBnb2luZyBpbnRvIHRoZSBwYWdlIGNhY2hl
LgpAQCAtMjEzLDcgKzIxMyw3IEBAIFJlbmRlck9iamVjdCogSFRNTFBsdWdJbkltYWdlRWxlbWVu
dDo6Y3IKICAgICAvLyBjbGFzcyBhbmQgYWxsIHN1cGVyY2xhc3NlcyBiZWNhdXNlIGNyZWF0ZU9i
amVjdCB3b24ndCBuZWNlc3NhcmlseQogICAgIC8vIHJldHVybiBhIFJlbmRlckVtYmVkZGVkT2Jq
ZWN0IG9yIFJlbmRlcldpZGdldC4KICAgICBpZiAodXNlRmFsbGJhY2tDb250ZW50KCkpCi0gICAg
ICAgIHJldHVybiBSZW5kZXJPYmplY3Q6OmNyZWF0ZU9iamVjdCh0aGlzLCBzdHlsZSk7CisgICAg
ICAgIHJldHVybiBSZW5kZXJPYmplY3Q6OmNyZWF0ZU9iamVjdCgqdGhpcywgc3R5bGUpOwogCiAg
ICAgaWYgKGlzSW1hZ2VUeXBlKCkpIHsKICAgICAgICAgUmVuZGVySW1hZ2UqIGltYWdlID0gbmV3
IChhcmVuYSkgUmVuZGVySW1hZ2UodGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQbHVnSW5JbWFnZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaAkocmV2aXNpb24gMTU1OTAwKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEy
NSw3ICsxMjUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIGlzUmVzdGFydGVkUGx1
Z2luKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9pc1Jlc3RhcnRlZFBsdWdpbjsgfQogCiBw
cml2YXRlOgotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJB
cmVuYSosIFJlbmRlclN0eWxlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3Qq
IGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiwgUmVuZGVyU3R5bGUmKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIGJvb2wgd2lsbFJlY2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2UpIE9WRVJSSURFOwog
CiAgICAgdm9pZCBkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqKSBPVkVSUklE
RTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcAko
cmV2aXNpb24gMTU1OTAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsMTAgKzU4LDEwIEBAIFBhc3NSZWZQdHI8SFRN
TFByb2dyZXNzRWxlbWVudD4gSFRNTFByb2cKICAgICByZXR1cm4gcHJvZ3Jlc3MucmVsZWFzZSgp
OwogfQogCi1SZW5kZXJPYmplY3QqIEhUTUxQcm9ncmVzc0VsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVy
KFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqIHN0eWxlKQorUmVuZGVyT2JqZWN0KiBI
VE1MUHJvZ3Jlc3NFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYgYXJlbmEsIFJl
bmRlclN0eWxlJiBzdHlsZSkKIHsKLSAgICBpZiAoIXN0eWxlLT5oYXNBcHBlYXJhbmNlKCkgfHwg
aGFzQXV0aG9yU2hhZG93Um9vdCgpKQotICAgICAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpjcmVh
dGVPYmplY3QodGhpcywgc3R5bGUpOworICAgIGlmICghc3R5bGUuaGFzQXBwZWFyYW5jZSgpIHx8
IGhhc0F1dGhvclNoYWRvd1Jvb3QoKSkKKyAgICAgICAgcmV0dXJuIFJlbmRlck9iamVjdDo6Y3Jl
YXRlT2JqZWN0KCp0aGlzLCBzdHlsZSk7CiAKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVy
UHJvZ3Jlc3ModGhpcyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVz
c0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVz
c0VsZW1lbnQuaAkocmV2aXNpb24gMTU1OTAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UHJvZ3Jlc3NFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQXBwZWFySW5kZXRlcm1pbmF0ZSgpIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0TGFiZWxzKCkgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRl
cmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVj
dCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBSZW5kZXJTdHlsZSYpOwogICAgIHZpcnR1
YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUqKSBjb25zdCBPVkVS
UklERTsKICAgICBSZW5kZXJQcm9ncmVzcyogcmVuZGVyUHJvZ3Jlc3MoKSBjb25zdDsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE1
NTkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMzcsNyArMzM3LDcgQEAgYm9vbCBIVE1MU2VsZWN0RWxlbWVudDo6Y2Fu
U2VsZWN0QWxsKCkgYwogICAgIHJldHVybiAhdXNlc01lbnVMaXN0KCk7CiB9CiAKLVJlbmRlck9i
amVjdCogSFRNTFNlbGVjdEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVu
YSwgUmVuZGVyU3R5bGUqKQorUmVuZGVyT2JqZWN0KiBIVE1MU2VsZWN0RWxlbWVudDo6Y3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEmIGFyZW5hLCBSZW5kZXJTdHlsZSYpCiB7CiAgICAgaWYgKHVz
ZXNNZW51TGlzdCgpKQogICAgICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyTWVudUxpc3Qo
KnRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAkocmV2
aXNpb24gMTU1OTAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjksNyArMTI5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0
IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIo
Y29uc3QgTm9kZSopIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBj
cmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlICopOworICAgIHZpcnR1YWwg
UmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYsIFJlbmRlclN0eWxlJik7
CiAgICAgdmlydHVhbCBib29sIGFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYsIGJvb2wpOwog
CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTdW1tYXJ5RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU3VtbWFyeUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTU5MDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2
LDcgQEAgSFRNTFN1bW1hcnlFbGVtZW50OjpIVE1MU3VtbWFyeUVsZW1lbnQoYwogICAgIEFTU0VS
VChoYXNUYWdOYW1lKHN1bW1hcnlUYWcpKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBIVE1MU3VtbWFy
eUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUq
KQorUmVuZGVyT2JqZWN0KiBIVE1MU3VtbWFyeUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRl
ckFyZW5hJiBhcmVuYSwgUmVuZGVyU3R5bGUmKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBS
ZW5kZXJCbG9ja0Zsb3codGhpcyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
dW1tYXJ5RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1
bW1hcnlFbGVtZW50LmgJKHJldmlzaW9uIDE1NTkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFN1bW1hcnlFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBIVE1MU3VtbWFyeUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVy
ZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0
KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYsIFJlbmRlclN0eWxlJik7CiAgICAgdmlydHVh
bCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSopIGNvbnN0IE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAkocmV2aXNp
b24gMTU1OTAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgSFRNTFRleHRBcmVhRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUKICAgICAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBIVE1MVGV4
dEFyZWFFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0
eWxlKikKK1JlbmRlck9iamVjdCogSFRNTFRleHRBcmVhRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIo
UmVuZGVyQXJlbmEmIGFyZW5hLCBSZW5kZXJTdHlsZSYpCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJl
bmEpIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lKCp0aGlzKTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCShyZXZpc2lvbiAxNTU5MDApCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JQ
cmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0
cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnR5U2V0KikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBS
ZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsK
KyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBS
ZW5kZXJTdHlsZSYpOwogICAgIHZpcnR1YWwgYm9vbCBhcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxp
c3QmLCBib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsKICAgICB2aXJ0dWFsIGJvb2wg
aGFzQ3VzdG9tRm9jdXNMb2dpYygpIGNvbnN0IE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTU5MDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3
ICs2OSw3IEBAIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZCgKIH0KIAog
I2lmICFFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKLVJlbmRlck9iamVjdCogSFRNTFZp
ZGVvRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHls
ZSopCitSZW5kZXJPYmplY3QqIEhUTUxWaWRlb0VsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRl
ckFyZW5hJiBhcmVuYSwgUmVuZGVyU3R5bGUmKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBS
ZW5kZXJWaWRlbygqdGhpcyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuaAkocmV2aXNpb24gMTU1OTAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJik7CiAj
aWYgIUVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQotICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAgdmly
dHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiwgUmVuZGVyU3R5
bGUmKTsKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IaWRkZW5JbnB1dFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSGlkZGVuSW5wdXRUeXBlLmNwcAkocmV2aXNpb24gMTU1OTAwKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3
IEBAIGJvb2wgSGlkZGVuSW5wdXRUeXBlOjpzdXBwb3J0c1ZhbGlkYXRpb24KICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLVJlbmRlck9iamVjdCogSGlkZGVuSW5wdXRUeXBlOjpjcmVhdGVSZW5kZXJl
cihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKikgY29uc3QKK1JlbmRlck9iamVjdCogSGlkZGVu
SW5wdXRUeXBlOjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYsIFJlbmRlclN0eWxlJikgY29u
c3QKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gMDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuaAkocmV2aXNpb24gMTU1OTAwKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDUs
NyArNDUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgRm9ybUNvbnRyb2xTdGF0ZSBzYXZlRm9y
bUNvbnRyb2xTdGF0ZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZXN0b3Jl
Rm9ybUNvbnRyb2xTdGF0ZShjb25zdCBGb3JtQ29udHJvbFN0YXRlJikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBib29sIHN1cHBvcnRzVmFsaWRhdGlvbigpIGNvbnN0IE9WRVJSSURFOwotICAgIHZp
cnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0
eWxlKikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJl
bmRlcmVyKFJlbmRlckFyZW5hJiwgUmVuZGVyU3R5bGUmKSBjb25zdCBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgYWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZCgpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgYm9vbCBzdG9yZXNWYWx1ZVNlcGFyYXRlRnJvbUF0dHJpYnV0ZSgpIE9WRVJSSURFOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5jcHAJKHJldmlzaW9uIDE1NTkw
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBJbWFnZUlucHV0VHlwZTo6aGFuZGxlRE9NQWN0
aXZhdGVFdgogICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogfQogCi1SZW5kZXJPYmpl
Y3QqIEltYWdlSW5wdXRUeXBlOjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJl
bmRlclN0eWxlKikgY29uc3QKK1JlbmRlck9iamVjdCogSW1hZ2VJbnB1dFR5cGU6OmNyZWF0ZVJl
bmRlcmVyKFJlbmRlckFyZW5hJiBhcmVuYSwgUmVuZGVyU3R5bGUmKSBjb25zdAogewogICAgIFJl
bmRlckltYWdlKiBpbWFnZSA9IG5ldyAoYXJlbmEpIFJlbmRlckltYWdlKGVsZW1lbnQoKSk7CiAg
ICAgaW1hZ2UtPnNldEltYWdlUmVzb3VyY2UoUmVuZGVySW1hZ2VSZXNvdXJjZTo6Y3JlYXRlKCkp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuaAkocmV2aXNpb24gMTU1OTAw
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OCw3ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzRm9ybURhdGFB
cHBlbmRhYmxlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGFwcGVuZEZvcm1E
YXRhKEZvcm1EYXRhTGlzdCYsIGJvb2wpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c1ZhbGlkYXRpb24oKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFJlbmRl
ck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5k
ZXJBcmVuYSYsIFJlbmRlclN0eWxlJikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGhhbmRsZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgYWx0QXR0cmlidXRlQ2hhbmdlZCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzcmNB
dHRyaWJ1dGVDaGFuZ2VkKCkgT1ZFUlJJREU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0lu
cHV0VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUu
Y3BwCShyZXZpc2lvbiAxNTU5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2NCw5ICs0NjQsOSBAQCBQYXNzUmVmUHRyPEhUTUxGb3Jt
RWxlbWVudD4gSW5wdXRUeXBlOjpmCiAgICAgcmV0dXJuIGVsZW1lbnQoKS0+Zm9ybSgpOwogfQog
Ci1SZW5kZXJPYmplY3QqIElucHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBS
ZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0CitSZW5kZXJPYmplY3QqIElucHV0VHlwZTo6Y3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIFJlbmRlck9iamVjdDo6Y3JlYXRlT2JqZWN0KGVsZW1lbnQoKSwgc3R5bGUpOworICAg
IHJldHVybiBSZW5kZXJPYmplY3Q6OmNyZWF0ZU9iamVjdCgqZWxlbWVudCgpLCBzdHlsZSk7CiB9
CiAKIHZvaWQgSW5wdXRUeXBlOjpibHVyKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSW5w
dXRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAko
cmV2aXNpb24gMTU1OTAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMjM2LDcgKzIzNiw3IEBAIHB1YmxpYzoKICAgICAvLyBNaXNjZWxsYW5l
b3VzIGZ1bmN0aW9ucwogCiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoKTsKLSAg
ICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5k
ZXJTdHlsZSopIGNvbnN0OworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJl
cihSZW5kZXJBcmVuYSYsIFJlbmRlclN0eWxlJikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGFk
ZFNlYXJjaFJlc3VsdCgpOwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGV0YWNoKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNw
cAkocmV2aXNpb24gMTU1OTAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIFJhbmdlSW5wdXRU
eXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlCiAgICAgZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dS
b290KCktPmFwcGVuZENoaWxkKGNvbnRhaW5lci5yZWxlYXNlKCksIElHTk9SRV9FWENFUFRJT04p
OwogfQogCi1SZW5kZXJPYmplY3QqIFJhbmdlSW5wdXRUeXBlOjpjcmVhdGVSZW5kZXJlcihSZW5k
ZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikgY29uc3QKK1JlbmRlck9iamVjdCogUmFuZ2VJ
bnB1dFR5cGU6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiBhcmVuYSwgUmVuZGVyU3R5bGUm
KSBjb25zdAogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTbGlkZXIoZWxlbWVudCgp
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgJKHJldmlzaW9uIDE1
NTkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaAkod29ya2luZyBj
b3B5KQpAQCAtNjAsNyArNjAsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAjZW5kaWYKICAgICB2aXJ0
dWFsIHZvaWQgaGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqKSBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5k
ZXJTdHlsZSopIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVh
dGVSZW5kZXJlcihSZW5kZXJBcmVuYSYsIFJlbmRlclN0eWxlJikgY29uc3QgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIERlY2ltYWwgcGFyc2VUb051bWJlcihjb25zdCBTdHJpbmcmLCBjb25zdCBEZWNpbWFsJikg
Y29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgc2VyaWFsaXplKGNvbnN0IERlY2lt
YWwmKSBjb25zdCBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5w
dXRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0
VHlwZS5jcHAJKHJldmlzaW9uIDE1NTkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNo
SW5wdXRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCB2b2lkIFNlYXJj
aElucHV0VHlwZTo6YWRkU2VhcmNoUmVzdWx0KCkKICAgICAgICAgdG9SZW5kZXJTZWFyY2hGaWVs
ZChyZW5kZXJlciktPmFkZFNlYXJjaFJlc3VsdCgpOwogfQogCi1SZW5kZXJPYmplY3QqIFNlYXJj
aElucHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHls
ZSopIGNvbnN0CitSZW5kZXJPYmplY3QqIFNlYXJjaElucHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIo
UmVuZGVyQXJlbmEmIGFyZW5hLCBSZW5kZXJTdHlsZSYpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGVs
ZW1lbnQoKSk7IC8vIEZJWE1FOiBlbGVtZW50KCkgc2hvdWxkIHJldHVybiBhIHJlZmVyZW5jZS4K
ICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU2VhcmNoRmllbGQoKmVsZW1lbnQoKSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmgJKHJldmlzaW9uIDE1NTkwMCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ5LDcgKzQ5LDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBTZWFyY2hJbnB1dFR5cGUo
SFRNTElucHV0RWxlbWVudCopOwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgYWRkU2VhcmNoUmVzdWx0KCkgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUq
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVy
ZXIoUmVuZGVyQXJlbmEmLCBSZW5kZXJTdHlsZSYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1
YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmVzcGVjdFNwZWVjaEF0dHJpYnV0ZSgpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgYm9vbCBpc1NlYXJjaEZpZWxkKCkgY29uc3QgT1ZFUlJJREU7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCShyZXZpc2lvbiAx
NTU5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIwMSw3ICsyMDEsNyBAQCBib29sIFRleHRGaWVsZElucHV0VHlwZTo6
c2hvdWxkU3VibWl0SW1wCiAgICAgcmV0dXJuIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMo
KS50ZXh0SW5wdXRFdmVudCAmJiBldmVudC0+aGFzSW50ZXJmYWNlKGV2ZW50TmFtZXMoKS5pbnRl
cmZhY2VGb3JUZXh0RXZlbnQpICYmIHN0YXRpY19jYXN0PFRleHRFdmVudCo+KGV2ZW50KS0+ZGF0
YSgpID09ICJcbiIpIHx8IElucHV0VHlwZTo6c2hvdWxkU3VibWl0SW1wbGljaXRseShldmVudCk7
CiB9CiAKLVJlbmRlck9iamVjdCogVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVSZW5kZXJlcihS
ZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikgY29uc3QKK1JlbmRlck9iamVjdCogVGV4
dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYgYXJlbmEsIFJlbmRl
clN0eWxlJikgY29uc3QKIHsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsgLy8gRklYTUU6IGVsZW1l
bnQoKSBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNlLgogICAgIHJldHVybiBuZXcgKGFyZW5hKSBS
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUoKmVsZW1lbnQoKSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgJKHJldmlzaW9uIDE1NTkwMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg0
LDcgKzg0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQmVmb3JlVGV4dElu
c2VydGVkRXZlbnQoQmVmb3JlVGV4dEluc2VydGVkRXZlbnQqKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgZm9yd2FyZEV2ZW50KEV2ZW50KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29s
IHNob3VsZFN1Ym1pdEltcGxpY2l0bHkoRXZlbnQqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFJl
bmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihS
ZW5kZXJBcmVuYSYsIFJlbmRlclN0eWxlJikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBi
b29sIHNob3VsZFVzZUlucHV0TWV0aG9kKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBT
dHJpbmcgc2FuaXRpemVWYWx1ZShjb25zdCBTdHJpbmcmKSBjb25zdCBPVkVSUklERTsKICAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkUmVzcGVjdExpc3RBdHRyaWJ1dGUoKSBPVkVSUklERTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJv
bC5jcHAJKHJldmlzaW9uIDE1NTkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0Rl
dGFpbHNNYXJrZXJDb250cm9sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBE
ZXRhaWxzTWFya2VyQ29udHJvbDo6RGV0YWlsc01hcmtlckNvbnRyCiB7CiB9CiAKLVJlbmRlck9i
amVjdCogRGV0YWlsc01hcmtlckNvbnRyb2w6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBh
cmVuYSwgUmVuZGVyU3R5bGUqKQorUmVuZGVyT2JqZWN0KiBEZXRhaWxzTWFya2VyQ29udHJvbDo6
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmIGFyZW5hLCBSZW5kZXJTdHlsZSYpCiB7CiAgICAg
cmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlckRldGFpbHNNYXJrZXIoKnRoaXMpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5o
CShyZXZpc2lvbiAxNTU5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxz
TWFya2VyQ29udHJvbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgRGV0YWlsc01hcmtlckNvbnRyb2woRG9jdW1lbnQmKTsKIAotICAgIHZp
cnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0
eWxlKik7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFy
ZW5hJiwgUmVuZGVyU3R5bGUmKTsKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChj
b25zdCBSZW5kZXJTdHlsZSYpOwogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFk
b3dQc2V1ZG9JZCgpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCShyZXZpc2lvbiAxNTU5MDApCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzNyw3ICszMzcsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFRpbWVsaW5lQ29u
dGFpbmVyRWxlbWVuCiAgICAgfQogfQogCi1SZW5kZXJPYmplY3QqIE1lZGlhQ29udHJvbFRpbWVs
aW5lQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBS
ZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3QqIE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVy
RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmIGFyZW5hLCBSZW5kZXJTdHlsZSYp
CiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlck1lZGlhQ29udHJvbFRpbWVsaW5lQ29u
dGFpbmVyKHRoaXMpOwogfQpAQCAtMzU2LDcgKzM1Niw3IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250
cm9sVm9sdW1lU2xpZGVyQ29udGEKICAgICByZXR1cm4gZWxlbWVudC5yZWxlYXNlKCk7CiB9CiAK
LVJlbmRlck9iamVjdCogTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJP
YmplY3QqIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZVJl
bmRlcmVyKFJlbmRlckFyZW5hJiBhcmVuYSwgUmVuZGVyU3R5bGUmKQogewogICAgIHJldHVybiBu
ZXcgKGFyZW5hKSBSZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcih0aGlzKTsKIH0KQEAg
LTEyMDksNyArMTIwOSw3IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFp
bmUKICAgICByZXR1cm4gZWxlbWVudC5yZWxlYXNlKCk7CiB9CiAKLVJlbmRlck9iamVjdCogTWVk
aWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3QqIE1lZGlhQ29udHJvbFRl
eHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiBhcmVu
YSwgUmVuZGVyU3R5bGUmKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJUZXh0VHJh
Y2tDb250YWluZXJFbGVtZW50KHRoaXMpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCShyZXZpc2lvbiAxNTU5MDApCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBNZWRp
YUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQmKTsKICAgICB2aXJ0dWFs
IGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVSUklERTsKIAot
ICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJl
bmRlclN0eWxlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJl
bmRlcmVyKFJlbmRlckFyZW5hJiwgUmVuZGVyU3R5bGUmKSBPVkVSUklERTsKIH07CiAKIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTEyOSw3ICsxMjksNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KikgT1ZF
UlJJREU7CiAKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEqLCBSZW5kZXJTdHlsZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0
KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYsIFJlbmRlclN0eWxlJikgT1ZFUlJJREU7CiB9
OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC00NTUsNyArNDU1LDcgQEAg
cHJpdmF0ZToKICAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVt
ZW50KERvY3VtZW50Jik7CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1Bz
ZXVkb0lkKCkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3Jl
YXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgUmVu
ZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYsIFJlbmRlclN0eWxlJik7CiAK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW1hZ2U+IGNyZWF0ZVRleHRUcmFja1JlcHJlc2VudGF0
aW9uSW1hZ2UoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVwcmVzZW50
YXRpb25Cb3VuZHNDaGFuZ2VkKGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcAkocmV2
aXNpb24gMTU1OTAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBAQCBib29sIE1ldGVySW5u
ZXJFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkCiAgICAgcmV0dXJuIHJlbmRlciAmJiAhcmVuZGVy
LT50aGVtZSgpLT5zdXBwb3J0c01ldGVyKHJlbmRlci0+c3R5bGUoKS0+YXBwZWFyYW5jZSgpKSAm
JiBIVE1MRGl2RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CiB9CiAKLVJlbmRlck9i
amVjdCogTWV0ZXJJbm5lckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVu
YSwgUmVuZGVyU3R5bGUqKQorUmVuZGVyT2JqZWN0KiBNZXRlcklubmVyRWxlbWVudDo6Y3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEmIGFyZW5hLCBSZW5kZXJTdHlsZSYpCiB7CiAgICAgcmV0dXJu
IG5ldyAoYXJlbmEpIFJlbmRlck1ldGVyKHRoaXMpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmgJKHJldmlzaW9uIDE1NTkwMCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIHByaXZhdGU6CiAgICAgTWV0ZXJJbm5lckVsZW1l
bnQoRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0
IFJlbmRlclN0eWxlJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0
ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBSZW5kZXJTdHls
ZSYpIE9WRVJSSURFOwogfTsKIAogaW5saW5lIFBhc3NSZWZQdHI8TWV0ZXJJbm5lckVsZW1lbnQ+
IE1ldGVySW5uZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxNTU5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9n
cmVzc1NoYWRvd0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBAIFBy
b2dyZXNzSW5uZXJFbGVtZW50OjpQcm9ncmVzc0lubmVyRWxlbWUKIHsKIH0KIAotUmVuZGVyT2Jq
ZWN0KiBQcm9ncmVzc0lubmVyRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFy
ZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3QqIFByb2dyZXNzSW5uZXJFbGVtZW50Ojpj
cmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYgYXJlbmEsIFJlbmRlclN0eWxlJikKIHsKICAgICBy
ZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyUHJvZ3Jlc3ModGhpcyk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuaAkocmV2
aXNpb24gMTU1OTAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFk
b3dFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBQcm9ncmVzc0lubmVyRWxlbWVudChEb2N1bWVudCopOwogCi0gICAgdmlydHVh
bCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUq
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVu
ZGVyQXJlbmEmLCBSZW5kZXJTdHlsZSYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCByZW5k
ZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJik7CiB9OwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAJKHJldmlzaW9u
IDE1NTkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIFNsaWRlclRodW1i
RWxlbWVudDo6c2V0UG9zaXRpb25Gcm9tCiAgICAgICAgIHJlbmRlcmVyKCktPnNldE5lZWRzTGF5
b3V0KHRydWUpOwogfQogCi1SZW5kZXJPYmplY3QqIFNsaWRlclRodW1iRWxlbWVudDo6Y3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3Qq
IFNsaWRlclRodW1iRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmIGFyZW5hLCBS
ZW5kZXJTdHlsZSYpCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNsaWRlclRodW1i
KHRoaXMpOwogfQpAQCAtNDU0LDcgKzQ1NCw3IEBAIFBhc3NSZWZQdHI8U2xpZGVyQ29udGFpbmVy
RWxlbWVudD4gU2xpZGUKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNsaWRlckNvbnRhaW5lckVs
ZW1lbnQoZG9jdW1lbnQpKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBTbGlkZXJDb250YWluZXJFbGVt
ZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKK1Jl
bmRlck9iamVjdCogU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEmIGFyZW5hLCBSZW5kZXJTdHlsZSYpCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJl
bmRlclNsaWRlckNvbnRhaW5lcih0aGlzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oCShyZXZpc2lvbiAxNTU5MDApCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgU2xpZGVyVGh1
bWJFbGVtZW50KERvY3VtZW50Kik7Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJl
bmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJlbmRlck9i
amVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBSZW5kZXJTdHlsZSYpOwogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxFbGVtZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0Fu
ZENoaWxkcmVuKCk7CiAgICAgdmlydHVhbCBib29sIGlzRGlzYWJsZWRGb3JtQ29udHJvbCgpIGNv
bnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBtYXRjaGVzUmVhZE9ubHlQc2V1ZG9DbGFz
cygpIGNvbnN0IE9WRVJSSURFOwpAQCAtMTEzLDcgKzExMyw3IEBAIHB1YmxpYzoKIAogcHJpdmF0
ZToKICAgICBTbGlkZXJDb250YWluZXJFbGVtZW50KERvY3VtZW50Kik7Ci0gICAgdmlydHVhbCBS
ZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsK
KyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBS
ZW5kZXJTdHlsZSYpOwogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1
ZG9JZCgpIGNvbnN0OwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCShyZXZpc2lvbiAxNTU5MDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIFBhc3NSZWZQdHI8VGV4dENvbnRy
b2xJbm5lckNvbnRhaW5lcj4gVGUKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHRDb250cm9s
SW5uZXJDb250YWluZXIoZG9jdW1lbnQpKTsKIH0KICAgICAKLVJlbmRlck9iamVjdCogVGV4dENv
bnRyb2xJbm5lckNvbnRhaW5lcjo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBS
ZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3QqIFRleHRDb250cm9sSW5uZXJDb250YWluZXI6OmNy
ZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiBhcmVuYSwgUmVuZGVyU3R5bGUmKQogewogICAgIHJl
dHVybiBuZXcgKGFyZW5hKSBSZW5kZXJUZXh0Q29udHJvbElubmVyQ29udGFpbmVyKHRoaXMpOwog
fQpAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50Ojpk
ZWZhdWwKICAgICAgICAgSFRNTERpdkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQp
OwogfQogCi1SZW5kZXJPYmplY3QqIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6Y3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3Qq
IFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEm
IGFyZW5hLCBSZW5kZXJTdHlsZSYpCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclRl
eHRDb250cm9sSW5uZXJCbG9jayh0aGlzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCShyZXZpc2lvbiAx
NTU5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxl
bWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8VGV4dENvbnRyb2xJbm5lckNvbnRhaW5lcj4gY3JlYXRlKERvY3VtZW50
Kik7CiBwcm90ZWN0ZWQ6CiAgICAgVGV4dENvbnRyb2xJbm5lckNvbnRhaW5lcihEb2N1bWVudCop
OwotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSos
IFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVy
KFJlbmRlckFyZW5hJiwgUmVuZGVyU3R5bGUmKTsKIH07CiAKIGNsYXNzIFRleHRDb250cm9sSW5u
ZXJFbGVtZW50IEZJTkFMIDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsKQEAgLTYzLDcgKzYzLDcg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudChE
b2N1bWVudCopOwotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5k
ZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0
ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiwgUmVuZGVyU3R5bGUmKTsKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8UmVuZGVyU3R5bGU+IGN1c3RvbVN0eWxlRm9yUmVuZGVyZXIoKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJu
IGZhbHNlOyB9CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tD
dWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
Q3VlLmNwcAkocmV2aXNpb24gMTU1OTAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tDdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzcsNyArMTc3LDcgQEAgY29uc3Qg
QXRvbWljU3RyaW5nJiBUZXh0VHJhY2tDdWVCb3g6OnRleAogICAgIHJldHVybiB0cmFja0Rpc3Bs
YXlCb3hTaGFkb3dQc2V1ZG9JZDsKIH0KIAotUmVuZGVyT2JqZWN0KiBUZXh0VHJhY2tDdWVCb3g6
OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQorUmVuZGVy
T2JqZWN0KiBUZXh0VHJhY2tDdWVCb3g6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiBhcmVu
YSwgUmVuZGVyU3R5bGUmKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJUZXh0VHJh
Y2tDdWUodGhpcyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
a0N1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
Q3VlLmgJKHJldmlzaW9uIDE1NTkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrQ3VlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogcHJv
dGVjdGVkOgogICAgIFRleHRUcmFja0N1ZUJveChEb2N1bWVudCYsIFRleHRUcmFja0N1ZSopOwog
Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwg
UmVuZGVyU3R5bGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBSZW5kZXJTdHlsZSYpIE9WRVJSSURFOwogCiAgICAgVGV4
dFRyYWNrQ3VlKiBtX2N1ZTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
SW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTU5MDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgUGFzc1JlZlB0cjxNYXRoTUxJbmxp
bmVDb250YWluZXJFbGVtZW50PgogICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWF0aE1MSW5saW5l
Q29udGFpbmVyRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1SZW5kZXJPYmplY3Qq
IE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5h
KiBhcmVuYSwgUmVuZGVyU3R5bGUqKQorUmVuZGVyT2JqZWN0KiBNYXRoTUxJbmxpbmVDb250YWlu
ZXJFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYgYXJlbmEsIFJlbmRlclN0eWxl
JikKIHsKICAgICBpZiAoaGFzTG9jYWxOYW1lKG1yb3dUYWcpKQogICAgICAgICByZXR1cm4gbmV3
IChhcmVuYSkgUmVuZGVyTWF0aE1MUm93KHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5oCShyZXZpc2lvbiAx
NTU5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHByb3RlY3RlZDoKICAgICBN
YXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50Jik7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0
ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJlbmRl
ck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBSZW5kZXJTdHlsZSYpOwogfTsK
ICAgICAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50
LmNwcAkocmV2aXNpb24gMTU1OTAwKQorKysgU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1h
dGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBOb2RlOjpJbnNl
cnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IE1hdGhNCiAgICAgcmV0dXJuIE1hdGhNTElubGluZUNv
bnRhaW5lckVsZW1lbnQ6Omluc2VydGVkSW50byhpbnNlcnRpb25Qb2ludCk7CiB9CiAKLVJlbmRl
ck9iamVjdCogTWF0aE1MTWF0aEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBh
cmVuYSwgUmVuZGVyU3R5bGUqKQorUmVuZGVyT2JqZWN0KiBNYXRoTUxNYXRoRWxlbWVudDo6Y3Jl
YXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmIGFyZW5hLCBSZW5kZXJTdHlsZSYpCiB7CiAgICAgcmV0
dXJuIG5ldyAoYXJlbmEpIFJlbmRlck1hdGhNTE1hdGgodGhpcyk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuaAkocmV2aXNpb24gMTU1OTAwKQorKysg
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDcgKzQwLDcgQEAgcHJpdmF0ZToKICAgICBNYXRoTUxNYXRoRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYpOwogCiAgICAgdmlydHVhbCBJbnNlcnRp
b25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlKikgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5h
KiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVy
ZXIoUmVuZGVyQXJlbmEmLCBSZW5kZXJTdHlsZSYpOwogfTsKICAgICAKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNwcAkocmV2aXNpb24gMTU1OTAw
KQorKysgU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBQYXNzUmVmUHRyPE1hdGhNTFRleHRFbGVtZW50PiBN
YXRoTUxUZXh0CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNYXRoTUxUZXh0RWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCkpOwogfQogCi1SZW5kZXJPYmplY3QqIE1hdGhNTFRleHRFbGVtZW50Ojpj
cmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKiBzdHlsZSkKK1Jl
bmRlck9iamVjdCogTWF0aE1MVGV4dEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5h
JiBhcmVuYSwgUmVuZGVyU3R5bGUmIHN0eWxlKQogewogICAgIGlmIChoYXNMb2NhbE5hbWUoTWF0
aE1MTmFtZXM6Om1vVGFnKSkKICAgICAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlck1hdGhN
TE9wZXJhdG9yKHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRF
bGVtZW50LmgJKHJldmlzaW9uIDE1NTkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxUZXh0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgTWF0aE1MVGV4dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5k
ZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBSZW5kZXJPYmpl
Y3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiwgUmVuZGVyU3R5bGUmKTsKIH07CiAgICAg
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlz
aW9uIDE1NTkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE5Niw3ICsxOTYsNyBAQCBSZW5kZXJCbG9jazo6flJlbmRlckJs
b2NrKCkKIAogUmVuZGVyQmxvY2sqIFJlbmRlckJsb2NrOjpjcmVhdGVBbm9ueW1vdXMoRG9jdW1l
bnQmIGRvY3VtZW50KQogewotICAgIFJlbmRlckJsb2NrKiByZW5kZXJlciA9IG5ldyAoZG9jdW1l
bnQucmVuZGVyQXJlbmEoKSkgUmVuZGVyQmxvY2tGbG93KDApOworICAgIFJlbmRlckJsb2NrKiBy
ZW5kZXJlciA9IG5ldyAoKmRvY3VtZW50LnJlbmRlckFyZW5hKCkpIFJlbmRlckJsb2NrRmxvdygw
KTsKICAgICByZW5kZXJlci0+c2V0RG9jdW1lbnRGb3JBbm9ueW1vdXMoZG9jdW1lbnQpOwogICAg
IHJldHVybiByZW5kZXJlcjsKIH0KQEAgLTUyOSw5ICs1MjksOCBAQCBSZW5kZXJCbG9jayogUmVu
ZGVyQmxvY2s6OmNsb25lKCkgY29uc3QKICAgICBpZiAoaXNBbm9ueW1vdXNCbG9jaygpKSB7CiAg
ICAgICAgIGNsb25lQmxvY2sgPSBjcmVhdGVBbm9ueW1vdXNCbG9jaygpOwogICAgICAgICBjbG9u
ZUJsb2NrLT5zZXRDaGlsZHJlbklubGluZShjaGlsZHJlbklubGluZSgpKTsKLSAgICB9Ci0gICAg
ZWxzZSB7Ci0gICAgICAgIFJlbmRlck9iamVjdCogY2xvbmVSZW5kZXJlciA9IGVsZW1lbnQoKS0+
Y3JlYXRlUmVuZGVyZXIocmVuZGVyQXJlbmEoKSwgc3R5bGUoKSk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgUmVuZGVyT2JqZWN0KiBjbG9uZVJlbmRlcmVyID0gZWxlbWVudCgpLT5jcmVhdGVSZW5k
ZXJlcigqcmVuZGVyQXJlbmEoKSwgKnN0eWxlKCkpOwogICAgICAgICBjbG9uZUJsb2NrID0gdG9S
ZW5kZXJCbG9jayhjbG9uZVJlbmRlcmVyKTsKICAgICAgICAgY2xvbmVCbG9jay0+c2V0U3R5bGUo
c3R5bGUoKSk7CiAKQEAgLTE3NjEsOSArMTc2MCw5IEBAIFJlbmRlckJveE1vZGVsT2JqZWN0KiBS
ZW5kZXJCbG9jazo6Y3JlYXQKIAogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBuZXdSdW5JbiA9
IDA7CiAgICAgaWYgKCFydW5Jbi0+aXNSZW5kZXJCbG9ja0Zsb3coKSkKLSAgICAgICAgbmV3UnVu
SW4gPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlckJsb2NrRmxvdyhydW5Jbi0+ZWxlbWVudCgp
KTsKKyAgICAgICAgbmV3UnVuSW4gPSBuZXcgKCpyZW5kZXJBcmVuYSgpKSBSZW5kZXJCbG9ja0Zs
b3cocnVuSW4tPmVsZW1lbnQoKSk7CiAgICAgZWxzZQotICAgICAgICBuZXdSdW5JbiA9IG5ldyAo
cmVuZGVyQXJlbmEoKSkgUmVuZGVySW5saW5lKHJ1bkluLT5lbGVtZW50KCkpOworICAgICAgICBu
ZXdSdW5JbiA9IG5ldyAoKnJlbmRlckFyZW5hKCkpIFJlbmRlcklubGluZShydW5Jbi0+ZWxlbWVu
dCgpKTsKIAogICAgIHJ1bkluLT5lbGVtZW50KCktPnNldFJlbmRlcmVyKG5ld1J1bkluKTsKICAg
ICBuZXdSdW5Jbi0+c2V0U3R5bGUocnVuSW4tPnN0eWxlKCkpOwpAQCAtNTkyMyw3ICs1OTIyLDcg
QEAgdm9pZCBSZW5kZXJCbG9jazo6Y3JlYXRlRmlyc3RMZXR0ZXJSZW5kZQogICAgICAgICAvLyBD
b25zdHJ1Y3QgYSB0ZXh0IGZyYWdtZW50IGZvciB0aGUgdGV4dCBhZnRlciB0aGUgZmlyc3QgbGV0
dGVyLgogICAgICAgICAvLyBUaGlzIHRleHQgZnJhZ21lbnQgbWlnaHQgYmUgZW1wdHkuCiAgICAg
ICAgIFJlbmRlclRleHRGcmFnbWVudCogcmVtYWluaW5nVGV4dCA9IAotICAgICAgICAgICAgbmV3
IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJUZXh0RnJhZ21lbnQodGV4dE9iai0+bm9kZSgpID8gdGV4
dE9iai0+bm9kZSgpIDogJnRleHRPYmotPmRvY3VtZW50KCksIG9sZFRleHQuZ2V0KCksIGxlbmd0
aCwgb2xkVGV4dC0+bGVuZ3RoKCkgLSBsZW5ndGgpOworICAgICAgICAgICAgbmV3ICgqcmVuZGVy
QXJlbmEoKSkgUmVuZGVyVGV4dEZyYWdtZW50KHRleHRPYmotPm5vZGUoKSA/IHRleHRPYmotPm5v
ZGUoKSA6ICZ0ZXh0T2JqLT5kb2N1bWVudCgpLCBvbGRUZXh0LmdldCgpLCBsZW5ndGgsIG9sZFRl
eHQtPmxlbmd0aCgpIC0gbGVuZ3RoKTsKICAgICAgICAgcmVtYWluaW5nVGV4dC0+c2V0U3R5bGUo
dGV4dE9iai0+c3R5bGUoKSk7CiAgICAgICAgIGlmIChyZW1haW5pbmdUZXh0LT5ub2RlKCkpCiAg
ICAgICAgICAgICByZW1haW5pbmdUZXh0LT5ub2RlKCktPnNldFJlbmRlcmVyKHJlbWFpbmluZ1Rl
eHQpOwpAQCAtNTkzNSw3ICs1OTM0LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6Y3JlYXRlRmlyc3RM
ZXR0ZXJSZW5kZQogICAgICAgICAKICAgICAgICAgLy8gY29uc3RydWN0IHRleHQgZnJhZ21lbnQg
Zm9yIHRoZSBmaXJzdCBsZXR0ZXIKICAgICAgICAgUmVuZGVyVGV4dEZyYWdtZW50KiBsZXR0ZXIg
PSAKLSAgICAgICAgICAgIG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyVGV4dEZyYWdtZW50KHJl
bWFpbmluZ1RleHQtPm5vZGUoKSA/IHJlbWFpbmluZ1RleHQtPm5vZGUoKSA6ICZyZW1haW5pbmdU
ZXh0LT5kb2N1bWVudCgpLCBvbGRUZXh0LmdldCgpLCAwLCBsZW5ndGgpOworICAgICAgICAgICAg
bmV3ICgqcmVuZGVyQXJlbmEoKSkgUmVuZGVyVGV4dEZyYWdtZW50KHJlbWFpbmluZ1RleHQtPm5v
ZGUoKSA/IHJlbWFpbmluZ1RleHQtPm5vZGUoKSA6ICZyZW1haW5pbmdUZXh0LT5kb2N1bWVudCgp
LCBvbGRUZXh0LmdldCgpLCAwLCBsZW5ndGgpOwogICAgICAgICBsZXR0ZXItPnNldFN0eWxlKHBz
ZXVkb1N0eWxlKTsKICAgICAgICAgZmlyc3RMZXR0ZXItPmFkZENoaWxkKGxldHRlcik7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwCShyZXZpc2lvbiAx
NTU5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgUmVuZGVyQnV0dG9uOjpzZXRUZXh0
KGNvbnN0IFN0cmluZyYKICAgICAgICAgaWYgKG1fYnV0dG9uVGV4dCkKICAgICAgICAgICAgIG1f
YnV0dG9uVGV4dC0+c2V0VGV4dChzdHIuaW1wbCgpKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICBtX2J1dHRvblRleHQgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlclRleHRGcmFnbWVu
dCgmZG9jdW1lbnQoKSwgc3RyLmltcGwoKSk7CisgICAgICAgICAgICBtX2J1dHRvblRleHQgPSBu
ZXcgKCpyZW5kZXJBcmVuYSgpKSBSZW5kZXJUZXh0RnJhZ21lbnQoJmRvY3VtZW50KCksIHN0ci5p
bXBsKCkpOwogICAgICAgICAgICAgbV9idXR0b25UZXh0LT5zZXRTdHlsZShzdHlsZSgpKTsKICAg
ICAgICAgICAgIGFkZENoaWxkKG1fYnV0dG9uVGV4dCk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAkocmV2
aXNpb24gMTU1OTAwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVk
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDcgKzExOSw3IEBAIFJlbmRlckVtYmVk
ZGVkT2JqZWN0Ojp+UmVuZGVyRW1iZWRkZWRPYmoKIAogUmVuZGVyRW1iZWRkZWRPYmplY3QqIFJl
bmRlckVtYmVkZGVkT2JqZWN0OjpjcmVhdGVGb3JBcHBsZXQoSFRNTEFwcGxldEVsZW1lbnQmIGFw
cGxldCkKIHsKLSAgICBSZW5kZXJFbWJlZGRlZE9iamVjdCogcmVuZGVyZXIgPSBuZXcgKGFwcGxl
dC5kb2N1bWVudCgpLnJlbmRlckFyZW5hKCkpIFJlbmRlckVtYmVkZGVkT2JqZWN0KGFwcGxldCk7
CisgICAgUmVuZGVyRW1iZWRkZWRPYmplY3QqIHJlbmRlcmVyID0gbmV3ICgqYXBwbGV0LmRvY3Vt
ZW50KCkucmVuZGVyQXJlbmEoKSkgUmVuZGVyRW1iZWRkZWRPYmplY3QoYXBwbGV0KTsKICAgICBy
ZW5kZXJlci0+c2V0SW5saW5lKHRydWUpOwogICAgIHJldHVybiByZW5kZXJlcjsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAkocmV2
aXNpb24gMTU1OTAwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxl
Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM3LDcgKzEzNyw3IEBAIFJlbmRlckZsZXhpYmxl
Qm94Ojp+UmVuZGVyRmxleGlibGVCb3goKQogCiBSZW5kZXJGbGV4aWJsZUJveCogUmVuZGVyRmxl
eGlibGVCb3g6OmNyZWF0ZUFub255bW91cyhEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgUmVu
ZGVyRmxleGlibGVCb3gqIHJlbmRlcmVyID0gbmV3IChkb2N1bWVudC5yZW5kZXJBcmVuYSgpKSBS
ZW5kZXJGbGV4aWJsZUJveCgwKTsKKyAgICBSZW5kZXJGbGV4aWJsZUJveCogcmVuZGVyZXIgPSBu
ZXcgKCpkb2N1bWVudC5yZW5kZXJBcmVuYSgpKSBSZW5kZXJGbGV4aWJsZUJveCgwKTsKICAgICBy
ZW5kZXJlci0+c2V0RG9jdW1lbnRGb3JBbm9ueW1vdXMoZG9jdW1lbnQpOwogICAgIHJldHVybiBy
ZW5kZXJlcjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2Ny
ZWVuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVs
bFNjcmVlbi5jcHAJKHJldmlzaW9uIDE1NTkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGdWxsU2NyZWVuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBS
ZW5kZXJGdWxsU2NyZWVuOjpSZW5kZXJGdWxsU2NyZWVuKCkKIAogUmVuZGVyRnVsbFNjcmVlbiog
UmVuZGVyRnVsbFNjcmVlbjo6Y3JlYXRlQW5vbnltb3VzKERvY3VtZW50JiBkb2N1bWVudCkKIHsK
LSAgICBSZW5kZXJGdWxsU2NyZWVuKiByZW5kZXJlciA9IG5ldyAoZG9jdW1lbnQucmVuZGVyQXJl
bmEoKSkgUmVuZGVyRnVsbFNjcmVlbigpOworICAgIFJlbmRlckZ1bGxTY3JlZW4qIHJlbmRlcmVy
ID0gbmV3ICgqZG9jdW1lbnQucmVuZGVyQXJlbmEoKSkgUmVuZGVyRnVsbFNjcmVlbigpOwogICAg
IHJlbmRlcmVyLT5zZXREb2N1bWVudEZvckFub255bW91cyhkb2N1bWVudCk7CiAgICAgcmV0dXJu
IHJlbmRlcmVyOwogfQpAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgUmVuZGVyRnVsbFNjcmVlbjo6
Y3JlYXRlUGxhY2Vob2xkZXIKICAgICAgICAgc3R5bGUtPnNldEhlaWdodChMZW5ndGgoZnJhbWVS
ZWN0LmhlaWdodCgpLCBGaXhlZCkpOwogCiAgICAgaWYgKCFtX3BsYWNlaG9sZGVyKSB7Ci0gICAg
ICAgIG1fcGxhY2Vob2xkZXIgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlckZ1bGxTY3JlZW5Q
bGFjZWhvbGRlcih0aGlzKTsKKyAgICAgICAgbV9wbGFjZWhvbGRlciA9IG5ldyAoKnJlbmRlckFy
ZW5hKCkpIFJlbmRlckZ1bGxTY3JlZW5QbGFjZWhvbGRlcih0aGlzKTsKICAgICAgICAgbV9wbGFj
ZWhvbGRlci0+c2V0U3R5bGUoc3R5bGUpOwogICAgICAgICBpZiAocGFyZW50KCkpIHsKICAgICAg
ICAgICAgIHBhcmVudCgpLT5hZGRDaGlsZChtX3BsYWNlaG9sZGVyLCB0aGlzKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAkocmV2aXNpb24gMTU1OTAwKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjQsNyArNjQsNyBAQCBSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoRWxlbWVudCogZWxl
bWVuCiAKIFJlbmRlckltYWdlKiBSZW5kZXJJbWFnZTo6Y3JlYXRlQW5vbnltb3VzKERvY3VtZW50
JiBkb2N1bWVudCkKIHsKLSAgICBSZW5kZXJJbWFnZSogaW1hZ2UgPSBuZXcgKGRvY3VtZW50LnJl
bmRlckFyZW5hKCkpIFJlbmRlckltYWdlKDApOworICAgIFJlbmRlckltYWdlKiBpbWFnZSA9IG5l
dyAoKmRvY3VtZW50LnJlbmRlckFyZW5hKCkpIFJlbmRlckltYWdlKDApOwogICAgIGltYWdlLT5z
ZXREb2N1bWVudEZvckFub255bW91cyhkb2N1bWVudCk7CiAgICAgcmV0dXJuIGltYWdlOwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAJKHJldmlzaW9u
IDE1NTkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIFJlbmRlcklubGluZTo6UmVuZGVySW5saW5l
KEVsZW1lbnQqIGVsZW0KIAogUmVuZGVySW5saW5lKiBSZW5kZXJJbmxpbmU6OmNyZWF0ZUFub255
bW91cyhEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgUmVuZGVySW5saW5lKiByZW5kZXJlciA9
IG5ldyAoZG9jdW1lbnQucmVuZGVyQXJlbmEoKSkgUmVuZGVySW5saW5lKDApOworICAgIFJlbmRl
cklubGluZSogcmVuZGVyZXIgPSBuZXcgKCpkb2N1bWVudC5yZW5kZXJBcmVuYSgpKSBSZW5kZXJJ
bmxpbmUoMCk7CiAgICAgcmVuZGVyZXItPnNldERvY3VtZW50Rm9yQW5vbnltb3VzKGRvY3VtZW50
KTsKICAgICByZXR1cm4gcmVuZGVyZXI7CiB9CkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBSZW5k
ZXJJbmxpbmU6OmFkZENoaWxkSWdub3JpbmdDb250aQogCiBSZW5kZXJJbmxpbmUqIFJlbmRlcklu
bGluZTo6Y2xvbmUoKSBjb25zdAogewotICAgIFJlbmRlcklubGluZSogY2xvbmVJbmxpbmUgPSBu
ZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlcklubGluZShlbGVtZW50KCkpOworICAgIFJlbmRlcklu
bGluZSogY2xvbmVJbmxpbmUgPSBuZXcgKCpyZW5kZXJBcmVuYSgpKSBSZW5kZXJJbmxpbmUoZWxl
bWVudCgpKTsKICAgICBjbG9uZUlubGluZS0+c2V0U3R5bGUoc3R5bGUoKSk7CiAgICAgY2xvbmVJ
bmxpbmUtPnNldEZsb3dUaHJlYWRTdGF0ZShmbG93VGhyZWFkU3RhdGUoKSk7CiAgICAgcmV0dXJu
IGNsb25lSW5saW5lOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RN
YXJrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0TWFya2VyLmNwcAkocmV2aXNpb24gMTU1OTAwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTM1LDcgKzExMzUs
NyBAQCBSZW5kZXJMaXN0TWFya2VyOjp+UmVuZGVyTGlzdE1hcmtlcigpCiBSZW5kZXJMaXN0TWFy
a2VyKiBSZW5kZXJMaXN0TWFya2VyOjpjcmVhdGVBbm9ueW1vdXMoUmVuZGVyTGlzdEl0ZW0mIGxp
c3RJdGVtKQogewogICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGxpc3RJdGVtLmRvY3VtZW50KCk7
Ci0gICAgUmVuZGVyTGlzdE1hcmtlciogcmVuZGVyZXIgPSBuZXcgKGRvY3VtZW50LnJlbmRlckFy
ZW5hKCkpIFJlbmRlckxpc3RNYXJrZXIobGlzdEl0ZW0pOworICAgIFJlbmRlckxpc3RNYXJrZXIq
IHJlbmRlcmVyID0gbmV3ICgqZG9jdW1lbnQucmVuZGVyQXJlbmEoKSkgUmVuZGVyTGlzdE1hcmtl
cihsaXN0SXRlbSk7CiAgICAgcmVuZGVyZXItPnNldERvY3VtZW50Rm9yQW5vbnltb3VzKGRvY3Vt
ZW50KTsKICAgICByZXR1cm4gcmVuZGVyZXI7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAJKHJldmlzaW9uIDE1NTkwMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0
Myw3ICsyNDMsNyBAQCB2b2lkIFJlbmRlck1lbnVMaXN0OjpzZXRUZXh0KGNvbnN0IFN0cmluCiAg
ICAgICAgIGlmICghbV9idXR0b25UZXh0IHx8ICFtX2J1dHRvblRleHQtPmlzQlIoKSkgewogICAg
ICAgICAgICAgaWYgKG1fYnV0dG9uVGV4dCkKICAgICAgICAgICAgICAgICBtX2J1dHRvblRleHQt
PmRlc3Ryb3koKTsKLSAgICAgICAgICAgIG1fYnV0dG9uVGV4dCA9IG5ldyAocmVuZGVyQXJlbmEo
KSkgUmVuZGVyQlIoJmRvY3VtZW50KCkpOworICAgICAgICAgICAgbV9idXR0b25UZXh0ID0gbmV3
ICgqcmVuZGVyQXJlbmEoKSkgUmVuZGVyQlIoJmRvY3VtZW50KCkpOwogICAgICAgICAgICAgbV9i
dXR0b25UZXh0LT5zZXRTdHlsZShzdHlsZSgpKTsKICAgICAgICAgICAgIGFkZENoaWxkKG1fYnV0
dG9uVGV4dCk7CiAgICAgICAgIH0KQEAgLTI1Myw3ICsyNTMsNyBAQCB2b2lkIFJlbmRlck1lbnVM
aXN0OjpzZXRUZXh0KGNvbnN0IFN0cmluCiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaWYg
KG1fYnV0dG9uVGV4dCkKICAgICAgICAgICAgICAgICBtX2J1dHRvblRleHQtPmRlc3Ryb3koKTsK
LSAgICAgICAgICAgIG1fYnV0dG9uVGV4dCA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyVGV4
dCgmZG9jdW1lbnQoKSwgcy5pbXBsKCkpOworICAgICAgICAgICAgbV9idXR0b25UZXh0ID0gbmV3
ICgqcmVuZGVyQXJlbmEoKSkgUmVuZGVyVGV4dCgmZG9jdW1lbnQoKSwgcy5pbXBsKCkpOwogICAg
ICAgICAgICAgbV9idXR0b25UZXh0LT5zZXRTdHlsZShzdHlsZSgpKTsKICAgICAgICAgICAgIGFk
ZENoaWxkKG1fYnV0dG9uVGV4dCk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuY3BwCShy
ZXZpc2lvbiAxNTU5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlD
b2x1bW5GbG93VGhyZWFkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBSZW5k
ZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQ6On5SZW5kZXJNdWx0CiAKIFJlbmRlck11bHRpQ29sdW1u
Rmxvd1RocmVhZCogUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkOjpjcmVhdGVBbm9ueW1vdXMo
RG9jdW1lbnQmIGRvY3VtZW50KQogewotICAgIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCog
cmVuZGVyZXIgPSBuZXcgKGRvY3VtZW50LnJlbmRlckFyZW5hKCkpIFJlbmRlck11bHRpQ29sdW1u
Rmxvd1RocmVhZCgpOworICAgIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCogcmVuZGVyZXIg
PSBuZXcgKCpkb2N1bWVudC5yZW5kZXJBcmVuYSgpKSBSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJl
YWQoKTsKICAgICByZW5kZXJlci0+c2V0RG9jdW1lbnRGb3JBbm9ueW1vdXMoZG9jdW1lbnQpOwog
ICAgIHJldHVybiByZW5kZXJlcjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcAkocmV2aXNpb24gMTU1OTAwKQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTIsNyArNTIsNyBAQCBSZW5kZXJNdWx0aUNvbHVtblNldDo6UmVuZGVyTXVsdGlD
b2x1bW5TCiBSZW5kZXJNdWx0aUNvbHVtblNldCogUmVuZGVyTXVsdGlDb2x1bW5TZXQ6OmNyZWF0
ZUFub255bW91cyhSZW5kZXJGbG93VGhyZWFkJiBmbG93VGhyZWFkKQogewogICAgIERvY3VtZW50
JiBkb2N1bWVudCA9IGZsb3dUaHJlYWQuZG9jdW1lbnQoKTsKLSAgICBSZW5kZXJNdWx0aUNvbHVt
blNldCogcmVuZGVyZXIgPSBuZXcgKGRvY3VtZW50LnJlbmRlckFyZW5hKCkpIFJlbmRlck11bHRp
Q29sdW1uU2V0KCZmbG93VGhyZWFkKTsKKyAgICBSZW5kZXJNdWx0aUNvbHVtblNldCogcmVuZGVy
ZXIgPSBuZXcgKCpkb2N1bWVudC5yZW5kZXJBcmVuYSgpKSBSZW5kZXJNdWx0aUNvbHVtblNldCgm
Zmxvd1RocmVhZCk7CiAgICAgcmVuZGVyZXItPnNldERvY3VtZW50Rm9yQW5vbnltb3VzKGRvY3Vt
ZW50KTsKICAgICByZXR1cm4gcmVuZGVyZXI7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcAkocmV2aXNpb24gMTU1OTAw
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogUmVu
ZGVyTmFtZWRGbG93VGhyZWFkKiBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmNyZWF0ZUFub255bW91
cyhEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiBuYW1lZEZs
b3cpCiB7CiAgICAgQVNTRVJUKGRvY3VtZW50LmNzc1JlZ2lvbnNFbmFibGVkKCkpOwotICAgIFJl
bmRlck5hbWVkRmxvd1RocmVhZCogcmVuZGVyZXIgPSBuZXcgKGRvY3VtZW50LnJlbmRlckFyZW5h
KCkpIFJlbmRlck5hbWVkRmxvd1RocmVhZChuYW1lZEZsb3cpOworICAgIFJlbmRlck5hbWVkRmxv
d1RocmVhZCogcmVuZGVyZXIgPSBuZXcgKCpkb2N1bWVudC5yZW5kZXJBcmVuYSgpKSBSZW5kZXJO
YW1lZEZsb3dUaHJlYWQobmFtZWRGbG93KTsKICAgICByZW5kZXJlci0+c2V0RG9jdW1lbnRGb3JB
bm9ueW1vdXMoZG9jdW1lbnQpOwogICAgIHJldHVybiByZW5kZXJlcjsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiAxNTU5MDApCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQ4LDkgKzE0OCw5IEBAIGJvb2wgUmVuZGVyT2JqZWN0OjpzX25vTG9uZ2VyQWZmZWN0
c1BhcmUKIAogUmVuZGVyT2JqZWN0QW5jZXN0b3JMaW5lYm94RGlydHlTZXQqIFJlbmRlck9iamVj
dDo6c19hbmNlc3RvckxpbmVib3hEaXJ0eVNldCA9IDA7CiAKLXZvaWQqIFJlbmRlck9iamVjdDo6
b3BlcmF0b3IgbmV3KHNpemVfdCBzeiwgUmVuZGVyQXJlbmEqIHJlbmRlckFyZW5hKQordm9pZCog
UmVuZGVyT2JqZWN0OjpvcGVyYXRvciBuZXcoc2l6ZV90IHN6LCBSZW5kZXJBcmVuYSYgcmVuZGVy
QXJlbmEpCiB7Ci0gICAgcmV0dXJuIHJlbmRlckFyZW5hLT5hbGxvY2F0ZShzeik7CisgICAgcmV0
dXJuIHJlbmRlckFyZW5hLmFsbG9jYXRlKHN6KTsKIH0KIAogdm9pZCBSZW5kZXJPYmplY3Q6Om9w
ZXJhdG9yIGRlbGV0ZSh2b2lkKiBwdHIsIHNpemVfdCBzeikKQEAgLTE2MSwyMSArMTYxLDIxIEBA
IHZvaWQgUmVuZGVyT2JqZWN0OjpvcGVyYXRvciBkZWxldGUodm9pZCoKICAgICAqKHNpemVfdCAq
KXB0ciA9IHN6OwogfQogCi1SZW5kZXJPYmplY3QqIFJlbmRlck9iamVjdDo6Y3JlYXRlT2JqZWN0
KEVsZW1lbnQqIGVsZW1lbnQsIFJlbmRlclN0eWxlKiBzdHlsZSkKK1JlbmRlck9iamVjdCogUmVu
ZGVyT2JqZWN0OjpjcmVhdGVPYmplY3QoRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmIHN0
eWxlKQogewotICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGVsZW1lbnQtPmRvY3VtZW50KCk7Ci0g
ICAgUmVuZGVyQXJlbmEqIGFyZW5hID0gZG9jdW1lbnQucmVuZGVyQXJlbmEoKTsKKyAgICBEb2N1
bWVudCYgZG9jdW1lbnQgPSBlbGVtZW50LmRvY3VtZW50KCk7CisgICAgUmVuZGVyQXJlbmEmIGFy
ZW5hID0gKmRvY3VtZW50LnJlbmRlckFyZW5hKCk7CiAKICAgICAvLyBNaW5pbWFsIHN1cHBvcnQg
Zm9yIGNvbnRlbnQgcHJvcGVydGllcyByZXBsYWNpbmcgYW4gZW50aXJlIGVsZW1lbnQuCiAgICAg
Ly8gV29ya3Mgb25seSBpZiB3ZSBoYXZlIGV4YWN0bHkgb25lIHBpZWNlIG9mIGNvbnRlbnQgYW5k
IGl0J3MgYSBVUkwuCiAgICAgLy8gT3RoZXJ3aXNlIGFjdHMgYXMgaWYgd2UgZGlkbid0IHN1cHBv
cnQgdGhpcyBmZWF0dXJlLgotICAgIGNvbnN0IENvbnRlbnREYXRhKiBjb250ZW50RGF0YSA9IHN0
eWxlLT5jb250ZW50RGF0YSgpOwotICAgIGlmIChjb250ZW50RGF0YSAmJiAhY29udGVudERhdGEt
Pm5leHQoKSAmJiBjb250ZW50RGF0YS0+aXNJbWFnZSgpICYmICFlbGVtZW50LT5pc1BzZXVkb0Vs
ZW1lbnQoKSkgewotICAgICAgICBSZW5kZXJJbWFnZSogaW1hZ2UgPSBuZXcgKGFyZW5hKSBSZW5k
ZXJJbWFnZShlbGVtZW50KTsKKyAgICBjb25zdCBDb250ZW50RGF0YSogY29udGVudERhdGEgPSBz
dHlsZS5jb250ZW50RGF0YSgpOworICAgIGlmIChjb250ZW50RGF0YSAmJiAhY29udGVudERhdGEt
Pm5leHQoKSAmJiBjb250ZW50RGF0YS0+aXNJbWFnZSgpICYmICFlbGVtZW50LmlzUHNldWRvRWxl
bWVudCgpKSB7CisgICAgICAgIFJlbmRlckltYWdlKiBpbWFnZSA9IG5ldyAoYXJlbmEpIFJlbmRl
ckltYWdlKCZlbGVtZW50KTsKICAgICAgICAgLy8gUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1h
Z2UgcmVxdWlyZXMgYSBzdHlsZSBiZWluZyBwcmVzZW50IG9uIHRoZSBpbWFnZSBidXQgd2UgZG9u
J3Qgd2FudCB0bwogICAgICAgICAvLyB0cmlnZ2VyIGEgc3R5bGUgY2hhbmdlIG5vdyBhcyB0aGUg
bm9kZSBpcyBub3QgZnVsbHkgYXR0YWNoZWQuIE1vdmluZyB0aGlzIGNvZGUgdG8gc3R5bGUgY2hh
bmdlCiAgICAgICAgIC8vIGRvZXNuJ3QgbWFrZSBzZW5zZSBhcyBpdCBzaG91bGQgYmUgcnVuIG9u
Y2UgYXQgcmVuZGVyZXIgY3JlYXRpb24uCi0gICAgICAgIGltYWdlLT5zZXRTdHlsZUludGVybmFs
KHN0eWxlKTsKKyAgICAgICAgaW1hZ2UtPnNldFN0eWxlSW50ZXJuYWwoJnN0eWxlKTsKICAgICAg
ICAgaWYgKGNvbnN0IFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UgPSBzdGF0aWNfY2FzdDxjb25zdCBJ
bWFnZUNvbnRlbnREYXRhKj4oY29udGVudERhdGEpLT5pbWFnZSgpKSB7CiAgICAgICAgICAgICBp
bWFnZS0+c2V0SW1hZ2VSZXNvdXJjZShSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6Y3Jl
YXRlKGNvbnN0X2Nhc3Q8U3R5bGVJbWFnZSo+KHN0eWxlSW1hZ2UpKSk7CiAgICAgICAgICAgICBp
bWFnZS0+c2V0SXNHZW5lcmF0ZWRDb250ZW50KCk7CkBAIC0xODUsNTYgKzE4NSw1NiBAQCBSZW5k
ZXJPYmplY3QqIFJlbmRlck9iamVjdDo6Y3JlYXRlT2JqZWN0CiAgICAgICAgIHJldHVybiBpbWFn
ZTsKICAgICB9CiAKLSAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShydWJ5VGFnKSkgewotICAg
ICAgICBpZiAoc3R5bGUtPmRpc3BsYXkoKSA9PSBJTkxJTkUpCi0gICAgICAgICAgICByZXR1cm4g
bmV3IChhcmVuYSkgUmVuZGVyUnVieUFzSW5saW5lKCplbGVtZW50KTsKLSAgICAgICAgZWxzZSBp
ZiAoc3R5bGUtPmRpc3BsYXkoKSA9PSBCTE9DSykKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFy
ZW5hKSBSZW5kZXJSdWJ5QXNCbG9jaygqZWxlbWVudCk7CisgICAgaWYgKGVsZW1lbnQuaGFzVGFn
TmFtZShydWJ5VGFnKSkgeworICAgICAgICBpZiAoc3R5bGUuZGlzcGxheSgpID09IElOTElORSkK
KyAgICAgICAgICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJSdWJ5QXNJbmxpbmUoZWxlbWVu
dCk7CisgICAgICAgIGVsc2UgaWYgKHN0eWxlLmRpc3BsYXkoKSA9PSBCTE9DSykKKyAgICAgICAg
ICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJSdWJ5QXNCbG9jayhlbGVtZW50KTsKICAgICB9
CiAgICAgLy8gdHJlYXQgPHJ0PiBhcyBydWJ5IHRleHQgT05MWSBpZiBpdCBzdGlsbCBoYXMgaXRz
IGRlZmF1bHQgdHJlYXRtZW50IG9mIGJsb2NrCi0gICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUo
cnRUYWcpICYmIHN0eWxlLT5kaXNwbGF5KCkgPT0gQkxPQ0spCi0gICAgICAgIHJldHVybiBuZXcg
KGFyZW5hKSBSZW5kZXJSdWJ5VGV4dCgqZWxlbWVudCk7Ci0gICAgaWYgKGRvY3VtZW50LmNzc1Jl
Z2lvbnNFbmFibGVkKCkgJiYgc3R5bGUtPmlzRGlzcGxheVJlZ2lvblR5cGUoKSAmJiAhc3R5bGUt
PnJlZ2lvblRocmVhZCgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJl
bmRlclJlZ2lvbihlbGVtZW50LCAwKTsKLSAgICBzd2l0Y2ggKHN0eWxlLT5kaXNwbGF5KCkpIHsK
KyAgICBpZiAoZWxlbWVudC5oYXNUYWdOYW1lKHJ0VGFnKSAmJiBzdHlsZS5kaXNwbGF5KCkgPT0g
QkxPQ0spCisgICAgICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJSdWJ5VGV4dChlbGVtZW50
KTsKKyAgICBpZiAoZG9jdW1lbnQuY3NzUmVnaW9uc0VuYWJsZWQoKSAmJiBzdHlsZS5pc0Rpc3Bs
YXlSZWdpb25UeXBlKCkgJiYgIXN0eWxlLnJlZ2lvblRocmVhZCgpLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclJlZ2lvbigmZWxlbWVudCwgMCk7CisgICAgc3dp
dGNoIChzdHlsZS5kaXNwbGF5KCkpIHsKICAgICBjYXNlIE5PTkU6CiAgICAgICAgIHJldHVybiAw
OwogICAgIGNhc2UgSU5MSU5FOgotICAgICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVySW5s
aW5lKGVsZW1lbnQpOworICAgICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVySW5saW5lKCZl
bGVtZW50KTsKICAgICBjYXNlIEJMT0NLOgogICAgIGNhc2UgSU5MSU5FX0JMT0NLOgogICAgIGNh
c2UgUlVOX0lOOgogICAgIGNhc2UgQ09NUEFDVDoKLSAgICAgICAgaWYgKCghc3R5bGUtPmhhc0F1
dG9Db2x1bW5Db3VudCgpIHx8ICFzdHlsZS0+aGFzQXV0b0NvbHVtbldpZHRoKCkpICYmIGRvY3Vt
ZW50LnJlZ2lvbkJhc2VkQ29sdW1uc0VuYWJsZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBuZXcg
KGFyZW5hKSBSZW5kZXJNdWx0aUNvbHVtbkJsb2NrKCplbGVtZW50KTsKLSAgICAgICAgcmV0dXJu
IG5ldyAoYXJlbmEpIFJlbmRlckJsb2NrRmxvdyhlbGVtZW50KTsKKyAgICAgICAgaWYgKCghc3R5
bGUuaGFzQXV0b0NvbHVtbkNvdW50KCkgfHwgIXN0eWxlLmhhc0F1dG9Db2x1bW5XaWR0aCgpKSAm
JiBkb2N1bWVudC5yZWdpb25CYXNlZENvbHVtbnNFbmFibGVkKCkpCisgICAgICAgICAgICByZXR1
cm4gbmV3IChhcmVuYSkgUmVuZGVyTXVsdGlDb2x1bW5CbG9jayhlbGVtZW50KTsKKyAgICAgICAg
cmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlckJsb2NrRmxvdygmZWxlbWVudCk7CiAgICAgY2FzZSBM
SVNUX0lURU06Ci0gICAgICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJMaXN0SXRlbSgqZWxl
bWVudCk7CisgICAgICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJMaXN0SXRlbShlbGVtZW50
KTsKICAgICBjYXNlIFRBQkxFOgogICAgIGNhc2UgSU5MSU5FX1RBQkxFOgotICAgICAgICByZXR1
cm4gbmV3IChhcmVuYSkgUmVuZGVyVGFibGUoZWxlbWVudCk7CisgICAgICAgIHJldHVybiBuZXcg
KGFyZW5hKSBSZW5kZXJUYWJsZSgmZWxlbWVudCk7CiAgICAgY2FzZSBUQUJMRV9ST1dfR1JPVVA6
CiAgICAgY2FzZSBUQUJMRV9IRUFERVJfR1JPVVA6CiAgICAgY2FzZSBUQUJMRV9GT09URVJfR1JP
VVA6Ci0gICAgICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJUYWJsZVNlY3Rpb24oZWxlbWVu
dCk7CisgICAgICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJUYWJsZVNlY3Rpb24oJmVsZW1l
bnQpOwogICAgIGNhc2UgVEFCTEVfUk9XOgotICAgICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVu
ZGVyVGFibGVSb3coZWxlbWVudCk7CisgICAgICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJU
YWJsZVJvdygmZWxlbWVudCk7CiAgICAgY2FzZSBUQUJMRV9DT0xVTU5fR1JPVVA6CiAgICAgY2Fz
ZSBUQUJMRV9DT0xVTU46Ci0gICAgICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJUYWJsZUNv
bCgqZWxlbWVudCk7CisgICAgICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJUYWJsZUNvbChl
bGVtZW50KTsKICAgICBjYXNlIFRBQkxFX0NFTEw6Ci0gICAgICAgIHJldHVybiBuZXcgKGFyZW5h
KSBSZW5kZXJUYWJsZUNlbGwoZWxlbWVudCk7CisgICAgICAgIHJldHVybiBuZXcgKGFyZW5hKSBS
ZW5kZXJUYWJsZUNlbGwoJmVsZW1lbnQpOwogICAgIGNhc2UgVEFCTEVfQ0FQVElPTjoKLSAgICAg
ICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclRhYmxlQ2FwdGlvbigqZWxlbWVudCk7CisgICAg
ICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJUYWJsZUNhcHRpb24oZWxlbWVudCk7CiAgICAg
Y2FzZSBCT1g6CiAgICAgY2FzZSBJTkxJTkVfQk9YOgotICAgICAgICByZXR1cm4gbmV3IChhcmVu
YSkgUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94KCplbGVtZW50KTsKKyAgICAgICAgcmV0dXJu
IG5ldyAoYXJlbmEpIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveChlbGVtZW50KTsKICAgICBj
YXNlIEZMRVg6CiAgICAgY2FzZSBJTkxJTkVfRkxFWDoKLSAgICAgICAgcmV0dXJuIG5ldyAoYXJl
bmEpIFJlbmRlckZsZXhpYmxlQm94KGVsZW1lbnQpOworICAgICAgICByZXR1cm4gbmV3IChhcmVu
YSkgUmVuZGVyRmxleGlibGVCb3goJmVsZW1lbnQpOwogICAgIGNhc2UgR1JJRDoKICAgICBjYXNl
IElOTElORV9HUklEOgotICAgICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyR3JpZCgqZWxl
bWVudCk7CisgICAgICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJHcmlkKGVsZW1lbnQpOwog
ICAgIH0KIAogICAgIHJldHVybiAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuaAkocmV2aXNpb24gMTU1OTAwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsMTEgKzMyNSwxMSBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzaG93UmVuZGVyVHJlZUFuZE1hcmsoY29uc3QgUmVuZGVyT2JqZWN0KiBt
YXJrZWRPYmplY3QxID0gMCwgY29uc3QgY2hhciogbWFya2VkTGFiZWwxID0gMCwgY29uc3QgUmVu
ZGVyT2JqZWN0KiBtYXJrZWRPYmplY3QyID0gMCwgY29uc3QgY2hhciogbWFya2VkTGFiZWwyID0g
MCwgaW50IGRlcHRoID0gMCkgY29uc3Q7CiAjZW5kaWYKIAotICAgIHN0YXRpYyBSZW5kZXJPYmpl
Y3QqIGNyZWF0ZU9iamVjdChFbGVtZW50KiwgUmVuZGVyU3R5bGUqKTsKKyAgICBzdGF0aWMgUmVu
ZGVyT2JqZWN0KiBjcmVhdGVPYmplY3QoRWxlbWVudCYsIFJlbmRlclN0eWxlJik7CiAKICAgICAv
LyBPdmVybG9hZGVkIG5ldyBvcGVyYXRvci4gIERlcml2ZWQgY2xhc3NlcyBtdXN0IG92ZXJyaWRl
IG9wZXJhdG9yIG5ldwogICAgIC8vIGluIG9yZGVyIHRvIGFsbG9jYXRlIG91dCBvZiB0aGUgUmVu
ZGVyQXJlbmEuCi0gICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgUmVuZGVyQXJlbmEqKTsK
KyAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBSZW5kZXJBcmVuYSYpOwogCiAgICAgLy8g
T3ZlcnJpZGRlbiB0byBwcmV2ZW50IHRoZSBub3JtYWwgZGVsZXRlIGZyb20gYmVpbmcgY2FsbGVk
LgogICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqLCBzaXplX3QpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmNwcAkocmV2aXNpb24gMTU1OTAwKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Niw3ICs0Niw3IEBAIFJlbmRlclJlcGxpY2E6OlJlbmRlclJlcGxpY2EoKQogCiBS
ZW5kZXJSZXBsaWNhKiBSZW5kZXJSZXBsaWNhOjpjcmVhdGVBbm9ueW1vdXMoRG9jdW1lbnQmIGRv
Y3VtZW50KQogewotICAgIFJlbmRlclJlcGxpY2EqIHJlbmRlcmVyID0gbmV3IChkb2N1bWVudC5y
ZW5kZXJBcmVuYSgpKSBSZW5kZXJSZXBsaWNhKCk7CisgICAgUmVuZGVyUmVwbGljYSogcmVuZGVy
ZXIgPSBuZXcgKCpkb2N1bWVudC5yZW5kZXJBcmVuYSgpKSBSZW5kZXJSZXBsaWNhKCk7CiAgICAg
cmVuZGVyZXItPnNldERvY3VtZW50Rm9yQW5vbnltb3VzKGRvY3VtZW50KTsKICAgICByZXR1cm4g
cmVuZGVyZXI7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieUJh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5
QmFzZS5jcHAJKHJldmlzaW9uIDE1NTkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSdWJ5QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgUmVuZGVy
UnVieUJhc2U6On5SZW5kZXJSdWJ5QmFzZSgpCiAKIFJlbmRlclJ1YnlCYXNlKiBSZW5kZXJSdWJ5
QmFzZTo6Y3JlYXRlQW5vbnltb3VzKERvY3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICBSZW5kZXJS
dWJ5QmFzZSogcmVuZGVyZXIgPSBuZXcgKGRvY3VtZW50LnJlbmRlckFyZW5hKCkpIFJlbmRlclJ1
YnlCYXNlKCk7CisgICAgUmVuZGVyUnVieUJhc2UqIHJlbmRlcmVyID0gbmV3ICgqZG9jdW1lbnQu
cmVuZGVyQXJlbmEoKSkgUmVuZGVyUnVieUJhc2UoKTsKICAgICByZW5kZXJlci0+c2V0RG9jdW1l
bnRGb3JBbm9ueW1vdXMoZG9jdW1lbnQpOwogICAgIHJldHVybiByZW5kZXJlcjsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHAJKHJldmlzaW9uIDE1
NTkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjEwLDcgKzIxMCw3IEBAIFJlbmRlclJ1YnlCYXNlKiBSZW5kZXJSdWJ5
UnVuOjpjcmVhdGVSdWIKIFJlbmRlclJ1YnlSdW4qIFJlbmRlclJ1YnlSdW46OnN0YXRpY0NyZWF0
ZVJ1YnlSdW4oY29uc3QgUmVuZGVyT2JqZWN0KiBwYXJlbnRSdWJ5KQogewogICAgIEFTU0VSVChw
YXJlbnRSdWJ5ICYmIHBhcmVudFJ1YnktPmlzUnVieSgpKTsKLSAgICBSZW5kZXJSdWJ5UnVuKiBy
ciA9IG5ldyAocGFyZW50UnVieS0+cmVuZGVyQXJlbmEoKSkgUmVuZGVyUnVieVJ1bigpOworICAg
IFJlbmRlclJ1YnlSdW4qIHJyID0gbmV3ICgqcGFyZW50UnVieS0+cmVuZGVyQXJlbmEoKSkgUmVu
ZGVyUnVieVJ1bigpOwogICAgIHJyLT5zZXREb2N1bWVudEZvckFub255bW91cyhwYXJlbnRSdWJ5
LT5kb2N1bWVudCgpKTsKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG5ld1N0eWxlID0gUmVuZGVy
U3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50UnVieS0+c3R5bGUo
KSwgSU5MSU5FX0JMT0NLKTsKICAgICByci0+c2V0U3R5bGUobmV3U3R5bGUucmVsZWFzZSgpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFy
dC5jcHAJKHJldmlzaW9uIDE1NTkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTY3JvbGxiYXJQYXJ0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBSZW5k
ZXJTY3JvbGxiYXJQYXJ0Ojp+UmVuZGVyU2Nyb2xsYmFyUGFyCiAKIFJlbmRlclNjcm9sbGJhclBh
cnQqIFJlbmRlclNjcm9sbGJhclBhcnQ6OmNyZWF0ZUFub255bW91cyhEb2N1bWVudCYgZG9jdW1l
bnQsIFJlbmRlclNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7Ci0g
ICAgUmVuZGVyU2Nyb2xsYmFyUGFydCogcmVuZGVyZXIgPSBuZXcgKGRvY3VtZW50LnJlbmRlckFy
ZW5hKCkpIFJlbmRlclNjcm9sbGJhclBhcnQoc2Nyb2xsYmFyLCBwYXJ0KTsKKyAgICBSZW5kZXJT
Y3JvbGxiYXJQYXJ0KiByZW5kZXJlciA9IG5ldyAoKmRvY3VtZW50LnJlbmRlckFyZW5hKCkpIFJl
bmRlclNjcm9sbGJhclBhcnQoc2Nyb2xsYmFyLCBwYXJ0KTsKICAgICByZW5kZXJlci0+c2V0RG9j
dW1lbnRGb3JBbm9ueW1vdXMoZG9jdW1lbnQpOwogICAgIHJldHVybiByZW5kZXJlcjsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAkocmV2aXNpb24gMTU1
OTAwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQxNCw3ICsxNDE0LDcgQEAgYm9vbCBSZW5kZXJUYWJsZTo6bm9kZUF0UG9p
bnQoY29uc3QgSGl0VAogUmVuZGVyVGFibGUqIFJlbmRlclRhYmxlOjpjcmVhdGVBbm9ueW1vdXNX
aXRoUGFyZW50UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBwYXJlbnQpCiB7CiAgICAgUmVm
UHRyPFJlbmRlclN0eWxlPiBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNT
dHlsZVdpdGhEaXNwbGF5KHBhcmVudC0+c3R5bGUoKSwgVEFCTEUpOwotICAgIFJlbmRlclRhYmxl
KiBuZXdUYWJsZSA9IG5ldyAocGFyZW50LT5yZW5kZXJBcmVuYSgpKSBSZW5kZXJUYWJsZSgwKTsK
KyAgICBSZW5kZXJUYWJsZSogbmV3VGFibGUgPSBuZXcgKCpwYXJlbnQtPnJlbmRlckFyZW5hKCkp
IFJlbmRlclRhYmxlKDApOwogICAgIG5ld1RhYmxlLT5zZXREb2N1bWVudEZvckFub255bW91cyhw
YXJlbnQtPmRvY3VtZW50KCkpOwogICAgIG5ld1RhYmxlLT5zZXRTdHlsZShuZXdTdHlsZS5yZWxl
YXNlKCkpOwogICAgIHJldHVybiBuZXdUYWJsZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCShyZXZpc2lvbiAxNTU5MDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTM2Niw3ICsxMzY2LDcgQEAgdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnNjcm9sbGJhcnNDaGFuZ2Vk
KAogCiBSZW5kZXJUYWJsZUNlbGwqIFJlbmRlclRhYmxlQ2VsbDo6Y3JlYXRlQW5vbnltb3VzKERv
Y3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICBSZW5kZXJUYWJsZUNlbGwqIHJlbmRlcmVyID0gbmV3
IChkb2N1bWVudC5yZW5kZXJBcmVuYSgpKSBSZW5kZXJUYWJsZUNlbGwoMCk7CisgICAgUmVuZGVy
VGFibGVDZWxsKiByZW5kZXJlciA9IG5ldyAoKmRvY3VtZW50LnJlbmRlckFyZW5hKCkpIFJlbmRl
clRhYmxlQ2VsbCgwKTsKICAgICByZW5kZXJlci0+c2V0RG9jdW1lbnRGb3JBbm9ueW1vdXMoZG9j
dW1lbnQpOwogICAgIHJldHVybiByZW5kZXJlcjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcAkocmV2aXNpb24gMTU1OTAwKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjY2LDcgKzI2Niw3IEBAIHZvaWQgUmVuZGVyVGFibGVSb3c6OmltYWdlQ2hhbmdlZChXcmFwcGUK
IAogUmVuZGVyVGFibGVSb3cqIFJlbmRlclRhYmxlUm93OjpjcmVhdGVBbm9ueW1vdXMoRG9jdW1l
bnQmIGRvY3VtZW50KQogewotICAgIFJlbmRlclRhYmxlUm93KiByZW5kZXJlciA9IG5ldyAoZG9j
dW1lbnQucmVuZGVyQXJlbmEoKSkgUmVuZGVyVGFibGVSb3coMCk7CisgICAgUmVuZGVyVGFibGVS
b3cqIHJlbmRlcmVyID0gbmV3ICgqZG9jdW1lbnQucmVuZGVyQXJlbmEoKSkgUmVuZGVyVGFibGVS
b3coMCk7CiAgICAgcmVuZGVyZXItPnNldERvY3VtZW50Rm9yQW5vbnltb3VzKGRvY3VtZW50KTsK
ICAgICByZXR1cm4gcmVuZGVyZXI7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVTZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAkocmV2aXNpb24gMTU1OTAwKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE0MzcsNyArMTQzNyw3IEBAIENvbGxhcHNlZEJvcmRlclZhbHVlJiBSZW5kZXJUYWJsZVNl
Y3Rpb24KIFJlbmRlclRhYmxlU2VjdGlvbiogUmVuZGVyVGFibGVTZWN0aW9uOjpjcmVhdGVBbm9u
eW1vdXNXaXRoUGFyZW50UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBwYXJlbnQpCiB7CiAg
ICAgUmVmUHRyPFJlbmRlclN0eWxlPiBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9u
eW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudC0+c3R5bGUoKSwgVEFCTEVfUk9XX0dST1VQKTsK
LSAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIG5ld1NlY3Rpb24gPSBuZXcgKHBhcmVudC0+cmVuZGVy
QXJlbmEoKSkgUmVuZGVyVGFibGVTZWN0aW9uKDApOworICAgIFJlbmRlclRhYmxlU2VjdGlvbiog
bmV3U2VjdGlvbiA9IG5ldyAoKnBhcmVudC0+cmVuZGVyQXJlbmEoKSkgUmVuZGVyVGFibGVTZWN0
aW9uKDApOwogICAgIG5ld1NlY3Rpb24tPnNldERvY3VtZW50Rm9yQW5vbnltb3VzKHBhcmVudC0+
ZG9jdW1lbnQoKSk7CiAgICAgbmV3U2VjdGlvbi0+c2V0U3R5bGUobmV3U3R5bGUucmVsZWFzZSgp
KTsKICAgICByZXR1cm4gbmV3U2VjdGlvbjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCShyZXZpc2lvbiAxNTU5
MDApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2Nr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCB2b2lkIFJlbmRlck1hdGhNTEJs
b2NrOjpjb21wdXRlUHJlZmVycmVkCiBSZW5kZXJNYXRoTUxCbG9jayogUmVuZGVyTWF0aE1MQmxv
Y2s6OmNyZWF0ZUFub255bW91c01hdGhNTEJsb2NrKEVEaXNwbGF5IGRpc3BsYXkpCiB7CiAgICAg
UmVmUHRyPFJlbmRlclN0eWxlPiBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1v
dXNTdHlsZVdpdGhEaXNwbGF5KHN0eWxlKCksIGRpc3BsYXkpOwotICAgIFJlbmRlck1hdGhNTEJs
b2NrKiBuZXdCbG9jayA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyTWF0aE1MQmxvY2soMCk7
CisgICAgUmVuZGVyTWF0aE1MQmxvY2sqIG5ld0Jsb2NrID0gbmV3ICgqcmVuZGVyQXJlbmEoKSkg
UmVuZGVyTWF0aE1MQmxvY2soMCk7CiAgICAgbmV3QmxvY2stPnNldERvY3VtZW50Rm9yQW5vbnlt
b3VzKGRvY3VtZW50KCkpOwogICAgIG5ld0Jsb2NrLT5zZXRTdHlsZShuZXdTdHlsZS5yZWxlYXNl
KCkpOwogICAgIHJldHVybiBuZXdCbG9jazsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHAJKHJldmlzaW9uIDE1
NTkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVu
Y2VkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNyBAQCBSZW5kZXJNYXRoTUxPcGVy
YXRvciogUmVuZGVyTWF0aE1MRmVuY2VkCiAgICAgbmV3U3R5bGUtPnNldE1hcmdpbkVuZChMZW5n
dGgoKG9wZXJhdG9yVHlwZSA9PSBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6RmVuY2UgPyBnRmVuY2VN
YXJnaW5FbXMgOiBnU2VwYXJhdG9yTWFyZ2luRW5kRW1zKSAqIHN0eWxlKCktPmZvbnRTaXplKCks
IEZpeGVkKSk7CiAgICAgaWYgKG9wZXJhdG9yVHlwZSA9PSBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6
RmVuY2UpCiAgICAgICAgIG5ld1N0eWxlLT5zZXRNYXJnaW5TdGFydChMZW5ndGgoZ0ZlbmNlTWFy
Z2luRW1zICogc3R5bGUoKS0+Zm9udFNpemUoKSwgRml4ZWQpKTsKLSAgICBSZW5kZXJNYXRoTUxP
cGVyYXRvciogbmV3T3BlcmF0b3IgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlck1hdGhNTE9w
ZXJhdG9yKGVsZW1lbnQoKSwgdUNoYXIpOworICAgIFJlbmRlck1hdGhNTE9wZXJhdG9yKiBuZXdP
cGVyYXRvciA9IG5ldyAoKnJlbmRlckFyZW5hKCkpIFJlbmRlck1hdGhNTE9wZXJhdG9yKGVsZW1l
bnQoKSwgdUNoYXIpOwogICAgIG5ld09wZXJhdG9yLT5zZXRPcGVyYXRvclR5cGUob3BlcmF0b3JU
eXBlKTsKICAgICBuZXdPcGVyYXRvci0+c2V0U3R5bGUobmV3U3R5bGUucmVsZWFzZSgpKTsKICAg
ICByZXR1cm4gbmV3T3BlcmF0b3I7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcAkocmV2aXNpb24gMTU1
OTAwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVy
YXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIFJlbmRlck1h
dGhNTE9wZXJhdG9yOjp1cGRhdGVGcm9tRWxlCiAgICAgLy8gRWl0aGVyIHN0cmV0Y2ggaXMgZGlz
YWJsZWQgb3Igd2UgZG9uJ3QgaGF2ZSBhIHN0cmV0Y2hhYmxlIGNoYXJhY3RlciBvdmVyIHRoZSBt
aW5pbXVtIGhlaWdodAogICAgIGlmIChzdHJldGNoRGlzYWJsZWQgfHwgIXNob3VsZFN0YWNrKSB7
CiAgICAgICAgIG1faXNTdGFja2VkID0gZmFsc2U7Ci0gICAgICAgIFJlbmRlckJsb2NrKiBjb250
YWluZXIgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlck1hdGhNTEJsb2NrKGVsZW1lbnQoKSk7
CisgICAgICAgIFJlbmRlckJsb2NrKiBjb250YWluZXIgPSBuZXcgKCpyZW5kZXJBcmVuYSgpKSBS
ZW5kZXJNYXRoTUxCbG9jayhlbGVtZW50KCkpOwogICAgICAgICAvLyBUaGlzIGNvbnRhaW5lciBk
b2Vzbid0IG9mZmVyIGFueSB1c2VmdWwgaW5mb3JtYXRpb24gdG8gYWNjZXNzaWJpbGl0eS4KICAg
ICAgICAgdG9SZW5kZXJNYXRoTUxCbG9jayhjb250YWluZXIpLT5zZXRJZ25vcmVJbkFjY2Vzc2li
aWxpdHlUcmVlKHRydWUpOwogICAgICAgICAKQEAgLTIyOSw5ICsyMjksOSBAQCB2b2lkIFJlbmRl
ck1hdGhNTE9wZXJhdG9yOjp1cGRhdGVGcm9tRWxlCiAgICAgICAgIC8vIEJ1aWxkIHRoZSB0ZXh0
IG9mIHRoZSBvcGVyYXRvci4KICAgICAgICAgUmVuZGVyVGV4dCogdGV4dCA9IDA7CiAgICAgICAg
IGlmIChtX29wZXJhdG9yKSAKLSAgICAgICAgICAgIHRleHQgPSBuZXcgKHJlbmRlckFyZW5hKCkp
IFJlbmRlclRleHQoZWxlbWVudCgpLCBTdHJpbmdJbXBsOjpjcmVhdGUoJm1fb3BlcmF0b3IsIDEp
KTsKKyAgICAgICAgICAgIHRleHQgPSBuZXcgKCpyZW5kZXJBcmVuYSgpKSBSZW5kZXJUZXh0KGVs
ZW1lbnQoKSwgU3RyaW5nSW1wbDo6Y3JlYXRlKCZtX29wZXJhdG9yLCAxKSk7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHRleHQgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlclRleHQoZWxl
bWVudCgpLCBlbGVtZW50KCktPnRleHRDb250ZW50KCkucmVwbGFjZShoeXBoZW5NaW51cywgbWlu
dXNTaWduKS5pbXBsKCkpOworICAgICAgICAgICAgdGV4dCA9IG5ldyAoKnJlbmRlckFyZW5hKCkp
IFJlbmRlclRleHQoZWxlbWVudCgpLCBlbGVtZW50KCktPnRleHRDb250ZW50KCkucmVwbGFjZSho
eXBoZW5NaW51cywgbWludXNTaWduKS5pbXBsKCkpOwogICAgICAgICAvLyBJZiB3ZSBjYW4ndCBm
aWd1cmUgb3V0IHRoZSB0ZXh0LCBsZWF2ZSBpdCBibGFuay4KICAgICAgICAgaWYgKHRleHQpIHsK
ICAgICAgICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gdGV4dFN0eWxlID0gUmVuZGVyU3R5bGU6
OmNyZWF0ZSgpOwpAQCAtMjk4LDEzICsyOTgsMTMgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4g
UmVuZGVyTWF0aE1MT3BlcgogCiBSZW5kZXJCbG9jayogUmVuZGVyTWF0aE1MT3BlcmF0b3I6OmNy
ZWF0ZUdseXBoKFVDaGFyIGdseXBoLCBpbnQgbWF4SGVpZ2h0Rm9yUmVuZGVyZXIsIGludCBjaGFy
UmVsYXRpdmUpCiB7Ci0gICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5lciA9IG5ldyAocmVuZGVyQXJl
bmEoKSkgUmVuZGVyTWF0aE1MQmxvY2soZWxlbWVudCgpKTsKKyAgICBSZW5kZXJCbG9jayogY29u
dGFpbmVyID0gbmV3ICgqcmVuZGVyQXJlbmEoKSkgUmVuZGVyTWF0aE1MQmxvY2soZWxlbWVudCgp
KTsKICAgICB0b1JlbmRlck1hdGhNTEJsb2NrKGNvbnRhaW5lciktPnNldElnbm9yZUluQWNjZXNz
aWJpbGl0eVRyZWUodHJ1ZSk7CiAgICAgY29udGFpbmVyLT5zZXRTdHlsZShjcmVhdGVTdGFja2Fi
bGVTdHlsZShtYXhIZWlnaHRGb3JSZW5kZXJlcikpOwogICAgIGFkZENoaWxkKGNvbnRhaW5lcik7
CiAgICAgUmVuZGVyQmxvY2sqIHBhcmVudCA9IGNvbnRhaW5lcjsKICAgICBpZiAoY2hhclJlbGF0
aXZlKSB7Ci0gICAgICAgIFJlbmRlckJsb2NrKiBjaGFyQmxvY2sgPSBuZXcgKHJlbmRlckFyZW5h
KCkpIFJlbmRlckJsb2NrRmxvdyhlbGVtZW50KCkpOworICAgICAgICBSZW5kZXJCbG9jayogY2hh
ckJsb2NrID0gbmV3ICgqcmVuZGVyQXJlbmEoKSkgUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQoKSk7
CiAgICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gY2hhclN0eWxlID0gUmVuZGVyU3R5bGU6OmNy
ZWF0ZSgpOwogICAgICAgICBjaGFyU3R5bGUtPmluaGVyaXRGcm9tKGNvbnRhaW5lci0+c3R5bGUo
KSk7CiAgICAgICAgIGNoYXJTdHlsZS0+c2V0RGlzcGxheShJTkxJTkVfQkxPQ0spOwpAQCAtMzE1
LDcgKzMxNSw3IEBAIFJlbmRlckJsb2NrKiBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6Y3JlYXQKICAg
ICAgICAgcGFyZW50ID0gY2hhckJsb2NrOwogICAgIH0KICAgICAKLSAgICBSZW5kZXJUZXh0KiB0
ZXh0ID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJUZXh0KGVsZW1lbnQoKSwgU3RyaW5nSW1w
bDo6Y3JlYXRlKCZnbHlwaCwgMSkpOworICAgIFJlbmRlclRleHQqIHRleHQgPSBuZXcgKCpyZW5k
ZXJBcmVuYSgpKSBSZW5kZXJUZXh0KGVsZW1lbnQoKSwgU3RyaW5nSW1wbDo6Y3JlYXRlKCZnbHlw
aCwgMSkpOwogICAgIHRleHQtPnNldFN0eWxlKGNvbnRhaW5lci0+c3R5bGUoKSk7CiAgICAgcGFy
ZW50LT5hZGRDaGlsZCh0ZXh0KTsKICAgICByZXR1cm4gY29udGFpbmVyOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcAko
cmV2aXNpb24gMTU1OTAwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxSb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIFJlbmRlck1h
dGhNTFJvdzo6UmVuZGVyTWF0aE1MUm93KEVsZW1lbnQKIFJlbmRlck1hdGhNTFJvdyogUmVuZGVy
TWF0aE1MUm93OjpjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIoY29uc3QgUmVuZGVy
T2JqZWN0KiBwYXJlbnQpCiB7CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBuZXdTdHlsZSA9IFJl
bmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KHBhcmVudC0+c3R5bGUo
KSwgRkxFWCk7Ci0gICAgUmVuZGVyTWF0aE1MUm93KiBuZXdNUm93ID0gbmV3IChwYXJlbnQtPnJl
bmRlckFyZW5hKCkpIFJlbmRlck1hdGhNTFJvdygwKTsKKyAgICBSZW5kZXJNYXRoTUxSb3cqIG5l
d01Sb3cgPSBuZXcgKCpwYXJlbnQtPnJlbmRlckFyZW5hKCkpIFJlbmRlck1hdGhNTFJvdygwKTsK
ICAgICBuZXdNUm93LT5zZXREb2N1bWVudEZvckFub255bW91cyhwYXJlbnQtPmRvY3VtZW50KCkp
OwogICAgIG5ld01Sb3ctPnNldFN0eWxlKG5ld1N0eWxlLnJlbGVhc2UoKSk7CiAgICAgcmV0dXJu
IG5ld01Sb3c7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFNjcmlwdHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAJKHJldmlzaW9uIDE1NTkwMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM2Myw3ICszNjMsNyBAQCBpbnQgUmVuZGVyTWF0aE1MU2NyaXB0czo6Zmly
c3RMaW5lQm94QmFzCiBSZW5kZXJNYXRoTUxTY3JpcHRzV3JhcHBlciogUmVuZGVyTWF0aE1MU2Ny
aXB0c1dyYXBwZXI6OmNyZWF0ZUFub255bW91c1dyYXBwZXIoUmVuZGVyTWF0aE1MU2NyaXB0cyog
cmVuZGVyT2JqZWN0LCBXcmFwcGVyVHlwZSB0eXBlKQogewogICAgIFJlZlB0cjxSZW5kZXJTdHls
ZT4gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxh
eShyZW5kZXJPYmplY3QtPnN0eWxlKCksIEZMRVgpOwotICAgIFJlbmRlck1hdGhNTFNjcmlwdHNX
cmFwcGVyKiBuZXdCbG9jayA9IG5ldyAocmVuZGVyT2JqZWN0LT5yZW5kZXJBcmVuYSgpKSBSZW5k
ZXJNYXRoTUxTY3JpcHRzV3JhcHBlcigwLCB0eXBlKTsKKyAgICBSZW5kZXJNYXRoTUxTY3JpcHRz
V3JhcHBlciogbmV3QmxvY2sgPSBuZXcgKCpyZW5kZXJPYmplY3QtPnJlbmRlckFyZW5hKCkpIFJl
bmRlck1hdGhNTFNjcmlwdHNXcmFwcGVyKDAsIHR5cGUpOwogICAgIG5ld0Jsb2NrLT5zZXREb2N1
bWVudEZvckFub255bW91cyhyZW5kZXJPYmplY3QtPmRvY3VtZW50KCkpOwogICAgIG5ld0Jsb2Nr
LT5zZXRTdHlsZShuZXdTdHlsZS5yZWxlYXNlKCkpOwogICAgIHJldHVybiBuZXdCbG9jazsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmNwcAko
cmV2aXNpb24gMTU1OTAwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRl
bnREYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsMjEgKzgwLDIxIEBAIFJlbmRlck9iamVj
dCogSW1hZ2VDb250ZW50RGF0YTo6Y3JlYXRlUmUKIAogUmVuZGVyT2JqZWN0KiBUZXh0Q29udGVu
dERhdGE6OmNyZWF0ZVJlbmRlcmVyKERvY3VtZW50JiBkb2N1bWVudCwgUmVuZGVyU3R5bGUmIHBz
ZXVkb1N0eWxlKSBjb25zdAogewotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBuZXcgKGRv
Y3VtZW50LnJlbmRlckFyZW5hKCkpIFJlbmRlclRleHRGcmFnbWVudCgmZG9jdW1lbnQsIG1fdGV4
dC5pbXBsKCkpOworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBuZXcgKCpkb2N1bWVudC5y
ZW5kZXJBcmVuYSgpKSBSZW5kZXJUZXh0RnJhZ21lbnQoJmRvY3VtZW50LCBtX3RleHQuaW1wbCgp
KTsKICAgICByZW5kZXJlci0+c2V0UHNldWRvU3R5bGUoJnBzZXVkb1N0eWxlKTsKICAgICByZXR1
cm4gcmVuZGVyZXI7CiB9CiAKIFJlbmRlck9iamVjdCogQ291bnRlckNvbnRlbnREYXRhOjpjcmVh
dGVSZW5kZXJlcihEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxlJiBwc2V1ZG9TdHlsZSkg
Y29uc3QKIHsKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbmV3IChkb2N1bWVudC5yZW5k
ZXJBcmVuYSgpKSBSZW5kZXJDb3VudGVyKCZkb2N1bWVudCwgKm1fY291bnRlcik7CisgICAgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IG5ldyAoKmRvY3VtZW50LnJlbmRlckFyZW5hKCkpIFJlbmRl
ckNvdW50ZXIoJmRvY3VtZW50LCAqbV9jb3VudGVyKTsKICAgICByZW5kZXJlci0+c2V0UHNldWRv
U3R5bGUoJnBzZXVkb1N0eWxlKTsKICAgICByZXR1cm4gcmVuZGVyZXI7CiB9CiAKIFJlbmRlck9i
amVjdCogUXVvdGVDb250ZW50RGF0YTo6Y3JlYXRlUmVuZGVyZXIoRG9jdW1lbnQmIGRvY3VtZW50
LCBSZW5kZXJTdHlsZSYgcHNldWRvU3R5bGUpIGNvbnN0CiB7Ci0gICAgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9IG5ldyAoZG9jdW1lbnQucmVuZGVyQXJlbmEoKSkgUmVuZGVyUXVvdGUoJmRvY3Vt
ZW50LCBtX3F1b3RlKTsKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbmV3ICgqZG9jdW1l
bnQucmVuZGVyQXJlbmEoKSkgUmVuZGVyUXVvdGUoJmRvY3VtZW50LCBtX3F1b3RlKTsKICAgICBy
ZW5kZXJlci0+c2V0UHNldWRvU3R5bGUoJnBzZXVkb1N0eWxlKTsKICAgICByZXR1cm4gcmVuZGVy
ZXI7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVUcmVlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVUcmVlLmNwcAko
cmV2aXNpb24gMTU1OTAwKQorKysgU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlVHJl
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMCw3ICsyMzAsNyBAQCBzdGF0aWMgdm9pZCBjcmVh
dGVSZW5kZXJlcklmTmVlZGVkKEVsZW1lCiAgICAgICAgIG5leHRSZW5kZXJlciA9IG5leHRTaWJs
aW5nUmVuZGVyZXIoZWxlbWVudCwgcmVuZGVyaW5nUGFyZW50Tm9kZSk7CiAgICAgfQogCi0gICAg
UmVuZGVyT2JqZWN0KiBuZXdSZW5kZXJlciA9IGVsZW1lbnQuY3JlYXRlUmVuZGVyZXIoZG9jdW1l
bnQucmVuZGVyQXJlbmEoKSwgc3R5bGUuZ2V0KCkpOworICAgIFJlbmRlck9iamVjdCogbmV3UmVu
ZGVyZXIgPSBlbGVtZW50LmNyZWF0ZVJlbmRlcmVyKCpkb2N1bWVudC5yZW5kZXJBcmVuYSgpLCAq
c3R5bGUpOwogICAgIGlmICghbmV3UmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAo
IXBhcmVudFJlbmRlcmVyLT5pc0NoaWxkQWxsb3dlZChuZXdSZW5kZXJlciwgc3R5bGUuZ2V0KCkp
KSB7CkBAIC0zNzQsNyArMzc0LDcgQEAgc3RhdGljIHZvaWQgY3JlYXRlVGV4dFJlbmRlcmVySWZO
ZWVkZWQoVAogCiAgICAgaWYgKCF0ZXh0UmVuZGVyZXJJc05lZWRlZCh0ZXh0Tm9kZSwgKnBhcmVu
dFJlbmRlcmVyLCAqc3R5bGUpKQogICAgICAgICByZXR1cm47Ci0gICAgUmVuZGVyVGV4dCogbmV3
UmVuZGVyZXIgPSB0ZXh0Tm9kZS5jcmVhdGVUZXh0UmVuZGVyZXIoZG9jdW1lbnQucmVuZGVyQXJl
bmEoKSwgc3R5bGUuZ2V0KCkpOworICAgIFJlbmRlclRleHQqIG5ld1JlbmRlcmVyID0gdGV4dE5v
ZGUuY3JlYXRlVGV4dFJlbmRlcmVyKCpkb2N1bWVudC5yZW5kZXJBcmVuYSgpLCAqc3R5bGUpOwog
ICAgIGlmICghbmV3UmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIXBhcmVudFJl
bmRlcmVyLT5pc0NoaWxkQWxsb3dlZChuZXdSZW5kZXJlciwgc3R5bGUuZ2V0KCkpKSB7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAJKHJldmlzaW9uIDE1NTkwMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw3ICsx
MzksNyBAQCB2b2lkIFNWR0FFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvCiAgICAgfQog
fQogCi1SZW5kZXJPYmplY3QqIFNWR0FFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVu
YSogYXJlbmEsIFJlbmRlclN0eWxlKikKK1JlbmRlck9iamVjdCogU1ZHQUVsZW1lbnQ6OmNyZWF0
ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiBhcmVuYSwgUmVuZGVyU3R5bGUmKQogewogICAgIGlmIChw
YXJlbnROb2RlKCkgJiYgcGFyZW50Tm9kZSgpLT5pc1NWR0VsZW1lbnQoKSAmJiB0b1NWR0VsZW1l
bnQocGFyZW50Tm9kZSgpKS0+aXNUZXh0Q29udGVudCgpKQogICAgICAgICByZXR1cm4gbmV3IChh
cmVuYSkgUmVuZGVyU1ZHSW5saW5lKCp0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVu
dC5oCShyZXZpc2lvbiAxNTU5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwogCi0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJl
bmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJlbmRlck9i
amVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBSZW5kZXJTdHlsZSYpOwogCiAgICAg
dmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKICAgICAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTU5MDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODIsNyArODIsNyBAQCBib29sIFNWR0FsdEdseXBoRWxlbWVudDo6Y2hpbGRTaG91
bGRDcmVhCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZW5kZXJPYmplY3QqIFNWR0FsdEdseXBo
RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSop
CitSZW5kZXJPYmplY3QqIFNWR0FsdEdseXBoRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEmIGFyZW5hLCBSZW5kZXJTdHlsZSYpCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJl
bmRlclNWR1RTcGFuKCp0aGlzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRH
bHlwaEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5
cGhFbGVtZW50LmgJKHJldmlzaW9uIDE1NTkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bHRHbHlwaEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIFNWR0FsdEdseXBoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihS
ZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNy
ZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiwgUmVuZGVyU3R5bGUmKTsKICAgICB2aXJ0dWFsIGJv
b2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlKikgY29uc3Q7CiAKICAgICBC
RUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHQWx0R2x5cGhFbGVtZW50KQpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAkocmV2aXNpb24gMTU1OTAw
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzksNyArMTM5LDcgQEAgYm9vbCBTVkdDaXJjbGVFbGVtZW50OjpzZWxmSGFzUmVs
YXRpdmVMZQogICAgICAgICB8fCByKCkuaXNSZWxhdGl2ZSgpOwogfQogCi1SZW5kZXJPYmplY3Qq
IFNWR0NpcmNsZUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVu
ZGVyU3R5bGUqKQorUmVuZGVyT2JqZWN0KiBTVkdDaXJjbGVFbGVtZW50OjpjcmVhdGVSZW5kZXJl
cihSZW5kZXJBcmVuYSYgYXJlbmEsIFJlbmRlclN0eWxlJikKIHsKICAgICByZXR1cm4gbmV3IChh
cmVuYSkgUmVuZGVyU1ZHRWxsaXBzZSgqdGhpcyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQ2lyY2xlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdDaXJjbGVFbGVtZW50LmgJKHJldmlzaW9uIDE1NTkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdDaXJjbGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgcHJp
dmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7
CiAKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEq
LCBSZW5kZXJTdHlsZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVh
dGVSZW5kZXJlcihSZW5kZXJBcmVuYSYsIFJlbmRlclN0eWxlJikgT1ZFUlJJREU7CiAKICAgICBC
RUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHQ2lyY2xlRWxlbWVudCkKICAgICAg
ICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoQ3gsIGN4KQpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAJKHJldmlzaW9uIDE1NTkwMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQs
NyArMTE0LDcgQEAgdm9pZCBTVkdDbGlwUGF0aEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZAogICAg
ICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KHRydWUpOwogfQogCi1SZW5kZXJPYmplY3QqIFNW
R0NsaXBQYXRoRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5k
ZXJTdHlsZSopCitSZW5kZXJPYmplY3QqIFNWR0NsaXBQYXRoRWxlbWVudDo6Y3JlYXRlUmVuZGVy
ZXIoUmVuZGVyQXJlbmEmIGFyZW5hLCBSZW5kZXJTdHlsZSYpCiB7CiAgICAgcmV0dXJuIG5ldyAo
YXJlbmEpIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcigqdGhpcyk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oCShyZXZpc2lvbiAxNTU5MDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDcgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdl
ZChjb25zdCBDaGlsZENoYW5nZSYpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBSZW5kZXJPYmpl
Y3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0
dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBSZW5kZXJTdHls
ZSYpOwogCiAgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0NsaXBQYXRo
RWxlbWVudCkKICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9FTlVNRVJBVElPTihDbGlwUGF0aFVu
aXRzLCBjbGlwUGF0aFVuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlKQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTU5MDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3
ICs1Myw3IEBAIGJvb2wgU1ZHRGVmc0VsZW1lbnQ6OmlzVmFsaWQoKSBjb25zdAogICAgIHJldHVy
biBTVkdUZXN0czo6aXNWYWxpZCgpOwogfQogCi1SZW5kZXJPYmplY3QqIFNWR0RlZnNFbGVtZW50
OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKK1JlbmRl
ck9iamVjdCogU1ZHRGVmc0VsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiBhcmVu
YSwgUmVuZGVyU3R5bGUmKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdIaWRk
ZW5Db250YWluZXIoKnRoaXMpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50
LmgJKHJldmlzaW9uIDE1NTkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEZWZzRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0
dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNy
ZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJl
bmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBSZW5kZXJTdHlsZSYpOwog
CiAgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0RlZnNFbGVtZW50KQog
ICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGxpcHNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsbGlwc2VFbGVtZW50LmNwcAkocmV2aXNpb24gMTU1OTAwKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDcgKzE0NSw3
IEBAIGJvb2wgU1ZHRWxsaXBzZUVsZW1lbnQ6OnNlbGZIYXNSZWxhdGl2ZUwKICAgICAgICAgfHwg
cnkoKS5pc1JlbGF0aXZlKCk7CiB9CiAKLVJlbmRlck9iamVjdCogU1ZHRWxsaXBzZUVsZW1lbnQ6
OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQorUmVuZGVy
T2JqZWN0KiBTVkdFbGxpcHNlRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmIGFy
ZW5hLCBSZW5kZXJTdHlsZSYpCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR0Vs
bGlwc2UoKnRoaXMpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50
LmgJKHJldmlzaW9uIDE1NTkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHByaXZhdGU6CiAKICAgICB2
aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwogCi0gICAgdmlydHVh
bCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUq
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVu
ZGVyQXJlbmEmLCBSZW5kZXJTdHlsZSYpIE9WRVJSSURFOwogCiAgICAgQkVHSU5fREVDTEFSRV9B
TklNQVRFRF9QUk9QRVJUSUVTKFNWR0VsbGlwc2VFbGVtZW50KQogICAgICAgICBERUNMQVJFX0FO
SU1BVEVEX0xFTkdUSChDeCwgY3gpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVy
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAxNTU5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmls
dGVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIFNW
R0ZpbHRlckVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjCiAgICAgICAgIG9iamVjdC0+c2V0TmVl
ZHNMYXlvdXQodHJ1ZSk7CiB9CiAKLVJlbmRlck9iamVjdCogU1ZHRmlsdGVyRWxlbWVudDo6Y3Jl
YXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmpl
Y3QqIFNWR0ZpbHRlckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiBhcmVuYSwg
UmVuZGVyU3R5bGUmKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlcigqdGhpcyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50
LmgJKHJldmlzaW9uIDE1NTkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAg
dmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIE9WRVJSSURF
OwogCi0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5h
KiwgUmVuZGVyU3R5bGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3Jl
YXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBSZW5kZXJTdHlsZSYpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUqKSBjb25zdCBP
VkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29u
c3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAkocmV2aXNpb24gMTU1OTAwKQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlCiAgICAgICAgIGZpbHRlckVmZmVjdC0+c2V0SGFzSGVpZ2h0KHRy
dWUpOwogfQogCi1SZW5kZXJPYmplY3QqIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlczo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCitS
ZW5kZXJPYmplY3QqIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6Y3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEmIGFyZW5hLCBSZW5kZXJTdHlsZSYpCiB7CiAgICAgcmV0dXJu
IG5ldyAoYXJlbmEpIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKCp0aGlzKTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgJKHJldmlzaW9uIDE1NTkwMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtNjgsNyArNjgsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHZpcnR1YWwg
Ym9vbCBpc0ZpbHRlckVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1
YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxl
KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJl
bmRlckFyZW5hJiwgUmVuZGVyU3R5bGUmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgcmVu
ZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
Ym9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUqKSBjb25zdCBPVkVSUklE
RSB7IHJldHVybiBmYWxzZTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
b3JlaWduT2JqZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE1NTkwMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
Niw3ICsxMjYsNyBAQCB2b2lkIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpzdmdBdHRyaWJ1CiAg
ICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJ
bnZhbGlkYXRpb24ocmVuZGVyZXIpOwogfQogCi1SZW5kZXJPYmplY3QqIFNWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxl
KikKK1JlbmRlck9iamVjdCogU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVy
KFJlbmRlckFyZW5hJiBhcmVuYSwgUmVuZGVyU3R5bGUmKQogewogICAgIHJldHVybiBuZXcgKGFy
ZW5hKSBSZW5kZXJTVkdGb3JlaWduT2JqZWN0KCp0aGlzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oCShyZXZpc2lvbiAxNTU5MDApCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNDUsNyArNDUsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIHJlbmRl
cmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJv
b2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlKikgY29uc3Q7Ci0gICAgdmly
dHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVu
ZGVyU3R5bGUqIHN0eWxlKTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVy
ZXIoUmVuZGVyQXJlbmEmLCBSZW5kZXJTdHlsZSYpOwogCiAgICAgdmlydHVhbCBib29sIHNlbGZI
YXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0dFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1l
bnQuY3BwCShyZXZpc2lvbiAxNTU5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSwxMyArODksMTMgQEAgdm9pZCBTVkdHRWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjbwogICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFy
a0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKHJlbmRlcmVyKTsKIH0KIAot
UmVuZGVyT2JqZWN0KiBTVkdHRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFy
ZW5hLCBSZW5kZXJTdHlsZSogc3R5bGUpCitSZW5kZXJPYmplY3QqIFNWR0dFbGVtZW50OjpjcmVh
dGVSZW5kZXJlcihSZW5kZXJBcmVuYSYgYXJlbmEsIFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKICAg
ICAvLyBTVkcgMS4xIHRlc3RzdWl0ZSBleHBsaWNpdGVseSB1c2VzIGNvbnN0cnVjdHMgbGlrZSA8
ZyBkaXNwbGF5PSJub25lIj48bGluZWFyR3JhZGllbnQ+CiAgICAgLy8gV2Ugc3RpbGwgaGF2ZSB0
byBjcmVhdGUgcmVuZGVyZXJzIGZvciB0aGUgPGc+ICYgPGxpbmVhckdyYWRpZW50PiBlbGVtZW50
LCB0aG91Z2ggdGhlCiAgICAgLy8gc3VidHJlZSBtYXkgYmUgaGlkZGVuIC0gd2Ugb25seSB3YW50
IHRoZSByZXNvdXJjZSByZW5kZXJlcnMgdG8gZXhpc3Qgc28gdGhleSBjYW4gYmUKICAgICAvLyBy
ZWZlcmVuY2VkIGZyb20gc29tZXdoZXJlIGVsc2UuCi0gICAgaWYgKHN0eWxlLT5kaXNwbGF5KCkg
PT0gTk9ORSkKKyAgICBpZiAoc3R5bGUuZGlzcGxheSgpID09IE5PTkUpCiAgICAgICAgIHJldHVy
biBuZXcgKGFyZW5hKSBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIoKnRoaXMpOwogCiAgICAgcmV0
dXJuIG5ldyAoYXJlbmEpIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIoKnRoaXMpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmgJKHJldmlzaW9uIDE1NTkwMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZHR0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVy
ZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0
KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYsIFJlbmRlclN0eWxlJik7CiAKICAgICB2aXJ0
dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGb2N1cygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJu
IHRydWU7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3Bw
CShyZXZpc2lvbiAxNTU5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDcgKzE2Miw3IEBAIEZsb2F0UmVjdCBTVkdH
cmFwaGljc0VsZW1lbnQ6OmdldEJCb3goU3QKICAgICByZXR1cm4gU1ZHVHJhbnNmb3JtYWJsZTo6
Z2V0QkJveCh0aGlzLCBzdHlsZVVwZGF0ZVN0cmF0ZWd5KTsKIH0KIAotUmVuZGVyT2JqZWN0KiBT
VkdHcmFwaGljc0VsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVu
ZGVyU3R5bGUqKQorUmVuZGVyT2JqZWN0KiBTVkdHcmFwaGljc0VsZW1lbnQ6OmNyZWF0ZVJlbmRl
cmVyKFJlbmRlckFyZW5hJiBhcmVuYSwgUmVuZGVyU3R5bGUmKQogewogICAgIC8vIEJ5IGRlZmF1
bHQsIGFueSBzdWJjbGFzcyBpcyBleHBlY3RlZCB0byBkbyBwYXRoLWJhc2VkIGRyYXdpbmcKICAg
ICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHUGF0aCgqdGhpcyk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oCShyZXZpc2lvbiAxNTU5MDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5
LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgLy8gImJhc2UgY2xhc3MiIG1ldGhvZHMgZm9yIGFs
bCB0aGUgZWxlbWVudHMgd2hpY2ggcmVuZGVyIGFzIHBhdGhzCiAgICAgdmlydHVhbCB2b2lkIHRv
Q2xpcFBhdGgoUGF0aCYpOwotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJl
cihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3Qq
IGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiwgUmVuZGVyU3R5bGUmKTsKIAogcHJvdGVjdGVk
OgogICAgIFNWR0dyYXBoaWNzRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQm
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAx
NTU5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTgzLDcgKzE4Myw3IEBAIGJvb2wgU1ZHSW1hZ2VFbGVtZW50OjpzZWxmSGFz
UmVsYXRpdmVMZW4KICAgICAgICAgfHwgaGVpZ2h0KCkuaXNSZWxhdGl2ZSgpOwogfQogCi1SZW5k
ZXJPYmplY3QqIFNWR0ltYWdlRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFy
ZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3QqIFNWR0ltYWdlRWxlbWVudDo6Y3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEmIGFyZW5hLCBSZW5kZXJTdHlsZSYpCiB7CiAgICAgcmV0dXJu
IG5ldyAoYXJlbmEpIFJlbmRlclNWR0ltYWdlKCp0aGlzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHSW1hZ2VFbGVtZW50LmgJKHJldmlzaW9uIDE1NTkwMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENv
bnRhaW5lck5vZGUqKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVh
dGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCBSZW5k
ZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiwgUmVuZGVyU3R5bGUmKTsKIAog
ICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbWFnZVNvdXJjZVVSTCgpIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlz
dEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5l
YXJHcmFkaWVudEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTU5MDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpzdmdBdHRy
aWIKICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCh0cnVlKTsKIH0KIAotUmVuZGVyT2Jq
ZWN0KiBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5h
KiBhcmVuYSwgUmVuZGVyU3R5bGUqKQorUmVuZGVyT2JqZWN0KiBTVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiBhcmVuYSwgUmVuZGVyU3R5bGUmKQog
ewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50
KCp0aGlzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGll
bnRFbGVtZW50LmgJKHJldmlzaW9uIDE1NTkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdM
aW5lYXJHcmFkaWVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCi0gICAgdmlydHVhbCBS
ZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsK
KyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBS
ZW5kZXJTdHlsZSYpOwogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMo
KSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAko
cmV2aXNpb24gMTU1OTAwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBTVkdNYXJrZXJFbGVt
ZW50OjpzZXRPcmllbnRUb0FuZ2xlKAogICAgIHN2Z0F0dHJpYnV0ZUNoYW5nZWQob3JpZW50QW5n
bGVQcm9wZXJ0eUluZm8oKS0+YXR0cmlidXRlTmFtZSk7CiB9CiAKLVJlbmRlck9iamVjdCogU1ZH
TWFya2VyRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJT
dHlsZSopCitSZW5kZXJPYmplY3QqIFNWR01hcmtlckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJl
bmRlckFyZW5hJiBhcmVuYSwgUmVuZGVyU3R5bGUmKQogewogICAgIHJldHVybiBuZXcgKGFyZW5h
KSBSZW5kZXJTVkdSZXNvdXJjZU1hcmtlcigqdGhpcyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdNYXJrZXJFbGVtZW50LmgJKHJldmlzaW9uIDE1NTkwMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw3ICsxMzAsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENo
aWxkQ2hhbmdlJikgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgUmVuZGVy
T2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYsIFJlbmRlclN0eWxlJik7CiAgICAg
dmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSB7IHJldHVy
biB0cnVlOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNv
bnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCShyZXZpc2lvbiAx
NTU5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTcsNyArMTU3LDcgQEAgdm9pZCBTVkdNYXNrRWxlbWVudDo6Y2hpbGRyZW5D
aGFuZ2VkKGNvbgogICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KHRydWUpOwogfQogCi1S
ZW5kZXJPYmplY3QqIFNWR01hc2tFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSog
YXJlbmEsIFJlbmRlclN0eWxlKikKK1JlbmRlck9iamVjdCogU1ZHTWFza0VsZW1lbnQ6OmNyZWF0
ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiBhcmVuYSwgUmVuZGVyU3R5bGUmKQogewogICAgIHJldHVy
biBuZXcgKGFyZW5hKSBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcigqdGhpcyk7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAkocmV2aXNpb24gMTU1OTAwKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5
LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25z
dCBDaGlsZENoYW5nZSYpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNy
ZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJl
bmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBSZW5kZXJTdHlsZSYpOwog
CiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTU5MDApCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MDUsNyArNDA1LDcgQEAgRmxvYXRSZWN0IFNWR1BhdGhFbGVtZW50OjpnZXRCQm94KFN0eWxl
VQogICAgIHJldHVybiByZW5kZXJlci0+cGF0aCgpLmJvdW5kaW5nUmVjdCgpOwogfQogCi1SZW5k
ZXJPYmplY3QqIFNWR1BhdGhFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJl
bmEsIFJlbmRlclN0eWxlKikKK1JlbmRlck9iamVjdCogU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZVJl
bmRlcmVyKFJlbmRlckFyZW5hJiBhcmVuYSwgUmVuZGVyU3R5bGUmKQogewogICAgIC8vIEJ5IGRl
ZmF1bHQsIGFueSBzdWJjbGFzcyBpcyBleHBlY3RlZCB0byBkbyBwYXRoLWJhc2VkIGRyYXdpbmcK
ICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHUGF0aCgqdGhpcyk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAkocmV2aXNpb24gMTU1OTAwKQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgs
NyBAQCBwcml2YXRlOgogICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKICAgICBFTkRfREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3Jl
YXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIE9WRVJSSURFOworICAgIHZp
cnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYsIFJlbmRlclN0
eWxlJikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlv
blJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTU5MDApCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKAogICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KHRydWUpOwogfQogCi1SZW5kZXJP
YmplY3QqIFNWR1BhdHRlcm5FbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJl
bmEsIFJlbmRlclN0eWxlKikKK1JlbmRlck9iamVjdCogU1ZHUGF0dGVybkVsZW1lbnQ6OmNyZWF0
ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiBhcmVuYSwgUmVuZGVyU3R5bGUmKQogewogICAgIHJldHVy
biBuZXcgKGFyZW5hKSBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4oKnRoaXMpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgJKHJldmlzaW9uIDE1NTkwMCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNo
YW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgUmVuZGVy
T2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAg
dmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiwgUmVuZGVy
U3R5bGUmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29u
c3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAxNTU5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFk
aWFsR3JhZGllbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDcgKzEzMCw3IEBA
IHZvaWQgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpzdmdBdHRyaWIKICAgICAgICAgb2JqZWN0
LT5zZXROZWVkc0xheW91dCh0cnVlKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBTVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5
bGUqKQorUmVuZGVyT2JqZWN0KiBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmNyZWF0ZVJlbmRl
cmVyKFJlbmRlckFyZW5hJiBhcmVuYSwgUmVuZGVyU3R5bGUmKQogewogICAgIHJldHVybiBuZXcg
KGFyZW5hKSBSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50KCp0aGlzKTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgJKHJldmlz
aW9uIDE1NTkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCi0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0
ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJlbmRl
ck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBSZW5kZXJTdHlsZSYpOwogCiAg
ICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTU5MDApCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjAsNyArMTYwLDcgQEAgYm9vbCBTVkdSZWN0RWxlbWVudDo6c2VsZkhhc1JlbGF0aXZlTGVuZwog
ICAgICAgICB8fCByeSgpLmlzUmVsYXRpdmUoKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBTVkdSZWN0
RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSop
CitSZW5kZXJPYmplY3QqIFNWR1JlY3RFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVu
YSYgYXJlbmEsIFJlbmRlclN0eWxlJikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVy
U1ZHUmVjdCgqdGhpcyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuaAko
cmV2aXNpb24gMTU1OTAwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwg
Ym9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIFJlbmRl
ck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopIE9WRVJS
SURFOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVu
YSYsIFJlbmRlclN0eWxlJikgT1ZFUlJJREU7CiAKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVE
X1BST1BFUlRJRVMoU1ZHUmVjdEVsZW1lbnQpCiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVO
R1RIKFgsIHgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCShyZXZpc2lv
biAxNTU5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ4MCw3ICs0ODAsNyBAQCBib29sIFNWR1NWR0VsZW1lbnQ6OnJlbmRlcmVy
SXNOZWVkZWQoY29uCiAgICAgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQo
c3R5bGUpOwogfQogCi1SZW5kZXJPYmplY3QqIFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVy
KFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQorUmVuZGVyT2JqZWN0KiBTVkdTVkdF
bGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYgYXJlbmEsIFJlbmRlclN0eWxlJikK
IHsKICAgICBpZiAoaXNPdXRlcm1vc3RTVkdTVkdFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBu
ZXcgKGFyZW5hKSBSZW5kZXJTVkdSb290KCp0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTVkdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NW
R0VsZW1lbnQuaAkocmV2aXNpb24gMTU1OTAwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NW
R0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDcgKzE0Miw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25z
dCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklz
TmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBSZW5kZXJP
YmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKyAgICB2
aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBSZW5kZXJT
dHlsZSYpOwogCiAgICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2Vy
dGVkSW50byhDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92
ZWRGcm9tKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTdG9wRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1N0b3BFbGVtZW50LmNwcAkocmV2aXNpb24gMTU1OTAwKQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1N0b3BFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw3IEBAIHZv
aWQgU1ZHU3RvcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KIAotUmVuZGVyT2JqZWN0KiBTVkdTdG9wRWxlbWVudDo6Y3JlYXRlUmVuZGVy
ZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3QqIFNWR1N0
b3BFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYgYXJlbmEsIFJlbmRlclN0eWxl
JikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHR3JhZGllbnRTdG9wKHRoaXMp
OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgJKHJldmlzaW9uIDE1NTkw
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Miw3ICs0Miw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNHcmFkaWVu
dFN0b3AoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIFJl
bmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwor
ICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYsIFJl
bmRlclN0eWxlJik7CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVu
ZGVyU3R5bGUmKSBPVkVSUklERTsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVS
VElFUyhTVkdTdG9wRWxlbWVudCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxl
bWVudC5jcHAJKHJldmlzaW9uIDE1NTkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTd2l0
Y2hFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBib29sIFNWR1N3
aXRjaEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1S
ZW5kZXJPYmplY3QqIFNWR1N3aXRjaEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5h
KiBhcmVuYSwgUmVuZGVyU3R5bGUqKQorUmVuZGVyT2JqZWN0KiBTVkdTd2l0Y2hFbGVtZW50Ojpj
cmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYgYXJlbmEsIFJlbmRlclN0eWxlJikKIHsKICAgICBy
ZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcigqdGhpcyk7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmgJKHJldmlzaW9uIDE1
NTkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBjaGls
ZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUqKSBjb25zdDsKIAotICAgIHZpcnR1YWwg
UmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7
CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiwg
UmVuZGVyU3R5bGUmKTsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhT
VkdTd2l0Y2hFbGVtZW50KQogICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDE1NTkwMCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTAxLDcgKzEwMSw3IEBAIGJvb2wgU1ZHU3ltYm9sRWxlbWVudDo6c2VsZkhhc1JlbGF0aXZl
TGUKICAgICByZXR1cm4gaGFzQXR0cmlidXRlKFNWR05hbWVzOjp2aWV3Qm94QXR0cik7CiB9CiAK
LVJlbmRlck9iamVjdCogU1ZHU3ltYm9sRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJl
bmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCitSZW5kZXJPYmplY3QqIFNWR1N5bWJvbEVsZW1lbnQ6
OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiBhcmVuYSwgUmVuZGVyU3R5bGUmKQogewogICAg
IHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIoKnRoaXMpOwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5oCShyZXZpc2lvbiAxNTU5MDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NSw3ICs0NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7
Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwg
UmVuZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIo
UmVuZGVyQXJlbmEmLCBSZW5kZXJTdHlsZSYpOwogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNS
ZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RS
ZWZFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAxNTU5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJl
ZkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAsNyArMjIwLDcgQEAgdm9pZCBTVkdU
UmVmRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogfQogCi1SZW5kZXJPYmplY3QqIFNWR1RSZWZFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5k
ZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKK1JlbmRlck9iamVjdCogU1ZHVFJlZkVsZW1l
bnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiBhcmVuYSwgUmVuZGVyU3R5bGUmKQogewog
ICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdJbmxpbmUoKnRoaXMpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmgJKHJldmlzaW9uIDE1NTkwMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0
NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKLSAgICB2
aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJT
dHlsZSopOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJB
cmVuYSYsIFJlbmRlclN0eWxlJik7CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRl
UmVuZGVyZXIoY29uc3QgTm9kZSopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklz
TmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUU3BhbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
U3BhbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTU5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVFNwYW5FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBQYXNz
UmVmUHRyPFNWR1RTcGFuRWxlbWVudD4gU1ZHVFNwYW5FbGVtCiAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTVkdUU3BhbkVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotUmVuZGVyT2Jq
ZWN0KiBTVkdUU3BhbkVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwg
UmVuZGVyU3R5bGUqKQorUmVuZGVyT2JqZWN0KiBTVkdUU3BhbkVsZW1lbnQ6OmNyZWF0ZVJlbmRl
cmVyKFJlbmRlckFyZW5hJiBhcmVuYSwgUmVuZGVyU3R5bGUmKQogewogICAgIHJldHVybiBuZXcg
KGFyZW5hKSBSZW5kZXJTVkdUU3BhbigqdGhpcyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVFNwYW5FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RTcGFuRWxlbWVudC5oCShyZXZpc2lvbiAxNTU5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVFNwYW5FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBTVkdUU3BhbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50Jik7CiAgICAgICAgICAgICAKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgUmVuZGVy
T2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSYsIFJlbmRlclN0eWxlJik7CiAgICAg
dmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSopIGNvbnN0
OwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJik7
CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAx
NTU5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIEFmZmluZVRyYW5zZm9ybSBTVkdUZXh0RWxlbWVudDo6
YW5pbWF0ZWQKICAgICByZXR1cm4gbWF0cml4OwogfQogCi1SZW5kZXJPYmplY3QqIFNWR1RleHRF
bGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikK
K1JlbmRlck9iamVjdCogU1ZHVGV4dEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5h
JiBhcmVuYSwgUmVuZGVyU3R5bGUmKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJT
VkdUZXh0KCp0aGlzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5oCShy
ZXZpc2lvbiAxNTU5MDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKLSAg
ICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5k
ZXJTdHlsZSopOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5k
ZXJBcmVuYSYsIFJlbmRlclN0eWxlJik7CiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3Jl
YXRlUmVuZGVyZXIoY29uc3QgTm9kZSopIGNvbnN0OwogfTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAJKHJldmlzaW9uIDE1NTkwMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjcsNyArMTI3LDcgQEAgdm9pZCBTVkdUZXh0UGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYQog
ICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNl
SW52YWxpZGF0aW9uKG9iamVjdCk7CiB9CiAKLVJlbmRlck9iamVjdCogU1ZHVGV4dFBhdGhFbGVt
ZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKK1Jl
bmRlck9iamVjdCogU1ZHVGV4dFBhdGhFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVu
YSYgYXJlbmEsIFJlbmRlclN0eWxlJikKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVy
U1ZHVGV4dFBhdGgoKnRoaXMpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQ
YXRoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0
aEVsZW1lbnQuaAkocmV2aXNpb24gMTU1OTAwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rl
eHRQYXRoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3LDcgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAotICAgIHZpcnR1YWwgUmVuZGVy
T2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAg
dmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiwgUmVuZGVy
U3R5bGUmKTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25z
dCBOb2RlKikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3Qg
UmVuZGVyU3R5bGUmKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAko
cmV2aXNpb24gMTU1OTAwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MzAsNyArNTMwLDcgQEAgdm9pZCBTVkdVc2VFbGVtZW50Ojpi
dWlsZFNoYWRvd0FuZEluc3RhbgogI2VuZGlmCiB9CiAKLVJlbmRlck9iamVjdCogU1ZHVXNlRWxl
bWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCitS
ZW5kZXJPYmplY3QqIFNWR1VzZUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hJiBh
cmVuYSwgUmVuZGVyU3R5bGUmKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdU
cmFuc2Zvcm1hYmxlQ29udGFpbmVyKCp0aGlzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdVc2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Vz
ZUVsZW1lbnQuaAkocmV2aXNpb24gMTU1OTAwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Vz
ZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogCiAg
ICAgdmlydHVhbCBib29sIHdpbGxSZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlKTsKIAotICAgIHZp
cnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0
eWxlKik7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFy
ZW5hJiwgUmVuZGVyU3R5bGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgdG9DbGlwUGF0aChQYXRoJik7
CiAKICAgICB2b2lkIGNsZWFyUmVzb3VyY2VSZWZlcmVuY2VzKCk7Cg==
</data>
<flag name="review"
          id="233951"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>