<?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>53614</bug_id>
          
          <creation_ts>2011-02-02 12:01:36 -0800</creation_ts>
          <short_desc>Remove physical terminology from overflow.</short_desc>
          <delta_ts>2011-02-02 12:21:05 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>344108</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-02-02 12:01:36 -0800</bug_when>
    <thetext>Don&apos;t use top/right/bottom/left to describe overflow that is in the block&apos;s local coordinate space (which could be flipped).  Use minX/maxX/minY/maxY instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344109</commentid>
    <comment_count>1</comment_count>
      <attachid>80943</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-02-02 12:02:52 -0800</bug_when>
    <thetext>Created attachment 80943
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344121</commentid>
    <comment_count>2</comment_count>
      <attachid>80948</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-02-02 12:11:00 -0800</bug_when>
    <thetext>Created attachment 80948
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344122</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-02 12:14:11 -0800</bug_when>
    <thetext>Attachment 80943 did not build on chromium:
Build output: http://queues.webkit.org/results/7686882</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344127</commentid>
    <comment_count>4</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-02-02 12:19:38 -0800</bug_when>
    <thetext>Fixed in r77397.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344128</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-02 12:21:05 -0800</bug_when>
    <thetext>Attachment 80948 did not build on chromium:
Build output: http://queues.webkit.org/results/7690160</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80943</attachid>
            <date>2011-02-02 12:02:52 -0800</date>
            <delta_ts>2011-02-02 12:11:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>42201</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3Mzk1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsOTIgQEAKKzIwMTEtMDItMDIgIERhdmlkIEh5
YXR0ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
MzYxNAorCisgICAgICAgIFJlbW92ZSBwaHlzaWNhbCB0ZXJtaW5vbG9neSBmcm9tIG92ZXJmbG93
LiAgUmVwbGFjZSB3aXRoIG1pblgvbWF4WC9taW5ZL21heFkuCisKKyAgICAgICAgKiByZW5kZXJp
bmcvSW5saW5lRmxvd0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94Ojph
ZGRCb3hTaGFkb3dWaXN1YWxPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93
Qm94OjphZGRUZXh0Qm94VmlzdWFsT3ZlcmZsb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9Jbmxp
bmVGbG93Qm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjptaW5ZTGF5b3V0
T3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6bWF4WUxheW91dE92
ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6Om1pblhMYXlvdXRPdmVy
Zmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjptYXhYTGF5b3V0T3ZlcmZs
b3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6bG9naWNhbExlZnRMYXlvdXRP
dmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94Ojpsb2dpY2FsUmlnaHRM
YXlvdXRPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94Ojpsb2dpY2Fs
VG9wTGF5b3V0T3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6bG9n
aWNhbEJvdHRvbUxheW91dE92ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dC
b3g6Om1pbllWaXN1YWxPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94
OjptYXhZVmlzdWFsT3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6
bWluWFZpc3VhbE92ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6Om1h
eFhWaXN1YWxPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94Ojpsb2dp
Y2FsTGVmdFZpc3VhbE92ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6
OmxvZ2ljYWxSaWdodFZpc3VhbE92ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZs
b3dCb3g6OmxvZ2ljYWxtaW5ZVmlzdWFsT3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lRmxvd0JveDo6bG9naWNhbG1heFlWaXN1YWxPdmVyZmxvdyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphZGp1
c3RMaW5lUG9zaXRpb25Gb3JQYWdpbmF0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
QmxvY2tMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpiZWZv
cmVTaWRlVmlzdWFsT3ZlcmZsb3dGb3JMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjphZnRlclNpZGVWaXN1YWxPdmVyZmxvd0ZvckxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2s6OmJlZm9yZVNpZGVMYXlvdXRPdmVyZmxvd0ZvckxpbmUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OmFmdGVyU2lkZUxheW91dE92ZXJmbG93Rm9yTGluZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6OnNjcm9sbFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6c2Nyb2xs
SGVpZ2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3g6Om1pbllMYXlvdXRPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3g6Om1heFlMYXlvdXRPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3g6Om1pblhMYXlvdXRPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Om1h
eFhMYXlvdXRPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmxvZ2ljYWxM
ZWZ0TGF5b3V0T3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpsb2dpY2Fs
UmlnaHRMYXlvdXRPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Om1pbllW
aXN1YWxPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Om1heFlWaXN1YWxP
dmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Om1pblhWaXN1YWxPdmVyZmxv
dyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Om1heFhWaXN1YWxPdmVyZmxvdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmxvZ2ljYWxMZWZ0VmlzdWFsT3ZlcmZsb3cpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpsb2dpY2FsUmlnaHRWaXN1YWxPdmVyZmxvdyk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJbmxpbmU6OmxpbmVzVmlzdWFsT3ZlcmZsb3dCb3VuZGluZ0JveCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmVuc3VyZVJvb3RQbGF0Zm9ybUxheWVyKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGluZUJveExpc3Q6OmFueUxpbmVJbnRlcnNlY3RzUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMaW5lQm94TGlzdDo6bGluZUludGVyc2VjdHNEaXJ0eVJlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGluZUJveExpc3Q6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxpbmVCb3hMaXN0OjpoaXRUZXN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TWFycXVlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXJxdWVlOjpjb21wdXRlUG9z
aXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPdmVyZmxvdy5oOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyT3ZlcmZsb3c6OlJlbmRlck92ZXJmbG93KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck92ZXJmbG93OjptaW5ZTGF5b3V0T3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyT3ZlcmZsb3c6Om1heFlMYXlvdXRPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPdmVyZmxvdzo6bWluWExheW91dE92ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck92ZXJmbG93OjptYXhYTGF5b3V0T3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyT3ZlcmZsb3c6Om1pbllWaXN1YWxPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJPdmVyZmxvdzo6bWF4WVZpc3VhbE92ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck92ZXJmbG93OjptaW5YVmlzdWFsT3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyT3ZlcmZsb3c6Om1heFhWaXN1YWxPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPdmVyZmxvdzo6c2V0bWluWVZpc3VhbE92ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck92ZXJmbG93Ojp2aXN1YWxPdmVyZmxvd1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyT3ZlcmZsb3c6Om1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT3ZlcmZsb3c6OmFk
ZFZpc3VhbE92ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck92ZXJmbG93OjpzZXRW
aXN1YWxPdmVyZmxvdyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpzaG91bGRQYWludCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRh
YmxlOjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OnBhaW50KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRhYmxlQ2VsbDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ondy
aXRlTGF5ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJWaWV3Ojpkb2NUb3ApOgorCiAyMDExLTAyLTAyICBTdGV2ZSBMYWNl
eSAgPHNqbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29u
LgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAkocmV2
aXNpb24gNzczODQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTcxNyw3ICs3MTcsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6
OmFkZEJveFNoYWRvd1Zpc3VhbE92CiAgICAgaW50IGJveFNoYWRvd0xvZ2ljYWxCb3R0b207CiAg
ICAgcmVuZGVyZXIoKS0+c3R5bGUobV9maXJzdExpbmUpLT5nZXRCb3hTaGFkb3dCbG9ja0RpcmVj
dGlvbkV4dGVudChib3hTaGFkb3dMb2dpY2FsVG9wLCBib3hTaGFkb3dMb2dpY2FsQm90dG9tKTsK
ICAgICAKLSAgICBpbnQgbG9naWNhbFRvcFZpc3VhbE92ZXJmbG93ID0gbWluKGxvZ2ljYWxUb3Ao
KSArIGJveFNoYWRvd0xvZ2ljYWxUb3AsIGxvZ2ljYWxWaXN1YWxPdmVyZmxvdy55KCkpOworICAg
IGludCBsb2dpY2FsbWluWVZpc3VhbE92ZXJmbG93ID0gbWluKGxvZ2ljYWxUb3AoKSArIGJveFNo
YWRvd0xvZ2ljYWxUb3AsIGxvZ2ljYWxWaXN1YWxPdmVyZmxvdy55KCkpOwogICAgIGludCBsb2dp
Y2FsQm90dG9tVmlzdWFsT3ZlcmZsb3cgPSBtYXgobG9naWNhbEJvdHRvbSgpICsgYm94U2hhZG93
TG9naWNhbEJvdHRvbSwgbG9naWNhbFZpc3VhbE92ZXJmbG93Lm1heFkoKSk7CiAgICAgCiAgICAg
aW50IGJveFNoYWRvd0xvZ2ljYWxMZWZ0OwpAQCAtNzI3LDggKzcyNyw4IEBAIHZvaWQgSW5saW5l
Rmxvd0JveDo6YWRkQm94U2hhZG93VmlzdWFsT3YKICAgICBpbnQgbG9naWNhbExlZnRWaXN1YWxP
dmVyZmxvdyA9IG1pbihsb2dpY2FsTGVmdCgpICsgYm94U2hhZG93TG9naWNhbExlZnQsIGxvZ2lj
YWxWaXN1YWxPdmVyZmxvdy54KCkpOwogICAgIGludCBsb2dpY2FsUmlnaHRWaXN1YWxPdmVyZmxv
dyA9IG1heChsb2dpY2FsUmlnaHQoKSArIGJveFNoYWRvd0xvZ2ljYWxSaWdodCwgbG9naWNhbFZp
c3VhbE92ZXJmbG93Lm1heFgoKSk7CiAgICAgCi0gICAgbG9naWNhbFZpc3VhbE92ZXJmbG93ID0g
SW50UmVjdChsb2dpY2FsTGVmdFZpc3VhbE92ZXJmbG93LCBsb2dpY2FsVG9wVmlzdWFsT3ZlcmZs
b3csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2FsUmlnaHRWaXN1
YWxPdmVyZmxvdyAtIGxvZ2ljYWxMZWZ0VmlzdWFsT3ZlcmZsb3csIGxvZ2ljYWxCb3R0b21WaXN1
YWxPdmVyZmxvdyAtIGxvZ2ljYWxUb3BWaXN1YWxPdmVyZmxvdyk7CisgICAgbG9naWNhbFZpc3Vh
bE92ZXJmbG93ID0gSW50UmVjdChsb2dpY2FsTGVmdFZpc3VhbE92ZXJmbG93LCBsb2dpY2FsbWlu
WVZpc3VhbE92ZXJmbG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9n
aWNhbFJpZ2h0VmlzdWFsT3ZlcmZsb3cgLSBsb2dpY2FsTGVmdFZpc3VhbE92ZXJmbG93LCBsb2dp
Y2FsQm90dG9tVmlzdWFsT3ZlcmZsb3cgLSBsb2dpY2FsbWluWVZpc3VhbE92ZXJmbG93KTsKIH0K
IAogdm9pZCBJbmxpbmVGbG93Qm94OjphZGRUZXh0Qm94VmlzdWFsT3ZlcmZsb3coY29uc3QgSW5s
aW5lVGV4dEJveCogdGV4dEJveCwgR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9udHNNYXAmIHRl
eHRCb3hEYXRhTWFwLCBJbnRSZWN0JiBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cpCkBAIC03NzksMTMg
Kzc3OSwxMyBAQCB2b2lkIElubGluZUZsb3dCb3g6OmFkZFRleHRCb3hWaXN1YWxPdmVyCiAgICAg
aW50IGNoaWxkT3ZlcmZsb3dMb2dpY2FsTGVmdCA9IG1pbih0ZXh0U2hhZG93TG9naWNhbExlZnQg
KyBsZWZ0R2x5cGhPdmVyZmxvdywgbGVmdEdseXBoT3ZlcmZsb3cpOwogICAgIGludCBjaGlsZE92
ZXJmbG93TG9naWNhbFJpZ2h0ID0gbWF4KHRleHRTaGFkb3dMb2dpY2FsUmlnaHQgKyByaWdodEds
eXBoT3ZlcmZsb3csIHJpZ2h0R2x5cGhPdmVyZmxvdyk7CiAKLSAgICBpbnQgbG9naWNhbFRvcFZp
c3VhbE92ZXJmbG93ID0gbWluKHRleHRCb3gtPmxvZ2ljYWxUb3AoKSArIGNoaWxkT3ZlcmZsb3dM
b2dpY2FsVG9wLCBsb2dpY2FsVmlzdWFsT3ZlcmZsb3cueSgpKTsKKyAgICBpbnQgbG9naWNhbG1p
bllWaXN1YWxPdmVyZmxvdyA9IG1pbih0ZXh0Qm94LT5sb2dpY2FsVG9wKCkgKyBjaGlsZE92ZXJm
bG93TG9naWNhbFRvcCwgbG9naWNhbFZpc3VhbE92ZXJmbG93LnkoKSk7CiAgICAgaW50IGxvZ2lj
YWxCb3R0b21WaXN1YWxPdmVyZmxvdyA9IG1heCh0ZXh0Qm94LT5sb2dpY2FsQm90dG9tKCkgKyBj
aGlsZE92ZXJmbG93TG9naWNhbEJvdHRvbSwgbG9naWNhbFZpc3VhbE92ZXJmbG93Lm1heFkoKSk7
CiAgICAgaW50IGxvZ2ljYWxMZWZ0VmlzdWFsT3ZlcmZsb3cgPSBtaW4odGV4dEJveC0+bG9naWNh
bExlZnQoKSArIGNoaWxkT3ZlcmZsb3dMb2dpY2FsTGVmdCwgbG9naWNhbFZpc3VhbE92ZXJmbG93
LngoKSk7CiAgICAgaW50IGxvZ2ljYWxSaWdodFZpc3VhbE92ZXJmbG93ID0gbWF4KHRleHRCb3gt
PmxvZ2ljYWxSaWdodCgpICsgY2hpbGRPdmVyZmxvd0xvZ2ljYWxSaWdodCwgbG9naWNhbFZpc3Vh
bE92ZXJmbG93Lm1heFgoKSk7CiAgICAgCi0gICAgbG9naWNhbFZpc3VhbE92ZXJmbG93ID0gSW50
UmVjdChsb2dpY2FsTGVmdFZpc3VhbE92ZXJmbG93LCBsb2dpY2FsVG9wVmlzdWFsT3ZlcmZsb3cs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2FsUmlnaHRWaXN1YWxP
dmVyZmxvdyAtIGxvZ2ljYWxMZWZ0VmlzdWFsT3ZlcmZsb3csIGxvZ2ljYWxCb3R0b21WaXN1YWxP
dmVyZmxvdyAtIGxvZ2ljYWxUb3BWaXN1YWxPdmVyZmxvdyk7CisgICAgbG9naWNhbFZpc3VhbE92
ZXJmbG93ID0gSW50UmVjdChsb2dpY2FsTGVmdFZpc3VhbE92ZXJmbG93LCBsb2dpY2FsbWluWVZp
c3VhbE92ZXJmbG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naWNh
bFJpZ2h0VmlzdWFsT3ZlcmZsb3cgLSBsb2dpY2FsTGVmdFZpc3VhbE92ZXJmbG93LCBsb2dpY2Fs
Qm90dG9tVmlzdWFsT3ZlcmZsb3cgLSBsb2dpY2FsbWluWVZpc3VhbE92ZXJmbG93KTsKIH0KIAog
dm9pZCBJbmxpbmVGbG93Qm94OjphZGRSZXBsYWNlZENoaWxkT3ZlcmZsb3coY29uc3QgSW5saW5l
Qm94KiBpbmxpbmVCb3gsIEludFJlY3QmIGxvZ2ljYWxMYXlvdXRPdmVyZmxvdywgSW50UmVjdCYg
bG9naWNhbFZpc3VhbE92ZXJmbG93KQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZUZsb3dCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5s
aW5lRmxvd0JveC5oCShyZXZpc2lvbiA3NzM4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVGbG93Qm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4MywxOSArMTgzLDE4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKSBjb25zdDsKICAgICB2b2lkIHNldEhh
c0JhZENoaWxkTGlzdCgpOwogCi0gICAgLy8gTGluZSB2aXN1YWwgYW5kIGxheW91dCBvdmVyZmxv
dyBhcmUgaW4gdGhlIGNvb3JkaW5hdGUgc3BhY2Ugb2YgdGhlIGJsb2NrLiAgVGhpcyBtZWFucyB0
aGF0IC0gdW5saWtlIG90aGVyIHVucHJlZml4ZWQgdXNlcyBvZiB0aGUgd29yZHMKLSAgICAvLyB0
b3AvcmlnaHQvYm90dG9tL2xlZnQgaW4gdGhlIGNvZGUgLSB0aGVzZSBhcmVuJ3QgcHVyZWx5IHBo
eXNpY2FsIGRpcmVjdGlvbnMuICBGb3IgaG9yaXpvbnRhbC10YiBhbmQgdmVydGljYWwtbHIgdGhl
eSB3aWxsIG1hdGNoIHBoeXNpY2FsCi0gICAgLy8gZGlyZWN0aW9ucywgYnV0IGZvciBob3Jpem9u
dGFsLWJ0IGFuZCB2ZXJ0aWNhbC1ybCwgdGhlIHRvcC9ib3R0b20gYW5kIGxlZnQvcmlnaHQgcmVz
cGVjdGl2ZWx5IGFyZSBpbnZlcnRlZCB3aGVuIGNvbXBhcmVkIHRvCi0gICAgLy8gdGhlaXIgcGh5
c2ljYWwgY291bnRlcnBhcnRzLgotICAgIGludCB0b3BMYXlvdXRPdmVyZmxvdygpIGNvbnN0IHsg
cmV0dXJuIG1fb3ZlcmZsb3cgPyBtX292ZXJmbG93LT50b3BMYXlvdXRPdmVyZmxvdygpIDogbV95
OyB9Ci0gICAgaW50IGJvdHRvbUxheW91dE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gbV9vdmVy
ZmxvdyA/IG1fb3ZlcmZsb3ctPmJvdHRvbUxheW91dE92ZXJmbG93KCkgOiBtX3kgKyBoZWlnaHQo
KTsgfQotICAgIGludCBsZWZ0TGF5b3V0T3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX292ZXJm
bG93ID8gbV9vdmVyZmxvdy0+bGVmdExheW91dE92ZXJmbG93KCkgOiBtX3g7IH0KLSAgICBpbnQg
cmlnaHRMYXlvdXRPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcmZsb3cgPyBtX292ZXJm
bG93LT5yaWdodExheW91dE92ZXJmbG93KCkgOiBtX3ggKyB3aWR0aCgpOyB9CisgICAgLy8gTGlu
ZSB2aXN1YWwgYW5kIGxheW91dCBvdmVyZmxvdyBhcmUgaW4gdGhlIGNvb3JkaW5hdGUgc3BhY2Ug
b2YgdGhlIGJsb2NrLiAgVGhpcyBtZWFucyB0aGF0IHRoZXkgYXJlbid0IHB1cmVseSBwaHlzaWNh
bCBkaXJlY3Rpb25zLgorICAgIC8vIEZvciBob3Jpem9udGFsLXRiIGFuZCB2ZXJ0aWNhbC1sciB0
aGV5IHdpbGwgbWF0Y2ggcGh5c2ljYWwgZGlyZWN0aW9ucywgYnV0IGZvciBob3Jpem9udGFsLWJ0
IGFuZCB2ZXJ0aWNhbC1ybCwgdGhlIHRvcC9ib3R0b20gYW5kIGxlZnQvcmlnaHQKKyAgICAvLyBy
ZXNwZWN0aXZlbHkgYXJlIGZsaXBwZWQgd2hlbiBjb21wYXJlZCB0byB0aGVpciBwaHlzaWNhbCBj
b3VudGVycGFydHMuICBGb3IgZXhhbXBsZSBtaW5YIGlzIG9uIHRoZSBsZWZ0IGluIHZlcnRpY2Fs
LWxyLCBidXQgaXQgaXMgb24gdGhlIHJpZ2h0IGluIHZlcnRpY2FsLXJsLgorICAgIGludCBtaW5Z
TGF5b3V0T3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX292ZXJmbG93ID8gbV9vdmVyZmxvdy0+
bWluWUxheW91dE92ZXJmbG93KCkgOiBtX3k7IH0KKyAgICBpbnQgbWF4WUxheW91dE92ZXJmbG93
KCkgY29uc3QgeyByZXR1cm4gbV9vdmVyZmxvdyA/IG1fb3ZlcmZsb3ctPm1heFlMYXlvdXRPdmVy
ZmxvdygpIDogbV95ICsgaGVpZ2h0KCk7IH0KKyAgICBpbnQgbWluWExheW91dE92ZXJmbG93KCkg
Y29uc3QgeyByZXR1cm4gbV9vdmVyZmxvdyA/IG1fb3ZlcmZsb3ctPm1pblhMYXlvdXRPdmVyZmxv
dygpIDogbV94OyB9CisgICAgaW50IG1heFhMYXlvdXRPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJu
IG1fb3ZlcmZsb3cgPyBtX292ZXJmbG93LT5tYXhYTGF5b3V0T3ZlcmZsb3coKSA6IG1feCArIHdp
ZHRoKCk7IH0KICAgICBJbnRSZWN0IGxheW91dE92ZXJmbG93UmVjdCgpIGNvbnN0IHsgcmV0dXJu
IG1fb3ZlcmZsb3cgPyBtX292ZXJmbG93LT5sYXlvdXRPdmVyZmxvd1JlY3QoKSA6IEludFJlY3Qo
bV94LCBtX3ksIHdpZHRoKCksIGhlaWdodCgpKTsgfQotICAgIGludCBsb2dpY2FsTGVmdExheW91
dE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gcmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKSA/IGxlZnRMYXlvdXRPdmVyZmxvdygpIDogdG9wTGF5b3V0T3ZlcmZs
b3coKTsgfQotICAgIGludCBsb2dpY2FsUmlnaHRMYXlvdXRPdmVyZmxvdygpIGNvbnN0IHsgcmV0
dXJuIHJlbmRlcmVyKCktPnN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyByaWdo
dExheW91dE92ZXJmbG93KCkgOiBib3R0b21MYXlvdXRPdmVyZmxvdygpOyB9Ci0gICAgaW50IGxv
Z2ljYWxUb3BMYXlvdXRPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIHJlbmRlcmVyKCktPnN0eWxl
KCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyB0b3BWaXN1YWxPdmVyZmxvdygpIDogbGVm
dFZpc3VhbE92ZXJmbG93KCk7IH0KLSAgICBpbnQgbG9naWNhbEJvdHRvbUxheW91dE92ZXJmbG93
KCkgY29uc3QgeyByZXR1cm4gcmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKSA/IGJvdHRvbUxheW91dE92ZXJmbG93KCkgOiByaWdodExheW91dE92ZXJmbG93KCk7
IH0KKyAgICBpbnQgbG9naWNhbExlZnRMYXlvdXRPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIHJl
bmRlcmVyKCktPnN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBtaW5YTGF5b3V0
T3ZlcmZsb3coKSA6IG1pbllMYXlvdXRPdmVyZmxvdygpOyB9CisgICAgaW50IGxvZ2ljYWxSaWdo
dExheW91dE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gcmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNI
b3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG1heFhMYXlvdXRPdmVyZmxvdygpIDogbWF4WUxheW91
dE92ZXJmbG93KCk7IH0KKyAgICBpbnQgbG9naWNhbFRvcExheW91dE92ZXJmbG93KCkgY29uc3Qg
eyByZXR1cm4gcmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/
IG1pbllWaXN1YWxPdmVyZmxvdygpIDogbWluWFZpc3VhbE92ZXJmbG93KCk7IH0KKyAgICBpbnQg
bG9naWNhbEJvdHRvbUxheW91dE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gcmVuZGVyZXIoKS0+
c3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG1heFlMYXlvdXRPdmVyZmxvdygp
IDogbWF4WExheW91dE92ZXJmbG93KCk7IH0KICAgICBJbnRSZWN0IGxvZ2ljYWxMYXlvdXRPdmVy
Zmxvd1JlY3QoKSBjb25zdAogICAgIHsKICAgICAgICAgSW50UmVjdCByZXN1bHQgPSBsYXlvdXRP
dmVyZmxvd1JlY3QoKTsKQEAgLTIwNCwxNSArMjAzLDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBpbnQgdG9wVmlzdWFsT3ZlcmZsb3coKSBjb25zdCB7
IHJldHVybiBtX292ZXJmbG93ID8gbV9vdmVyZmxvdy0+dG9wVmlzdWFsT3ZlcmZsb3coKSA6IG1f
eTsgfQotICAgIGludCBib3R0b21WaXN1YWxPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1fb3Zl
cmZsb3cgPyBtX292ZXJmbG93LT5ib3R0b21WaXN1YWxPdmVyZmxvdygpIDogbV95ICsgaGVpZ2h0
KCk7IH0KLSAgICBpbnQgbGVmdFZpc3VhbE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gbV9vdmVy
ZmxvdyA/IG1fb3ZlcmZsb3ctPmxlZnRWaXN1YWxPdmVyZmxvdygpIDogbV94OyB9Ci0gICAgaW50
IHJpZ2h0VmlzdWFsT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX292ZXJmbG93ID8gbV9vdmVy
Zmxvdy0+cmlnaHRWaXN1YWxPdmVyZmxvdygpIDogbV94ICsgd2lkdGgoKTsgfQorICAgIGludCBt
aW5ZVmlzdWFsT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX292ZXJmbG93ID8gbV9vdmVyZmxv
dy0+bWluWVZpc3VhbE92ZXJmbG93KCkgOiBtX3k7IH0KKyAgICBpbnQgbWF4WVZpc3VhbE92ZXJm
bG93KCkgY29uc3QgeyByZXR1cm4gbV9vdmVyZmxvdyA/IG1fb3ZlcmZsb3ctPm1heFlWaXN1YWxP
dmVyZmxvdygpIDogbV95ICsgaGVpZ2h0KCk7IH0KKyAgICBpbnQgbWluWFZpc3VhbE92ZXJmbG93
KCkgY29uc3QgeyByZXR1cm4gbV9vdmVyZmxvdyA/IG1fb3ZlcmZsb3ctPm1pblhWaXN1YWxPdmVy
ZmxvdygpIDogbV94OyB9CisgICAgaW50IG1heFhWaXN1YWxPdmVyZmxvdygpIGNvbnN0IHsgcmV0
dXJuIG1fb3ZlcmZsb3cgPyBtX292ZXJmbG93LT5tYXhYVmlzdWFsT3ZlcmZsb3coKSA6IG1feCAr
IHdpZHRoKCk7IH0KICAgICBJbnRSZWN0IHZpc3VhbE92ZXJmbG93UmVjdCgpIGNvbnN0IHsgcmV0
dXJuIG1fb3ZlcmZsb3cgPyBtX292ZXJmbG93LT52aXN1YWxPdmVyZmxvd1JlY3QoKSA6IEludFJl
Y3QobV94LCBtX3ksIHdpZHRoKCksIGhlaWdodCgpKTsgfQotICAgIGludCBsb2dpY2FsTGVmdFZp
c3VhbE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gcmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSA/IGxlZnRWaXN1YWxPdmVyZmxvdygpIDogdG9wVmlzdWFsT3Zl
cmZsb3coKTsgfQotICAgIGludCBsb2dpY2FsUmlnaHRWaXN1YWxPdmVyZmxvdygpIGNvbnN0IHsg
cmV0dXJuIHJlbmRlcmVyKCktPnN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBy
aWdodFZpc3VhbE92ZXJmbG93KCkgOiBib3R0b21WaXN1YWxPdmVyZmxvdygpOyB9Ci0gICAgaW50
IGxvZ2ljYWxUb3BWaXN1YWxPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIHJlbmRlcmVyKCktPnN0
eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyB0b3BWaXN1YWxPdmVyZmxvdygpIDog
bGVmdFZpc3VhbE92ZXJmbG93KCk7IH0KLSAgICBpbnQgbG9naWNhbEJvdHRvbVZpc3VhbE92ZXJm
bG93KCkgY29uc3QgeyByZXR1cm4gcmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUoKSA/IGJvdHRvbVZpc3VhbE92ZXJmbG93KCkgOiByaWdodFZpc3VhbE92ZXJmbG93
KCk7IH0KKyAgICBpbnQgbG9naWNhbExlZnRWaXN1YWxPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJu
IHJlbmRlcmVyKCktPnN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBtaW5YVmlz
dWFsT3ZlcmZsb3coKSA6IG1pbllWaXN1YWxPdmVyZmxvdygpOyB9CisgICAgaW50IGxvZ2ljYWxS
aWdodFZpc3VhbE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gcmVuZGVyZXIoKS0+c3R5bGUoKS0+
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG1heFhWaXN1YWxPdmVyZmxvdygpIDogbWF4WVZp
c3VhbE92ZXJmbG93KCk7IH0KKyAgICBpbnQgbG9naWNhbG1pbllWaXN1YWxPdmVyZmxvdygpIGNv
bnN0IHsgcmV0dXJuIHJlbmRlcmVyKCktPnN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkgPyBtaW5ZVmlzdWFsT3ZlcmZsb3coKSA6IG1pblhWaXN1YWxPdmVyZmxvdygpOyB9CisgICAg
aW50IGxvZ2ljYWxtYXhZVmlzdWFsT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiByZW5kZXJlcigp
LT5zdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gbWF4WVZpc3VhbE92ZXJmbG93
KCkgOiBtYXhYVmlzdWFsT3ZlcmZsb3coKTsgfQogICAgIEludFJlY3QgbG9naWNhbFZpc3VhbE92
ZXJmbG93UmVjdCgpIGNvbnN0CiAgICAgewogICAgICAgICBJbnRSZWN0IHJlc3VsdCA9IHZpc3Vh
bE92ZXJmbG93UmVjdCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwCShyZXZpc2lvbiA3NzM4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5MzQsOCArNTkzNCw4IEBAIHZvaWQgUmVu
ZGVyQmxvY2s6OmFkanVzdExpbmVQb3NpdGlvbkZvclAKICAgICAvLyBsaW5lIGFuZCBhbGwgZm9s
bG93aW5nIGxpbmVzLgogICAgIExheW91dFN0YXRlKiBsYXlvdXRTdGF0ZSA9IHZpZXcoKS0+bGF5
b3V0U3RhdGUoKTsKICAgICBpbnQgcGFnZUxvZ2ljYWxIZWlnaHQgPSBsYXlvdXRTdGF0ZS0+bV9w
YWdlTG9naWNhbEhlaWdodDsKLSAgICBpbnQgbG9naWNhbE9mZnNldCA9IGxpbmVCb3gtPmxvZ2lj
YWxUb3BWaXN1YWxPdmVyZmxvdygpOwotICAgIGludCBsaW5lSGVpZ2h0ID0gbGluZUJveC0+bG9n
aWNhbEJvdHRvbVZpc3VhbE92ZXJmbG93KCkgLSBsb2dpY2FsT2Zmc2V0OworICAgIGludCBsb2dp
Y2FsT2Zmc2V0ID0gbGluZUJveC0+bG9naWNhbG1pbllWaXN1YWxPdmVyZmxvdygpOworICAgIGlu
dCBsaW5lSGVpZ2h0ID0gbGluZUJveC0+bG9naWNhbG1heFlWaXN1YWxPdmVyZmxvdygpIC0gbG9n
aWNhbE9mZnNldDsKICAgICBpZiAobGF5b3V0U3RhdGUtPm1fY29sdW1uSW5mbykKICAgICAgICAg
bGF5b3V0U3RhdGUtPm1fY29sdW1uSW5mby0+dXBkYXRlTWluaW11bUNvbHVtbkhlaWdodChsaW5l
SGVpZ2h0KTsKICAgICBsb2dpY2FsT2Zmc2V0ICs9IGRlbHRhOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAJKHJldmlzaW9u
IDc3Mzg0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNjYsMzggKzIwNjYsMzQgQEAgdm9pZCBSZW5kZXJC
bG9jazo6YWRkT3ZlcmZsb3dGcm9tSW5saW5lQwogCiBpbnQgUmVuZGVyQmxvY2s6OmJlZm9yZVNp
ZGVWaXN1YWxPdmVyZmxvd0ZvckxpbmUoUm9vdElubGluZUJveCogbGluZSkgY29uc3QKIHsKLSAg
ICAvLyBPdmVyZmxvdyBpcyBpbiB0aGUgYmxvY2sncyBjb29yZGluYXRlIHNwYWNlLCB3aGljaCBt
ZWFucyBpdCBpc24ndCBwdXJlbHkgcGh5c2ljYWwuICBGb3IgZmxpcHBlZCBibG9ja3MgKHJsIGFu
ZCBidCksCi0gICAgLy8gd2UgY29udGludWUgdG8gdXNlIHRvcCBhbmQgbGVmdCBvdmVyZmxvdyBl
dmVuIHRob3VnaCBwaHlzaWNhbGx5IGl0J3MgYm90dG9tIGFuZCByaWdodC4KKyAgICAvLyBPdmVy
ZmxvdyBpcyBpbiB0aGUgYmxvY2sncyBjb29yZGluYXRlIHNwYWNlLCB3aGljaCBtZWFucyBpdCBp
c24ndCBwdXJlbHkgcGh5c2ljYWwuCiAgICAgaWYgKHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKCkpCi0gICAgICAgIHJldHVybiBsaW5lLT50b3BWaXN1YWxPdmVyZmxvdygpOwotICAg
IHJldHVybiBsaW5lLT5sZWZ0VmlzdWFsT3ZlcmZsb3coKTsKKyAgICAgICAgcmV0dXJuIGxpbmUt
Pm1pbllWaXN1YWxPdmVyZmxvdygpOworICAgIHJldHVybiBsaW5lLT5taW5YVmlzdWFsT3ZlcmZs
b3coKTsKIH0KIAogaW50IFJlbmRlckJsb2NrOjphZnRlclNpZGVWaXN1YWxPdmVyZmxvd0Zvckxp
bmUoUm9vdElubGluZUJveCogbGluZSkgY29uc3QKIHsKLSAgICAvLyBPdmVyZmxvdyBpcyBpbiB0
aGUgYmxvY2sncyBjb29yZGluYXRlIHNwYWNlLCB3aGljaCBtZWFucyBpdCBpc24ndCBwdXJlbHkg
cGh5c2ljYWwuICBGb3IgZmxpcHBlZCBibG9ja3MgKHJsIGFuZCBidCksCi0gICAgLy8gd2UgY29u
dGludWUgdG8gdXNlIGJvdHRvbSBhbmQgcmlnaHQgb3ZlcmZsb3cgZXZlbiB0aG91Z2ggcGh5c2lj
YWxseSBpdCdzIHRvcCBhbmQgbGVmdC4KKyAgICAvLyBPdmVyZmxvdyBpcyBpbiB0aGUgYmxvY2sn
cyBjb29yZGluYXRlIHNwYWNlLCB3aGljaCBtZWFucyBpdCBpc24ndCBwdXJlbHkgcGh5c2ljYWwu
CiAgICAgaWYgKHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAgICAgIHJl
dHVybiBsaW5lLT5ib3R0b21WaXN1YWxPdmVyZmxvdygpOwotICAgIHJldHVybiBsaW5lLT5yaWdo
dFZpc3VhbE92ZXJmbG93KCk7CisgICAgICAgIHJldHVybiBsaW5lLT5tYXhZVmlzdWFsT3ZlcmZs
b3coKTsKKyAgICByZXR1cm4gbGluZS0+bWF4WFZpc3VhbE92ZXJmbG93KCk7CiB9CiAKIGludCBS
ZW5kZXJCbG9jazo6YmVmb3JlU2lkZUxheW91dE92ZXJmbG93Rm9yTGluZShSb290SW5saW5lQm94
KiBsaW5lKSBjb25zdAogewotICAgIC8vIE92ZXJmbG93IGlzIGluIHRoZSBibG9jaydzIGNvb3Jk
aW5hdGUgc3BhY2UsIHdoaWNoIG1lYW5zIGl0IGlzbid0IHB1cmVseSBwaHlzaWNhbC4gIEZvciBm
bGlwcGVkIGJsb2NrcyAocmwgYW5kIGJ0KSwKLSAgICAvLyB3ZSBjb250aW51ZSB0byB1c2UgdG9w
IGFuZCBsZWZ0IG92ZXJmbG93IGV2ZW4gdGhvdWdoIHBoeXNpY2FsbHkgaXQncyBib3R0b20gYW5k
IHJpZ2h0LgorICAgIC8vIE92ZXJmbG93IGlzIGluIHRoZSBibG9jaydzIGNvb3JkaW5hdGUgc3Bh
Y2UsIHdoaWNoIG1lYW5zIGl0IGlzbid0IHB1cmVseSBwaHlzaWNhbC4KICAgICBpZiAoc3R5bGUo
KS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKLSAgICAgICAgcmV0dXJuIGxpbmUtPnRvcExh
eW91dE92ZXJmbG93KCk7Ci0gICAgcmV0dXJuIGxpbmUtPmxlZnRMYXlvdXRPdmVyZmxvdygpOwor
ICAgICAgICByZXR1cm4gbGluZS0+bWluWUxheW91dE92ZXJmbG93KCk7CisgICAgcmV0dXJuIGxp
bmUtPm1pblhMYXlvdXRPdmVyZmxvdygpOwogfQogCiBpbnQgUmVuZGVyQmxvY2s6OmFmdGVyU2lk
ZUxheW91dE92ZXJmbG93Rm9yTGluZShSb290SW5saW5lQm94KiBsaW5lKSBjb25zdAogewotICAg
IC8vIE92ZXJmbG93IGlzIGluIHRoZSBibG9jaydzIGNvb3JkaW5hdGUgc3BhY2UsIHdoaWNoIG1l
YW5zIGl0IGlzbid0IHB1cmVseSBwaHlzaWNhbC4gIEZvciBmbGlwcGVkIGJsb2NrcyAocmwgYW5k
IGJ0KSwKLSAgICAvLyB3ZSBjb250aW51ZSB0byB1c2UgYm90dG9tIGFuZCByaWdodCBvdmVyZmxv
dyBldmVuIHRob3VnaCBwaHlzaWNhbGx5IGl0J3MgdG9wIGFuZCBsZWZ0LgorICAgIC8vIE92ZXJm
bG93IGlzIGluIHRoZSBibG9jaydzIGNvb3JkaW5hdGUgc3BhY2UsIHdoaWNoIG1lYW5zIGl0IGlz
bid0IHB1cmVseSBwaHlzaWNhbC4KICAgICBpZiAoc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKSkKLSAgICAgICAgcmV0dXJuIGxpbmUtPmJvdHRvbUxheW91dE92ZXJmbG93KCk7Ci0g
ICAgcmV0dXJuIGxpbmUtPnJpZ2h0TGF5b3V0T3ZlcmZsb3coKTsKKyAgICAgICAgcmV0dXJuIGxp
bmUtPm1heFlMYXlvdXRPdmVyZmxvdygpOworICAgIHJldHVybiBsaW5lLT5tYXhYTGF5b3V0T3Zl
cmZsb3coKTsKIH0KIAogdm9pZCBSZW5kZXJCbG9jazo6ZGVsZXRlRWxsaXBzaXNMaW5lQm94ZXMo
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHJldmlzaW9uIDc3
Mzg0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQxNCw4ICs0MTQsOCBAQCBpbnQgUmVuZGVyQm94OjpzY3JvbGxXaWR0aCgpIGNv
bnN0CiAgICAgLy8gRm9yIG9iamVjdHMgd2l0aCB2aXNpYmxlIG92ZXJmbG93LCB0aGlzIG1hdGNo
ZXMgSUUuCiAgICAgLy8gRklYTUU6IE5lZWQgdG8gd29yayByaWdodCB3aXRoIHdyaXRpbmcgbW9k
ZXMuCiAgICAgaWYgKHN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKLSAgICAgICAg
cmV0dXJuIG1heChjbGllbnRXaWR0aCgpLCByaWdodExheW91dE92ZXJmbG93KCkgLSBib3JkZXJM
ZWZ0KCkpOwotICAgIHJldHVybiBjbGllbnRXaWR0aCgpIC0gbWluKDAsIGxlZnRMYXlvdXRPdmVy
ZmxvdygpIC0gYm9yZGVyTGVmdCgpKTsKKyAgICAgICAgcmV0dXJuIG1heChjbGllbnRXaWR0aCgp
LCBtYXhYTGF5b3V0T3ZlcmZsb3coKSAtIGJvcmRlckxlZnQoKSk7CisgICAgcmV0dXJuIGNsaWVu
dFdpZHRoKCkgLSBtaW4oMCwgbWluWExheW91dE92ZXJmbG93KCkgLSBib3JkZXJMZWZ0KCkpOwog
fQogCiBpbnQgUmVuZGVyQm94OjpzY3JvbGxIZWlnaHQoKSBjb25zdApAQCAtNDI0LDcgKzQyNCw3
IEBAIGludCBSZW5kZXJCb3g6OnNjcm9sbEhlaWdodCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBs
YXllcigpLT5zY3JvbGxIZWlnaHQoKTsKICAgICAvLyBGb3Igb2JqZWN0cyB3aXRoIHZpc2libGUg
b3ZlcmZsb3csIHRoaXMgbWF0Y2hlcyBJRS4KICAgICAvLyBGSVhNRTogTmVlZCB0byB3b3JrIHJp
Z2h0IHdpdGggd3JpdGluZyBtb2Rlcy4KLSAgICByZXR1cm4gbWF4KGNsaWVudEhlaWdodCgpLCBi
b3R0b21MYXlvdXRPdmVyZmxvdygpIC0gYm9yZGVyVG9wKCkpOworICAgIHJldHVybiBtYXgoY2xp
ZW50SGVpZ2h0KCksIG1heFlMYXlvdXRPdmVyZmxvdygpIC0gYm9yZGVyVG9wKCkpOwogfQogCiBp
bnQgUmVuZGVyQm94OjpzY3JvbGxMZWZ0KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmgJKHJldmlzaW9uIDc3Mzg0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsMjEgKzEyNywyNSBAQCBwdWJs
aWM6CiAgICAgUmVuZGVyQm94KiBuZXh0U2libGluZ0JveCgpIGNvbnN0OwogICAgIFJlbmRlckJv
eCogcGFyZW50Qm94KCkgY29uc3Q7CiAKKyAgICAvLyBWaXN1YWwgYW5kIGxheW91dCBvdmVyZmxv
dyBhcmUgaW4gdGhlIGNvb3JkaW5hdGUgc3BhY2Ugb2YgdGhlIGJveC4gIFRoaXMgbWVhbnMgdGhh
dCB0aGV5IGFyZW4ndCBwdXJlbHkgcGh5c2ljYWwgZGlyZWN0aW9ucy4KKyAgICAvLyBGb3IgaG9y
aXpvbnRhbC10YiBhbmQgdmVydGljYWwtbHIgdGhleSB3aWxsIG1hdGNoIHBoeXNpY2FsIGRpcmVj
dGlvbnMsIGJ1dCBmb3IgaG9yaXpvbnRhbC1idCBhbmQgdmVydGljYWwtcmwsIHRoZSB0b3AvYm90
dG9tIGFuZCBsZWZ0L3JpZ2h0CisgICAgLy8gcmVzcGVjdGl2ZWx5IGFyZSBmbGlwcGVkIHdoZW4g
Y29tcGFyZWQgdG8gdGhlaXIgcGh5c2ljYWwgY291bnRlcnBhcnRzLiAgRm9yIGV4YW1wbGUgbWlu
WCBpcyBvbiB0aGUgbGVmdCBpbiB2ZXJ0aWNhbC1sciwKKyAgICAvLyBidXQgaXQgaXMgb24gdGhl
IHJpZ2h0IGluIHZlcnRpY2FsLXJsLgogICAgIEludFJlY3QgbGF5b3V0T3ZlcmZsb3dSZWN0KCkg
Y29uc3QgeyByZXR1cm4gbV9vdmVyZmxvdyA/IG1fb3ZlcmZsb3ctPmxheW91dE92ZXJmbG93UmVj
dCgpIDogY2xpZW50Qm94UmVjdCgpOyB9Ci0gICAgaW50IHRvcExheW91dE92ZXJmbG93KCkgY29u
c3QgeyByZXR1cm4gbV9vdmVyZmxvdz8gbV9vdmVyZmxvdy0+dG9wTGF5b3V0T3ZlcmZsb3coKSA6
IGJvcmRlclRvcCgpOyB9Ci0gICAgaW50IGJvdHRvbUxheW91dE92ZXJmbG93KCkgY29uc3QgeyBy
ZXR1cm4gbV9vdmVyZmxvdyA/IG1fb3ZlcmZsb3ctPmJvdHRvbUxheW91dE92ZXJmbG93KCkgOiBi
b3JkZXJUb3AoKSArIGNsaWVudEhlaWdodCgpOyB9Ci0gICAgaW50IGxlZnRMYXlvdXRPdmVyZmxv
dygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcmZsb3cgPyBtX292ZXJmbG93LT5sZWZ0TGF5b3V0T3Zl
cmZsb3coKSA6IGJvcmRlckxlZnQoKTsgfQotICAgIGludCByaWdodExheW91dE92ZXJmbG93KCkg
Y29uc3QgeyByZXR1cm4gbV9vdmVyZmxvdyA/IG1fb3ZlcmZsb3ctPnJpZ2h0TGF5b3V0T3ZlcmZs
b3coKSA6IGJvcmRlckxlZnQoKSArIGNsaWVudFdpZHRoKCk7IH0KLSAgICBpbnQgbG9naWNhbExl
ZnRMYXlvdXRPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCktPmlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkgPyBsZWZ0TGF5b3V0T3ZlcmZsb3coKSA6IHRvcExheW91dE92ZXJmbG93KCk7
IH0KLSAgICBpbnQgbG9naWNhbFJpZ2h0TGF5b3V0T3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBz
dHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcmlnaHRMYXlvdXRPdmVyZmxvdygp
IDogYm90dG9tTGF5b3V0T3ZlcmZsb3coKTsgfQorICAgIGludCBtaW5ZTGF5b3V0T3ZlcmZsb3co
KSBjb25zdCB7IHJldHVybiBtX292ZXJmbG93PyBtX292ZXJmbG93LT5taW5ZTGF5b3V0T3ZlcmZs
b3coKSA6IGJvcmRlclRvcCgpOyB9CisgICAgaW50IG1heFlMYXlvdXRPdmVyZmxvdygpIGNvbnN0
IHsgcmV0dXJuIG1fb3ZlcmZsb3cgPyBtX292ZXJmbG93LT5tYXhZTGF5b3V0T3ZlcmZsb3coKSA6
IGJvcmRlclRvcCgpICsgY2xpZW50SGVpZ2h0KCk7IH0KKyAgICBpbnQgbWluWExheW91dE92ZXJm
bG93KCkgY29uc3QgeyByZXR1cm4gbV9vdmVyZmxvdyA/IG1fb3ZlcmZsb3ctPm1pblhMYXlvdXRP
dmVyZmxvdygpIDogYm9yZGVyTGVmdCgpOyB9CisgICAgaW50IG1heFhMYXlvdXRPdmVyZmxvdygp
IGNvbnN0IHsgcmV0dXJuIG1fb3ZlcmZsb3cgPyBtX292ZXJmbG93LT5tYXhYTGF5b3V0T3ZlcmZs
b3coKSA6IGJvcmRlckxlZnQoKSArIGNsaWVudFdpZHRoKCk7IH0KKyAgICBpbnQgbG9naWNhbExl
ZnRMYXlvdXRPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCktPmlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkgPyBtaW5YTGF5b3V0T3ZlcmZsb3coKSA6IG1pbllMYXlvdXRPdmVyZmxvdygp
OyB9CisgICAgaW50IGxvZ2ljYWxSaWdodExheW91dE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4g
c3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG1heFhMYXlvdXRPdmVyZmxvdygp
IDogbWF4WUxheW91dE92ZXJmbG93KCk7IH0KICAgICAKICAgICBJbnRSZWN0IHZpc3VhbE92ZXJm
bG93UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcmZsb3cgPyBtX292ZXJmbG93LT52aXN1YWxP
dmVyZmxvd1JlY3QoKSA6IGJvcmRlckJveFJlY3QoKTsgfQotICAgIGludCB0b3BWaXN1YWxPdmVy
ZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcmZsb3c/IG1fb3ZlcmZsb3ctPnRvcFZpc3VhbE92
ZXJmbG93KCkgOiAwOyB9Ci0gICAgaW50IGJvdHRvbVZpc3VhbE92ZXJmbG93KCkgY29uc3QgeyBy
ZXR1cm4gbV9vdmVyZmxvdyA/IG1fb3ZlcmZsb3ctPmJvdHRvbVZpc3VhbE92ZXJmbG93KCkgOiBo
ZWlnaHQoKTsgfQotICAgIGludCBsZWZ0VmlzdWFsT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBt
X292ZXJmbG93ID8gbV9vdmVyZmxvdy0+bGVmdFZpc3VhbE92ZXJmbG93KCkgOiAwOyB9Ci0gICAg
aW50IHJpZ2h0VmlzdWFsT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX292ZXJmbG93ID8gbV9v
dmVyZmxvdy0+cmlnaHRWaXN1YWxPdmVyZmxvdygpIDogd2lkdGgoKTsgfQotICAgIGludCBsb2dp
Y2FsTGVmdFZpc3VhbE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS0+aXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKSA/IGxlZnRWaXN1YWxPdmVyZmxvdygpIDogdG9wVmlzdWFsT3ZlcmZs
b3coKTsgfQotICAgIGludCBsb2dpY2FsUmlnaHRWaXN1YWxPdmVyZmxvdygpIGNvbnN0IHsgcmV0
dXJuIHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyByaWdodFZpc3VhbE92ZXJm
bG93KCkgOiBib3R0b21WaXN1YWxPdmVyZmxvdygpOyB9CisgICAgaW50IG1pbllWaXN1YWxPdmVy
ZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcmZsb3c/IG1fb3ZlcmZsb3ctPm1pbllWaXN1YWxP
dmVyZmxvdygpIDogMDsgfQorICAgIGludCBtYXhZVmlzdWFsT3ZlcmZsb3coKSBjb25zdCB7IHJl
dHVybiBtX292ZXJmbG93ID8gbV9vdmVyZmxvdy0+bWF4WVZpc3VhbE92ZXJmbG93KCkgOiBoZWln
aHQoKTsgfQorICAgIGludCBtaW5YVmlzdWFsT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX292
ZXJmbG93ID8gbV9vdmVyZmxvdy0+bWluWFZpc3VhbE92ZXJmbG93KCkgOiAwOyB9CisgICAgaW50
IG1heFhWaXN1YWxPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcmZsb3cgPyBtX292ZXJm
bG93LT5tYXhYVmlzdWFsT3ZlcmZsb3coKSA6IHdpZHRoKCk7IH0KKyAgICBpbnQgbG9naWNhbExl
ZnRWaXN1YWxPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCktPmlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkgPyBtaW5YVmlzdWFsT3ZlcmZsb3coKSA6IG1pbllWaXN1YWxPdmVyZmxvdygp
OyB9CisgICAgaW50IGxvZ2ljYWxSaWdodFZpc3VhbE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4g
c3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG1heFhWaXN1YWxPdmVyZmxvdygp
IDogbWF4WVZpc3VhbE92ZXJmbG93KCk7IH0KICAgICAKICAgICB2b2lkIGFkZExheW91dE92ZXJm
bG93KGNvbnN0IEludFJlY3QmKTsKICAgICB2b2lkIGFkZFZpc3VhbE92ZXJmbG93KGNvbnN0IElu
dFJlY3QmKTsKQEAgLTE1NCw3ICsxNTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVMYXll
clRyYW5zZm9ybSgpOwogCiAgICAgdm9pZCBibG9ja0RpcmVjdGlvbk92ZXJmbG93KGJvb2wgaXNM
aW5lSG9yaXpvbnRhbCwgaW50JiBsb2dpY2FsVG9wTGF5b3V0T3ZlcmZsb3csIGludCYgbG9naWNh
bEJvdHRvbUxheW91dE92ZXJmbG93LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQmIGxvZ2ljYWxUb3BWaXN1YWxPdmVyZmxvdywgaW50JiBsb2dpY2FsQm90dG9tVmlzdWFsT3Zl
cmZsb3cpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmIGxvZ2ljYWxtaW5Z
VmlzdWFsT3ZlcmZsb3csIGludCYgbG9naWNhbEJvdHRvbVZpc3VhbE92ZXJmbG93KTsKIAogICAg
IGludCBjb250ZW50V2lkdGgoKSBjb25zdCB7IHJldHVybiBjbGllbnRXaWR0aCgpIC0gcGFkZGlu
Z0xlZnQoKSAtIHBhZGRpbmdSaWdodCgpOyB9CiAgICAgaW50IGNvbnRlbnRIZWlnaHQoKSBjb25z
dCB7IHJldHVybiBjbGllbnRIZWlnaHQoKSAtIHBhZGRpbmdUb3AoKSAtIHBhZGRpbmdCb3R0b20o
KTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAJKHJl
dmlzaW9uIDc3Mzg0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU5NSwxMCArNTk1LDEwIEBAIEludFJlY3QgUmVuZGVySW5s
aW5lOjpsaW5lc1Zpc3VhbE92ZXJmbG8KIAogICAgIGJvb2wgaXNIb3Jpem9udGFsID0gc3R5bGUo
KS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKTsKICAgICAgICAgCi0gICAgaW50IHggPSBpc0hv
cml6b250YWwgPyBsb2dpY2FsTGVmdFNpZGUgOiBmaXJzdExpbmVCb3goKS0+bGVmdFZpc3VhbE92
ZXJmbG93KCk7Ci0gICAgaW50IHkgPSBpc0hvcml6b250YWwgPyBmaXJzdExpbmVCb3goKS0+dG9w
VmlzdWFsT3ZlcmZsb3coKSA6IGxvZ2ljYWxMZWZ0U2lkZTsKLSAgICBpbnQgd2lkdGggPSBpc0hv
cml6b250YWwgPyBsb2dpY2FsUmlnaHRTaWRlIC0gbG9naWNhbExlZnRTaWRlIDogbGFzdExpbmVC
b3goKS0+cmlnaHRWaXN1YWxPdmVyZmxvdygpIC0gZmlyc3RMaW5lQm94KCktPmxlZnRWaXN1YWxP
dmVyZmxvdygpOwotICAgIGludCBoZWlnaHQgPSBpc0hvcml6b250YWwgPyBsYXN0TGluZUJveCgp
LT5ib3R0b21WaXN1YWxPdmVyZmxvdygpIC0gZmlyc3RMaW5lQm94KCktPnRvcFZpc3VhbE92ZXJm
bG93KCkgOiBsb2dpY2FsUmlnaHRTaWRlIC0gbG9naWNhbExlZnRTaWRlOworICAgIGludCB4ID0g
aXNIb3Jpem9udGFsID8gbG9naWNhbExlZnRTaWRlIDogZmlyc3RMaW5lQm94KCktPm1pblhWaXN1
YWxPdmVyZmxvdygpOworICAgIGludCB5ID0gaXNIb3Jpem9udGFsID8gZmlyc3RMaW5lQm94KCkt
Pm1pbllWaXN1YWxPdmVyZmxvdygpIDogbG9naWNhbExlZnRTaWRlOworICAgIGludCB3aWR0aCA9
IGlzSG9yaXpvbnRhbCA/IGxvZ2ljYWxSaWdodFNpZGUgLSBsb2dpY2FsTGVmdFNpZGUgOiBsYXN0
TGluZUJveCgpLT5tYXhYVmlzdWFsT3ZlcmZsb3coKSAtIGZpcnN0TGluZUJveCgpLT5taW5YVmlz
dWFsT3ZlcmZsb3coKTsKKyAgICBpbnQgaGVpZ2h0ID0gaXNIb3Jpem9udGFsID8gbGFzdExpbmVC
b3goKS0+bWF4WVZpc3VhbE92ZXJmbG93KCkgLSBmaXJzdExpbmVCb3goKS0+bWluWVZpc3VhbE92
ZXJmbG93KCkgOiBsb2dpY2FsUmlnaHRTaWRlIC0gbG9naWNhbExlZnRTaWRlOwogICAgIHJldHVy
biBJbnRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAkocmV2aXNpb24g
NzczODQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM5NCw3ICsxMzk0LDcgQEAgdm9pZCBSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OmVuc3VyZVJvb3RQbAogI2lmbmRlZiBOREVCVUcKICAgICAgICAgbV9yb290
UGxhdGZvcm1MYXllci0+c2V0TmFtZSgiUm9vdCBwbGF0Zm9ybSIpOwogI2VuZGlmCi0gICAgICAg
IG1fcm9vdFBsYXRmb3JtTGF5ZXItPnNldFNpemUoRmxvYXRTaXplKG1fcmVuZGVyVmlldy0+cmln
aHRMYXlvdXRPdmVyZmxvdygpLCBtX3JlbmRlclZpZXctPmJvdHRvbUxheW91dE92ZXJmbG93KCkp
KTsKKyAgICAgICAgbV9yb290UGxhdGZvcm1MYXllci0+c2V0U2l6ZShGbG9hdFNpemUobV9yZW5k
ZXJWaWV3LT5tYXhYTGF5b3V0T3ZlcmZsb3coKSwgbV9yZW5kZXJWaWV3LT5tYXhZTGF5b3V0T3Zl
cmZsb3coKSkpOwogICAgICAgICBtX3Jvb3RQbGF0Zm9ybUxheWVyLT5zZXRQb3NpdGlvbihGbG9h
dFBvaW50KCkpOwogCiAgICAgICAgIC8vIE5lZWQgdG8gY2xpcCB0byBwcmV2ZW50IHRyYW5zZm9y
bWVkIGNvbnRlbnQgc2hvd2luZyBvdXRzaWRlIHRoaXMgZnJhbWUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcAkocmV2aXNpb24gNzczODQp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzcsMTAgKzE3NywxMCBAQCBib29sIFJlbmRlckxpbmVCb3hMaXN0Ojph
bnlMaW5lSW50ZXJzZWN0CiAgICAgLy8gaW50ZXJzZWN0LiAgVGhpcyBpcyBhIHF1aWNrIHNob3J0
LWNpcmN1aXQgdGhhdCB3ZSBjYW4gdGFrZSB0byBhdm9pZCB3YWxraW5nIGFueSBsaW5lcy4KICAg
ICAvLyBGSVhNRTogVGhpcyBjaGVjayBpcyBmbGF3ZWQgaW4gdGhlIGZvbGxvd2luZyBleHRyZW1l
bHkgb2JzY3VyZSB3YXk6CiAgICAgLy8gaWYgc29tZSBsaW5lIGluIHRoZSBtaWRkbGUgaGFzIGEg
aHVnZSBvdmVyZmxvdywgaXQgbWlnaHQgYWN0dWFsbHkgZXh0ZW5kIGJlbG93IHRoZSBsYXN0IGxp
bmUuCi0gICAgaW50IGZpcnN0TGluZVRvcCA9IGZpcnN0TGluZUJveCgpLT5sb2dpY2FsVG9wVmlz
dWFsT3ZlcmZsb3coKTsKKyAgICBpbnQgZmlyc3RMaW5lVG9wID0gZmlyc3RMaW5lQm94KCktPmxv
Z2ljYWxtaW5ZVmlzdWFsT3ZlcmZsb3coKTsKICAgICBpZiAodXNlUHJpbnRSZWN0ICYmICFmaXJz
dExpbmVCb3goKS0+cGFyZW50KCkpCiAgICAgICAgIGZpcnN0TGluZVRvcCA9IG1pbihmaXJzdExp
bmVUb3AsIGZpcnN0TGluZUJveCgpLT5yb290KCktPmxpbmVUb3AoKSk7Ci0gICAgaW50IGxhc3RM
aW5lQm90dG9tID0gbGFzdExpbmVCb3goKS0+bG9naWNhbEJvdHRvbVZpc3VhbE92ZXJmbG93KCk7
CisgICAgaW50IGxhc3RMaW5lQm90dG9tID0gbGFzdExpbmVCb3goKS0+bG9naWNhbG1heFlWaXN1
YWxPdmVyZmxvdygpOwogICAgIGlmICh1c2VQcmludFJlY3QgJiYgIWxhc3RMaW5lQm94KCktPnBh
cmVudCgpKQogICAgICAgICBsYXN0TGluZUJvdHRvbSA9IG1heChsYXN0TGluZUJvdHRvbSwgbGFz
dExpbmVCb3goKS0+cm9vdCgpLT5saW5lQm90dG9tKCkpOwogICAgIGludCBsb2dpY2FsVG9wID0g
Zmlyc3RMaW5lVG9wIC0gb3V0bGluZVNpemU7CkBAIC0xOTEsOCArMTkxLDggQEAgYm9vbCBSZW5k
ZXJMaW5lQm94TGlzdDo6YW55TGluZUludGVyc2VjdAogCiBib29sIFJlbmRlckxpbmVCb3hMaXN0
OjpsaW5lSW50ZXJzZWN0c0RpcnR5UmVjdChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVuZGVyZXIs
IElubGluZUZsb3dCb3gqIGJveCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwg
aW50IHR5KSBjb25zdAogewotICAgIGludCBsb2dpY2FsVG9wID0gbWluKGJveC0+bG9naWNhbFRv
cFZpc3VhbE92ZXJmbG93KCksIGJveC0+cm9vdCgpLT5zZWxlY3Rpb25Ub3AoKSkgLSByZW5kZXJl
ci0+bWF4aW1hbE91dGxpbmVTaXplKHBhaW50SW5mby5waGFzZSk7Ci0gICAgaW50IGxvZ2ljYWxC
b3R0b20gPSBib3gtPmxvZ2ljYWxCb3R0b21WaXN1YWxPdmVyZmxvdygpICsgcmVuZGVyZXItPm1h
eGltYWxPdXRsaW5lU2l6ZShwYWludEluZm8ucGhhc2UpOworICAgIGludCBsb2dpY2FsVG9wID0g
bWluKGJveC0+bG9naWNhbG1pbllWaXN1YWxPdmVyZmxvdygpLCBib3gtPnJvb3QoKS0+c2VsZWN0
aW9uVG9wKCkpIC0gcmVuZGVyZXItPm1heGltYWxPdXRsaW5lU2l6ZShwYWludEluZm8ucGhhc2Up
OworICAgIGludCBsb2dpY2FsQm90dG9tID0gYm94LT5sb2dpY2FsbWF4WVZpc3VhbE92ZXJmbG93
KCkgKyByZW5kZXJlci0+bWF4aW1hbE91dGxpbmVTaXplKHBhaW50SW5mby5waGFzZSk7CiAgICAg
CiAgICAgcmV0dXJuIHJhbmdlSW50ZXJzZWN0c1JlY3QocmVuZGVyZXIsIGxvZ2ljYWxUb3AsIGxv
Z2ljYWxCb3R0b20sIHBhaW50SW5mby5yZWN0LCB0eCwgdHkpOwogfQpAQCAtMjMxLDggKzIzMSw4
IEBAIHZvaWQgUmVuZGVyTGluZUJveExpc3Q6OnBhaW50KFJlbmRlckJveE0KICAgICAgICAgICAg
IC8vIEZJWE1FOiBUaGlzIGlzIHRoZSBkZXByZWNhdGVkIHBhZ2luYXRpb24gbW9kZWwgdGhhdCBp
cyBzdGlsbCBuZWVkZWQKICAgICAgICAgICAgIC8vIGZvciBlbWJlZGRlZCB2aWV3cyBpbnNpZGUg
QXBwS2l0LiAgQXBwS2l0IGlzIGluY2FwYWJsZSBvZiBwYWdpbmF0aW5nIHZlcnRpY2FsCiAgICAg
ICAgICAgICAvLyB0ZXh0IHBhZ2VzLCBzbyB3ZSBkb24ndCBoYXZlIHRvIGRlYWwgd2l0aCB2ZXJ0
aWNhbCBsaW5lcyBhdCBhbGwgaGVyZS4KLSAgICAgICAgICAgIGludCB0b3BGb3JQYWdpbmF0aW9u
Q2hlY2sgPSBjdXJyLT50b3BWaXN1YWxPdmVyZmxvdygpOwotICAgICAgICAgICAgaW50IGJvdHRv
bUZvclBhZ2luYXRpb25DaGVjayA9IGN1cnItPmJvdHRvbVZpc3VhbE92ZXJmbG93KCk7CisgICAg
ICAgICAgICBpbnQgdG9wRm9yUGFnaW5hdGlvbkNoZWNrID0gY3Vyci0+bWluWVZpc3VhbE92ZXJm
bG93KCk7CisgICAgICAgICAgICBpbnQgYm90dG9tRm9yUGFnaW5hdGlvbkNoZWNrID0gY3Vyci0+
bWF4WVZpc3VhbE92ZXJmbG93KCk7CiAgICAgICAgICAgICBpZiAoIWN1cnItPnBhcmVudCgpKSB7
CiAgICAgICAgICAgICAgICAgLy8gV2UncmUgYSByb290IGJveC4gIFVzZSBsaW5lVG9wIGFuZCBs
aW5lQm90dG9tIGFzIHdlbGwgaGVyZS4KICAgICAgICAgICAgICAgICB0b3BGb3JQYWdpbmF0aW9u
Q2hlY2sgPSBtaW4odG9wRm9yUGFnaW5hdGlvbkNoZWNrLCBjdXJyLT5yb290KCktPmxpbmVUb3Ao
KSk7CkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBSZW5kZXJMaW5lQm94TGlzdDo6cGFpbnQoUmVu
ZGVyQm94TQogICAgICAgICAgICAgaWYgKGJvdHRvbUZvclBhZ2luYXRpb25DaGVjayAtIHRvcEZv
clBhZ2luYXRpb25DaGVjayA8PSB2LT5wcmludFJlY3QoKS5oZWlnaHQoKSkgewogICAgICAgICAg
ICAgICAgIGlmICh0eSArIGJvdHRvbUZvclBhZ2luYXRpb25DaGVjayA+IHYtPnByaW50UmVjdCgp
Lm1heFkoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoUm9vdElubGluZUJveCogbmV4dFJv
b3RCb3ggPSBjdXJyLT5yb290KCktPm5leHRSb290Qm94KCkpCi0gICAgICAgICAgICAgICAgICAg
ICAgICBib3R0b21Gb3JQYWdpbmF0aW9uQ2hlY2sgPSBtaW4oYm90dG9tRm9yUGFnaW5hdGlvbkNo
ZWNrLCBtaW4obmV4dFJvb3RCb3gtPnRvcFZpc3VhbE92ZXJmbG93KCksIG5leHRSb290Qm94LT5s
aW5lVG9wKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbUZvclBhZ2luYXRpb25D
aGVjayA9IG1pbihib3R0b21Gb3JQYWdpbmF0aW9uQ2hlY2ssIG1pbihuZXh0Um9vdEJveC0+bWlu
WVZpc3VhbE92ZXJmbG93KCksIG5leHRSb290Qm94LT5saW5lVG9wKCkpKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKHR5ICsgYm90dG9tRm9yUGFnaW5hdGlvbkNoZWNr
ID4gdi0+cHJpbnRSZWN0KCkubWF4WSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0eSAr
IHRvcEZvclBhZ2luYXRpb25DaGVjayA8IHYtPnRydW5jYXRlZEF0KCkpCkBAIC0yOTMsNyArMjkz
LDcgQEAgYm9vbCBSZW5kZXJMaW5lQm94TGlzdDo6aGl0VGVzdChSZW5kZXJCbwogICAgIC8vIHRo
ZW0gZnVydGhlci4gIE5vdGUgdGhhdCBib3hlcyBjYW4gZWFzaWx5IG92ZXJsYXAsIHNvIHdlIGNh
bid0IG1ha2UgYW55IGFzc3VtcHRpb25zCiAgICAgLy8gYmFzZWQgb2ZmIHBvc2l0aW9ucyBvZiBv
dXIgZmlyc3QgbGluZSBib3ggb3Igb3VyIGxhc3QgbGluZSBib3guCiAgICAgZm9yIChJbmxpbmVG
bG93Qm94KiBjdXJyID0gbGFzdExpbmVCb3goKTsgY3VycjsgY3VyciA9IGN1cnItPnByZXZMaW5l
Qm94KCkpIHsKLSAgICAgICAgaWYgKHJhbmdlSW50ZXJzZWN0c1JlY3QocmVuZGVyZXIsIGN1cnIt
PmxvZ2ljYWxUb3BWaXN1YWxPdmVyZmxvdygpLCBjdXJyLT5sb2dpY2FsQm90dG9tVmlzdWFsT3Zl
cmZsb3coKSwgcmVjdCwgdHgsIHR5KSkgeworICAgICAgICBpZiAocmFuZ2VJbnRlcnNlY3RzUmVj
dChyZW5kZXJlciwgY3Vyci0+bG9naWNhbG1pbllWaXN1YWxPdmVyZmxvdygpLCBjdXJyLT5sb2dp
Y2FsbWF4WVZpc3VhbE92ZXJmbG93KCksIHJlY3QsIHR4LCB0eSkpIHsKICAgICAgICAgICAgIGJv
b2wgaW5zaWRlID0gY3Vyci0+bm9kZUF0UG9pbnQocmVxdWVzdCwgcmVzdWx0LCB4LCB5LCB0eCwg
dHkpOwogICAgICAgICAgICAgaWYgKGluc2lkZSkgewogICAgICAgICAgICAgICAgIHJlbmRlcmVy
LT51cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwgSW50UG9pbnQoeCAtIHR4LCB5IC0gdHkpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5jcHAJKHJldmlz
aW9uIDc3Mzg0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNyArMTE2LDcgQEAgaW50IFJlbmRlck1hcnF1ZWU6OmNv
bXB1dGVQb3NpdGlvbihFTWFycQogICAgIGlmIChpc0hvcml6b250YWwoKSkgewogICAgICAgICBi
b29sIGx0ciA9IHMtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKICAgICAgICAgaW50IGNsaWVu
dFdpZHRoID0gYm94LT5jbGllbnRXaWR0aCgpOwotICAgICAgICBpbnQgY29udGVudFdpZHRoID0g
bHRyID8gYm94LT5yaWdodExheW91dE92ZXJmbG93KCkgOiBib3gtPmxlZnRMYXlvdXRPdmVyZmxv
dygpOworICAgICAgICBpbnQgY29udGVudFdpZHRoID0gbHRyID8gYm94LT5tYXhYTGF5b3V0T3Zl
cmZsb3coKSA6IGJveC0+bWluWExheW91dE92ZXJmbG93KCk7CiAgICAgICAgIGlmIChsdHIpCiAg
ICAgICAgICAgICBjb250ZW50V2lkdGggKz0gKGJveC0+cGFkZGluZ1JpZ2h0KCkgLSBib3gtPmJv
cmRlckxlZnQoKSk7CiAgICAgICAgIGVsc2UgewpAQCAtMTM3LDcgKzEzNyw3IEBAIGludCBSZW5k
ZXJNYXJxdWVlOjpjb21wdXRlUG9zaXRpb24oRU1hcnEKICAgICAgICAgfQogICAgIH0KICAgICBl
bHNlIHsKLSAgICAgICAgaW50IGNvbnRlbnRIZWlnaHQgPSBib3gtPmJvdHRvbUxheW91dE92ZXJm
bG93KCkgLSBib3gtPmJvcmRlclRvcCgpICsgYm94LT5wYWRkaW5nQm90dG9tKCk7CisgICAgICAg
IGludCBjb250ZW50SGVpZ2h0ID0gYm94LT5tYXhZTGF5b3V0T3ZlcmZsb3coKSAtIGJveC0+Ym9y
ZGVyVG9wKCkgKyBib3gtPnBhZGRpbmdCb3R0b20oKTsKICAgICAgICAgaW50IGNsaWVudEhlaWdo
dCA9IGJveC0+Y2xpZW50SGVpZ2h0KCk7CiAgICAgICAgIGlmIChkaXIgPT0gTVVQKSB7CiAgICAg
ICAgICAgICBpZiAoc3RvcEF0Q29udGVudEVkZ2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT3ZlcmZsb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT3ZlcmZsb3cuaAkocmV2aXNpb24gNzczODQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT3ZlcmZsb3cuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsMjMgKzQ1
LDIzIEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2JvdHRvbUxheW91dE92ZXJmbG93KGxheW91dFJl
Y3QubWF4WSgpKQogICAgICAgICAsIG1fbGVmdExheW91dE92ZXJmbG93KGxheW91dFJlY3QueCgp
KQogICAgICAgICAsIG1fcmlnaHRMYXlvdXRPdmVyZmxvdyhsYXlvdXRSZWN0Lm1heFgoKSkKLSAg
ICAgICAgLCBtX3RvcFZpc3VhbE92ZXJmbG93KHZpc3VhbFJlY3QueSgpKQorICAgICAgICAsIG1f
bWluWVZpc3VhbE92ZXJmbG93KHZpc3VhbFJlY3QueSgpKQogICAgICAgICAsIG1fYm90dG9tVmlz
dWFsT3ZlcmZsb3codmlzdWFsUmVjdC5tYXhZKCkpCiAgICAgICAgICwgbV9sZWZ0VmlzdWFsT3Zl
cmZsb3codmlzdWFsUmVjdC54KCkpCiAgICAgICAgICwgbV9yaWdodFZpc3VhbE92ZXJmbG93KHZp
c3VhbFJlY3QubWF4WCgpKQogICAgIHsKICAgICB9CiAgICAKLSAgICBpbnQgdG9wTGF5b3V0T3Zl
cmZsb3coKSBjb25zdCB7IHJldHVybiBtX3RvcExheW91dE92ZXJmbG93OyB9Ci0gICAgaW50IGJv
dHRvbUxheW91dE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gbV9ib3R0b21MYXlvdXRPdmVyZmxv
dzsgfQotICAgIGludCBsZWZ0TGF5b3V0T3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX2xlZnRM
YXlvdXRPdmVyZmxvdzsgfQotICAgIGludCByaWdodExheW91dE92ZXJmbG93KCkgY29uc3QgeyBy
ZXR1cm4gbV9yaWdodExheW91dE92ZXJmbG93OyB9CisgICAgaW50IG1pbllMYXlvdXRPdmVyZmxv
dygpIGNvbnN0IHsgcmV0dXJuIG1fdG9wTGF5b3V0T3ZlcmZsb3c7IH0KKyAgICBpbnQgbWF4WUxh
eW91dE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gbV9ib3R0b21MYXlvdXRPdmVyZmxvdzsgfQor
ICAgIGludCBtaW5YTGF5b3V0T3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX2xlZnRMYXlvdXRP
dmVyZmxvdzsgfQorICAgIGludCBtYXhYTGF5b3V0T3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBt
X3JpZ2h0TGF5b3V0T3ZlcmZsb3c7IH0KICAgICBJbnRSZWN0IGxheW91dE92ZXJmbG93UmVjdCgp
IGNvbnN0OwogCi0gICAgaW50IHRvcFZpc3VhbE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gbV90
b3BWaXN1YWxPdmVyZmxvdzsgfQotICAgIGludCBib3R0b21WaXN1YWxPdmVyZmxvdygpIGNvbnN0
IHsgcmV0dXJuIG1fYm90dG9tVmlzdWFsT3ZlcmZsb3c7IH0KLSAgICBpbnQgbGVmdFZpc3VhbE92
ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gbV9sZWZ0VmlzdWFsT3ZlcmZsb3c7IH0KLSAgICBpbnQg
cmlnaHRWaXN1YWxPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1fcmlnaHRWaXN1YWxPdmVyZmxv
dzsgfQorICAgIGludCBtaW5ZVmlzdWFsT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX21pbllW
aXN1YWxPdmVyZmxvdzsgfQorICAgIGludCBtYXhZVmlzdWFsT3ZlcmZsb3coKSBjb25zdCB7IHJl
dHVybiBtX2JvdHRvbVZpc3VhbE92ZXJmbG93OyB9CisgICAgaW50IG1pblhWaXN1YWxPdmVyZmxv
dygpIGNvbnN0IHsgcmV0dXJuIG1fbGVmdFZpc3VhbE92ZXJmbG93OyB9CisgICAgaW50IG1heFhW
aXN1YWxPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1fcmlnaHRWaXN1YWxPdmVyZmxvdzsgfQog
ICAgIEludFJlY3QgdmlzdWFsT3ZlcmZsb3dSZWN0KCkgY29uc3Q7CiAKICAgICB2b2lkIHNldFRv
cExheW91dE92ZXJmbG93KGludCBvdmVyZmxvdykgeyBtX3RvcExheW91dE92ZXJmbG93ID0gb3Zl
cmZsb3c7IH0KQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TGVmdExheW91
dE92ZXJmbG93KGludCBvdmVyZmxvdykgeyBtX2xlZnRMYXlvdXRPdmVyZmxvdyA9IG92ZXJmbG93
OyB9CiAgICAgdm9pZCBzZXRSaWdodExheW91dE92ZXJmbG93KGludCBvdmVyZmxvdykgeyBtX3Jp
Z2h0TGF5b3V0T3ZlcmZsb3cgPSBvdmVyZmxvdzsgfQogICAgIAotICAgIHZvaWQgc2V0VG9wVmlz
dWFsT3ZlcmZsb3coaW50IG92ZXJmbG93KSB7IG1fdG9wVmlzdWFsT3ZlcmZsb3cgPSBvdmVyZmxv
dzsgfQorICAgIHZvaWQgc2V0bWluWVZpc3VhbE92ZXJmbG93KGludCBvdmVyZmxvdykgeyBtX21p
bllWaXN1YWxPdmVyZmxvdyA9IG92ZXJmbG93OyB9CiAgICAgdm9pZCBzZXRCb3R0b21WaXN1YWxP
dmVyZmxvdyhpbnQgb3ZlcmZsb3cpIHsgbV9ib3R0b21WaXN1YWxPdmVyZmxvdyA9IG92ZXJmbG93
OyB9CiAgICAgdm9pZCBzZXRMZWZ0VmlzdWFsT3ZlcmZsb3coaW50IG92ZXJmbG93KSB7IG1fbGVm
dFZpc3VhbE92ZXJmbG93ID0gb3ZlcmZsb3c7IH0KICAgICB2b2lkIHNldFJpZ2h0VmlzdWFsT3Zl
cmZsb3coaW50IG92ZXJmbG93KSB7IG1fcmlnaHRWaXN1YWxPdmVyZmxvdyA9IG92ZXJmbG93OyB9
CkBAIC05MCw3ICs5MCw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1fbGVmdExheW91dE92ZXJmbG93
OwogICAgIGludCBtX3JpZ2h0TGF5b3V0T3ZlcmZsb3c7CiAKLSAgICBpbnQgbV90b3BWaXN1YWxP
dmVyZmxvdzsKKyAgICBpbnQgbV9taW5ZVmlzdWFsT3ZlcmZsb3c7CiAgICAgaW50IG1fYm90dG9t
VmlzdWFsT3ZlcmZsb3c7CiAgICAgaW50IG1fbGVmdFZpc3VhbE92ZXJmbG93OwogICAgIGludCBt
X3JpZ2h0VmlzdWFsT3ZlcmZsb3c7CkBAIC0xMDMsNyArMTAzLDcgQEAgaW5saW5lIEludFJlY3Qg
UmVuZGVyT3ZlcmZsb3c6OmxheW91dE92ZQogCiBpbmxpbmUgSW50UmVjdCBSZW5kZXJPdmVyZmxv
dzo6dmlzdWFsT3ZlcmZsb3dSZWN0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gSW50UmVjdChtX2xl
ZnRWaXN1YWxPdmVyZmxvdywgbV90b3BWaXN1YWxPdmVyZmxvdywgbV9yaWdodFZpc3VhbE92ZXJm
bG93IC0gbV9sZWZ0VmlzdWFsT3ZlcmZsb3csIG1fYm90dG9tVmlzdWFsT3ZlcmZsb3cgLSBtX3Rv
cFZpc3VhbE92ZXJmbG93KTsKKyAgICByZXR1cm4gSW50UmVjdChtX2xlZnRWaXN1YWxPdmVyZmxv
dywgbV9taW5ZVmlzdWFsT3ZlcmZsb3csIG1fcmlnaHRWaXN1YWxPdmVyZmxvdyAtIG1fbGVmdFZp
c3VhbE92ZXJmbG93LCBtX2JvdHRvbVZpc3VhbE92ZXJmbG93IC0gbV9taW5ZVmlzdWFsT3ZlcmZs
b3cpOwogfQogCiBpbmxpbmUgdm9pZCBSZW5kZXJPdmVyZmxvdzo6bW92ZShpbnQgZHgsIGludCBk
eSkKQEAgLTExMyw3ICsxMTMsNyBAQCBpbmxpbmUgdm9pZCBSZW5kZXJPdmVyZmxvdzo6bW92ZShp
bnQgZHgsCiAgICAgbV9sZWZ0TGF5b3V0T3ZlcmZsb3cgKz0gZHg7CiAgICAgbV9yaWdodExheW91
dE92ZXJmbG93ICs9IGR4OwogICAgIAotICAgIG1fdG9wVmlzdWFsT3ZlcmZsb3cgKz0gZHk7Cisg
ICAgbV9taW5ZVmlzdWFsT3ZlcmZsb3cgKz0gZHk7CiAgICAgbV9ib3R0b21WaXN1YWxPdmVyZmxv
dyArPSBkeTsKICAgICBtX2xlZnRWaXN1YWxPdmVyZmxvdyArPSBkeDsKICAgICBtX3JpZ2h0Vmlz
dWFsT3ZlcmZsb3cgKz0gZHg7CkBAIC0xMjksNyArMTI5LDcgQEAgaW5saW5lIHZvaWQgUmVuZGVy
T3ZlcmZsb3c6OmFkZExheW91dE92ZQogCiBpbmxpbmUgdm9pZCBSZW5kZXJPdmVyZmxvdzo6YWRk
VmlzdWFsT3ZlcmZsb3coY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICBtX3RvcFZpc3VhbE92
ZXJmbG93ID0gc3RkOjptaW4ocmVjdC55KCksIG1fdG9wVmlzdWFsT3ZlcmZsb3cpOworICAgIG1f
bWluWVZpc3VhbE92ZXJmbG93ID0gc3RkOjptaW4ocmVjdC55KCksIG1fbWluWVZpc3VhbE92ZXJm
bG93KTsKICAgICBtX2JvdHRvbVZpc3VhbE92ZXJmbG93ID0gc3RkOjptYXgocmVjdC5tYXhZKCks
IG1fYm90dG9tVmlzdWFsT3ZlcmZsb3cpOwogICAgIG1fbGVmdFZpc3VhbE92ZXJmbG93ID0gc3Rk
OjptaW4ocmVjdC54KCksIG1fbGVmdFZpc3VhbE92ZXJmbG93KTsKICAgICBtX3JpZ2h0VmlzdWFs
T3ZlcmZsb3cgPSBzdGQ6Om1heChyZWN0Lm1heFgoKSwgbV9yaWdodFZpc3VhbE92ZXJmbG93KTsK
QEAgLTE0NSw3ICsxNDUsNyBAQCBpbmxpbmUgdm9pZCBSZW5kZXJPdmVyZmxvdzo6c2V0TGF5b3V0
T3ZlCiAKIGlubGluZSB2b2lkIFJlbmRlck92ZXJmbG93OjpzZXRWaXN1YWxPdmVyZmxvdyhjb25z
dCBJbnRSZWN0JiByZWN0KQogewotICAgIG1fdG9wVmlzdWFsT3ZlcmZsb3cgPSByZWN0LnkoKTsK
KyAgICBtX21pbllWaXN1YWxPdmVyZmxvdyA9IHJlY3QueSgpOwogICAgIG1fYm90dG9tVmlzdWFs
T3ZlcmZsb3cgPSByZWN0Lm1heFkoKTsKICAgICBtX2xlZnRWaXN1YWxPdmVyZmxvdyA9IHJlY3Qu
eCgpOwogICAgIG1fcmlnaHRWaXN1YWxPdmVyZmxvdyA9IHJlY3QubWF4WCgpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCShyZXZpc2lvbiA3NzM4
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE3Miw4ICsxNzIsOCBAQCBib29sIFJlbmRlclJlcGxhY2VkOjpzaG91bGRQ
YWludChQYWludEluCiAgICAgaW50IGN1cnJlbnRUWSA9IHR5ICsgeSgpOwogCiAgICAgLy8gRWFy
bHkgZXhpdCBpZiB0aGUgZWxlbWVudCB0b3VjaGVzIHRoZSBlZGdlcy4KLSAgICBpbnQgdG9wID0g
Y3VycmVudFRZICsgdG9wVmlzdWFsT3ZlcmZsb3coKTsKLSAgICBpbnQgYm90dG9tID0gY3VycmVu
dFRZICsgYm90dG9tVmlzdWFsT3ZlcmZsb3coKTsKKyAgICBpbnQgdG9wID0gY3VycmVudFRZICsg
bWluWVZpc3VhbE92ZXJmbG93KCk7CisgICAgaW50IGJvdHRvbSA9IGN1cnJlbnRUWSArIG1heFlW
aXN1YWxPdmVyZmxvdygpOwogICAgIGlmIChpc1NlbGVjdGVkKCkgJiYgbV9pbmxpbmVCb3hXcmFw
cGVyKSB7CiAgICAgICAgIGludCBzZWxUb3AgPSB0eSArIG1faW5saW5lQm94V3JhcHBlci0+cm9v
dCgpLT5zZWxlY3Rpb25Ub3AoKTsKICAgICAgICAgaW50IHNlbEJvdHRvbSA9IHR5ICsgc2VsVG9w
ICsgbV9pbmxpbmVCb3hXcmFwcGVyLT5yb290KCktPnNlbGVjdGlvbkhlaWdodCgpOwpAQCAtMTgy
LDcgKzE4Miw3IEBAIGJvb2wgUmVuZGVyUmVwbGFjZWQ6OnNob3VsZFBhaW50KFBhaW50SW4KICAg
ICB9CiAgICAgCiAgICAgaW50IG9zID0gMiAqIG1heGltYWxPdXRsaW5lU2l6ZShwYWludEluZm8u
cGhhc2UpOwotICAgIGlmIChjdXJyZW50VFggKyBsZWZ0VmlzdWFsT3ZlcmZsb3coKSA+PSBwYWlu
dEluZm8ucmVjdC5tYXhYKCkgKyBvcyB8fCBjdXJyZW50VFggKyByaWdodFZpc3VhbE92ZXJmbG93
KCkgPD0gcGFpbnRJbmZvLnJlY3QueCgpIC0gb3MpCisgICAgaWYgKGN1cnJlbnRUWCArIG1pblhW
aXN1YWxPdmVyZmxvdygpID49IHBhaW50SW5mby5yZWN0Lm1heFgoKSArIG9zIHx8IGN1cnJlbnRU
WCArIG1heFhWaXN1YWxPdmVyZmxvdygpIDw9IHBhaW50SW5mby5yZWN0LngoKSAtIG9zKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKHRvcCA+PSBwYWludEluZm8ucmVjdC5tYXhZKCkg
KyBvcyB8fCBib3R0b20gPD0gcGFpbnRJbmZvLnJlY3QueSgpIC0gb3MpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAko
cmV2aXNpb24gNzczODQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjAsNyArMzYwLDcgQEAgdm9pZCBSZW5kZXJUYWJsZTo6
bGF5b3V0KCkKICAgICB3aGlsZSAoc2VjdGlvbikgewogICAgICAgICBpZiAoIXNlY3Rpb25Nb3Zl
ZCAmJiBzZWN0aW9uLT5sb2dpY2FsVG9wKCkgIT0gbG9naWNhbEhlaWdodCgpKSB7CiAgICAgICAg
ICAgICBzZWN0aW9uTW92ZWQgPSB0cnVlOwotICAgICAgICAgICAgbW92ZWRTZWN0aW9uTG9naWNh
bFRvcCA9IG1pbihsb2dpY2FsSGVpZ2h0KCksIHNlY3Rpb24tPmxvZ2ljYWxUb3AoKSkgKyAoc3R5
bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHNlY3Rpb24tPnRvcFZpc3VhbE92ZXJm
bG93KCkgOiBzZWN0aW9uLT5sZWZ0VmlzdWFsT3ZlcmZsb3coKSk7CisgICAgICAgICAgICBtb3Zl
ZFNlY3Rpb25Mb2dpY2FsVG9wID0gbWluKGxvZ2ljYWxIZWlnaHQoKSwgc2VjdGlvbi0+bG9naWNh
bFRvcCgpKSArIChzdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gc2VjdGlvbi0+
bWluWVZpc3VhbE92ZXJmbG93KCkgOiBzZWN0aW9uLT5taW5YVmlzdWFsT3ZlcmZsb3coKSk7CiAg
ICAgICAgIH0KICAgICAgICAgc2VjdGlvbi0+c2V0TG9naWNhbExvY2F0aW9uKHNlY3Rpb25Mb2dp
Y2FsTGVmdCwgbG9naWNhbEhlaWdodCgpKTsKIApAQCAtNDAwLDkgKzQwMCw5IEBAIHZvaWQgUmVu
ZGVyVGFibGU6OmxheW91dCgpCiAgICAgLy8gUmVwYWludCB3aXRoIG91ciBuZXcgYm91bmRzIGlm
IHRoZXkgYXJlIGRpZmZlcmVudCBmcm9tIG91ciBvbGQgYm91bmRzLgogICAgIGlmICghZGlkRnVs
bFJlcGFpbnQgJiYgc2VjdGlvbk1vdmVkKSB7CiAgICAgICAgIGlmIChzdHlsZSgpLT5pc0hvcml6
b250YWxXcml0aW5nTW9kZSgpKQotICAgICAgICAgICAgcmVwYWludFJlY3RhbmdsZShJbnRSZWN0
KGxlZnRWaXN1YWxPdmVyZmxvdygpLCBtb3ZlZFNlY3Rpb25Mb2dpY2FsVG9wLCByaWdodFZpc3Vh
bE92ZXJmbG93KCkgLSBsZWZ0VmlzdWFsT3ZlcmZsb3coKSwgYm90dG9tVmlzdWFsT3ZlcmZsb3co
KSAtIG1vdmVkU2VjdGlvbkxvZ2ljYWxUb3ApKTsKKyAgICAgICAgICAgIHJlcGFpbnRSZWN0YW5n
bGUoSW50UmVjdChtaW5YVmlzdWFsT3ZlcmZsb3coKSwgbW92ZWRTZWN0aW9uTG9naWNhbFRvcCwg
bWF4WFZpc3VhbE92ZXJmbG93KCkgLSBtaW5YVmlzdWFsT3ZlcmZsb3coKSwgbWF4WVZpc3VhbE92
ZXJmbG93KCkgLSBtb3ZlZFNlY3Rpb25Mb2dpY2FsVG9wKSk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHJlcGFpbnRSZWN0YW5nbGUoSW50UmVjdChtb3ZlZFNlY3Rpb25Mb2dpY2FsVG9wLCB0
b3BWaXN1YWxPdmVyZmxvdygpLCByaWdodFZpc3VhbE92ZXJmbG93KCkgLSBtb3ZlZFNlY3Rpb25M
b2dpY2FsVG9wLCBib3R0b21WaXN1YWxPdmVyZmxvdygpIC0gdG9wVmlzdWFsT3ZlcmZsb3coKSkp
OworICAgICAgICAgICAgcmVwYWludFJlY3RhbmdsZShJbnRSZWN0KG1vdmVkU2VjdGlvbkxvZ2lj
YWxUb3AsIG1pbllWaXN1YWxPdmVyZmxvdygpLCBtYXhYVmlzdWFsT3ZlcmZsb3coKSAtIG1vdmVk
U2VjdGlvbkxvZ2ljYWxUb3AsIG1heFlWaXN1YWxPdmVyZmxvdygpIC0gbWluWVZpc3VhbE92ZXJm
bG93KCkpKTsKICAgICB9CiAKICAgICBzZXROZWVkc0xheW91dChmYWxzZSk7CkBAIC00NTQsOSAr
NDU0LDkgQEAgdm9pZCBSZW5kZXJUYWJsZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludAogICAgIFBh
aW50UGhhc2UgcGFpbnRQaGFzZSA9IHBhaW50SW5mby5waGFzZTsKIAogICAgIGludCBvcyA9IDIg
KiBtYXhpbWFsT3V0bGluZVNpemUocGFpbnRQaGFzZSk7Ci0gICAgaWYgKHR5ICsgdG9wVmlzdWFs
T3ZlcmZsb3coKSA+PSBwYWludEluZm8ucmVjdC5tYXhZKCkgKyBvcyB8fCB0eSArIGJvdHRvbVZp
c3VhbE92ZXJmbG93KCkgPD0gcGFpbnRJbmZvLnJlY3QueSgpIC0gb3MpCisgICAgaWYgKHR5ICsg
bWluWVZpc3VhbE92ZXJmbG93KCkgPj0gcGFpbnRJbmZvLnJlY3QubWF4WSgpICsgb3MgfHwgdHkg
KyBtYXhZVmlzdWFsT3ZlcmZsb3coKSA8PSBwYWludEluZm8ucmVjdC55KCkgLSBvcykKICAgICAg
ICAgcmV0dXJuOwotICAgIGlmICh0eCArIGxlZnRWaXN1YWxPdmVyZmxvdygpID49IHBhaW50SW5m
by5yZWN0Lm1heFgoKSArIG9zIHx8IHR4ICsgcmlnaHRWaXN1YWxPdmVyZmxvdygpIDw9IHBhaW50
SW5mby5yZWN0LngoKSAtIG9zKQorICAgIGlmICh0eCArIG1pblhWaXN1YWxPdmVyZmxvdygpID49
IHBhaW50SW5mby5yZWN0Lm1heFgoKSArIG9zIHx8IHR4ICsgbWF4WFZpc3VhbE92ZXJmbG93KCkg
PD0gcGFpbnRJbmZvLnJlY3QueCgpIC0gb3MpCiAgICAgICAgIHJldHVybjsKIAogICAgIGJvb2wg
cHVzaGVkQ2xpcCA9IHB1c2hDb250ZW50c0NsaXAocGFpbnRJbmZvLCB0eCwgdHkpOyAgICAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCShyZXZp
c2lvbiA3NzM4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjcsOSArMjY3LDkgQEAgSW50UmVjdCBSZW5kZXJUYWJs
ZUNlbGw6OmNsaXBwZWRPdmVyZmxvdwogICAgICAgICAgICAgcmlnaHQgPSBtYXgocmlnaHQsIGJl
bG93LT5ib3JkZXJIYWxmUmlnaHQodHJ1ZSkpOwogICAgICAgICB9CiAgICAgfQotICAgIGxlZnQg
PSBtYXgobGVmdCwgLWxlZnRWaXN1YWxPdmVyZmxvdygpKTsKLSAgICB0b3AgPSBtYXgodG9wLCAt
dG9wVmlzdWFsT3ZlcmZsb3coKSk7Ci0gICAgSW50UmVjdCByKC1sZWZ0LCAtIHRvcCwgbGVmdCAr
IG1heCh3aWR0aCgpICsgcmlnaHQsIHJpZ2h0VmlzdWFsT3ZlcmZsb3coKSksIHRvcCArIG1heCho
ZWlnaHQoKSArIGJvdHRvbSwgYm90dG9tVmlzdWFsT3ZlcmZsb3coKSkpOworICAgIGxlZnQgPSBt
YXgobGVmdCwgLW1pblhWaXN1YWxPdmVyZmxvdygpKTsKKyAgICB0b3AgPSBtYXgodG9wLCAtbWlu
WVZpc3VhbE92ZXJmbG93KCkpOworICAgIEludFJlY3QgcigtbGVmdCwgLSB0b3AsIGxlZnQgKyBt
YXgod2lkdGgoKSArIHJpZ2h0LCBtYXhYVmlzdWFsT3ZlcmZsb3coKSksIHRvcCArIG1heChoZWln
aHQoKSArIGJvdHRvbSwgbWF4WVZpc3VhbE92ZXJmbG93KCkpKTsKIAogICAgIGlmIChSZW5kZXJW
aWV3KiB2ID0gdmlldygpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBsYXlvdXREZWx0YSBuZWVkcyB0
byBiZSBhcHBsaWVkIGluIHBhcnRzIGJlZm9yZS9hZnRlciB0cmFuc2Zvcm1zIGFuZApJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAkocmV2aXNp
b24gNzczODQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTYyMSwxMCArNjIxLDEwIEBAIHN0YXRpYyB2b2lkIHdyaXRl
TGF5ZXJzKFRleHRTdHJlYW0mIHRzLCAKICAgICAvLyBGSVhNRTogQXBwbHkgb3ZlcmZsb3cgdG8g
dGhlIHJvb3QgbGF5ZXIgdG8gbm90IGJyZWFrIGV2ZXJ5IHRlc3QuICBDb21wbGV0ZSBoYWNrLiAg
U2lnaC4KICAgICBJbnRSZWN0IHBhaW50RGlydHlSZWN0KHBhaW50UmVjdCk7CiAgICAgaWYgKHJv
b3RMYXllciA9PSBsKSB7Ci0gICAgICAgIHBhaW50RGlydHlSZWN0LnNldFdpZHRoKG1heChwYWlu
dERpcnR5UmVjdC53aWR0aCgpLCByb290TGF5ZXItPnJlbmRlckJveCgpLT5yaWdodExheW91dE92
ZXJmbG93KCkpKTsKLSAgICAgICAgcGFpbnREaXJ0eVJlY3Quc2V0SGVpZ2h0KG1heChwYWludERp
cnR5UmVjdC5oZWlnaHQoKSwgcm9vdExheWVyLT5yZW5kZXJCb3goKS0+Ym90dG9tTGF5b3V0T3Zl
cmZsb3coKSkpOwotICAgICAgICBsLT5zZXRXaWR0aChtYXgobC0+d2lkdGgoKSwgbC0+cmVuZGVy
Qm94KCktPnJpZ2h0TGF5b3V0T3ZlcmZsb3coKSkpOwotICAgICAgICBsLT5zZXRIZWlnaHQobWF4
KGwtPmhlaWdodCgpLCBsLT5yZW5kZXJCb3goKS0+Ym90dG9tTGF5b3V0T3ZlcmZsb3coKSkpOwor
ICAgICAgICBwYWludERpcnR5UmVjdC5zZXRXaWR0aChtYXgocGFpbnREaXJ0eVJlY3Qud2lkdGgo
KSwgcm9vdExheWVyLT5yZW5kZXJCb3goKS0+bWF4WExheW91dE92ZXJmbG93KCkpKTsKKyAgICAg
ICAgcGFpbnREaXJ0eVJlY3Quc2V0SGVpZ2h0KG1heChwYWludERpcnR5UmVjdC5oZWlnaHQoKSwg
cm9vdExheWVyLT5yZW5kZXJCb3goKS0+bWF4WUxheW91dE92ZXJmbG93KCkpKTsKKyAgICAgICAg
bC0+c2V0V2lkdGgobWF4KGwtPndpZHRoKCksIGwtPnJlbmRlckJveCgpLT5tYXhYTGF5b3V0T3Zl
cmZsb3coKSkpOworICAgICAgICBsLT5zZXRIZWlnaHQobWF4KGwtPmhlaWdodCgpLCBsLT5yZW5k
ZXJCb3goKS0+bWF4WUxheW91dE92ZXJmbG93KCkpKTsKICAgICB9CiAgICAgCiAgICAgLy8gQ2Fs
Y3VsYXRlIHRoZSBjbGlwIHJlY3RzIHdlIHNob3VsZCB1c2UuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCShyZXZpc2lvbiA3NzM4NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUxLDcgKzY1
MSw3IEBAIEludFJlY3QgUmVuZGVyVmlldzo6dmlld1JlY3QoKSBjb25zdAogCiBpbnQgUmVuZGVy
Vmlldzo6ZG9jVG9wKCkgY29uc3QKIHsKLSAgICBJbnRSZWN0IG92ZXJmbG93UmVjdCgwLCB0b3BM
YXlvdXRPdmVyZmxvdygpLCAwLCBib3R0b21MYXlvdXRPdmVyZmxvdygpIC0gdG9wTGF5b3V0T3Zl
cmZsb3coKSk7CisgICAgSW50UmVjdCBvdmVyZmxvd1JlY3QoMCwgbWluWUxheW91dE92ZXJmbG93
KCksIDAsIG1heFlMYXlvdXRPdmVyZmxvdygpIC0gbWluWUxheW91dE92ZXJmbG93KCkpOwogICAg
IGZsaXBGb3JXcml0aW5nTW9kZShvdmVyZmxvd1JlY3QpOwogICAgIGlmIChoYXNUcmFuc2Zvcm0o
KSkKICAgICAgICAgb3ZlcmZsb3dSZWN0ID0gbGF5ZXIoKS0+Y3VycmVudFRyYW5zZm9ybSgpLm1h
cFJlY3Qob3ZlcmZsb3dSZWN0KTsK
</data>
<flag name="review"
          id="72461"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80948</attachid>
            <date>2011-02-02 12:11:00 -0800</date>
            <delta_ts>2011-02-02 12:18:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>38840</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3Mzk1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsOTIgQEAKKzIwMTEtMDItMDIgIERhdmlkIEh5
YXR0ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
MzYxNAorCisgICAgICAgIFJlbW92ZSBwaHlzaWNhbCB0ZXJtaW5vbG9neSBmcm9tIG92ZXJmbG93
LiAgUmVwbGFjZSB3aXRoIG1pblgvbWF4WC9taW5ZL21heFkuCisKKyAgICAgICAgKiByZW5kZXJp
bmcvSW5saW5lRmxvd0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94Ojph
ZGRCb3hTaGFkb3dWaXN1YWxPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93
Qm94OjphZGRUZXh0Qm94VmlzdWFsT3ZlcmZsb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9Jbmxp
bmVGbG93Qm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjptaW5ZTGF5b3V0
T3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6bWF4WUxheW91dE92
ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6Om1pblhMYXlvdXRPdmVy
Zmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjptYXhYTGF5b3V0T3ZlcmZs
b3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6bG9naWNhbExlZnRMYXlvdXRP
dmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94Ojpsb2dpY2FsUmlnaHRM
YXlvdXRPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94Ojpsb2dpY2Fs
VG9wTGF5b3V0T3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6bG9n
aWNhbEJvdHRvbUxheW91dE92ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dC
b3g6Om1pbllWaXN1YWxPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94
OjptYXhZVmlzdWFsT3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6
bWluWFZpc3VhbE92ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6Om1h
eFhWaXN1YWxPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94Ojpsb2dp
Y2FsTGVmdFZpc3VhbE92ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6
OmxvZ2ljYWxSaWdodFZpc3VhbE92ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZs
b3dCb3g6OmxvZ2ljYWxtaW5ZVmlzdWFsT3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lRmxvd0JveDo6bG9naWNhbG1heFlWaXN1YWxPdmVyZmxvdyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphZGp1
c3RMaW5lUG9zaXRpb25Gb3JQYWdpbmF0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
QmxvY2tMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpiZWZv
cmVTaWRlVmlzdWFsT3ZlcmZsb3dGb3JMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjphZnRlclNpZGVWaXN1YWxPdmVyZmxvd0ZvckxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2s6OmJlZm9yZVNpZGVMYXlvdXRPdmVyZmxvd0ZvckxpbmUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OmFmdGVyU2lkZUxheW91dE92ZXJmbG93Rm9yTGluZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6OnNjcm9sbFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6c2Nyb2xs
SGVpZ2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3g6Om1pbllMYXlvdXRPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3g6Om1heFlMYXlvdXRPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3g6Om1pblhMYXlvdXRPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Om1h
eFhMYXlvdXRPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmxvZ2ljYWxM
ZWZ0TGF5b3V0T3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpsb2dpY2Fs
UmlnaHRMYXlvdXRPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Om1pbllW
aXN1YWxPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Om1heFlWaXN1YWxP
dmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Om1pblhWaXN1YWxPdmVyZmxv
dyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Om1heFhWaXN1YWxPdmVyZmxvdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmxvZ2ljYWxMZWZ0VmlzdWFsT3ZlcmZsb3cpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpsb2dpY2FsUmlnaHRWaXN1YWxPdmVyZmxvdyk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJbmxpbmU6OmxpbmVzVmlzdWFsT3ZlcmZsb3dCb3VuZGluZ0JveCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmVuc3VyZVJvb3RQbGF0Zm9ybUxheWVyKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGluZUJveExpc3Q6OmFueUxpbmVJbnRlcnNlY3RzUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMaW5lQm94TGlzdDo6bGluZUludGVyc2VjdHNEaXJ0eVJlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGluZUJveExpc3Q6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxpbmVCb3hMaXN0OjpoaXRUZXN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TWFycXVlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXJxdWVlOjpjb21wdXRlUG9z
aXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPdmVyZmxvdy5oOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyT3ZlcmZsb3c6OlJlbmRlck92ZXJmbG93KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck92ZXJmbG93OjptaW5ZTGF5b3V0T3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyT3ZlcmZsb3c6Om1heFlMYXlvdXRPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPdmVyZmxvdzo6bWluWExheW91dE92ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck92ZXJmbG93OjptYXhYTGF5b3V0T3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyT3ZlcmZsb3c6Om1pbllWaXN1YWxPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJPdmVyZmxvdzo6bWF4WVZpc3VhbE92ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck92ZXJmbG93OjptaW5YVmlzdWFsT3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyT3ZlcmZsb3c6Om1heFhWaXN1YWxPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPdmVyZmxvdzo6c2V0bWluWVZpc3VhbE92ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck92ZXJmbG93Ojp2aXN1YWxPdmVyZmxvd1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyT3ZlcmZsb3c6Om1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT3ZlcmZsb3c6OmFk
ZFZpc3VhbE92ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck92ZXJmbG93OjpzZXRW
aXN1YWxPdmVyZmxvdyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpzaG91bGRQYWludCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRh
YmxlOjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OnBhaW50KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRhYmxlQ2VsbDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ondy
aXRlTGF5ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJWaWV3Ojpkb2NUb3ApOgorCiAyMDExLTAyLTAyICBTdGV2ZSBMYWNl
eSAgPHNqbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29u
LgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCShyZXZpc2lv
biA3NzM4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmgJKHdv
cmtpbmcgY29weSkKQEAgLTE4MywxOSArMTgzLDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNoZWNr
Q29uc2lzdGVuY3koKSBjb25zdDsKICAgICB2b2lkIHNldEhhc0JhZENoaWxkTGlzdCgpOwogCi0g
ICAgLy8gTGluZSB2aXN1YWwgYW5kIGxheW91dCBvdmVyZmxvdyBhcmUgaW4gdGhlIGNvb3JkaW5h
dGUgc3BhY2Ugb2YgdGhlIGJsb2NrLiAgVGhpcyBtZWFucyB0aGF0IC0gdW5saWtlIG90aGVyIHVu
cHJlZml4ZWQgdXNlcyBvZiB0aGUgd29yZHMKLSAgICAvLyB0b3AvcmlnaHQvYm90dG9tL2xlZnQg
aW4gdGhlIGNvZGUgLSB0aGVzZSBhcmVuJ3QgcHVyZWx5IHBoeXNpY2FsIGRpcmVjdGlvbnMuICBG
b3IgaG9yaXpvbnRhbC10YiBhbmQgdmVydGljYWwtbHIgdGhleSB3aWxsIG1hdGNoIHBoeXNpY2Fs
Ci0gICAgLy8gZGlyZWN0aW9ucywgYnV0IGZvciBob3Jpem9udGFsLWJ0IGFuZCB2ZXJ0aWNhbC1y
bCwgdGhlIHRvcC9ib3R0b20gYW5kIGxlZnQvcmlnaHQgcmVzcGVjdGl2ZWx5IGFyZSBpbnZlcnRl
ZCB3aGVuIGNvbXBhcmVkIHRvCi0gICAgLy8gdGhlaXIgcGh5c2ljYWwgY291bnRlcnBhcnRzLgot
ICAgIGludCB0b3BMYXlvdXRPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcmZsb3cgPyBt
X292ZXJmbG93LT50b3BMYXlvdXRPdmVyZmxvdygpIDogbV95OyB9Ci0gICAgaW50IGJvdHRvbUxh
eW91dE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gbV9vdmVyZmxvdyA/IG1fb3ZlcmZsb3ctPmJv
dHRvbUxheW91dE92ZXJmbG93KCkgOiBtX3kgKyBoZWlnaHQoKTsgfQotICAgIGludCBsZWZ0TGF5
b3V0T3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX292ZXJmbG93ID8gbV9vdmVyZmxvdy0+bGVm
dExheW91dE92ZXJmbG93KCkgOiBtX3g7IH0KLSAgICBpbnQgcmlnaHRMYXlvdXRPdmVyZmxvdygp
IGNvbnN0IHsgcmV0dXJuIG1fb3ZlcmZsb3cgPyBtX292ZXJmbG93LT5yaWdodExheW91dE92ZXJm
bG93KCkgOiBtX3ggKyB3aWR0aCgpOyB9CisgICAgLy8gTGluZSB2aXN1YWwgYW5kIGxheW91dCBv
dmVyZmxvdyBhcmUgaW4gdGhlIGNvb3JkaW5hdGUgc3BhY2Ugb2YgdGhlIGJsb2NrLiAgVGhpcyBt
ZWFucyB0aGF0IHRoZXkgYXJlbid0IHB1cmVseSBwaHlzaWNhbCBkaXJlY3Rpb25zLgorICAgIC8v
IEZvciBob3Jpem9udGFsLXRiIGFuZCB2ZXJ0aWNhbC1sciB0aGV5IHdpbGwgbWF0Y2ggcGh5c2lj
YWwgZGlyZWN0aW9ucywgYnV0IGZvciBob3Jpem9udGFsLWJ0IGFuZCB2ZXJ0aWNhbC1ybCwgdGhl
IHRvcC9ib3R0b20gYW5kIGxlZnQvcmlnaHQKKyAgICAvLyByZXNwZWN0aXZlbHkgYXJlIGZsaXBw
ZWQgd2hlbiBjb21wYXJlZCB0byB0aGVpciBwaHlzaWNhbCBjb3VudGVycGFydHMuICBGb3IgZXhh
bXBsZSBtaW5YIGlzIG9uIHRoZSBsZWZ0IGluIHZlcnRpY2FsLWxyLCBidXQgaXQgaXMgb24gdGhl
IHJpZ2h0IGluIHZlcnRpY2FsLXJsLgorICAgIGludCBtaW5ZTGF5b3V0T3ZlcmZsb3coKSBjb25z
dCB7IHJldHVybiBtX292ZXJmbG93ID8gbV9vdmVyZmxvdy0+bWluWUxheW91dE92ZXJmbG93KCkg
OiBtX3k7IH0KKyAgICBpbnQgbWF4WUxheW91dE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gbV9v
dmVyZmxvdyA/IG1fb3ZlcmZsb3ctPm1heFlMYXlvdXRPdmVyZmxvdygpIDogbV95ICsgaGVpZ2h0
KCk7IH0KKyAgICBpbnQgbWluWExheW91dE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gbV9vdmVy
ZmxvdyA/IG1fb3ZlcmZsb3ctPm1pblhMYXlvdXRPdmVyZmxvdygpIDogbV94OyB9CisgICAgaW50
IG1heFhMYXlvdXRPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcmZsb3cgPyBtX292ZXJm
bG93LT5tYXhYTGF5b3V0T3ZlcmZsb3coKSA6IG1feCArIHdpZHRoKCk7IH0KICAgICBJbnRSZWN0
IGxheW91dE92ZXJmbG93UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcmZsb3cgPyBtX292ZXJm
bG93LT5sYXlvdXRPdmVyZmxvd1JlY3QoKSA6IEludFJlY3QobV94LCBtX3ksIHdpZHRoKCksIGhl
aWdodCgpKTsgfQotICAgIGludCBsb2dpY2FsTGVmdExheW91dE92ZXJmbG93KCkgY29uc3QgeyBy
ZXR1cm4gcmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGxl
ZnRMYXlvdXRPdmVyZmxvdygpIDogdG9wTGF5b3V0T3ZlcmZsb3coKTsgfQotICAgIGludCBsb2dp
Y2FsUmlnaHRMYXlvdXRPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIHJlbmRlcmVyKCktPnN0eWxl
KCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyByaWdodExheW91dE92ZXJmbG93KCkgOiBi
b3R0b21MYXlvdXRPdmVyZmxvdygpOyB9Ci0gICAgaW50IGxvZ2ljYWxUb3BMYXlvdXRPdmVyZmxv
dygpIGNvbnN0IHsgcmV0dXJuIHJlbmRlcmVyKCktPnN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKCkgPyB0b3BWaXN1YWxPdmVyZmxvdygpIDogbGVmdFZpc3VhbE92ZXJmbG93KCk7IH0K
LSAgICBpbnQgbG9naWNhbEJvdHRvbUxheW91dE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gcmVu
ZGVyZXIoKS0+c3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGJvdHRvbUxheW91
dE92ZXJmbG93KCkgOiByaWdodExheW91dE92ZXJmbG93KCk7IH0KKyAgICBpbnQgbG9naWNhbExl
ZnRMYXlvdXRPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIHJlbmRlcmVyKCktPnN0eWxlKCktPmlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBtaW5YTGF5b3V0T3ZlcmZsb3coKSA6IG1pbllMYXlv
dXRPdmVyZmxvdygpOyB9CisgICAgaW50IGxvZ2ljYWxSaWdodExheW91dE92ZXJmbG93KCkgY29u
c3QgeyByZXR1cm4gcmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUo
KSA/IG1heFhMYXlvdXRPdmVyZmxvdygpIDogbWF4WUxheW91dE92ZXJmbG93KCk7IH0KKyAgICBp
bnQgbG9naWNhbFRvcExheW91dE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gcmVuZGVyZXIoKS0+
c3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG1pbllWaXN1YWxPdmVyZmxvdygp
IDogbWluWFZpc3VhbE92ZXJmbG93KCk7IH0KKyAgICBpbnQgbG9naWNhbEJvdHRvbUxheW91dE92
ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gcmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNIb3Jpem9udGFs
V3JpdGluZ01vZGUoKSA/IG1heFlMYXlvdXRPdmVyZmxvdygpIDogbWF4WExheW91dE92ZXJmbG93
KCk7IH0KICAgICBJbnRSZWN0IGxvZ2ljYWxMYXlvdXRPdmVyZmxvd1JlY3QoKSBjb25zdAogICAg
IHsKICAgICAgICAgSW50UmVjdCByZXN1bHQgPSBsYXlvdXRPdmVyZmxvd1JlY3QoKTsKQEAgLTIw
NCwxNSArMjAzLDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAK
LSAgICBpbnQgdG9wVmlzdWFsT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX292ZXJmbG93ID8g
bV9vdmVyZmxvdy0+dG9wVmlzdWFsT3ZlcmZsb3coKSA6IG1feTsgfQotICAgIGludCBib3R0b21W
aXN1YWxPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcmZsb3cgPyBtX292ZXJmbG93LT5i
b3R0b21WaXN1YWxPdmVyZmxvdygpIDogbV95ICsgaGVpZ2h0KCk7IH0KLSAgICBpbnQgbGVmdFZp
c3VhbE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gbV9vdmVyZmxvdyA/IG1fb3ZlcmZsb3ctPmxl
ZnRWaXN1YWxPdmVyZmxvdygpIDogbV94OyB9Ci0gICAgaW50IHJpZ2h0VmlzdWFsT3ZlcmZsb3co
KSBjb25zdCB7IHJldHVybiBtX292ZXJmbG93ID8gbV9vdmVyZmxvdy0+cmlnaHRWaXN1YWxPdmVy
ZmxvdygpIDogbV94ICsgd2lkdGgoKTsgfQorICAgIGludCBtaW5ZVmlzdWFsT3ZlcmZsb3coKSBj
b25zdCB7IHJldHVybiBtX292ZXJmbG93ID8gbV9vdmVyZmxvdy0+bWluWVZpc3VhbE92ZXJmbG93
KCkgOiBtX3k7IH0KKyAgICBpbnQgbWF4WVZpc3VhbE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4g
bV9vdmVyZmxvdyA/IG1fb3ZlcmZsb3ctPm1heFlWaXN1YWxPdmVyZmxvdygpIDogbV95ICsgaGVp
Z2h0KCk7IH0KKyAgICBpbnQgbWluWFZpc3VhbE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gbV9v
dmVyZmxvdyA/IG1fb3ZlcmZsb3ctPm1pblhWaXN1YWxPdmVyZmxvdygpIDogbV94OyB9CisgICAg
aW50IG1heFhWaXN1YWxPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcmZsb3cgPyBtX292
ZXJmbG93LT5tYXhYVmlzdWFsT3ZlcmZsb3coKSA6IG1feCArIHdpZHRoKCk7IH0KICAgICBJbnRS
ZWN0IHZpc3VhbE92ZXJmbG93UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcmZsb3cgPyBtX292
ZXJmbG93LT52aXN1YWxPdmVyZmxvd1JlY3QoKSA6IEludFJlY3QobV94LCBtX3ksIHdpZHRoKCks
IGhlaWdodCgpKTsgfQotICAgIGludCBsb2dpY2FsTGVmdFZpc3VhbE92ZXJmbG93KCkgY29uc3Qg
eyByZXR1cm4gcmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/
IGxlZnRWaXN1YWxPdmVyZmxvdygpIDogdG9wVmlzdWFsT3ZlcmZsb3coKTsgfQotICAgIGludCBs
b2dpY2FsUmlnaHRWaXN1YWxPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIHJlbmRlcmVyKCktPnN0
eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyByaWdodFZpc3VhbE92ZXJmbG93KCkg
OiBib3R0b21WaXN1YWxPdmVyZmxvdygpOyB9Ci0gICAgaW50IGxvZ2ljYWxUb3BWaXN1YWxPdmVy
ZmxvdygpIGNvbnN0IHsgcmV0dXJuIHJlbmRlcmVyKCktPnN0eWxlKCktPmlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkgPyB0b3BWaXN1YWxPdmVyZmxvdygpIDogbGVmdFZpc3VhbE92ZXJmbG93KCk7
IH0KLSAgICBpbnQgbG9naWNhbEJvdHRvbVZpc3VhbE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4g
cmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGJvdHRvbVZp
c3VhbE92ZXJmbG93KCkgOiByaWdodFZpc3VhbE92ZXJmbG93KCk7IH0KKyAgICBpbnQgbG9naWNh
bExlZnRWaXN1YWxPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIHJlbmRlcmVyKCktPnN0eWxlKCkt
PmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBtaW5YVmlzdWFsT3ZlcmZsb3coKSA6IG1pbllW
aXN1YWxPdmVyZmxvdygpOyB9CisgICAgaW50IGxvZ2ljYWxSaWdodFZpc3VhbE92ZXJmbG93KCkg
Y29uc3QgeyByZXR1cm4gcmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSA/IG1heFhWaXN1YWxPdmVyZmxvdygpIDogbWF4WVZpc3VhbE92ZXJmbG93KCk7IH0KKyAg
ICBpbnQgbG9naWNhbFRvcFZpc3VhbE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gcmVuZGVyZXIo
KS0+c3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG1pbllWaXN1YWxPdmVyZmxv
dygpIDogbWluWFZpc3VhbE92ZXJmbG93KCk7IH0KKyAgICBpbnQgbG9naWNhbEJvdHRvbVZpc3Vh
bE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gcmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKSA/IG1heFlWaXN1YWxPdmVyZmxvdygpIDogbWF4WFZpc3VhbE92ZXJm
bG93KCk7IH0KICAgICBJbnRSZWN0IGxvZ2ljYWxWaXN1YWxPdmVyZmxvd1JlY3QoKSBjb25zdAog
ICAgIHsKICAgICAgICAgSW50UmVjdCByZXN1bHQgPSB2aXN1YWxPdmVyZmxvd1JlY3QoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlv
dXQuY3BwCShyZXZpc2lvbiA3NzM4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9ja0xpbmVMYXlvdXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDY2LDM4ICsyMDY2LDM0
IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFkZE92ZXJmbG93RnJvbUlubGluZUMKIAogaW50IFJlbmRl
ckJsb2NrOjpiZWZvcmVTaWRlVmlzdWFsT3ZlcmZsb3dGb3JMaW5lKFJvb3RJbmxpbmVCb3gqIGxp
bmUpIGNvbnN0CiB7Ci0gICAgLy8gT3ZlcmZsb3cgaXMgaW4gdGhlIGJsb2NrJ3MgY29vcmRpbmF0
ZSBzcGFjZSwgd2hpY2ggbWVhbnMgaXQgaXNuJ3QgcHVyZWx5IHBoeXNpY2FsLiAgRm9yIGZsaXBw
ZWQgYmxvY2tzIChybCBhbmQgYnQpLAotICAgIC8vIHdlIGNvbnRpbnVlIHRvIHVzZSB0b3AgYW5k
IGxlZnQgb3ZlcmZsb3cgZXZlbiB0aG91Z2ggcGh5c2ljYWxseSBpdCdzIGJvdHRvbSBhbmQgcmln
aHQuCisgICAgLy8gT3ZlcmZsb3cgaXMgaW4gdGhlIGJsb2NrJ3MgY29vcmRpbmF0ZSBzcGFjZSwg
d2hpY2ggbWVhbnMgaXQgaXNuJ3QgcHVyZWx5IHBoeXNpY2FsLgogICAgIGlmIChzdHlsZSgpLT5p
c0hvcml6b250YWxXcml0aW5nTW9kZSgpKQotICAgICAgICByZXR1cm4gbGluZS0+dG9wVmlzdWFs
T3ZlcmZsb3coKTsKLSAgICByZXR1cm4gbGluZS0+bGVmdFZpc3VhbE92ZXJmbG93KCk7CisgICAg
ICAgIHJldHVybiBsaW5lLT5taW5ZVmlzdWFsT3ZlcmZsb3coKTsKKyAgICByZXR1cm4gbGluZS0+
bWluWFZpc3VhbE92ZXJmbG93KCk7CiB9CiAKIGludCBSZW5kZXJCbG9jazo6YWZ0ZXJTaWRlVmlz
dWFsT3ZlcmZsb3dGb3JMaW5lKFJvb3RJbmxpbmVCb3gqIGxpbmUpIGNvbnN0CiB7Ci0gICAgLy8g
T3ZlcmZsb3cgaXMgaW4gdGhlIGJsb2NrJ3MgY29vcmRpbmF0ZSBzcGFjZSwgd2hpY2ggbWVhbnMg
aXQgaXNuJ3QgcHVyZWx5IHBoeXNpY2FsLiAgRm9yIGZsaXBwZWQgYmxvY2tzIChybCBhbmQgYnQp
LAotICAgIC8vIHdlIGNvbnRpbnVlIHRvIHVzZSBib3R0b20gYW5kIHJpZ2h0IG92ZXJmbG93IGV2
ZW4gdGhvdWdoIHBoeXNpY2FsbHkgaXQncyB0b3AgYW5kIGxlZnQuCisgICAgLy8gT3ZlcmZsb3cg
aXMgaW4gdGhlIGJsb2NrJ3MgY29vcmRpbmF0ZSBzcGFjZSwgd2hpY2ggbWVhbnMgaXQgaXNuJ3Qg
cHVyZWx5IHBoeXNpY2FsLgogICAgIGlmIChzdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpKQotICAgICAgICByZXR1cm4gbGluZS0+Ym90dG9tVmlzdWFsT3ZlcmZsb3coKTsKLSAgICBy
ZXR1cm4gbGluZS0+cmlnaHRWaXN1YWxPdmVyZmxvdygpOworICAgICAgICByZXR1cm4gbGluZS0+
bWF4WVZpc3VhbE92ZXJmbG93KCk7CisgICAgcmV0dXJuIGxpbmUtPm1heFhWaXN1YWxPdmVyZmxv
dygpOwogfQogCiBpbnQgUmVuZGVyQmxvY2s6OmJlZm9yZVNpZGVMYXlvdXRPdmVyZmxvd0Zvckxp
bmUoUm9vdElubGluZUJveCogbGluZSkgY29uc3QKIHsKLSAgICAvLyBPdmVyZmxvdyBpcyBpbiB0
aGUgYmxvY2sncyBjb29yZGluYXRlIHNwYWNlLCB3aGljaCBtZWFucyBpdCBpc24ndCBwdXJlbHkg
cGh5c2ljYWwuICBGb3IgZmxpcHBlZCBibG9ja3MgKHJsIGFuZCBidCksCi0gICAgLy8gd2UgY29u
dGludWUgdG8gdXNlIHRvcCBhbmQgbGVmdCBvdmVyZmxvdyBldmVuIHRob3VnaCBwaHlzaWNhbGx5
IGl0J3MgYm90dG9tIGFuZCByaWdodC4KKyAgICAvLyBPdmVyZmxvdyBpcyBpbiB0aGUgYmxvY2sn
cyBjb29yZGluYXRlIHNwYWNlLCB3aGljaCBtZWFucyBpdCBpc24ndCBwdXJlbHkgcGh5c2ljYWwu
CiAgICAgaWYgKHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAgICAgIHJl
dHVybiBsaW5lLT50b3BMYXlvdXRPdmVyZmxvdygpOwotICAgIHJldHVybiBsaW5lLT5sZWZ0TGF5
b3V0T3ZlcmZsb3coKTsKKyAgICAgICAgcmV0dXJuIGxpbmUtPm1pbllMYXlvdXRPdmVyZmxvdygp
OworICAgIHJldHVybiBsaW5lLT5taW5YTGF5b3V0T3ZlcmZsb3coKTsKIH0KIAogaW50IFJlbmRl
ckJsb2NrOjphZnRlclNpZGVMYXlvdXRPdmVyZmxvd0ZvckxpbmUoUm9vdElubGluZUJveCogbGlu
ZSkgY29uc3QKIHsKLSAgICAvLyBPdmVyZmxvdyBpcyBpbiB0aGUgYmxvY2sncyBjb29yZGluYXRl
IHNwYWNlLCB3aGljaCBtZWFucyBpdCBpc24ndCBwdXJlbHkgcGh5c2ljYWwuICBGb3IgZmxpcHBl
ZCBibG9ja3MgKHJsIGFuZCBidCksCi0gICAgLy8gd2UgY29udGludWUgdG8gdXNlIGJvdHRvbSBh
bmQgcmlnaHQgb3ZlcmZsb3cgZXZlbiB0aG91Z2ggcGh5c2ljYWxseSBpdCdzIHRvcCBhbmQgbGVm
dC4KKyAgICAvLyBPdmVyZmxvdyBpcyBpbiB0aGUgYmxvY2sncyBjb29yZGluYXRlIHNwYWNlLCB3
aGljaCBtZWFucyBpdCBpc24ndCBwdXJlbHkgcGh5c2ljYWwuCiAgICAgaWYgKHN0eWxlKCktPmlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAgICAgIHJldHVybiBsaW5lLT5ib3R0b21MYXlv
dXRPdmVyZmxvdygpOwotICAgIHJldHVybiBsaW5lLT5yaWdodExheW91dE92ZXJmbG93KCk7Cisg
ICAgICAgIHJldHVybiBsaW5lLT5tYXhZTGF5b3V0T3ZlcmZsb3coKTsKKyAgICByZXR1cm4gbGlu
ZS0+bWF4WExheW91dE92ZXJmbG93KCk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2s6OmRlbGV0ZUVs
bGlwc2lzTGluZUJveGVzKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCShyZXZpc2lvbiA3NzM4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTQsOCArNDE0LDggQEAgaW50IFJlbmRlckJveDo6
c2Nyb2xsV2lkdGgoKSBjb25zdAogICAgIC8vIEZvciBvYmplY3RzIHdpdGggdmlzaWJsZSBvdmVy
ZmxvdywgdGhpcyBtYXRjaGVzIElFLgogICAgIC8vIEZJWE1FOiBOZWVkIHRvIHdvcmsgcmlnaHQg
d2l0aCB3cml0aW5nIG1vZGVzLgogICAgIGlmIChzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0
aW9uKCkpCi0gICAgICAgIHJldHVybiBtYXgoY2xpZW50V2lkdGgoKSwgcmlnaHRMYXlvdXRPdmVy
ZmxvdygpIC0gYm9yZGVyTGVmdCgpKTsKLSAgICByZXR1cm4gY2xpZW50V2lkdGgoKSAtIG1pbigw
LCBsZWZ0TGF5b3V0T3ZlcmZsb3coKSAtIGJvcmRlckxlZnQoKSk7CisgICAgICAgIHJldHVybiBt
YXgoY2xpZW50V2lkdGgoKSwgbWF4WExheW91dE92ZXJmbG93KCkgLSBib3JkZXJMZWZ0KCkpOwor
ICAgIHJldHVybiBjbGllbnRXaWR0aCgpIC0gbWluKDAsIG1pblhMYXlvdXRPdmVyZmxvdygpIC0g
Ym9yZGVyTGVmdCgpKTsKIH0KIAogaW50IFJlbmRlckJveDo6c2Nyb2xsSGVpZ2h0KCkgY29uc3QK
QEAgLTQyNCw3ICs0MjQsNyBAQCBpbnQgUmVuZGVyQm94OjpzY3JvbGxIZWlnaHQoKSBjb25zdAog
ICAgICAgICByZXR1cm4gbGF5ZXIoKS0+c2Nyb2xsSGVpZ2h0KCk7CiAgICAgLy8gRm9yIG9iamVj
dHMgd2l0aCB2aXNpYmxlIG92ZXJmbG93LCB0aGlzIG1hdGNoZXMgSUUuCiAgICAgLy8gRklYTUU6
IE5lZWQgdG8gd29yayByaWdodCB3aXRoIHdyaXRpbmcgbW9kZXMuCi0gICAgcmV0dXJuIG1heChj
bGllbnRIZWlnaHQoKSwgYm90dG9tTGF5b3V0T3ZlcmZsb3coKSAtIGJvcmRlclRvcCgpKTsKKyAg
ICByZXR1cm4gbWF4KGNsaWVudEhlaWdodCgpLCBtYXhZTGF5b3V0T3ZlcmZsb3coKSAtIGJvcmRl
clRvcCgpKTsKIH0KIAogaW50IFJlbmRlckJveDo6c2Nyb2xsTGVmdCgpIGNvbnN0CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCShyZXZpc2lvbiA3NzM4NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDIx
ICsxMjcsMjUgQEAgcHVibGljOgogICAgIFJlbmRlckJveCogbmV4dFNpYmxpbmdCb3goKSBjb25z
dDsKICAgICBSZW5kZXJCb3gqIHBhcmVudEJveCgpIGNvbnN0OwogCisgICAgLy8gVmlzdWFsIGFu
ZCBsYXlvdXQgb3ZlcmZsb3cgYXJlIGluIHRoZSBjb29yZGluYXRlIHNwYWNlIG9mIHRoZSBib3gu
ICBUaGlzIG1lYW5zIHRoYXQgdGhleSBhcmVuJ3QgcHVyZWx5IHBoeXNpY2FsIGRpcmVjdGlvbnMu
CisgICAgLy8gRm9yIGhvcml6b250YWwtdGIgYW5kIHZlcnRpY2FsLWxyIHRoZXkgd2lsbCBtYXRj
aCBwaHlzaWNhbCBkaXJlY3Rpb25zLCBidXQgZm9yIGhvcml6b250YWwtYnQgYW5kIHZlcnRpY2Fs
LXJsLCB0aGUgdG9wL2JvdHRvbSBhbmQgbGVmdC9yaWdodAorICAgIC8vIHJlc3BlY3RpdmVseSBh
cmUgZmxpcHBlZCB3aGVuIGNvbXBhcmVkIHRvIHRoZWlyIHBoeXNpY2FsIGNvdW50ZXJwYXJ0cy4g
IEZvciBleGFtcGxlIG1pblggaXMgb24gdGhlIGxlZnQgaW4gdmVydGljYWwtbHIsCisgICAgLy8g
YnV0IGl0IGlzIG9uIHRoZSByaWdodCBpbiB2ZXJ0aWNhbC1ybC4KICAgICBJbnRSZWN0IGxheW91
dE92ZXJmbG93UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcmZsb3cgPyBtX292ZXJmbG93LT5s
YXlvdXRPdmVyZmxvd1JlY3QoKSA6IGNsaWVudEJveFJlY3QoKTsgfQotICAgIGludCB0b3BMYXlv
dXRPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcmZsb3c/IG1fb3ZlcmZsb3ctPnRvcExh
eW91dE92ZXJmbG93KCkgOiBib3JkZXJUb3AoKTsgfQotICAgIGludCBib3R0b21MYXlvdXRPdmVy
ZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcmZsb3cgPyBtX292ZXJmbG93LT5ib3R0b21MYXlv
dXRPdmVyZmxvdygpIDogYm9yZGVyVG9wKCkgKyBjbGllbnRIZWlnaHQoKTsgfQotICAgIGludCBs
ZWZ0TGF5b3V0T3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX292ZXJmbG93ID8gbV9vdmVyZmxv
dy0+bGVmdExheW91dE92ZXJmbG93KCkgOiBib3JkZXJMZWZ0KCk7IH0KLSAgICBpbnQgcmlnaHRM
YXlvdXRPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcmZsb3cgPyBtX292ZXJmbG93LT5y
aWdodExheW91dE92ZXJmbG93KCkgOiBib3JkZXJMZWZ0KCkgKyBjbGllbnRXaWR0aCgpOyB9Ci0g
ICAgaW50IGxvZ2ljYWxMZWZ0TGF5b3V0T3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBzdHlsZSgp
LT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gbGVmdExheW91dE92ZXJmbG93KCkgOiB0b3BM
YXlvdXRPdmVyZmxvdygpOyB9Ci0gICAgaW50IGxvZ2ljYWxSaWdodExheW91dE92ZXJmbG93KCkg
Y29uc3QgeyByZXR1cm4gc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJpZ2h0
TGF5b3V0T3ZlcmZsb3coKSA6IGJvdHRvbUxheW91dE92ZXJmbG93KCk7IH0KKyAgICBpbnQgbWlu
WUxheW91dE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gbV9vdmVyZmxvdz8gbV9vdmVyZmxvdy0+
bWluWUxheW91dE92ZXJmbG93KCkgOiBib3JkZXJUb3AoKTsgfQorICAgIGludCBtYXhZTGF5b3V0
T3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX292ZXJmbG93ID8gbV9vdmVyZmxvdy0+bWF4WUxh
eW91dE92ZXJmbG93KCkgOiBib3JkZXJUb3AoKSArIGNsaWVudEhlaWdodCgpOyB9CisgICAgaW50
IG1pblhMYXlvdXRPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcmZsb3cgPyBtX292ZXJm
bG93LT5taW5YTGF5b3V0T3ZlcmZsb3coKSA6IGJvcmRlckxlZnQoKTsgfQorICAgIGludCBtYXhY
TGF5b3V0T3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX292ZXJmbG93ID8gbV9vdmVyZmxvdy0+
bWF4WExheW91dE92ZXJmbG93KCkgOiBib3JkZXJMZWZ0KCkgKyBjbGllbnRXaWR0aCgpOyB9Cisg
ICAgaW50IGxvZ2ljYWxMZWZ0TGF5b3V0T3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBzdHlsZSgp
LT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gbWluWExheW91dE92ZXJmbG93KCkgOiBtaW5Z
TGF5b3V0T3ZlcmZsb3coKTsgfQorICAgIGludCBsb2dpY2FsUmlnaHRMYXlvdXRPdmVyZmxvdygp
IGNvbnN0IHsgcmV0dXJuIHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBtYXhY
TGF5b3V0T3ZlcmZsb3coKSA6IG1heFlMYXlvdXRPdmVyZmxvdygpOyB9CiAgICAgCiAgICAgSW50
UmVjdCB2aXN1YWxPdmVyZmxvd1JlY3QoKSBjb25zdCB7IHJldHVybiBtX292ZXJmbG93ID8gbV9v
dmVyZmxvdy0+dmlzdWFsT3ZlcmZsb3dSZWN0KCkgOiBib3JkZXJCb3hSZWN0KCk7IH0KLSAgICBp
bnQgdG9wVmlzdWFsT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX292ZXJmbG93PyBtX292ZXJm
bG93LT50b3BWaXN1YWxPdmVyZmxvdygpIDogMDsgfQotICAgIGludCBib3R0b21WaXN1YWxPdmVy
ZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcmZsb3cgPyBtX292ZXJmbG93LT5ib3R0b21WaXN1
YWxPdmVyZmxvdygpIDogaGVpZ2h0KCk7IH0KLSAgICBpbnQgbGVmdFZpc3VhbE92ZXJmbG93KCkg
Y29uc3QgeyByZXR1cm4gbV9vdmVyZmxvdyA/IG1fb3ZlcmZsb3ctPmxlZnRWaXN1YWxPdmVyZmxv
dygpIDogMDsgfQotICAgIGludCByaWdodFZpc3VhbE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4g
bV9vdmVyZmxvdyA/IG1fb3ZlcmZsb3ctPnJpZ2h0VmlzdWFsT3ZlcmZsb3coKSA6IHdpZHRoKCk7
IH0KLSAgICBpbnQgbG9naWNhbExlZnRWaXN1YWxPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIHN0
eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBsZWZ0VmlzdWFsT3ZlcmZsb3coKSA6
IHRvcFZpc3VhbE92ZXJmbG93KCk7IH0KLSAgICBpbnQgbG9naWNhbFJpZ2h0VmlzdWFsT3ZlcmZs
b3coKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8g
cmlnaHRWaXN1YWxPdmVyZmxvdygpIDogYm90dG9tVmlzdWFsT3ZlcmZsb3coKTsgfQorICAgIGlu
dCBtaW5ZVmlzdWFsT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX292ZXJmbG93PyBtX292ZXJm
bG93LT5taW5ZVmlzdWFsT3ZlcmZsb3coKSA6IDA7IH0KKyAgICBpbnQgbWF4WVZpc3VhbE92ZXJm
bG93KCkgY29uc3QgeyByZXR1cm4gbV9vdmVyZmxvdyA/IG1fb3ZlcmZsb3ctPm1heFlWaXN1YWxP
dmVyZmxvdygpIDogaGVpZ2h0KCk7IH0KKyAgICBpbnQgbWluWFZpc3VhbE92ZXJmbG93KCkgY29u
c3QgeyByZXR1cm4gbV9vdmVyZmxvdyA/IG1fb3ZlcmZsb3ctPm1pblhWaXN1YWxPdmVyZmxvdygp
IDogMDsgfQorICAgIGludCBtYXhYVmlzdWFsT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX292
ZXJmbG93ID8gbV9vdmVyZmxvdy0+bWF4WFZpc3VhbE92ZXJmbG93KCkgOiB3aWR0aCgpOyB9Cisg
ICAgaW50IGxvZ2ljYWxMZWZ0VmlzdWFsT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBzdHlsZSgp
LT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gbWluWFZpc3VhbE92ZXJmbG93KCkgOiBtaW5Z
VmlzdWFsT3ZlcmZsb3coKTsgfQorICAgIGludCBsb2dpY2FsUmlnaHRWaXN1YWxPdmVyZmxvdygp
IGNvbnN0IHsgcmV0dXJuIHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBtYXhY
VmlzdWFsT3ZlcmZsb3coKSA6IG1heFlWaXN1YWxPdmVyZmxvdygpOyB9CiAgICAgCiAgICAgdm9p
ZCBhZGRMYXlvdXRPdmVyZmxvdyhjb25zdCBJbnRSZWN0Jik7CiAgICAgdm9pZCBhZGRWaXN1YWxP
dmVyZmxvdyhjb25zdCBJbnRSZWN0Jik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW5saW5lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW5saW5lLmNwcAkocmV2aXNpb24gNzczODQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTk1LDEwICs1OTUsMTAg
QEAgSW50UmVjdCBSZW5kZXJJbmxpbmU6OmxpbmVzVmlzdWFsT3ZlcmZsbwogCiAgICAgYm9vbCBp
c0hvcml6b250YWwgPSBzdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpOwogICAgICAg
ICAKLSAgICBpbnQgeCA9IGlzSG9yaXpvbnRhbCA/IGxvZ2ljYWxMZWZ0U2lkZSA6IGZpcnN0TGlu
ZUJveCgpLT5sZWZ0VmlzdWFsT3ZlcmZsb3coKTsKLSAgICBpbnQgeSA9IGlzSG9yaXpvbnRhbCA/
IGZpcnN0TGluZUJveCgpLT50b3BWaXN1YWxPdmVyZmxvdygpIDogbG9naWNhbExlZnRTaWRlOwot
ICAgIGludCB3aWR0aCA9IGlzSG9yaXpvbnRhbCA/IGxvZ2ljYWxSaWdodFNpZGUgLSBsb2dpY2Fs
TGVmdFNpZGUgOiBsYXN0TGluZUJveCgpLT5yaWdodFZpc3VhbE92ZXJmbG93KCkgLSBmaXJzdExp
bmVCb3goKS0+bGVmdFZpc3VhbE92ZXJmbG93KCk7Ci0gICAgaW50IGhlaWdodCA9IGlzSG9yaXpv
bnRhbCA/IGxhc3RMaW5lQm94KCktPmJvdHRvbVZpc3VhbE92ZXJmbG93KCkgLSBmaXJzdExpbmVC
b3goKS0+dG9wVmlzdWFsT3ZlcmZsb3coKSA6IGxvZ2ljYWxSaWdodFNpZGUgLSBsb2dpY2FsTGVm
dFNpZGU7CisgICAgaW50IHggPSBpc0hvcml6b250YWwgPyBsb2dpY2FsTGVmdFNpZGUgOiBmaXJz
dExpbmVCb3goKS0+bWluWFZpc3VhbE92ZXJmbG93KCk7CisgICAgaW50IHkgPSBpc0hvcml6b250
YWwgPyBmaXJzdExpbmVCb3goKS0+bWluWVZpc3VhbE92ZXJmbG93KCkgOiBsb2dpY2FsTGVmdFNp
ZGU7CisgICAgaW50IHdpZHRoID0gaXNIb3Jpem9udGFsID8gbG9naWNhbFJpZ2h0U2lkZSAtIGxv
Z2ljYWxMZWZ0U2lkZSA6IGxhc3RMaW5lQm94KCktPm1heFhWaXN1YWxPdmVyZmxvdygpIC0gZmly
c3RMaW5lQm94KCktPm1pblhWaXN1YWxPdmVyZmxvdygpOworICAgIGludCBoZWlnaHQgPSBpc0hv
cml6b250YWwgPyBsYXN0TGluZUJveCgpLT5tYXhZVmlzdWFsT3ZlcmZsb3coKSAtIGZpcnN0TGlu
ZUJveCgpLT5taW5ZVmlzdWFsT3ZlcmZsb3coKSA6IGxvZ2ljYWxSaWdodFNpZGUgLSBsb2dpY2Fs
TGVmdFNpZGU7CiAgICAgcmV0dXJuIEludFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwCShyZXZpc2lvbiA3NzM4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzk0LDcgKzEzOTQs
NyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZW5zdXJlUm9vdFBsCiAjaWZuZGVmIE5E
RUJVRwogICAgICAgICBtX3Jvb3RQbGF0Zm9ybUxheWVyLT5zZXROYW1lKCJSb290IHBsYXRmb3Jt
Iik7CiAjZW5kaWYKLSAgICAgICAgbV9yb290UGxhdGZvcm1MYXllci0+c2V0U2l6ZShGbG9hdFNp
emUobV9yZW5kZXJWaWV3LT5yaWdodExheW91dE92ZXJmbG93KCksIG1fcmVuZGVyVmlldy0+Ym90
dG9tTGF5b3V0T3ZlcmZsb3coKSkpOworICAgICAgICBtX3Jvb3RQbGF0Zm9ybUxheWVyLT5zZXRT
aXplKEZsb2F0U2l6ZShtX3JlbmRlclZpZXctPm1heFhMYXlvdXRPdmVyZmxvdygpLCBtX3JlbmRl
clZpZXctPm1heFlMYXlvdXRPdmVyZmxvdygpKSk7CiAgICAgICAgIG1fcm9vdFBsYXRmb3JtTGF5
ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoKSk7CiAKICAgICAgICAgLy8gTmVlZCB0byBjbGlw
IHRvIHByZXZlbnQgdHJhbnNmb3JtZWQgY29udGVudCBzaG93aW5nIG91dHNpZGUgdGhpcyBmcmFt
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3Qu
Y3BwCShyZXZpc2lvbiA3NzM4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aW5lQm94TGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMSw4ICsyMzEsOCBAQCB2b2lkIFJl
bmRlckxpbmVCb3hMaXN0OjpwYWludChSZW5kZXJCb3hNCiAgICAgICAgICAgICAvLyBGSVhNRTog
VGhpcyBpcyB0aGUgZGVwcmVjYXRlZCBwYWdpbmF0aW9uIG1vZGVsIHRoYXQgaXMgc3RpbGwgbmVl
ZGVkCiAgICAgICAgICAgICAvLyBmb3IgZW1iZWRkZWQgdmlld3MgaW5zaWRlIEFwcEtpdC4gIEFw
cEtpdCBpcyBpbmNhcGFibGUgb2YgcGFnaW5hdGluZyB2ZXJ0aWNhbAogICAgICAgICAgICAgLy8g
dGV4dCBwYWdlcywgc28gd2UgZG9uJ3QgaGF2ZSB0byBkZWFsIHdpdGggdmVydGljYWwgbGluZXMg
YXQgYWxsIGhlcmUuCi0gICAgICAgICAgICBpbnQgdG9wRm9yUGFnaW5hdGlvbkNoZWNrID0gY3Vy
ci0+dG9wVmlzdWFsT3ZlcmZsb3coKTsKLSAgICAgICAgICAgIGludCBib3R0b21Gb3JQYWdpbmF0
aW9uQ2hlY2sgPSBjdXJyLT5ib3R0b21WaXN1YWxPdmVyZmxvdygpOworICAgICAgICAgICAgaW50
IHRvcEZvclBhZ2luYXRpb25DaGVjayA9IGN1cnItPm1pbllWaXN1YWxPdmVyZmxvdygpOworICAg
ICAgICAgICAgaW50IGJvdHRvbUZvclBhZ2luYXRpb25DaGVjayA9IGN1cnItPm1heFlWaXN1YWxP
dmVyZmxvdygpOwogICAgICAgICAgICAgaWYgKCFjdXJyLT5wYXJlbnQoKSkgewogICAgICAgICAg
ICAgICAgIC8vIFdlJ3JlIGEgcm9vdCBib3guICBVc2UgbGluZVRvcCBhbmQgbGluZUJvdHRvbSBh
cyB3ZWxsIGhlcmUuCiAgICAgICAgICAgICAgICAgdG9wRm9yUGFnaW5hdGlvbkNoZWNrID0gbWlu
KHRvcEZvclBhZ2luYXRpb25DaGVjaywgY3Vyci0+cm9vdCgpLT5saW5lVG9wKCkpOwpAQCAtMjQx
LDcgKzI0MSw3IEBAIHZvaWQgUmVuZGVyTGluZUJveExpc3Q6OnBhaW50KFJlbmRlckJveE0KICAg
ICAgICAgICAgIGlmIChib3R0b21Gb3JQYWdpbmF0aW9uQ2hlY2sgLSB0b3BGb3JQYWdpbmF0aW9u
Q2hlY2sgPD0gdi0+cHJpbnRSZWN0KCkuaGVpZ2h0KCkpIHsKICAgICAgICAgICAgICAgICBpZiAo
dHkgKyBib3R0b21Gb3JQYWdpbmF0aW9uQ2hlY2sgPiB2LT5wcmludFJlY3QoKS5tYXhZKCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKFJvb3RJbmxpbmVCb3gqIG5leHRSb290Qm94ID0gY3Vy
ci0+cm9vdCgpLT5uZXh0Um9vdEJveCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgYm90dG9t
Rm9yUGFnaW5hdGlvbkNoZWNrID0gbWluKGJvdHRvbUZvclBhZ2luYXRpb25DaGVjaywgbWluKG5l
eHRSb290Qm94LT50b3BWaXN1YWxPdmVyZmxvdygpLCBuZXh0Um9vdEJveC0+bGluZVRvcCgpKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBib3R0b21Gb3JQYWdpbmF0aW9uQ2hlY2sgPSBtaW4o
Ym90dG9tRm9yUGFnaW5hdGlvbkNoZWNrLCBtaW4obmV4dFJvb3RCb3gtPm1pbllWaXN1YWxPdmVy
ZmxvdygpLCBuZXh0Um9vdEJveC0+bGluZVRvcCgpKSk7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGlmICh0eSArIGJvdHRvbUZvclBhZ2luYXRpb25DaGVjayA+IHYtPnByaW50
UmVjdCgpLm1heFkoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAodHkgKyB0b3BGb3JQYWdp
bmF0aW9uQ2hlY2sgPCB2LT50cnVuY2F0ZWRBdCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNYXJxdWVlLmNwcAkocmV2aXNpb24gNzczODQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiw3
ICsxMTYsNyBAQCBpbnQgUmVuZGVyTWFycXVlZTo6Y29tcHV0ZVBvc2l0aW9uKEVNYXJxCiAgICAg
aWYgKGlzSG9yaXpvbnRhbCgpKSB7CiAgICAgICAgIGJvb2wgbHRyID0gcy0+aXNMZWZ0VG9SaWdo
dERpcmVjdGlvbigpOwogICAgICAgICBpbnQgY2xpZW50V2lkdGggPSBib3gtPmNsaWVudFdpZHRo
KCk7Ci0gICAgICAgIGludCBjb250ZW50V2lkdGggPSBsdHIgPyBib3gtPnJpZ2h0TGF5b3V0T3Zl
cmZsb3coKSA6IGJveC0+bGVmdExheW91dE92ZXJmbG93KCk7CisgICAgICAgIGludCBjb250ZW50
V2lkdGggPSBsdHIgPyBib3gtPm1heFhMYXlvdXRPdmVyZmxvdygpIDogYm94LT5taW5YTGF5b3V0
T3ZlcmZsb3coKTsKICAgICAgICAgaWYgKGx0cikKICAgICAgICAgICAgIGNvbnRlbnRXaWR0aCAr
PSAoYm94LT5wYWRkaW5nUmlnaHQoKSAtIGJveC0+Ym9yZGVyTGVmdCgpKTsKICAgICAgICAgZWxz
ZSB7CkBAIC0xMzcsNyArMTM3LDcgQEAgaW50IFJlbmRlck1hcnF1ZWU6OmNvbXB1dGVQb3NpdGlv
bihFTWFycQogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBpbnQgY29udGVu
dEhlaWdodCA9IGJveC0+Ym90dG9tTGF5b3V0T3ZlcmZsb3coKSAtIGJveC0+Ym9yZGVyVG9wKCkg
KyBib3gtPnBhZGRpbmdCb3R0b20oKTsKKyAgICAgICAgaW50IGNvbnRlbnRIZWlnaHQgPSBib3gt
Pm1heFlMYXlvdXRPdmVyZmxvdygpIC0gYm94LT5ib3JkZXJUb3AoKSArIGJveC0+cGFkZGluZ0Jv
dHRvbSgpOwogICAgICAgICBpbnQgY2xpZW50SGVpZ2h0ID0gYm94LT5jbGllbnRIZWlnaHQoKTsK
ICAgICAgICAgaWYgKGRpciA9PSBNVVApIHsKICAgICAgICAgICAgIGlmIChzdG9wQXRDb250ZW50
RWRnZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPdmVyZmxvdy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPdmVyZmxvdy5oCShy
ZXZpc2lvbiA3NzM4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPdmVyZmxv
dy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSwzOCArNDEsMzggQEAgY2xhc3MgUmVuZGVyT3ZlcmZs
b3cgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlbmRlck92ZXJmbG93KTsgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgUmVuZGVyT3ZlcmZsb3coY29uc3QgSW50UmVj
dCYgbGF5b3V0UmVjdCwgY29uc3QgSW50UmVjdCYgdmlzdWFsUmVjdCkgCi0gICAgICAgIDogbV90
b3BMYXlvdXRPdmVyZmxvdyhsYXlvdXRSZWN0LnkoKSkKLSAgICAgICAgLCBtX2JvdHRvbUxheW91
dE92ZXJmbG93KGxheW91dFJlY3QubWF4WSgpKQotICAgICAgICAsIG1fbGVmdExheW91dE92ZXJm
bG93KGxheW91dFJlY3QueCgpKQotICAgICAgICAsIG1fcmlnaHRMYXlvdXRPdmVyZmxvdyhsYXlv
dXRSZWN0Lm1heFgoKSkKLSAgICAgICAgLCBtX3RvcFZpc3VhbE92ZXJmbG93KHZpc3VhbFJlY3Qu
eSgpKQotICAgICAgICAsIG1fYm90dG9tVmlzdWFsT3ZlcmZsb3codmlzdWFsUmVjdC5tYXhZKCkp
Ci0gICAgICAgICwgbV9sZWZ0VmlzdWFsT3ZlcmZsb3codmlzdWFsUmVjdC54KCkpCi0gICAgICAg
ICwgbV9yaWdodFZpc3VhbE92ZXJmbG93KHZpc3VhbFJlY3QubWF4WCgpKQorICAgICAgICA6IG1f
bWluWUxheW91dE92ZXJmbG93KGxheW91dFJlY3QueSgpKQorICAgICAgICAsIG1fbWF4WUxheW91
dE92ZXJmbG93KGxheW91dFJlY3QubWF4WSgpKQorICAgICAgICAsIG1fbWluWExheW91dE92ZXJm
bG93KGxheW91dFJlY3QueCgpKQorICAgICAgICAsIG1fbWF4WExheW91dE92ZXJmbG93KGxheW91
dFJlY3QubWF4WCgpKQorICAgICAgICAsIG1fbWluWVZpc3VhbE92ZXJmbG93KHZpc3VhbFJlY3Qu
eSgpKQorICAgICAgICAsIG1fbWF4WVZpc3VhbE92ZXJmbG93KHZpc3VhbFJlY3QubWF4WSgpKQor
ICAgICAgICAsIG1fbWluWFZpc3VhbE92ZXJmbG93KHZpc3VhbFJlY3QueCgpKQorICAgICAgICAs
IG1fbWF4WFZpc3VhbE92ZXJmbG93KHZpc3VhbFJlY3QubWF4WCgpKQogICAgIHsKICAgICB9CiAg
ICAKLSAgICBpbnQgdG9wTGF5b3V0T3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX3RvcExheW91
dE92ZXJmbG93OyB9Ci0gICAgaW50IGJvdHRvbUxheW91dE92ZXJmbG93KCkgY29uc3QgeyByZXR1
cm4gbV9ib3R0b21MYXlvdXRPdmVyZmxvdzsgfQotICAgIGludCBsZWZ0TGF5b3V0T3ZlcmZsb3co
KSBjb25zdCB7IHJldHVybiBtX2xlZnRMYXlvdXRPdmVyZmxvdzsgfQotICAgIGludCByaWdodExh
eW91dE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gbV9yaWdodExheW91dE92ZXJmbG93OyB9Cisg
ICAgaW50IG1pbllMYXlvdXRPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1fbWluWUxheW91dE92
ZXJmbG93OyB9CisgICAgaW50IG1heFlMYXlvdXRPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1f
bWF4WUxheW91dE92ZXJmbG93OyB9CisgICAgaW50IG1pblhMYXlvdXRPdmVyZmxvdygpIGNvbnN0
IHsgcmV0dXJuIG1fbWluWExheW91dE92ZXJmbG93OyB9CisgICAgaW50IG1heFhMYXlvdXRPdmVy
ZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1fbWF4WExheW91dE92ZXJmbG93OyB9CiAgICAgSW50UmVj
dCBsYXlvdXRPdmVyZmxvd1JlY3QoKSBjb25zdDsKIAotICAgIGludCB0b3BWaXN1YWxPdmVyZmxv
dygpIGNvbnN0IHsgcmV0dXJuIG1fdG9wVmlzdWFsT3ZlcmZsb3c7IH0KLSAgICBpbnQgYm90dG9t
VmlzdWFsT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX2JvdHRvbVZpc3VhbE92ZXJmbG93OyB9
Ci0gICAgaW50IGxlZnRWaXN1YWxPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1fbGVmdFZpc3Vh
bE92ZXJmbG93OyB9Ci0gICAgaW50IHJpZ2h0VmlzdWFsT3ZlcmZsb3coKSBjb25zdCB7IHJldHVy
biBtX3JpZ2h0VmlzdWFsT3ZlcmZsb3c7IH0KKyAgICBpbnQgbWluWVZpc3VhbE92ZXJmbG93KCkg
Y29uc3QgeyByZXR1cm4gbV9taW5ZVmlzdWFsT3ZlcmZsb3c7IH0KKyAgICBpbnQgbWF4WVZpc3Vh
bE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gbV9tYXhZVmlzdWFsT3ZlcmZsb3c7IH0KKyAgICBp
bnQgbWluWFZpc3VhbE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gbV9taW5YVmlzdWFsT3ZlcmZs
b3c7IH0KKyAgICBpbnQgbWF4WFZpc3VhbE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gbV9tYXhY
VmlzdWFsT3ZlcmZsb3c7IH0KICAgICBJbnRSZWN0IHZpc3VhbE92ZXJmbG93UmVjdCgpIGNvbnN0
OwogCi0gICAgdm9pZCBzZXRUb3BMYXlvdXRPdmVyZmxvdyhpbnQgb3ZlcmZsb3cpIHsgbV90b3BM
YXlvdXRPdmVyZmxvdyA9IG92ZXJmbG93OyB9Ci0gICAgdm9pZCBzZXRCb3R0b21MYXlvdXRPdmVy
ZmxvdyhpbnQgb3ZlcmZsb3cpIHsgbV9ib3R0b21MYXlvdXRPdmVyZmxvdyA9IG92ZXJmbG93OyB9
Ci0gICAgdm9pZCBzZXRMZWZ0TGF5b3V0T3ZlcmZsb3coaW50IG92ZXJmbG93KSB7IG1fbGVmdExh
eW91dE92ZXJmbG93ID0gb3ZlcmZsb3c7IH0KLSAgICB2b2lkIHNldFJpZ2h0TGF5b3V0T3ZlcmZs
b3coaW50IG92ZXJmbG93KSB7IG1fcmlnaHRMYXlvdXRPdmVyZmxvdyA9IG92ZXJmbG93OyB9Cisg
ICAgdm9pZCBzZXRNaW5ZTGF5b3V0T3ZlcmZsb3coaW50IG92ZXJmbG93KSB7IG1fbWluWUxheW91
dE92ZXJmbG93ID0gb3ZlcmZsb3c7IH0KKyAgICB2b2lkIHNldE1heFlMYXlvdXRPdmVyZmxvdyhp
bnQgb3ZlcmZsb3cpIHsgbV9tYXhZTGF5b3V0T3ZlcmZsb3cgPSBvdmVyZmxvdzsgfQorICAgIHZv
aWQgc2V0TWluWExheW91dE92ZXJmbG93KGludCBvdmVyZmxvdykgeyBtX21pblhMYXlvdXRPdmVy
ZmxvdyA9IG92ZXJmbG93OyB9CisgICAgdm9pZCBzZXRNYXhYTGF5b3V0T3ZlcmZsb3coaW50IG92
ZXJmbG93KSB7IG1fbWF4WExheW91dE92ZXJmbG93ID0gb3ZlcmZsb3c7IH0KICAgICAKLSAgICB2
b2lkIHNldFRvcFZpc3VhbE92ZXJmbG93KGludCBvdmVyZmxvdykgeyBtX3RvcFZpc3VhbE92ZXJm
bG93ID0gb3ZlcmZsb3c7IH0KLSAgICB2b2lkIHNldEJvdHRvbVZpc3VhbE92ZXJmbG93KGludCBv
dmVyZmxvdykgeyBtX2JvdHRvbVZpc3VhbE92ZXJmbG93ID0gb3ZlcmZsb3c7IH0KLSAgICB2b2lk
IHNldExlZnRWaXN1YWxPdmVyZmxvdyhpbnQgb3ZlcmZsb3cpIHsgbV9sZWZ0VmlzdWFsT3ZlcmZs
b3cgPSBvdmVyZmxvdzsgfQotICAgIHZvaWQgc2V0UmlnaHRWaXN1YWxPdmVyZmxvdyhpbnQgb3Zl
cmZsb3cpIHsgbV9yaWdodFZpc3VhbE92ZXJmbG93ID0gb3ZlcmZsb3c7IH0KKyAgICB2b2lkIHNl
dE1pbllWaXN1YWxPdmVyZmxvdyhpbnQgb3ZlcmZsb3cpIHsgbV9taW5ZVmlzdWFsT3ZlcmZsb3cg
PSBvdmVyZmxvdzsgfQorICAgIHZvaWQgc2V0TWF4WVZpc3VhbE92ZXJmbG93KGludCBvdmVyZmxv
dykgeyBtX21heFlWaXN1YWxPdmVyZmxvdyA9IG92ZXJmbG93OyB9CisgICAgdm9pZCBzZXRNaW5Y
VmlzdWFsT3ZlcmZsb3coaW50IG92ZXJmbG93KSB7IG1fbWluWFZpc3VhbE92ZXJmbG93ID0gb3Zl
cmZsb3c7IH0KKyAgICB2b2lkIHNldE1heFhWaXN1YWxPdmVyZmxvdyhpbnQgb3ZlcmZsb3cpIHsg
bV9tYXhYVmlzdWFsT3ZlcmZsb3cgPSBvdmVyZmxvdzsgfQogICAgIAogICAgIHZvaWQgbW92ZShp
bnQgZHgsIGludCBkeSk7CiAgICAgCkBAIC04NSw3OCArODUsNzggQEAgcHVibGljOgogICAgIHZv
aWQgcmVzZXRMYXlvdXRPdmVyZmxvdyhjb25zdCBJbnRSZWN0JiBkZWZhdWx0UmVjdCk7CiAKIHBy
aXZhdGU6Ci0gICAgaW50IG1fdG9wTGF5b3V0T3ZlcmZsb3c7Ci0gICAgaW50IG1fYm90dG9tTGF5
b3V0T3ZlcmZsb3c7Ci0gICAgaW50IG1fbGVmdExheW91dE92ZXJmbG93OwotICAgIGludCBtX3Jp
Z2h0TGF5b3V0T3ZlcmZsb3c7Ci0KLSAgICBpbnQgbV90b3BWaXN1YWxPdmVyZmxvdzsKLSAgICBp
bnQgbV9ib3R0b21WaXN1YWxPdmVyZmxvdzsKLSAgICBpbnQgbV9sZWZ0VmlzdWFsT3ZlcmZsb3c7
Ci0gICAgaW50IG1fcmlnaHRWaXN1YWxPdmVyZmxvdzsKKyAgICBpbnQgbV9taW5ZTGF5b3V0T3Zl
cmZsb3c7CisgICAgaW50IG1fbWF4WUxheW91dE92ZXJmbG93OworICAgIGludCBtX21pblhMYXlv
dXRPdmVyZmxvdzsKKyAgICBpbnQgbV9tYXhYTGF5b3V0T3ZlcmZsb3c7CisKKyAgICBpbnQgbV9t
aW5ZVmlzdWFsT3ZlcmZsb3c7CisgICAgaW50IG1fbWF4WVZpc3VhbE92ZXJmbG93OworICAgIGlu
dCBtX21pblhWaXN1YWxPdmVyZmxvdzsKKyAgICBpbnQgbV9tYXhYVmlzdWFsT3ZlcmZsb3c7CiB9
OwogCiBpbmxpbmUgSW50UmVjdCBSZW5kZXJPdmVyZmxvdzo6bGF5b3V0T3ZlcmZsb3dSZWN0KCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gSW50UmVjdChtX2xlZnRMYXlvdXRPdmVyZmxvdywgbV90b3BM
YXlvdXRPdmVyZmxvdywgbV9yaWdodExheW91dE92ZXJmbG93IC0gbV9sZWZ0TGF5b3V0T3ZlcmZs
b3csIG1fYm90dG9tTGF5b3V0T3ZlcmZsb3cgLSBtX3RvcExheW91dE92ZXJmbG93KTsKKyAgICBy
ZXR1cm4gSW50UmVjdChtX21pblhMYXlvdXRPdmVyZmxvdywgbV9taW5ZTGF5b3V0T3ZlcmZsb3cs
IG1fbWF4WExheW91dE92ZXJmbG93IC0gbV9taW5YTGF5b3V0T3ZlcmZsb3csIG1fbWF4WUxheW91
dE92ZXJmbG93IC0gbV9taW5ZTGF5b3V0T3ZlcmZsb3cpOwogfQogCiBpbmxpbmUgSW50UmVjdCBS
ZW5kZXJPdmVyZmxvdzo6dmlzdWFsT3ZlcmZsb3dSZWN0KCkgY29uc3QKIHsKLSAgICByZXR1cm4g
SW50UmVjdChtX2xlZnRWaXN1YWxPdmVyZmxvdywgbV90b3BWaXN1YWxPdmVyZmxvdywgbV9yaWdo
dFZpc3VhbE92ZXJmbG93IC0gbV9sZWZ0VmlzdWFsT3ZlcmZsb3csIG1fYm90dG9tVmlzdWFsT3Zl
cmZsb3cgLSBtX3RvcFZpc3VhbE92ZXJmbG93KTsKKyAgICByZXR1cm4gSW50UmVjdChtX21pblhW
aXN1YWxPdmVyZmxvdywgbV9taW5ZVmlzdWFsT3ZlcmZsb3csIG1fbWF4WFZpc3VhbE92ZXJmbG93
IC0gbV9taW5YVmlzdWFsT3ZlcmZsb3csIG1fbWF4WVZpc3VhbE92ZXJmbG93IC0gbV9taW5ZVmlz
dWFsT3ZlcmZsb3cpOwogfQogCiBpbmxpbmUgdm9pZCBSZW5kZXJPdmVyZmxvdzo6bW92ZShpbnQg
ZHgsIGludCBkeSkKIHsKLSAgICBtX3RvcExheW91dE92ZXJmbG93ICs9IGR5OwotICAgIG1fYm90
dG9tTGF5b3V0T3ZlcmZsb3cgKz0gZHk7Ci0gICAgbV9sZWZ0TGF5b3V0T3ZlcmZsb3cgKz0gZHg7
Ci0gICAgbV9yaWdodExheW91dE92ZXJmbG93ICs9IGR4OworICAgIG1fbWluWUxheW91dE92ZXJm
bG93ICs9IGR5OworICAgIG1fbWF4WUxheW91dE92ZXJmbG93ICs9IGR5OworICAgIG1fbWluWExh
eW91dE92ZXJmbG93ICs9IGR4OworICAgIG1fbWF4WExheW91dE92ZXJmbG93ICs9IGR4OwogICAg
IAotICAgIG1fdG9wVmlzdWFsT3ZlcmZsb3cgKz0gZHk7Ci0gICAgbV9ib3R0b21WaXN1YWxPdmVy
ZmxvdyArPSBkeTsKLSAgICBtX2xlZnRWaXN1YWxPdmVyZmxvdyArPSBkeDsKLSAgICBtX3JpZ2h0
VmlzdWFsT3ZlcmZsb3cgKz0gZHg7CisgICAgbV9taW5ZVmlzdWFsT3ZlcmZsb3cgKz0gZHk7Cisg
ICAgbV9tYXhZVmlzdWFsT3ZlcmZsb3cgKz0gZHk7CisgICAgbV9taW5YVmlzdWFsT3ZlcmZsb3cg
Kz0gZHg7CisgICAgbV9tYXhYVmlzdWFsT3ZlcmZsb3cgKz0gZHg7CiB9CiAKIGlubGluZSB2b2lk
IFJlbmRlck92ZXJmbG93OjphZGRMYXlvdXRPdmVyZmxvdyhjb25zdCBJbnRSZWN0JiByZWN0KQog
ewotICAgIG1fdG9wTGF5b3V0T3ZlcmZsb3cgPSBzdGQ6Om1pbihyZWN0LnkoKSwgbV90b3BMYXlv
dXRPdmVyZmxvdyk7Ci0gICAgbV9ib3R0b21MYXlvdXRPdmVyZmxvdyA9IHN0ZDo6bWF4KHJlY3Qu
bWF4WSgpLCBtX2JvdHRvbUxheW91dE92ZXJmbG93KTsKLSAgICBtX2xlZnRMYXlvdXRPdmVyZmxv
dyA9IHN0ZDo6bWluKHJlY3QueCgpLCBtX2xlZnRMYXlvdXRPdmVyZmxvdyk7Ci0gICAgbV9yaWdo
dExheW91dE92ZXJmbG93ID0gc3RkOjptYXgocmVjdC5tYXhYKCksIG1fcmlnaHRMYXlvdXRPdmVy
Zmxvdyk7CisgICAgbV9taW5ZTGF5b3V0T3ZlcmZsb3cgPSBzdGQ6Om1pbihyZWN0LnkoKSwgbV9t
aW5ZTGF5b3V0T3ZlcmZsb3cpOworICAgIG1fbWF4WUxheW91dE92ZXJmbG93ID0gc3RkOjptYXgo
cmVjdC5tYXhZKCksIG1fbWF4WUxheW91dE92ZXJmbG93KTsKKyAgICBtX21pblhMYXlvdXRPdmVy
ZmxvdyA9IHN0ZDo6bWluKHJlY3QueCgpLCBtX21pblhMYXlvdXRPdmVyZmxvdyk7CisgICAgbV9t
YXhYTGF5b3V0T3ZlcmZsb3cgPSBzdGQ6Om1heChyZWN0Lm1heFgoKSwgbV9tYXhYTGF5b3V0T3Zl
cmZsb3cpOwogfQogCiBpbmxpbmUgdm9pZCBSZW5kZXJPdmVyZmxvdzo6YWRkVmlzdWFsT3ZlcmZs
b3coY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICBtX3RvcFZpc3VhbE92ZXJmbG93ID0gc3Rk
OjptaW4ocmVjdC55KCksIG1fdG9wVmlzdWFsT3ZlcmZsb3cpOwotICAgIG1fYm90dG9tVmlzdWFs
T3ZlcmZsb3cgPSBzdGQ6Om1heChyZWN0Lm1heFkoKSwgbV9ib3R0b21WaXN1YWxPdmVyZmxvdyk7
Ci0gICAgbV9sZWZ0VmlzdWFsT3ZlcmZsb3cgPSBzdGQ6Om1pbihyZWN0LngoKSwgbV9sZWZ0Vmlz
dWFsT3ZlcmZsb3cpOwotICAgIG1fcmlnaHRWaXN1YWxPdmVyZmxvdyA9IHN0ZDo6bWF4KHJlY3Qu
bWF4WCgpLCBtX3JpZ2h0VmlzdWFsT3ZlcmZsb3cpOworICAgIG1fbWluWVZpc3VhbE92ZXJmbG93
ID0gc3RkOjptaW4ocmVjdC55KCksIG1fbWluWVZpc3VhbE92ZXJmbG93KTsKKyAgICBtX21heFlW
aXN1YWxPdmVyZmxvdyA9IHN0ZDo6bWF4KHJlY3QubWF4WSgpLCBtX21heFlWaXN1YWxPdmVyZmxv
dyk7CisgICAgbV9taW5YVmlzdWFsT3ZlcmZsb3cgPSBzdGQ6Om1pbihyZWN0LngoKSwgbV9taW5Y
VmlzdWFsT3ZlcmZsb3cpOworICAgIG1fbWF4WFZpc3VhbE92ZXJmbG93ID0gc3RkOjptYXgocmVj
dC5tYXhYKCksIG1fbWF4WFZpc3VhbE92ZXJmbG93KTsKIH0KIAogaW5saW5lIHZvaWQgUmVuZGVy
T3ZlcmZsb3c6OnNldExheW91dE92ZXJmbG93KGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAg
bV90b3BMYXlvdXRPdmVyZmxvdyA9IHJlY3QueSgpOwotICAgIG1fYm90dG9tTGF5b3V0T3ZlcmZs
b3cgPSByZWN0Lm1heFkoKTsKLSAgICBtX2xlZnRMYXlvdXRPdmVyZmxvdyA9IHJlY3QueCgpOwot
ICAgIG1fcmlnaHRMYXlvdXRPdmVyZmxvdyA9IHJlY3QubWF4WCgpOworICAgIG1fbWluWUxheW91
dE92ZXJmbG93ID0gcmVjdC55KCk7CisgICAgbV9tYXhZTGF5b3V0T3ZlcmZsb3cgPSByZWN0Lm1h
eFkoKTsKKyAgICBtX21pblhMYXlvdXRPdmVyZmxvdyA9IHJlY3QueCgpOworICAgIG1fbWF4WExh
eW91dE92ZXJmbG93ID0gcmVjdC5tYXhYKCk7CiB9CiAKIGlubGluZSB2b2lkIFJlbmRlck92ZXJm
bG93OjpzZXRWaXN1YWxPdmVyZmxvdyhjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIG1fdG9w
VmlzdWFsT3ZlcmZsb3cgPSByZWN0LnkoKTsKLSAgICBtX2JvdHRvbVZpc3VhbE92ZXJmbG93ID0g
cmVjdC5tYXhZKCk7Ci0gICAgbV9sZWZ0VmlzdWFsT3ZlcmZsb3cgPSByZWN0LngoKTsKLSAgICBt
X3JpZ2h0VmlzdWFsT3ZlcmZsb3cgPSByZWN0Lm1heFgoKTsKKyAgICBtX21pbllWaXN1YWxPdmVy
ZmxvdyA9IHJlY3QueSgpOworICAgIG1fbWF4WVZpc3VhbE92ZXJmbG93ID0gcmVjdC5tYXhZKCk7
CisgICAgbV9taW5YVmlzdWFsT3ZlcmZsb3cgPSByZWN0LngoKTsKKyAgICBtX21heFhWaXN1YWxP
dmVyZmxvdyA9IHJlY3QubWF4WCgpOwogfQogCiBpbmxpbmUgdm9pZCBSZW5kZXJPdmVyZmxvdzo6
cmVzZXRMYXlvdXRPdmVyZmxvdyhjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIG1fdG9wTGF5
b3V0T3ZlcmZsb3cgPSByZWN0LnkoKTsKLSAgICBtX2JvdHRvbUxheW91dE92ZXJmbG93ID0gcmVj
dC5tYXhZKCk7Ci0gICAgbV9sZWZ0TGF5b3V0T3ZlcmZsb3cgPSByZWN0LngoKTsKLSAgICBtX3Jp
Z2h0TGF5b3V0T3ZlcmZsb3cgPSByZWN0Lm1heFgoKTsKKyAgICBtX21pbllMYXlvdXRPdmVyZmxv
dyA9IHJlY3QueSgpOworICAgIG1fbWF4WUxheW91dE92ZXJmbG93ID0gcmVjdC5tYXhZKCk7Cisg
ICAgbV9taW5YTGF5b3V0T3ZlcmZsb3cgPSByZWN0LngoKTsKKyAgICBtX21heFhMYXlvdXRPdmVy
ZmxvdyA9IHJlY3QubWF4WCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAJKHJldmlzaW9uIDc3
Mzg0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTcyLDggKzE3Miw4IEBAIGJvb2wgUmVuZGVyUmVwbGFjZWQ6OnNob3Vs
ZFBhaW50KFBhaW50SW4KICAgICBpbnQgY3VycmVudFRZID0gdHkgKyB5KCk7CiAKICAgICAvLyBF
YXJseSBleGl0IGlmIHRoZSBlbGVtZW50IHRvdWNoZXMgdGhlIGVkZ2VzLgotICAgIGludCB0b3Ag
PSBjdXJyZW50VFkgKyB0b3BWaXN1YWxPdmVyZmxvdygpOwotICAgIGludCBib3R0b20gPSBjdXJy
ZW50VFkgKyBib3R0b21WaXN1YWxPdmVyZmxvdygpOworICAgIGludCB0b3AgPSBjdXJyZW50VFkg
KyBtaW5ZVmlzdWFsT3ZlcmZsb3coKTsKKyAgICBpbnQgYm90dG9tID0gY3VycmVudFRZICsgbWF4
WVZpc3VhbE92ZXJmbG93KCk7CiAgICAgaWYgKGlzU2VsZWN0ZWQoKSAmJiBtX2lubGluZUJveFdy
YXBwZXIpIHsKICAgICAgICAgaW50IHNlbFRvcCA9IHR5ICsgbV9pbmxpbmVCb3hXcmFwcGVyLT5y
b290KCktPnNlbGVjdGlvblRvcCgpOwogICAgICAgICBpbnQgc2VsQm90dG9tID0gdHkgKyBzZWxU
b3AgKyBtX2lubGluZUJveFdyYXBwZXItPnJvb3QoKS0+c2VsZWN0aW9uSGVpZ2h0KCk7CkBAIC0x
ODIsNyArMTgyLDcgQEAgYm9vbCBSZW5kZXJSZXBsYWNlZDo6c2hvdWxkUGFpbnQoUGFpbnRJbgog
ICAgIH0KICAgICAKICAgICBpbnQgb3MgPSAyICogbWF4aW1hbE91dGxpbmVTaXplKHBhaW50SW5m
by5waGFzZSk7Ci0gICAgaWYgKGN1cnJlbnRUWCArIGxlZnRWaXN1YWxPdmVyZmxvdygpID49IHBh
aW50SW5mby5yZWN0Lm1heFgoKSArIG9zIHx8IGN1cnJlbnRUWCArIHJpZ2h0VmlzdWFsT3ZlcmZs
b3coKSA8PSBwYWludEluZm8ucmVjdC54KCkgLSBvcykKKyAgICBpZiAoY3VycmVudFRYICsgbWlu
WFZpc3VhbE92ZXJmbG93KCkgPj0gcGFpbnRJbmZvLnJlY3QubWF4WCgpICsgb3MgfHwgY3VycmVu
dFRYICsgbWF4WFZpc3VhbE92ZXJmbG93KCkgPD0gcGFpbnRJbmZvLnJlY3QueCgpIC0gb3MpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAodG9wID49IHBhaW50SW5mby5yZWN0Lm1heFko
KSArIG9zIHx8IGJvdHRvbSA8PSBwYWludEluZm8ucmVjdC55KCkgLSBvcykKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3Bw
CShyZXZpc2lvbiA3NzM4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2MCw3ICszNjAsNyBAQCB2b2lkIFJlbmRlclRhYmxl
OjpsYXlvdXQoKQogICAgIHdoaWxlIChzZWN0aW9uKSB7CiAgICAgICAgIGlmICghc2VjdGlvbk1v
dmVkICYmIHNlY3Rpb24tPmxvZ2ljYWxUb3AoKSAhPSBsb2dpY2FsSGVpZ2h0KCkpIHsKICAgICAg
ICAgICAgIHNlY3Rpb25Nb3ZlZCA9IHRydWU7Ci0gICAgICAgICAgICBtb3ZlZFNlY3Rpb25Mb2dp
Y2FsVG9wID0gbWluKGxvZ2ljYWxIZWlnaHQoKSwgc2VjdGlvbi0+bG9naWNhbFRvcCgpKSArIChz
dHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gc2VjdGlvbi0+dG9wVmlzdWFsT3Zl
cmZsb3coKSA6IHNlY3Rpb24tPmxlZnRWaXN1YWxPdmVyZmxvdygpKTsKKyAgICAgICAgICAgIG1v
dmVkU2VjdGlvbkxvZ2ljYWxUb3AgPSBtaW4obG9naWNhbEhlaWdodCgpLCBzZWN0aW9uLT5sb2dp
Y2FsVG9wKCkpICsgKHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBzZWN0aW9u
LT5taW5ZVmlzdWFsT3ZlcmZsb3coKSA6IHNlY3Rpb24tPm1pblhWaXN1YWxPdmVyZmxvdygpKTsK
ICAgICAgICAgfQogICAgICAgICBzZWN0aW9uLT5zZXRMb2dpY2FsTG9jYXRpb24oc2VjdGlvbkxv
Z2ljYWxMZWZ0LCBsb2dpY2FsSGVpZ2h0KCkpOwogCkBAIC00MDAsOSArNDAwLDkgQEAgdm9pZCBS
ZW5kZXJUYWJsZTo6bGF5b3V0KCkKICAgICAvLyBSZXBhaW50IHdpdGggb3VyIG5ldyBib3VuZHMg
aWYgdGhleSBhcmUgZGlmZmVyZW50IGZyb20gb3VyIG9sZCBib3VuZHMuCiAgICAgaWYgKCFkaWRG
dWxsUmVwYWludCAmJiBzZWN0aW9uTW92ZWQpIHsKICAgICAgICAgaWYgKHN0eWxlKCktPmlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAgICAgICAgICByZXBhaW50UmVjdGFuZ2xlKEludFJl
Y3QobGVmdFZpc3VhbE92ZXJmbG93KCksIG1vdmVkU2VjdGlvbkxvZ2ljYWxUb3AsIHJpZ2h0Vmlz
dWFsT3ZlcmZsb3coKSAtIGxlZnRWaXN1YWxPdmVyZmxvdygpLCBib3R0b21WaXN1YWxPdmVyZmxv
dygpIC0gbW92ZWRTZWN0aW9uTG9naWNhbFRvcCkpOworICAgICAgICAgICAgcmVwYWludFJlY3Rh
bmdsZShJbnRSZWN0KG1pblhWaXN1YWxPdmVyZmxvdygpLCBtb3ZlZFNlY3Rpb25Mb2dpY2FsVG9w
LCBtYXhYVmlzdWFsT3ZlcmZsb3coKSAtIG1pblhWaXN1YWxPdmVyZmxvdygpLCBtYXhZVmlzdWFs
T3ZlcmZsb3coKSAtIG1vdmVkU2VjdGlvbkxvZ2ljYWxUb3ApKTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgcmVwYWludFJlY3RhbmdsZShJbnRSZWN0KG1vdmVkU2VjdGlvbkxvZ2ljYWxUb3As
IHRvcFZpc3VhbE92ZXJmbG93KCksIHJpZ2h0VmlzdWFsT3ZlcmZsb3coKSAtIG1vdmVkU2VjdGlv
bkxvZ2ljYWxUb3AsIGJvdHRvbVZpc3VhbE92ZXJmbG93KCkgLSB0b3BWaXN1YWxPdmVyZmxvdygp
KSk7CisgICAgICAgICAgICByZXBhaW50UmVjdGFuZ2xlKEludFJlY3QobW92ZWRTZWN0aW9uTG9n
aWNhbFRvcCwgbWluWVZpc3VhbE92ZXJmbG93KCksIG1heFhWaXN1YWxPdmVyZmxvdygpIC0gbW92
ZWRTZWN0aW9uTG9naWNhbFRvcCwgbWF4WVZpc3VhbE92ZXJmbG93KCkgLSBtaW5ZVmlzdWFsT3Zl
cmZsb3coKSkpOwogICAgIH0KIAogICAgIHNldE5lZWRzTGF5b3V0KGZhbHNlKTsKQEAgLTQ1NCw5
ICs0NTQsOSBAQCB2b2lkIFJlbmRlclRhYmxlOjpwYWludChQYWludEluZm8mIHBhaW50CiAgICAg
UGFpbnRQaGFzZSBwYWludFBoYXNlID0gcGFpbnRJbmZvLnBoYXNlOwogCiAgICAgaW50IG9zID0g
MiAqIG1heGltYWxPdXRsaW5lU2l6ZShwYWludFBoYXNlKTsKLSAgICBpZiAodHkgKyB0b3BWaXN1
YWxPdmVyZmxvdygpID49IHBhaW50SW5mby5yZWN0Lm1heFkoKSArIG9zIHx8IHR5ICsgYm90dG9t
VmlzdWFsT3ZlcmZsb3coKSA8PSBwYWludEluZm8ucmVjdC55KCkgLSBvcykKKyAgICBpZiAodHkg
KyBtaW5ZVmlzdWFsT3ZlcmZsb3coKSA+PSBwYWludEluZm8ucmVjdC5tYXhZKCkgKyBvcyB8fCB0
eSArIG1heFlWaXN1YWxPdmVyZmxvdygpIDw9IHBhaW50SW5mby5yZWN0LnkoKSAtIG9zKQogICAg
ICAgICByZXR1cm47Ci0gICAgaWYgKHR4ICsgbGVmdFZpc3VhbE92ZXJmbG93KCkgPj0gcGFpbnRJ
bmZvLnJlY3QubWF4WCgpICsgb3MgfHwgdHggKyByaWdodFZpc3VhbE92ZXJmbG93KCkgPD0gcGFp
bnRJbmZvLnJlY3QueCgpIC0gb3MpCisgICAgaWYgKHR4ICsgbWluWFZpc3VhbE92ZXJmbG93KCkg
Pj0gcGFpbnRJbmZvLnJlY3QubWF4WCgpICsgb3MgfHwgdHggKyBtYXhYVmlzdWFsT3ZlcmZsb3co
KSA8PSBwYWludEluZm8ucmVjdC54KCkgLSBvcykKICAgICAgICAgcmV0dXJuOwogCiAgICAgYm9v
bCBwdXNoZWRDbGlwID0gcHVzaENvbnRlbnRzQ2xpcChwYWludEluZm8sIHR4LCB0eSk7ICAgIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAJKHJl
dmlzaW9uIDc3Mzg0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2Vs
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2Nyw5ICsyNjcsOSBAQCBJbnRSZWN0IFJlbmRlclRh
YmxlQ2VsbDo6Y2xpcHBlZE92ZXJmbG93CiAgICAgICAgICAgICByaWdodCA9IG1heChyaWdodCwg
YmVsb3ctPmJvcmRlckhhbGZSaWdodCh0cnVlKSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgbGVm
dCA9IG1heChsZWZ0LCAtbGVmdFZpc3VhbE92ZXJmbG93KCkpOwotICAgIHRvcCA9IG1heCh0b3As
IC10b3BWaXN1YWxPdmVyZmxvdygpKTsKLSAgICBJbnRSZWN0IHIoLWxlZnQsIC0gdG9wLCBsZWZ0
ICsgbWF4KHdpZHRoKCkgKyByaWdodCwgcmlnaHRWaXN1YWxPdmVyZmxvdygpKSwgdG9wICsgbWF4
KGhlaWdodCgpICsgYm90dG9tLCBib3R0b21WaXN1YWxPdmVyZmxvdygpKSk7CisgICAgbGVmdCA9
IG1heChsZWZ0LCAtbWluWFZpc3VhbE92ZXJmbG93KCkpOworICAgIHRvcCA9IG1heCh0b3AsIC1t
aW5ZVmlzdWFsT3ZlcmZsb3coKSk7CisgICAgSW50UmVjdCByKC1sZWZ0LCAtIHRvcCwgbGVmdCAr
IG1heCh3aWR0aCgpICsgcmlnaHQsIG1heFhWaXN1YWxPdmVyZmxvdygpKSwgdG9wICsgbWF4KGhl
aWdodCgpICsgYm90dG9tLCBtYXhZVmlzdWFsT3ZlcmZsb3coKSkpOwogCiAgICAgaWYgKFJlbmRl
clZpZXcqIHYgPSB2aWV3KCkpIHsKICAgICAgICAgLy8gRklYTUU6IGxheW91dERlbHRhIG5lZWRz
IHRvIGJlIGFwcGxpZWQgaW4gcGFydHMgYmVmb3JlL2FmdGVyIHRyYW5zZm9ybXMgYW5kCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCShyZXZp
c2lvbiA3NzM4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIxLDEwICs2MjEsMTAgQEAgc3RhdGljIHZvaWQgd3Jp
dGVMYXllcnMoVGV4dFN0cmVhbSYgdHMsIAogICAgIC8vIEZJWE1FOiBBcHBseSBvdmVyZmxvdyB0
byB0aGUgcm9vdCBsYXllciB0byBub3QgYnJlYWsgZXZlcnkgdGVzdC4gIENvbXBsZXRlIGhhY2su
ICBTaWdoLgogICAgIEludFJlY3QgcGFpbnREaXJ0eVJlY3QocGFpbnRSZWN0KTsKICAgICBpZiAo
cm9vdExheWVyID09IGwpIHsKLSAgICAgICAgcGFpbnREaXJ0eVJlY3Quc2V0V2lkdGgobWF4KHBh
aW50RGlydHlSZWN0LndpZHRoKCksIHJvb3RMYXllci0+cmVuZGVyQm94KCktPnJpZ2h0TGF5b3V0
T3ZlcmZsb3coKSkpOwotICAgICAgICBwYWludERpcnR5UmVjdC5zZXRIZWlnaHQobWF4KHBhaW50
RGlydHlSZWN0LmhlaWdodCgpLCByb290TGF5ZXItPnJlbmRlckJveCgpLT5ib3R0b21MYXlvdXRP
dmVyZmxvdygpKSk7Ci0gICAgICAgIGwtPnNldFdpZHRoKG1heChsLT53aWR0aCgpLCBsLT5yZW5k
ZXJCb3goKS0+cmlnaHRMYXlvdXRPdmVyZmxvdygpKSk7Ci0gICAgICAgIGwtPnNldEhlaWdodCht
YXgobC0+aGVpZ2h0KCksIGwtPnJlbmRlckJveCgpLT5ib3R0b21MYXlvdXRPdmVyZmxvdygpKSk7
CisgICAgICAgIHBhaW50RGlydHlSZWN0LnNldFdpZHRoKG1heChwYWludERpcnR5UmVjdC53aWR0
aCgpLCByb290TGF5ZXItPnJlbmRlckJveCgpLT5tYXhYTGF5b3V0T3ZlcmZsb3coKSkpOworICAg
ICAgICBwYWludERpcnR5UmVjdC5zZXRIZWlnaHQobWF4KHBhaW50RGlydHlSZWN0LmhlaWdodCgp
LCByb290TGF5ZXItPnJlbmRlckJveCgpLT5tYXhZTGF5b3V0T3ZlcmZsb3coKSkpOworICAgICAg
ICBsLT5zZXRXaWR0aChtYXgobC0+d2lkdGgoKSwgbC0+cmVuZGVyQm94KCktPm1heFhMYXlvdXRP
dmVyZmxvdygpKSk7CisgICAgICAgIGwtPnNldEhlaWdodChtYXgobC0+aGVpZ2h0KCksIGwtPnJl
bmRlckJveCgpLT5tYXhZTGF5b3V0T3ZlcmZsb3coKSkpOwogICAgIH0KICAgICAKICAgICAvLyBD
YWxjdWxhdGUgdGhlIGNsaXAgcmVjdHMgd2Ugc2hvdWxkIHVzZS4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAJKHJldmlzaW9uIDc3Mzg0KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NTEsNyAr
NjUxLDcgQEAgSW50UmVjdCBSZW5kZXJWaWV3Ojp2aWV3UmVjdCgpIGNvbnN0CiAKIGludCBSZW5k
ZXJWaWV3Ojpkb2NUb3AoKSBjb25zdAogewotICAgIEludFJlY3Qgb3ZlcmZsb3dSZWN0KDAsIHRv
cExheW91dE92ZXJmbG93KCksIDAsIGJvdHRvbUxheW91dE92ZXJmbG93KCkgLSB0b3BMYXlvdXRP
dmVyZmxvdygpKTsKKyAgICBJbnRSZWN0IG92ZXJmbG93UmVjdCgwLCBtaW5ZTGF5b3V0T3ZlcmZs
b3coKSwgMCwgbWF4WUxheW91dE92ZXJmbG93KCkgLSBtaW5ZTGF5b3V0T3ZlcmZsb3coKSk7CiAg
ICAgZmxpcEZvcldyaXRpbmdNb2RlKG92ZXJmbG93UmVjdCk7CiAgICAgaWYgKGhhc1RyYW5zZm9y
bSgpKQogICAgICAgICBvdmVyZmxvd1JlY3QgPSBsYXllcigpLT5jdXJyZW50VHJhbnNmb3JtKCku
bWFwUmVjdChvdmVyZmxvd1JlY3QpOwo=
</data>
<flag name="review"
          id="72466"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>