<?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>49020</bug_id>
          
          <creation_ts>2010-11-04 13:24:40 -0700</creation_ts>
          <short_desc>Need to simulate DEPTH_STENCIL in framebufferRenderbuffer / getFramebufferAttachmentParameter</short_desc>
          <delta_ts>2010-11-05 13:29:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</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="Zhenyao Mo">zmo</reporter>
          <assigned_to name="Zhenyao Mo">zmo</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>enne</cc>
    
    <cc>kbr</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>304828</commentid>
    <comment_count>0</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-11-04 13:24:40 -0700</bug_when>
    <thetext>Currently if DEPTH_STENCIL_ATTACHMENT is used, we attach to DEPTH_ATTACHMENT and STENCIL_ATTACHMENT in chromium --in-process-webgl and safari port.  We need to move this simulation to WebGLRenderingContext level so all ports including chromium command buffer will be covered.

Also, generate INVALID_OPERATION in getFramebufferAttachmentParameter if attachments conflict is detected (otherwise, for example, if query DEPTH_ATTACHMENT, DEPTH_STENCIL_ATTACHMENT might be turned).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305047</commentid>
    <comment_count>1</comment_count>
      <attachid>73017</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-11-04 17:43:58 -0700</bug_when>
    <thetext>Created attachment 73017
patch

Per discussion with Gregg, we do the enum mapping at WebGLRenderingContext level instead of in command buffer (and other lower-level ports).

Tested in Chrome command buffer, Chrome in-process-webgl, and Safari, all three ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305056</commentid>
    <comment_count>2</comment_count>
      <attachid>73017</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-11-04 17:56:21 -0700</bug_when>
    <thetext>Comment on attachment 73017
patch

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

Generally looks good. It would be nicer to reduce duplication in the re-attachment code but I can&apos;t think of a more terse way to express it. One issue requiring a revision.

&gt; WebCore/html/canvas/WebGLRenderingContext.cpp:2294
&gt; +                                           0x88F0, // GL_DEPTH24_STENCIL8

This enum should be added to Extensions3D.h and the documentation for that class updated to indicate that it supports GL_OES_packed_depth_stencil and GL_EXT_packed_depth_stencil.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305072</commentid>
    <comment_count>3</comment_count>
      <attachid>73021</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-11-04 18:15:51 -0700</bug_when>
    <thetext>Created attachment 73021
revised patch: responding to kbr&apos;s review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305077</commentid>
    <comment_count>4</comment_count>
      <attachid>73023</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-11-04 18:18:46 -0700</bug_when>
    <thetext>Created attachment 73023
revised patch: updated the change log</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305445</commentid>
    <comment_count>5</comment_count>
      <attachid>73023</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-11-05 12:07:54 -0700</bug_when>
    <thetext>Comment on attachment 73023
revised patch: updated the change log

Great. Thanks for taking care of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>305489</commentid>
    <comment_count>6</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-11-05 13:29:10 -0700</bug_when>
    <thetext>Committed r71449: &lt;http://trac.webkit.org/changeset/71449&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73017</attachid>
            <date>2010-11-04 17:43:58 -0700</date>
            <delta_ts>2010-11-04 18:15:51 -0700</delta_ts>
            <desc>patch</desc>
            <filename>fbo.patch</filename>
            <type>text/plain</type>
            <size>12613</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTM3MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTAtMTEtMDQgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZWVkIHRv
IHNpbXVsYXRlIERFUFRIX1NURU5DSUwgaW4gZnJhbWVidWZmZXJSZW5kZXJidWZmZXIgLyBnZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MDIwCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TEZyYW1lYnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6Omdl
dEF0dGFjaG1lbnQpOiBSZXR1cm4gdGhlIGF0dGFjaGVkIHJlbmRlcmJ1ZmZlci90ZXh0dXJlLgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6aXNJbmNvbXBsZXRlKTogQWRkIGFu
IGV4dHJhIHBhcmFtZXRlciBkZWNpZGluZyB3aGV0aGVyIHdlIHNob3VsZCBjaGVjayBpbnRlcm5h
bCBmb3JtYXQgbWF0Y2hpbmcgdGhlIGF0dGFjaG1lbnQgcG9pbnQgb3Igbm90LgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6b25BY2Nlc3MpOiBQYXNzIGV4dHJhIHBhcmFtZXRl
ciBpbiBpc0luY29tcGxldGUuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZl
ci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNoZWNrRnJhbWVidWZmZXJT
dGF0dXMpOiBQYXNzIGV4dHJhIHBhcmFtZXRlciBpbiBpc0luY29tcGxldGUuCisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKTog
RW11bGF0ZSBERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQ7IHJlLWF0dGFjaCBwcmV2aW91c2x5IGNv
bmZsaWN0ZWQgYnVmZmVycyB1cG9uIGRldGFjaG1lbnQuCisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcik6IFRo
cm93IGFuIGVycm9yIHdoZW4gY29uZmxpY3RlZCBhdHRhY2htZW50cyBleGlzdC4KKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6IE1h
cCBERVBUSF9TVEVOQ0lMIHRvIERFUFRIMjRfU1RFTkNJTDguCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6IFJlbW92
ZSBlbXVsYXRpb24gY29kZSBhdCB0aGlzIGxldmVsLgorCiAyMDEwLTExLTA0ICBLZW5uZXRoIFJ1
c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRo
LgpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCShyZXZpc2lv
biA3MTM2NykKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwMyw2ICsxMDMsMjQgQEAgdm9pZCBXZWJHTEZyYW1lYnVmZmVyOjpz
ZXRBdHRhY2htZW50KHVucwogICAgIH0KIH0KIAorV2ViR0xPYmplY3QqIFdlYkdMRnJhbWVidWZm
ZXI6OmdldEF0dGFjaG1lbnQodW5zaWduZWQgbG9uZyBhdHRhY2htZW50KSBjb25zdAoreworICAg
IGlmICghb2JqZWN0KCkpCisgICAgICAgIHJldHVybiAwOworICAgIHN3aXRjaCAoYXR0YWNobWVu
dCkgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwOgorICAg
ICAgICByZXR1cm4gbV9jb2xvckF0dGFjaG1lbnQuZ2V0KCk7CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHQzRDo6REVQVEhfQVRUQUNITUVOVDoKKyAgICAgICAgcmV0dXJuIG1fZGVwdGhBdHRhY2ht
ZW50LmdldCgpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQVRUQUNITUVO
VDoKKyAgICAgICAgcmV0dXJuIG1fc3RlbmNpbEF0dGFjaG1lbnQuZ2V0KCk7CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6REVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UOgorICAgICAgICByZXR1
cm4gbV9kZXB0aFN0ZW5jaWxBdHRhY2htZW50LmdldCgpOworICAgIGRlZmF1bHQ6CisgICAgICAg
IHJldHVybiAwOworICAgIH0KK30KKwogdm9pZCBXZWJHTEZyYW1lYnVmZmVyOjpyZW1vdmVBdHRh
Y2htZW50KFdlYkdMT2JqZWN0KiBhdHRhY2htZW50KQogewogICAgIGlmICghb2JqZWN0KCkpCkBA
IC0xMzcsMjIgKzE1NSwyMyBAQCB1bnNpZ25lZCBsb25nIFdlYkdMRnJhbWVidWZmZXI6OmdldENv
bG9yCiAgICAgcmV0dXJuIDA7CiB9CiAKLWJvb2wgV2ViR0xGcmFtZWJ1ZmZlcjo6aXNJbmNvbXBs
ZXRlKCkgY29uc3QKK2Jvb2wgV2ViR0xGcmFtZWJ1ZmZlcjo6aXNJbmNvbXBsZXRlKGJvb2wgY2hl
Y2tJbnRlcm5hbEZvcm1hdCkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBpbnQgY291bnQgPSAwOwog
ICAgIGlmIChpc0RlcHRoQXR0YWNoZWQoKSkgewotICAgICAgICBpZiAoZ2V0SW50ZXJuYWxGb3Jt
YXQobV9kZXB0aEF0dGFjaG1lbnQuZ2V0KCkpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9D
T01QT05FTlQxNikKKyAgICAgICAgaWYgKGNoZWNrSW50ZXJuYWxGb3JtYXQgJiYgZ2V0SW50ZXJu
YWxGb3JtYXQobV9kZXB0aEF0dGFjaG1lbnQuZ2V0KCkpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpE
RVBUSF9DT01QT05FTlQxNikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjb3Vu
dCsrOwogICAgIH0KICAgICBpZiAoaXNTdGVuY2lsQXR0YWNoZWQoKSkgewotICAgICAgICBpZiAo
Z2V0SW50ZXJuYWxGb3JtYXQobV9zdGVuY2lsQXR0YWNobWVudC5nZXQoKSkgIT0gR3JhcGhpY3ND
b250ZXh0M0Q6OlNURU5DSUxfSU5ERVg4KQorICAgICAgICBpZiAoY2hlY2tJbnRlcm5hbEZvcm1h
dCAmJiBnZXRJbnRlcm5hbEZvcm1hdChtX3N0ZW5jaWxBdHRhY2htZW50LmdldCgpKSAhPSBHcmFw
aGljc0NvbnRleHQzRDo6U1RFTkNJTF9JTkRFWDgpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgY291bnQrKzsKICAgICB9CiAgICAgaWYgKGlzRGVwdGhTdGVuY2lsQXR0YWNoZWQo
KSkgewotICAgICAgICBpZiAoZ2V0SW50ZXJuYWxGb3JtYXQobV9kZXB0aFN0ZW5jaWxBdHRhY2ht
ZW50LmdldCgpKSAhPSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfU1RFTkNJTAotICAgICAgICAg
ICAgfHwgIWlzVmFsaWQobV9kZXB0aFN0ZW5jaWxBdHRhY2htZW50LmdldCgpKSkKKyAgICAgICAg
aWYgKGNoZWNrSW50ZXJuYWxGb3JtYXQgJiYgZ2V0SW50ZXJuYWxGb3JtYXQobV9kZXB0aFN0ZW5j
aWxBdHRhY2htZW50LmdldCgpKSAhPSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfU1RFTkNJTCkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAoIWlzVmFsaWQobV9kZXB0aFN0
ZW5jaWxBdHRhY2htZW50LmdldCgpKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICBjb3VudCsrOwogICAgIH0KQEAgLTE2Myw3ICsxODIsNyBAQCBib29sIFdlYkdMRnJhbWVidWZm
ZXI6OmlzSW5jb21wbGV0ZSgpIGNvCiAKIGJvb2wgV2ViR0xGcmFtZWJ1ZmZlcjo6b25BY2Nlc3Mo
KQogewotICAgIGlmIChpc0luY29tcGxldGUoKSkKKyAgICBpZiAoaXNJbmNvbXBsZXRlKHRydWUp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIGluaXRpYWxpemVSZW5kZXJidWZm
ZXJzKCk7CiB9CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaAkocmV2
aXNpb24gNzEzNjcpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBdHRh
Y2htZW50KHVuc2lnbmVkIGxvbmcsIFdlYkdMT2JqZWN0Kik7CiAgICAgLy8gSWYgYW4gb2JqZWN0
IGlzIGF0dGFjaGVkIHRvIHRoZSBmcmFtZWJ1ZmZlciwgcmVtb3ZlIGl0LgogICAgIHZvaWQgcmVt
b3ZlQXR0YWNobWVudChXZWJHTE9iamVjdCopOworICAgIFdlYkdMT2JqZWN0KiBnZXRBdHRhY2ht
ZW50KHVuc2lnbmVkIGxvbmcpIGNvbnN0OwogCiAgICAgdW5zaWduZWQgbG9uZyBnZXRDb2xvckJ1
ZmZlckZvcm1hdCgpIGNvbnN0OwogCkBAIC01Myw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBib29s
IG9uQWNjZXNzKCk7CiAKICAgICAvLyBSZXR1cm4gZmFsc2UgZG9lcyBub3QgbWVhbiBDT01QTEVU
RSwgbWlnaHQgc3RpbGwgYmUgSU5DT01QTEVURS4KLSAgICBib29sIGlzSW5jb21wbGV0ZSgpIGNv
bnN0OworICAgIGJvb2wgaXNJbmNvbXBsZXRlKGJvb2wgY2hlY2tJbnRlcm5hbEZvcm1hdCkgY29u
c3Q7CiAKIHByb3RlY3RlZDoKICAgICBXZWJHTEZyYW1lYnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dCopOwpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmNwcAkocmV2aXNpb24gNzEzNjcpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwOCw3ICs1MDgsNyBAQCB1bnNp
Z25lZCBsb25nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y2hlCiAgICAgfQogICAgIGlmICghbV9m
cmFtZWJ1ZmZlckJpbmRpbmcgfHwgIW1fZnJhbWVidWZmZXJCaW5kaW5nLT5vYmplY3QoKSkKICAg
ICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9DT01QTEVURTsKLSAg
ICBpZiAobV9mcmFtZWJ1ZmZlckJpbmRpbmctPmlzSW5jb21wbGV0ZSgpKQorICAgIGlmIChtX2Zy
YW1lYnVmZmVyQmluZGluZy0+aXNJbmNvbXBsZXRlKHRydWUpKQogICAgICAgICByZXR1cm4gR3Jh
cGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEOwogICAgIHJldHVybiBtX2Nv
bnRleHQtPmNoZWNrRnJhbWVidWZmZXJTdGF0dXModGFyZ2V0KTsKICAgICBjbGVhbnVwQWZ0ZXJH
cmFwaGljc0NhbGwoZmFsc2UpOwpAQCAtMTIwNSw4ICsxMjA1LDU0IEBAIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpmcmFtZWJ1ZmZlclIKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFy
Z2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIG9iamVjdE9yWmVybyhidWZmZXIp
KTsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlck9iamVjdCA9IG9iamVjdE9yWmVybyhidWZm
ZXIpOworICAgIGJvb2wgcmVhdHRhY2hEZXB0aCA9IGZhbHNlOworICAgIGJvb2wgcmVhdHRhY2hT
dGVuY2lsID0gZmFsc2U7CisgICAgYm9vbCByZWF0dGFjaERlcHRoU3RlbmNpbERlcHRoID0gZmFs
c2U7CisgICAgYm9vbCByZWF0dGFjaERlcHRoU3RlbmNpbFN0ZW5jaWwgPSBmYWxzZTsKKyAgICBz
d2l0Y2ggKGF0dGFjaG1lbnQpIHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9T
VEVOQ0lMX0FUVEFDSE1FTlQ6CisgICAgICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJSZW5kZXJi
dWZmZXIodGFyZ2V0LCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQVRUQUNITUVOVCwgcmVuZGVy
YnVmZmVydGFyZ2V0LCBidWZmZXJPYmplY3QpOworICAgICAgICBtX2NvbnRleHQtPmZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQVRUQUNI
TUVOVCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBidWZmZXJPYmplY3QpOworICAgICAgICBpZiAoIWJ1
ZmZlck9iamVjdCkgeworICAgICAgICAgICAgcmVhdHRhY2hEZXB0aCA9IHRydWU7CisgICAgICAg
ICAgICByZWF0dGFjaFN0ZW5jaWwgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQ6CisgICAgICAgIG1f
Y29udGV4dC0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5k
ZXJidWZmZXJ0YXJnZXQsIG9iamVjdE9yWmVybyhidWZmZXIpKTsKKyAgICAgICAgaWYgKCFidWZm
ZXJPYmplY3QpCisgICAgICAgICAgICByZWF0dGFjaERlcHRoU3RlbmNpbERlcHRoID0gdHJ1ZTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9BVFRB
Q0hNRU5UOgorICAgICAgICBtX2NvbnRleHQtPmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdl
dCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBvYmplY3RPclplcm8oYnVmZmVyKSk7
CisgICAgICAgIGlmICghYnVmZmVyT2JqZWN0KQorICAgICAgICAgICAgcmVhdHRhY2hEZXB0aFN0
ZW5jaWxTdGVuY2lsID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQs
IHJlbmRlcmJ1ZmZlcnRhcmdldCwgb2JqZWN0T3JaZXJvKGJ1ZmZlcikpOworICAgIH0KICAgICBt
X2ZyYW1lYnVmZmVyQmluZGluZy0+c2V0QXR0YWNobWVudChhdHRhY2htZW50LCBidWZmZXIpOwor
ICAgIGlmIChyZWF0dGFjaERlcHRoKSB7CisgICAgICAgIFBsYXRmb3JtM0RPYmplY3Qgb2JqZWN0
ID0gb2JqZWN0T3JaZXJvKG1fZnJhbWVidWZmZXJCaW5kaW5nLT5nZXRBdHRhY2htZW50KEdyYXBo
aWNzQ29udGV4dDNEOjpERVBUSF9BVFRBQ0hNRU5UKSk7CisgICAgICAgIGlmIChvYmplY3QpCisg
ICAgICAgICAgICBtX2NvbnRleHQtPmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwgR3Jh
cGhpY3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgb2Jq
ZWN0KTsKKyAgICB9CisgICAgaWYgKHJlYXR0YWNoU3RlbmNpbCkgeworICAgICAgICBQbGF0Zm9y
bTNET2JqZWN0IG9iamVjdCA9IG9iamVjdE9yWmVybyhtX2ZyYW1lYnVmZmVyQmluZGluZy0+Z2V0
QXR0YWNobWVudChHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9BVFRBQ0hNRU5UKSk7CisgICAg
ICAgIGlmIChvYmplY3QpCisgICAgICAgICAgICBtX2NvbnRleHQtPmZyYW1lYnVmZmVyUmVuZGVy
YnVmZmVyKHRhcmdldCwgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQVRUQUNITUVOVCwgcmVu
ZGVyYnVmZmVydGFyZ2V0LCBvYmplY3QpOworICAgIH0KKyAgICBpZiAocmVhdHRhY2hEZXB0aFN0
ZW5jaWxEZXB0aCkgeworICAgICAgICBQbGF0Zm9ybTNET2JqZWN0IG9iamVjdCA9IG9iamVjdE9y
WmVybyhtX2ZyYW1lYnVmZmVyQmluZGluZy0+Z2V0QXR0YWNobWVudChHcmFwaGljc0NvbnRleHQz
RDo6REVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UKSk7CisgICAgICAgIGlmIChvYmplY3QpCisgICAg
ICAgICAgICBtX2NvbnRleHQtPmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgb2JqZWN0
KTsKKyAgICB9CisgICAgaWYgKHJlYXR0YWNoRGVwdGhTdGVuY2lsU3RlbmNpbCkgeworICAgICAg
ICBQbGF0Zm9ybTNET2JqZWN0IG9iamVjdCA9IG9iamVjdE9yWmVybyhtX2ZyYW1lYnVmZmVyQmlu
ZGluZy0+Z2V0QXR0YWNobWVudChHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfU1RFTkNJTF9BVFRB
Q0hNRU5UKSk7CisgICAgICAgIGlmIChvYmplY3QpCisgICAgICAgICAgICBtX2NvbnRleHQtPmZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxf
QVRUQUNITUVOVCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBvYmplY3QpOworICAgIH0KICAgICBjbGVh
bnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCkBAIC0xMzg0LDcgKzE0MzAsNyBAQCBX
ZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGCiAgICAgICAgIHJldHVybiBX
ZWJHTEdldEluZm8oKTsKICAgICB9CiAKLSAgICBpZiAoIW1fZnJhbWVidWZmZXJCaW5kaW5nIHx8
ICFtX2ZyYW1lYnVmZmVyQmluZGluZy0+b2JqZWN0KCkpIHsKKyAgICBpZiAoIW1fZnJhbWVidWZm
ZXJCaW5kaW5nIHx8ICFtX2ZyYW1lYnVmZmVyQmluZGluZy0+b2JqZWN0KCkgfHwgbV9mcmFtZWJ1
ZmZlckJpbmRpbmctPmlzSW5jb21wbGV0ZShmYWxzZSkpIHsKICAgICAgICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwog
ICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiAgICAgfQpAQCAtMjI0NCw3ICsyMjkwLDEw
IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZW5kZXJidWZmZXIKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfU1RFTkNJTDoKICAgICAgICAg
aWYgKG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQpIHsKLSAgICAgICAgICAgIG1fY29udGV4dC0+
cmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0
KTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+cmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OEYwLCAvLyBHTF9E
RVBUSDI0X1NURU5DSUw4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVp
Z2h0KTsKICAgICAgICAgICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgbV9yZW5kZXJidWZmZXJCaW5kaW5nLT5zZXRTaXplKHdp
ZHRoLCBoZWlnaHQpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAkocmV2aXNpb24gNzEz
NjcpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQz
RE9wZW5HTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2OSwxMiArNTY5LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6Zmx1c2goKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNo
bWVudCwgdW5zaWduZWQgbG9uZyByZW5kZXJidWZmZXJ0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3Qg
YnVmZmVyKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIEdMdWludCByZW5kZXJi
dWZmZXIgPSAoR0x1aW50KSBidWZmZXI7Ci0gICAgaWYgKGF0dGFjaG1lbnQgPT0gREVQVEhfU1RF
TkNJTF9BVFRBQ0hNRU5UKSB7Ci0gICAgICAgIDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVY
VCh0YXJnZXQsIERFUFRIX0FUVEFDSE1FTlQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgcmVuZGVyYnVm
ZmVyKTsKLSAgICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgU1RF
TkNJTF9BVFRBQ0hNRU5ULCByZW5kZXJidWZmZXJ0YXJnZXQsIHJlbmRlcmJ1ZmZlcik7Ci0gICAg
fSBlbHNlCi0gICAgICAgIDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVCh0YXJnZXQsIGF0
dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgcmVuZGVyYnVmZmVyKTsKKyAgICA6OmdsRnJh
bWVidWZmZXJSZW5kZXJidWZmZXJFWFQodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0
YXJnZXQsIChHTHVpbnQpIGJ1ZmZlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZy
YW1lYnVmZmVyVGV4dHVyZTJEKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0
dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgdGV4dGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1
cmUsIGxvbmcgbGV2ZWwpCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDcxMzcwKQorKysgV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisy
MDEwLTExLTA0ICBaaGVueWFvIE1vICA8em1vQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmVlZCB0byBzaW11bGF0ZSBERVBUSF9T
VEVOQ0lMIGluIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyIC8gZ2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00OTAyMAorCisgICAgICAgICogc3JjL1dlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdElt
cGwuY3BwOiBSZW1vdmUgREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UIGVtdWxhdGlvbiBhdCB0aGlz
IGxldmVsLgorCiAyMDEwLTExLTA0ICBLYXZpdGEgS2FuZXRrYXIgIDxra2FuZXRrYXJAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBXZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1w
bC5jcHAJKHJldmlzaW9uIDcxMzY3KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHcmFwaGlj
c0NvbnRleHQzRERlZmF1bHRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODM4LDE2ICs4Mzgs
NyBAQCBERUxFR0FURV9UT19HTChmaW5pc2gsIEZpbmlzaCkKIAogREVMRUdBVEVfVE9fR0woZmx1
c2gsIEZsdXNoKQogCi12b2lkIFdlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGw6OmZyYW1l
YnVmZmVyUmVuZGVyYnVmZmVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0
dGFjaG1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcmVuZGVyYnVmZmVydGFyZ2V0LCBXZWJHTElk
IGJ1ZmZlcikKLXsKLSAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICBpZiAoYXR0YWNobWVu
dCA9PSBHTF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQpIHsKLSAgICAgICAgZ2xGcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlckVYVCh0YXJnZXQsIEdMX0RFUFRIX0FUVEFDSE1FTlQsIHJlbmRlcmJ1ZmZl
cnRhcmdldCwgYnVmZmVyKTsKLSAgICAgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVCh0
YXJnZXQsIEdMX1NURU5DSUxfQVRUQUNITUVOVCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBidWZmZXIp
OwotICAgIH0gZWxzZQotICAgICAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUKHRhcmdl
dCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBidWZmZXIpOwotfQorREVMRUdBVEVf
VE9fR0xfNChmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciwgRnJhbWVidWZmZXJSZW5kZXJidWZmZXJF
WFQsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIFdlYkdMSWQp
CiAKIERFTEVHQVRFX1RPX0dMXzUoZnJhbWVidWZmZXJUZXh0dXJlMkQsIEZyYW1lYnVmZmVyVGV4
dHVyZTJERVhULCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCBX
ZWJHTElkLCBsb25nKQogCg==
</data>
<flag name="review"
          id="63377"
          type_id="1"
          status="-"
          setter="kbr"
    />
    <flag name="commit-queue"
          id="63378"
          type_id="3"
          status="-"
          setter="zmo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73021</attachid>
            <date>2010-11-04 18:15:51 -0700</date>
            <delta_ts>2010-11-04 18:18:46 -0700</delta_ts>
            <desc>revised patch: responding to kbr&apos;s review</desc>
            <filename>fbo.patch</filename>
            <type>text/plain</type>
            <size>13376</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTM3MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTAtMTEtMDQgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZWVkIHRv
IHNpbXVsYXRlIERFUFRIX1NURU5DSUwgaW4gZnJhbWVidWZmZXJSZW5kZXJidWZmZXIgLyBnZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MDIwCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TEZyYW1lYnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6Omdl
dEF0dGFjaG1lbnQpOiBSZXR1cm4gdGhlIGF0dGFjaGVkIHJlbmRlcmJ1ZmZlci90ZXh0dXJlLgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6aXNJbmNvbXBsZXRlKTogQWRkIGFu
IGV4dHJhIHBhcmFtZXRlciBkZWNpZGluZyB3aGV0aGVyIHdlIHNob3VsZCBjaGVjayBpbnRlcm5h
bCBmb3JtYXQgbWF0Y2hpbmcgdGhlIGF0dGFjaG1lbnQgcG9pbnQgb3Igbm90LgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6b25BY2Nlc3MpOiBQYXNzIGV4dHJhIHBhcmFtZXRl
ciBpbiBpc0luY29tcGxldGUuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZl
ci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNoZWNrRnJhbWVidWZmZXJT
dGF0dXMpOiBQYXNzIGV4dHJhIHBhcmFtZXRlciBpbiBpc0luY29tcGxldGUuCisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKTog
RW11bGF0ZSBERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQ7IHJlLWF0dGFjaCBwcmV2aW91c2x5IGNv
bmZsaWN0ZWQgYnVmZmVycyB1cG9uIGRldGFjaG1lbnQuCisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcik6IFRo
cm93IGFuIGVycm9yIHdoZW4gY29uZmxpY3RlZCBhdHRhY2htZW50cyBleGlzdC4KKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6IE1h
cCBERVBUSF9TVEVOQ0lMIHRvIERFUFRIMjRfU1RFTkNJTDguCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6IFJlbW92
ZSBlbXVsYXRpb24gY29kZSBhdCB0aGlzIGxldmVsLgorCiAyMDEwLTExLTA0ICBLZW5uZXRoIFJ1
c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRo
LgpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCShyZXZpc2lv
biA3MTM3MCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwMyw2ICsxMDMsMjQgQEAgdm9pZCBXZWJHTEZyYW1lYnVmZmVyOjpz
ZXRBdHRhY2htZW50KHVucwogICAgIH0KIH0KIAorV2ViR0xPYmplY3QqIFdlYkdMRnJhbWVidWZm
ZXI6OmdldEF0dGFjaG1lbnQodW5zaWduZWQgbG9uZyBhdHRhY2htZW50KSBjb25zdAoreworICAg
IGlmICghb2JqZWN0KCkpCisgICAgICAgIHJldHVybiAwOworICAgIHN3aXRjaCAoYXR0YWNobWVu
dCkgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwOgorICAg
ICAgICByZXR1cm4gbV9jb2xvckF0dGFjaG1lbnQuZ2V0KCk7CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHQzRDo6REVQVEhfQVRUQUNITUVOVDoKKyAgICAgICAgcmV0dXJuIG1fZGVwdGhBdHRhY2ht
ZW50LmdldCgpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQVRUQUNITUVO
VDoKKyAgICAgICAgcmV0dXJuIG1fc3RlbmNpbEF0dGFjaG1lbnQuZ2V0KCk7CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6REVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UOgorICAgICAgICByZXR1
cm4gbV9kZXB0aFN0ZW5jaWxBdHRhY2htZW50LmdldCgpOworICAgIGRlZmF1bHQ6CisgICAgICAg
IHJldHVybiAwOworICAgIH0KK30KKwogdm9pZCBXZWJHTEZyYW1lYnVmZmVyOjpyZW1vdmVBdHRh
Y2htZW50KFdlYkdMT2JqZWN0KiBhdHRhY2htZW50KQogewogICAgIGlmICghb2JqZWN0KCkpCkBA
IC0xMzcsMjIgKzE1NSwyMyBAQCB1bnNpZ25lZCBsb25nIFdlYkdMRnJhbWVidWZmZXI6OmdldENv
bG9yCiAgICAgcmV0dXJuIDA7CiB9CiAKLWJvb2wgV2ViR0xGcmFtZWJ1ZmZlcjo6aXNJbmNvbXBs
ZXRlKCkgY29uc3QKK2Jvb2wgV2ViR0xGcmFtZWJ1ZmZlcjo6aXNJbmNvbXBsZXRlKGJvb2wgY2hl
Y2tJbnRlcm5hbEZvcm1hdCkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBpbnQgY291bnQgPSAwOwog
ICAgIGlmIChpc0RlcHRoQXR0YWNoZWQoKSkgewotICAgICAgICBpZiAoZ2V0SW50ZXJuYWxGb3Jt
YXQobV9kZXB0aEF0dGFjaG1lbnQuZ2V0KCkpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9D
T01QT05FTlQxNikKKyAgICAgICAgaWYgKGNoZWNrSW50ZXJuYWxGb3JtYXQgJiYgZ2V0SW50ZXJu
YWxGb3JtYXQobV9kZXB0aEF0dGFjaG1lbnQuZ2V0KCkpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpE
RVBUSF9DT01QT05FTlQxNikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjb3Vu
dCsrOwogICAgIH0KICAgICBpZiAoaXNTdGVuY2lsQXR0YWNoZWQoKSkgewotICAgICAgICBpZiAo
Z2V0SW50ZXJuYWxGb3JtYXQobV9zdGVuY2lsQXR0YWNobWVudC5nZXQoKSkgIT0gR3JhcGhpY3ND
b250ZXh0M0Q6OlNURU5DSUxfSU5ERVg4KQorICAgICAgICBpZiAoY2hlY2tJbnRlcm5hbEZvcm1h
dCAmJiBnZXRJbnRlcm5hbEZvcm1hdChtX3N0ZW5jaWxBdHRhY2htZW50LmdldCgpKSAhPSBHcmFw
aGljc0NvbnRleHQzRDo6U1RFTkNJTF9JTkRFWDgpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgY291bnQrKzsKICAgICB9CiAgICAgaWYgKGlzRGVwdGhTdGVuY2lsQXR0YWNoZWQo
KSkgewotICAgICAgICBpZiAoZ2V0SW50ZXJuYWxGb3JtYXQobV9kZXB0aFN0ZW5jaWxBdHRhY2ht
ZW50LmdldCgpKSAhPSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfU1RFTkNJTAotICAgICAgICAg
ICAgfHwgIWlzVmFsaWQobV9kZXB0aFN0ZW5jaWxBdHRhY2htZW50LmdldCgpKSkKKyAgICAgICAg
aWYgKGNoZWNrSW50ZXJuYWxGb3JtYXQgJiYgZ2V0SW50ZXJuYWxGb3JtYXQobV9kZXB0aFN0ZW5j
aWxBdHRhY2htZW50LmdldCgpKSAhPSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfU1RFTkNJTCkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAoIWlzVmFsaWQobV9kZXB0aFN0
ZW5jaWxBdHRhY2htZW50LmdldCgpKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICBjb3VudCsrOwogICAgIH0KQEAgLTE2Myw3ICsxODIsNyBAQCBib29sIFdlYkdMRnJhbWVidWZm
ZXI6OmlzSW5jb21wbGV0ZSgpIGNvCiAKIGJvb2wgV2ViR0xGcmFtZWJ1ZmZlcjo6b25BY2Nlc3Mo
KQogewotICAgIGlmIChpc0luY29tcGxldGUoKSkKKyAgICBpZiAoaXNJbmNvbXBsZXRlKHRydWUp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIGluaXRpYWxpemVSZW5kZXJidWZm
ZXJzKCk7CiB9CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaAkocmV2
aXNpb24gNzEzNzApCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBdHRh
Y2htZW50KHVuc2lnbmVkIGxvbmcsIFdlYkdMT2JqZWN0Kik7CiAgICAgLy8gSWYgYW4gb2JqZWN0
IGlzIGF0dGFjaGVkIHRvIHRoZSBmcmFtZWJ1ZmZlciwgcmVtb3ZlIGl0LgogICAgIHZvaWQgcmVt
b3ZlQXR0YWNobWVudChXZWJHTE9iamVjdCopOworICAgIFdlYkdMT2JqZWN0KiBnZXRBdHRhY2ht
ZW50KHVuc2lnbmVkIGxvbmcpIGNvbnN0OwogCiAgICAgdW5zaWduZWQgbG9uZyBnZXRDb2xvckJ1
ZmZlckZvcm1hdCgpIGNvbnN0OwogCkBAIC01Myw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBib29s
IG9uQWNjZXNzKCk7CiAKICAgICAvLyBSZXR1cm4gZmFsc2UgZG9lcyBub3QgbWVhbiBDT01QTEVU
RSwgbWlnaHQgc3RpbGwgYmUgSU5DT01QTEVURS4KLSAgICBib29sIGlzSW5jb21wbGV0ZSgpIGNv
bnN0OworICAgIGJvb2wgaXNJbmNvbXBsZXRlKGJvb2wgY2hlY2tJbnRlcm5hbEZvcm1hdCkgY29u
c3Q7CiAKIHByb3RlY3RlZDoKICAgICBXZWJHTEZyYW1lYnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dCopOwpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmNwcAkocmV2aXNpb24gNzEzNzApCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwOCw3ICs1MDgsNyBAQCB1bnNp
Z25lZCBsb25nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y2hlCiAgICAgfQogICAgIGlmICghbV9m
cmFtZWJ1ZmZlckJpbmRpbmcgfHwgIW1fZnJhbWVidWZmZXJCaW5kaW5nLT5vYmplY3QoKSkKICAg
ICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9DT01QTEVURTsKLSAg
ICBpZiAobV9mcmFtZWJ1ZmZlckJpbmRpbmctPmlzSW5jb21wbGV0ZSgpKQorICAgIGlmIChtX2Zy
YW1lYnVmZmVyQmluZGluZy0+aXNJbmNvbXBsZXRlKHRydWUpKQogICAgICAgICByZXR1cm4gR3Jh
cGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEOwogICAgIHJldHVybiBtX2Nv
bnRleHQtPmNoZWNrRnJhbWVidWZmZXJTdGF0dXModGFyZ2V0KTsKICAgICBjbGVhbnVwQWZ0ZXJH
cmFwaGljc0NhbGwoZmFsc2UpOwpAQCAtMTIwNSw4ICsxMjA1LDU0IEBAIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpmcmFtZWJ1ZmZlclIKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFy
Z2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIG9iamVjdE9yWmVybyhidWZmZXIp
KTsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlck9iamVjdCA9IG9iamVjdE9yWmVybyhidWZm
ZXIpOworICAgIGJvb2wgcmVhdHRhY2hEZXB0aCA9IGZhbHNlOworICAgIGJvb2wgcmVhdHRhY2hT
dGVuY2lsID0gZmFsc2U7CisgICAgYm9vbCByZWF0dGFjaERlcHRoU3RlbmNpbERlcHRoID0gZmFs
c2U7CisgICAgYm9vbCByZWF0dGFjaERlcHRoU3RlbmNpbFN0ZW5jaWwgPSBmYWxzZTsKKyAgICBz
d2l0Y2ggKGF0dGFjaG1lbnQpIHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9T
VEVOQ0lMX0FUVEFDSE1FTlQ6CisgICAgICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJSZW5kZXJi
dWZmZXIodGFyZ2V0LCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQVRUQUNITUVOVCwgcmVuZGVy
YnVmZmVydGFyZ2V0LCBidWZmZXJPYmplY3QpOworICAgICAgICBtX2NvbnRleHQtPmZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQVRUQUNI
TUVOVCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBidWZmZXJPYmplY3QpOworICAgICAgICBpZiAoIWJ1
ZmZlck9iamVjdCkgeworICAgICAgICAgICAgcmVhdHRhY2hEZXB0aCA9IHRydWU7CisgICAgICAg
ICAgICByZWF0dGFjaFN0ZW5jaWwgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQ6CisgICAgICAgIG1f
Y29udGV4dC0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50LCByZW5k
ZXJidWZmZXJ0YXJnZXQsIG9iamVjdE9yWmVybyhidWZmZXIpKTsKKyAgICAgICAgaWYgKCFidWZm
ZXJPYmplY3QpCisgICAgICAgICAgICByZWF0dGFjaERlcHRoU3RlbmNpbERlcHRoID0gdHJ1ZTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9BVFRB
Q0hNRU5UOgorICAgICAgICBtX2NvbnRleHQtPmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdl
dCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBvYmplY3RPclplcm8oYnVmZmVyKSk7
CisgICAgICAgIGlmICghYnVmZmVyT2JqZWN0KQorICAgICAgICAgICAgcmVhdHRhY2hEZXB0aFN0
ZW5jaWxTdGVuY2lsID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQs
IHJlbmRlcmJ1ZmZlcnRhcmdldCwgb2JqZWN0T3JaZXJvKGJ1ZmZlcikpOworICAgIH0KICAgICBt
X2ZyYW1lYnVmZmVyQmluZGluZy0+c2V0QXR0YWNobWVudChhdHRhY2htZW50LCBidWZmZXIpOwor
ICAgIGlmIChyZWF0dGFjaERlcHRoKSB7CisgICAgICAgIFBsYXRmb3JtM0RPYmplY3Qgb2JqZWN0
ID0gb2JqZWN0T3JaZXJvKG1fZnJhbWVidWZmZXJCaW5kaW5nLT5nZXRBdHRhY2htZW50KEdyYXBo
aWNzQ29udGV4dDNEOjpERVBUSF9BVFRBQ0hNRU5UKSk7CisgICAgICAgIGlmIChvYmplY3QpCisg
ICAgICAgICAgICBtX2NvbnRleHQtPmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwgR3Jh
cGhpY3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgb2Jq
ZWN0KTsKKyAgICB9CisgICAgaWYgKHJlYXR0YWNoU3RlbmNpbCkgeworICAgICAgICBQbGF0Zm9y
bTNET2JqZWN0IG9iamVjdCA9IG9iamVjdE9yWmVybyhtX2ZyYW1lYnVmZmVyQmluZGluZy0+Z2V0
QXR0YWNobWVudChHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9BVFRBQ0hNRU5UKSk7CisgICAg
ICAgIGlmIChvYmplY3QpCisgICAgICAgICAgICBtX2NvbnRleHQtPmZyYW1lYnVmZmVyUmVuZGVy
YnVmZmVyKHRhcmdldCwgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQVRUQUNITUVOVCwgcmVu
ZGVyYnVmZmVydGFyZ2V0LCBvYmplY3QpOworICAgIH0KKyAgICBpZiAocmVhdHRhY2hEZXB0aFN0
ZW5jaWxEZXB0aCkgeworICAgICAgICBQbGF0Zm9ybTNET2JqZWN0IG9iamVjdCA9IG9iamVjdE9y
WmVybyhtX2ZyYW1lYnVmZmVyQmluZGluZy0+Z2V0QXR0YWNobWVudChHcmFwaGljc0NvbnRleHQz
RDo6REVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UKSk7CisgICAgICAgIGlmIChvYmplY3QpCisgICAg
ICAgICAgICBtX2NvbnRleHQtPmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgb2JqZWN0
KTsKKyAgICB9CisgICAgaWYgKHJlYXR0YWNoRGVwdGhTdGVuY2lsU3RlbmNpbCkgeworICAgICAg
ICBQbGF0Zm9ybTNET2JqZWN0IG9iamVjdCA9IG9iamVjdE9yWmVybyhtX2ZyYW1lYnVmZmVyQmlu
ZGluZy0+Z2V0QXR0YWNobWVudChHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfU1RFTkNJTF9BVFRB
Q0hNRU5UKSk7CisgICAgICAgIGlmIChvYmplY3QpCisgICAgICAgICAgICBtX2NvbnRleHQtPmZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxf
QVRUQUNITUVOVCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBvYmplY3QpOworICAgIH0KICAgICBjbGVh
bnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCkBAIC0xMzg0LDcgKzE0MzAsNyBAQCBX
ZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGCiAgICAgICAgIHJldHVybiBX
ZWJHTEdldEluZm8oKTsKICAgICB9CiAKLSAgICBpZiAoIW1fZnJhbWVidWZmZXJCaW5kaW5nIHx8
ICFtX2ZyYW1lYnVmZmVyQmluZGluZy0+b2JqZWN0KCkpIHsKKyAgICBpZiAoIW1fZnJhbWVidWZm
ZXJCaW5kaW5nIHx8ICFtX2ZyYW1lYnVmZmVyQmluZGluZy0+b2JqZWN0KCkgfHwgbV9mcmFtZWJ1
ZmZlckJpbmRpbmctPmlzSW5jb21wbGV0ZShmYWxzZSkpIHsKICAgICAgICAgbV9jb250ZXh0LT5z
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwog
ICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiAgICAgfQpAQCAtMjI0NCw3ICsyMjkwLDcg
QEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnJlbmRlcmJ1ZmZlcgogICAgICAgICBicmVh
azsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9TVEVOQ0lMOgogICAgICAgICBp
ZiAobV9pc0RlcHRoU3RlbmNpbFN1cHBvcnRlZCkgewotICAgICAgICAgICAgbV9jb250ZXh0LT5y
ZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQp
OworICAgICAgICAgICAgbV9jb250ZXh0LT5yZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgRXh0
ZW5zaW9uczNEOjpERVBUSDI0X1NURU5DSUw4LCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgICAg
IGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgbV9yZW5kZXJidWZmZXJCaW5kaW5nLT5zZXRTaXplKHdpZHRoLCBoZWlnaHQpOwpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zM0QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnMzRC5oCShyZXZpc2lvbiA3MTM3
MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uczNELmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAgcHVibGljOgogICAgIC8vICAgR0xfRVhUX3RleHR1cmVf
Zm9ybWF0X0JHUkE4ODg4CiAgICAgLy8gICBHTF9FWFRfcmVhZF9mb3JtYXRfYmdyYQogICAgIC8v
ICAgR0xfQVJCX3JvYnVzdG5lc3MKKyAgICAvLyAgIEdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNp
bCAvIEdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbAogCiAgICAgLy8gVGFrZXMgZnVsbCBuYW1l
IG9mIGV4dGVuc2lvbjsgZm9yIGV4YW1wbGUsCiAgICAgLy8gIkdMX0VYVF90ZXh0dXJlX2Zvcm1h
dF9CR1JBODg4OCIuCkBAIC01OSw3ICs2MCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIEdMX0FS
Ql9yb2J1c3RuZXNzIGVudW1zCiAgICAgICAgIEdVSUxUWV9DT05URVhUX1JFU0VUX0FSQiA9IDB4
ODI1MywKICAgICAgICAgSU5OT0NFTlRfQ09OVEVYVF9SRVNFVF9BUkIgPSAweDgyNTQsCi0gICAg
ICAgIFVOS05PV05fQ09OVEVYVF9SRVNFVF9BUkIgPSAweDgyNTUKKyAgICAgICAgVU5LTk9XTl9D
T05URVhUX1JFU0VUX0FSQiA9IDB4ODI1NSwKKworICAgICAgICAvLyBHTF9FWFQvT0VTX3BhY2tl
ZF9kZXB0aF9zdGVuY2lsIGVudW1zCisgICAgICAgIERFUFRIMjRfU1RFTkNJTDggPSAweDg4RjAK
ICAgICB9OwogCiAgICAgLy8gR0xfQVJCX3JvYnVzdG5lc3MKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9w
ZW5HTC5jcHAJKHJldmlzaW9uIDcxMzcwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Njks
MTIgKzU2OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZsdXNoKCkKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgcmVuZGVyYnVmZmVydGFy
Z2V0LCBQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKLSAgICBHTHVpbnQgcmVuZGVyYnVmZmVyID0gKEdMdWludCkgYnVmZmVyOwotICAgIGlmIChh
dHRhY2htZW50ID09IERFUFRIX1NURU5DSUxfQVRUQUNITUVOVCkgewotICAgICAgICA6OmdsRnJh
bWVidWZmZXJSZW5kZXJidWZmZXJFWFQodGFyZ2V0LCBERVBUSF9BVFRBQ0hNRU5ULCByZW5kZXJi
dWZmZXJ0YXJnZXQsIHJlbmRlcmJ1ZmZlcik7Ci0gICAgICAgIDo6Z2xGcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlckVYVCh0YXJnZXQsIFNURU5DSUxfQVRUQUNITUVOVCwgcmVuZGVyYnVmZmVydGFyZ2V0
LCByZW5kZXJidWZmZXIpOwotICAgIH0gZWxzZQotICAgICAgICA6OmdsRnJhbWVidWZmZXJSZW5k
ZXJidWZmZXJFWFQodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIHJlbmRl
cmJ1ZmZlcik7CisgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgYXR0
YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LCAoR0x1aW50KSBidWZmZXIpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1ZmZlclRleHR1cmUyRCh1bnNpZ25lZCBsb25nIHRh
cmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1bnNpZ25lZCBsb25nIHRleHRhcmdldCwg
UGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlLCBsb25nIGxldmVsKQpJbmRleDogV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShy
ZXZpc2lvbiA3MTM3MCkKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMC0xMS0wNCAgWmhlbnlhbyBNbyAgPHptb0Bnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5l
ZWQgdG8gc2ltdWxhdGUgREVQVEhfU1RFTkNJTCBpbiBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciAv
IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkwMjAKKworICAgICAgICAqIHNyYy9XZWJHcmFw
aGljc0NvbnRleHQzRERlZmF1bHRJbXBsLmNwcDogUmVtb3ZlIERFUFRIX1NURU5DSUxfQVRUQUNI
TUVOVCBlbXVsYXRpb24gYXQgdGhpcyBsZXZlbC4KKwogMjAxMC0xMS0wNCAgS2F2aXRhIEthbmV0
a2FyICA8a2thbmV0a2FyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFt
IEJhcnRoLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHcmFwaGljc0NvbnRleHQzRERl
ZmF1bHRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdyYXBo
aWNzQ29udGV4dDNERGVmYXVsdEltcGwuY3BwCShyZXZpc2lvbiA3MTM3MCkKKysrIFdlYktpdC9j
aHJvbWl1bS9zcmMvV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1wbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTgzOCwxNiArODM4LDcgQEAgREVMRUdBVEVfVE9fR0woZmluaXNoLCBGaW5pc2gp
CiAKIERFTEVHQVRFX1RPX0dMKGZsdXNoLCBGbHVzaCkKIAotdm9pZCBXZWJHcmFwaGljc0NvbnRl
eHQzRERlZmF1bHRJbXBsOjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih1bnNpZ25lZCBsb25nIHRh
cmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHJlbmRl
cmJ1ZmZlcnRhcmdldCwgV2ViR0xJZCBidWZmZXIpCi17Ci0gICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7Ci0gICAgaWYgKGF0dGFjaG1lbnQgPT0gR0xfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UKSB7
Ci0gICAgICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXJFWFQodGFyZ2V0LCBHTF9ERVBUSF9B
VFRBQ0hNRU5ULCByZW5kZXJidWZmZXJ0YXJnZXQsIGJ1ZmZlcik7Ci0gICAgICAgIGdsRnJhbWVi
dWZmZXJSZW5kZXJidWZmZXJFWFQodGFyZ2V0LCBHTF9TVEVOQ0lMX0FUVEFDSE1FTlQsIHJlbmRl
cmJ1ZmZlcnRhcmdldCwgYnVmZmVyKTsKLSAgICB9IGVsc2UKLSAgICAgICAgZ2xGcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlckVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwg
YnVmZmVyKTsKLX0KK0RFTEVHQVRFX1RPX0dMXzQoZnJhbWVidWZmZXJSZW5kZXJidWZmZXIsIEZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhULCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1
bnNpZ25lZCBsb25nLCBXZWJHTElkKQogCiBERUxFR0FURV9UT19HTF81KGZyYW1lYnVmZmVyVGV4
dHVyZTJELCBGcmFtZWJ1ZmZlclRleHR1cmUyREVYVCwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQg
bG9uZywgdW5zaWduZWQgbG9uZywgV2ViR0xJZCwgbG9uZykKIAo=
</data>
<flag name="review"
          id="63382"
          type_id="1"
          status="-"
          setter="zmo"
    />
    <flag name="commit-queue"
          id="63383"
          type_id="3"
          status="-"
          setter="zmo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73023</attachid>
            <date>2010-11-04 18:18:46 -0700</date>
            <delta_ts>2010-11-05 12:07:54 -0700</delta_ts>
            <desc>revised patch: updated the change log</desc>
            <filename>fbo.patch</filename>
            <type>text/plain</type>
            <size>13477</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTM3MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTAtMTEtMDQgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZWVkIHRv
IHNpbXVsYXRlIERFUFRIX1NURU5DSUwgaW4gZnJhbWVidWZmZXJSZW5kZXJidWZmZXIgLyBnZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5MDIwCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TEZyYW1lYnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6Omdl
dEF0dGFjaG1lbnQpOiBSZXR1cm4gdGhlIGF0dGFjaGVkIHJlbmRlcmJ1ZmZlci90ZXh0dXJlLgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6aXNJbmNvbXBsZXRlKTogQWRkIGFu
IGV4dHJhIHBhcmFtZXRlciBkZWNpZGluZyB3aGV0aGVyIHdlIHNob3VsZCBjaGVjayBpbnRlcm5h
bCBmb3JtYXQgbWF0Y2hpbmcgdGhlIGF0dGFjaG1lbnQgcG9pbnQgb3Igbm90LgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6b25BY2Nlc3MpOiBQYXNzIGV4dHJhIHBhcmFtZXRl
ciBpbiBpc0luY29tcGxldGUuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZl
ci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNoZWNrRnJhbWVidWZmZXJT
dGF0dXMpOiBQYXNzIGV4dHJhIHBhcmFtZXRlciBpbiBpc0luY29tcGxldGUuCisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKTog
RW11bGF0ZSBERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQ7IHJlLWF0dGFjaCBwcmV2aW91c2x5IGNv
bmZsaWN0ZWQgYnVmZmVycyB1cG9uIGRldGFjaG1lbnQuCisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcik6IFRo
cm93IGFuIGVycm9yIHdoZW4gY29uZmxpY3RlZCBhdHRhY2htZW50cyBleGlzdC4KKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6cmVuZGVyYnVmZmVyU3RvcmFnZSk6IE1h
cCBERVBUSF9TVEVOQ0lMIHRvIERFUFRIMjRfU1RFTkNJTDguCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvRXh0ZW5zaW9uczNELmg6IEFkZCBERVBUSDI0X1NURU5DSUw4IGVudW0gYW5kIHVw
ZGF0ZSB0aGUgZG9jdW1lbnRhdGlvbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKTogUmVtb3ZlIGVtdWxhdGlvbiBj
b2RlIGF0IHRoaXMgbGV2ZWwuCisKIDIwMTAtMTEtMDQgIEtlbm5ldGggUnVzc2VsbCAgPGtickBn
b29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBXZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAJKHJldmlzaW9uIDcxMzcwKQorKysg
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTAzLDYgKzEwMywyNCBAQCB2b2lkIFdlYkdMRnJhbWVidWZmZXI6OnNldEF0dGFjaG1lbnQo
dW5zCiAgICAgfQogfQogCitXZWJHTE9iamVjdCogV2ViR0xGcmFtZWJ1ZmZlcjo6Z2V0QXR0YWNo
bWVudCh1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQpIGNvbnN0Cit7CisgICAgaWYgKCFvYmplY3Qo
KSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgc3dpdGNoIChhdHRhY2htZW50KSB7CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDA6CisgICAgICAgIHJldHVybiBt
X2NvbG9yQXR0YWNobWVudC5nZXQoKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBU
SF9BVFRBQ0hNRU5UOgorICAgICAgICByZXR1cm4gbV9kZXB0aEF0dGFjaG1lbnQuZ2V0KCk7Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9BVFRBQ0hNRU5UOgorICAgICAgICBy
ZXR1cm4gbV9zdGVuY2lsQXR0YWNobWVudC5nZXQoKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQ6CisgICAgICAgIHJldHVybiBtX2RlcHRoU3Rl
bmNpbEF0dGFjaG1lbnQuZ2V0KCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorfQorCiB2b2lkIFdlYkdMRnJhbWVidWZmZXI6OnJlbW92ZUF0dGFjaG1lbnQoV2ViR0xP
YmplY3QqIGF0dGFjaG1lbnQpCiB7CiAgICAgaWYgKCFvYmplY3QoKSkKQEAgLTEzNywyMiArMTU1
LDIzIEBAIHVuc2lnbmVkIGxvbmcgV2ViR0xGcmFtZWJ1ZmZlcjo6Z2V0Q29sb3IKICAgICByZXR1
cm4gMDsKIH0KIAotYm9vbCBXZWJHTEZyYW1lYnVmZmVyOjppc0luY29tcGxldGUoKSBjb25zdAor
Ym9vbCBXZWJHTEZyYW1lYnVmZmVyOjppc0luY29tcGxldGUoYm9vbCBjaGVja0ludGVybmFsRm9y
bWF0KSBjb25zdAogewogICAgIHVuc2lnbmVkIGludCBjb3VudCA9IDA7CiAgICAgaWYgKGlzRGVw
dGhBdHRhY2hlZCgpKSB7Ci0gICAgICAgIGlmIChnZXRJbnRlcm5hbEZvcm1hdChtX2RlcHRoQXR0
YWNobWVudC5nZXQoKSkgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVDE2KQor
ICAgICAgICBpZiAoY2hlY2tJbnRlcm5hbEZvcm1hdCAmJiBnZXRJbnRlcm5hbEZvcm1hdChtX2Rl
cHRoQXR0YWNobWVudC5nZXQoKSkgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVO
VDE2KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNvdW50Kys7CiAgICAgfQog
ICAgIGlmIChpc1N0ZW5jaWxBdHRhY2hlZCgpKSB7Ci0gICAgICAgIGlmIChnZXRJbnRlcm5hbEZv
cm1hdChtX3N0ZW5jaWxBdHRhY2htZW50LmdldCgpKSAhPSBHcmFwaGljc0NvbnRleHQzRDo6U1RF
TkNJTF9JTkRFWDgpCisgICAgICAgIGlmIChjaGVja0ludGVybmFsRm9ybWF0ICYmIGdldEludGVy
bmFsRm9ybWF0KG1fc3RlbmNpbEF0dGFjaG1lbnQuZ2V0KCkpICE9IEdyYXBoaWNzQ29udGV4dDNE
OjpTVEVOQ0lMX0lOREVYOCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjb3Vu
dCsrOwogICAgIH0KICAgICBpZiAoaXNEZXB0aFN0ZW5jaWxBdHRhY2hlZCgpKSB7Ci0gICAgICAg
IGlmIChnZXRJbnRlcm5hbEZvcm1hdChtX2RlcHRoU3RlbmNpbEF0dGFjaG1lbnQuZ2V0KCkpICE9
IEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9TVEVOQ0lMCi0gICAgICAgICAgICB8fCAhaXNWYWxp
ZChtX2RlcHRoU3RlbmNpbEF0dGFjaG1lbnQuZ2V0KCkpKQorICAgICAgICBpZiAoY2hlY2tJbnRl
cm5hbEZvcm1hdCAmJiBnZXRJbnRlcm5hbEZvcm1hdChtX2RlcHRoU3RlbmNpbEF0dGFjaG1lbnQu
Z2V0KCkpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9TVEVOQ0lMKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIGlmICghaXNWYWxpZChtX2RlcHRoU3RlbmNpbEF0dGFjaG1l
bnQuZ2V0KCkpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNvdW50Kys7CiAg
ICAgfQpAQCAtMTYzLDcgKzE4Miw3IEBAIGJvb2wgV2ViR0xGcmFtZWJ1ZmZlcjo6aXNJbmNvbXBs
ZXRlKCkgY28KIAogYm9vbCBXZWJHTEZyYW1lYnVmZmVyOjpvbkFjY2VzcygpCiB7Ci0gICAgaWYg
KGlzSW5jb21wbGV0ZSgpKQorICAgIGlmIChpc0luY29tcGxldGUodHJ1ZSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICByZXR1cm4gaW5pdGlhbGl6ZVJlbmRlcmJ1ZmZlcnMoKTsKIH0KSW5k
ZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCShyZXZpc2lvbiA3MTM3MCkK
KysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Miw2ICs0Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEF0dGFjaG1lbnQodW5zaWdu
ZWQgbG9uZywgV2ViR0xPYmplY3QqKTsKICAgICAvLyBJZiBhbiBvYmplY3QgaXMgYXR0YWNoZWQg
dG8gdGhlIGZyYW1lYnVmZmVyLCByZW1vdmUgaXQuCiAgICAgdm9pZCByZW1vdmVBdHRhY2htZW50
KFdlYkdMT2JqZWN0Kik7CisgICAgV2ViR0xPYmplY3QqIGdldEF0dGFjaG1lbnQodW5zaWduZWQg
bG9uZykgY29uc3Q7CiAKICAgICB1bnNpZ25lZCBsb25nIGdldENvbG9yQnVmZmVyRm9ybWF0KCkg
Y29uc3Q7CiAKQEAgLTUzLDcgKzU0LDcgQEAgcHVibGljOgogICAgIGJvb2wgb25BY2Nlc3MoKTsK
IAogICAgIC8vIFJldHVybiBmYWxzZSBkb2VzIG5vdCBtZWFuIENPTVBMRVRFLCBtaWdodCBzdGls
bCBiZSBJTkNPTVBMRVRFLgotICAgIGJvb2wgaXNJbmNvbXBsZXRlKCkgY29uc3Q7CisgICAgYm9v
bCBpc0luY29tcGxldGUoYm9vbCBjaGVja0ludGVybmFsRm9ybWF0KSBjb25zdDsKIAogcHJvdGVj
dGVkOgogICAgIFdlYkdMRnJhbWVidWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7CkluZGV4
OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZp
c2lvbiA3MTM3MCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTA4LDcgKzUwOCw3IEBAIHVuc2lnbmVkIGxvbmcgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpjaGUKICAgICB9CiAgICAgaWYgKCFtX2ZyYW1lYnVmZmVyQmlu
ZGluZyB8fCAhbV9mcmFtZWJ1ZmZlckJpbmRpbmctPm9iamVjdCgpKQogICAgICAgICByZXR1cm4g
R3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0NPTVBMRVRFOwotICAgIGlmIChtX2ZyYW1l
YnVmZmVyQmluZGluZy0+aXNJbmNvbXBsZXRlKCkpCisgICAgaWYgKG1fZnJhbWVidWZmZXJCaW5k
aW5nLT5pc0luY29tcGxldGUodHJ1ZSkpCiAgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQz
RDo6RlJBTUVCVUZGRVJfVU5TVVBQT1JURUQ7CiAgICAgcmV0dXJuIG1fY29udGV4dC0+Y2hlY2tG
cmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChm
YWxzZSk7CkBAIC0xMjA1LDggKzEyMDUsNTQgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmZyYW1lYnVmZmVyUgogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1l
bnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgb2JqZWN0T3JaZXJvKGJ1ZmZlcikpOworICAgIFBsYXRm
b3JtM0RPYmplY3QgYnVmZmVyT2JqZWN0ID0gb2JqZWN0T3JaZXJvKGJ1ZmZlcik7CisgICAgYm9v
bCByZWF0dGFjaERlcHRoID0gZmFsc2U7CisgICAgYm9vbCByZWF0dGFjaFN0ZW5jaWwgPSBmYWxz
ZTsKKyAgICBib29sIHJlYXR0YWNoRGVwdGhTdGVuY2lsRGVwdGggPSBmYWxzZTsKKyAgICBib29s
IHJlYXR0YWNoRGVwdGhTdGVuY2lsU3RlbmNpbCA9IGZhbHNlOworICAgIHN3aXRjaCAoYXR0YWNo
bWVudCkgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX1NURU5DSUxfQVRUQUNI
TUVOVDoKKyAgICAgICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQs
IEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9BVFRBQ0hNRU5ULCByZW5kZXJidWZmZXJ0YXJnZXQs
IGJ1ZmZlck9iamVjdCk7CisgICAgICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJSZW5kZXJidWZm
ZXIodGFyZ2V0LCBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9BVFRBQ0hNRU5ULCByZW5kZXJi
dWZmZXJ0YXJnZXQsIGJ1ZmZlck9iamVjdCk7CisgICAgICAgIGlmICghYnVmZmVyT2JqZWN0KSB7
CisgICAgICAgICAgICByZWF0dGFjaERlcHRoID0gdHJ1ZTsKKyAgICAgICAgICAgIHJlYXR0YWNo
U3RlbmNpbCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6REVQVEhfQVRUQUNITUVOVDoKKyAgICAgICAgbV9jb250ZXh0LT5mcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdl
dCwgb2JqZWN0T3JaZXJvKGJ1ZmZlcikpOworICAgICAgICBpZiAoIWJ1ZmZlck9iamVjdCkKKyAg
ICAgICAgICAgIHJlYXR0YWNoRGVwdGhTdGVuY2lsRGVwdGggPSB0cnVlOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FUVEFDSE1FTlQ6CisgICAg
ICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBhdHRhY2htZW50
LCByZW5kZXJidWZmZXJ0YXJnZXQsIG9iamVjdE9yWmVybyhidWZmZXIpKTsKKyAgICAgICAgaWYg
KCFidWZmZXJPYmplY3QpCisgICAgICAgICAgICByZWF0dGFjaERlcHRoU3RlbmNpbFN0ZW5jaWwg
PSB0cnVlOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBtX2NvbnRleHQt
PmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVy
dGFyZ2V0LCBvYmplY3RPclplcm8oYnVmZmVyKSk7CisgICAgfQogICAgIG1fZnJhbWVidWZmZXJC
aW5kaW5nLT5zZXRBdHRhY2htZW50KGF0dGFjaG1lbnQsIGJ1ZmZlcik7CisgICAgaWYgKHJlYXR0
YWNoRGVwdGgpIHsKKyAgICAgICAgUGxhdGZvcm0zRE9iamVjdCBvYmplY3QgPSBvYmplY3RPclpl
cm8obV9mcmFtZWJ1ZmZlckJpbmRpbmctPmdldEF0dGFjaG1lbnQoR3JhcGhpY3NDb250ZXh0M0Q6
OkRFUFRIX0FUVEFDSE1FTlQpKTsKKyAgICAgICAgaWYgKG9iamVjdCkKKyAgICAgICAgICAgIG1f
Y29udGV4dC0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBHcmFwaGljc0NvbnRleHQz
RDo6REVQVEhfQVRUQUNITUVOVCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBvYmplY3QpOworICAgIH0K
KyAgICBpZiAocmVhdHRhY2hTdGVuY2lsKSB7CisgICAgICAgIFBsYXRmb3JtM0RPYmplY3Qgb2Jq
ZWN0ID0gb2JqZWN0T3JaZXJvKG1fZnJhbWVidWZmZXJCaW5kaW5nLT5nZXRBdHRhY2htZW50KEdy
YXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FUVEFDSE1FTlQpKTsKKyAgICAgICAgaWYgKG9iamVj
dCkKKyAgICAgICAgICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0
LCBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9BVFRBQ0hNRU5ULCByZW5kZXJidWZmZXJ0YXJn
ZXQsIG9iamVjdCk7CisgICAgfQorICAgIGlmIChyZWF0dGFjaERlcHRoU3RlbmNpbERlcHRoKSB7
CisgICAgICAgIFBsYXRmb3JtM0RPYmplY3Qgb2JqZWN0ID0gb2JqZWN0T3JaZXJvKG1fZnJhbWVi
dWZmZXJCaW5kaW5nLT5nZXRBdHRhY2htZW50KEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9TVEVO
Q0lMX0FUVEFDSE1FTlQpKTsKKyAgICAgICAgaWYgKG9iamVjdCkKKyAgICAgICAgICAgIG1fY29u
dGV4dC0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodGFyZ2V0LCBHcmFwaGljc0NvbnRleHQzRDo6
REVQVEhfQVRUQUNITUVOVCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBvYmplY3QpOworICAgIH0KKyAg
ICBpZiAocmVhdHRhY2hEZXB0aFN0ZW5jaWxTdGVuY2lsKSB7CisgICAgICAgIFBsYXRmb3JtM0RP
YmplY3Qgb2JqZWN0ID0gb2JqZWN0T3JaZXJvKG1fZnJhbWVidWZmZXJCaW5kaW5nLT5nZXRBdHRh
Y2htZW50KEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQpKTsKKyAg
ICAgICAgaWYgKG9iamVjdCkKKyAgICAgICAgICAgIG1fY29udGV4dC0+ZnJhbWVidWZmZXJSZW5k
ZXJidWZmZXIodGFyZ2V0LCBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9BVFRBQ0hNRU5ULCBy
ZW5kZXJidWZmZXJ0YXJnZXQsIG9iamVjdCk7CisgICAgfQogICAgIGNsZWFudXBBZnRlckdyYXBo
aWNzQ2FsbChmYWxzZSk7CiB9CiAKQEAgLTEzODQsNyArMTQzMCw3IEBAIFdlYkdMR2V0SW5mbyBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEYKICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygp
OwogICAgIH0KIAotICAgIGlmICghbV9mcmFtZWJ1ZmZlckJpbmRpbmcgfHwgIW1fZnJhbWVidWZm
ZXJCaW5kaW5nLT5vYmplY3QoKSkgeworICAgIGlmICghbV9mcmFtZWJ1ZmZlckJpbmRpbmcgfHwg
IW1fZnJhbWVidWZmZXJCaW5kaW5nLT5vYmplY3QoKSB8fCBtX2ZyYW1lYnVmZmVyQmluZGluZy0+
aXNJbmNvbXBsZXRlKGZhbHNlKSkgewogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgIHJldHVy
biBXZWJHTEdldEluZm8oKTsKICAgICB9CkBAIC0yMjQ0LDcgKzIyOTAsNyBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6cmVuZGVyYnVmZmVyCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX1NURU5DSUw6CiAgICAgICAgIGlmIChtX2lzRGVwdGhT
dGVuY2lsU3VwcG9ydGVkKSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPnJlbmRlcmJ1ZmZlclN0
b3JhZ2UodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgICAg
ICBtX2NvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3JhZ2UodGFyZ2V0LCBFeHRlbnNpb25zM0Q6OkRF
UFRIMjRfU1RFTkNJTDgsIHdpZHRoLCBoZWlnaHQpOwogICAgICAgICAgICAgY2xlYW51cEFmdGVy
R3JhcGhpY3NDYWxsKGZhbHNlKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX3JlbmRl
cmJ1ZmZlckJpbmRpbmctPnNldFNpemUod2lkdGgsIGhlaWdodCk7CkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnMzRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uczNELmgJKHJldmlzaW9uIDcxMzcwKQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zM0QuaAkod29ya2luZyBjb3B5KQpAQCAtNDcs
NiArNDcsNyBAQCBwdWJsaWM6CiAgICAgLy8gICBHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4
ODgKICAgICAvLyAgIEdMX0VYVF9yZWFkX2Zvcm1hdF9iZ3JhCiAgICAgLy8gICBHTF9BUkJfcm9i
dXN0bmVzcworICAgIC8vICAgR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIC8gR0xfT0VTX3Bh
Y2tlZF9kZXB0aF9zdGVuY2lsCiAKICAgICAvLyBUYWtlcyBmdWxsIG5hbWUgb2YgZXh0ZW5zaW9u
OyBmb3IgZXhhbXBsZSwKICAgICAvLyAiR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4Ii4K
QEAgLTU5LDcgKzYwLDEwIEBAIHB1YmxpYzoKICAgICAgICAgLy8gR0xfQVJCX3JvYnVzdG5lc3Mg
ZW51bXMKICAgICAgICAgR1VJTFRZX0NPTlRFWFRfUkVTRVRfQVJCID0gMHg4MjUzLAogICAgICAg
ICBJTk5PQ0VOVF9DT05URVhUX1JFU0VUX0FSQiA9IDB4ODI1NCwKLSAgICAgICAgVU5LTk9XTl9D
T05URVhUX1JFU0VUX0FSQiA9IDB4ODI1NQorICAgICAgICBVTktOT1dOX0NPTlRFWFRfUkVTRVRf
QVJCID0gMHg4MjU1LAorCisgICAgICAgIC8vIEdMX0VYVC9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwgZW51bXMKKyAgICAgICAgREVQVEgyNF9TVEVOQ0lMOCA9IDB4ODhGMAogICAgIH07CiAKICAg
ICAvLyBHTF9BUkJfcm9idXN0bmVzcwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAkocmV2
aXNpb24gNzEzNzApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHQzRE9wZW5HTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2OSwxMiArNTY5LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Zmx1c2goKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxv
bmcgYXR0YWNobWVudCwgdW5zaWduZWQgbG9uZyByZW5kZXJidWZmZXJ0YXJnZXQsIFBsYXRmb3Jt
M0RPYmplY3QgYnVmZmVyKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIEdMdWlu
dCByZW5kZXJidWZmZXIgPSAoR0x1aW50KSBidWZmZXI7Ci0gICAgaWYgKGF0dGFjaG1lbnQgPT0g
REVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UKSB7Ci0gICAgICAgIDo6Z2xGcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlckVYVCh0YXJnZXQsIERFUFRIX0FUVEFDSE1FTlQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwg
cmVuZGVyYnVmZmVyKTsKLSAgICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUKHRh
cmdldCwgU1RFTkNJTF9BVFRBQ0hNRU5ULCByZW5kZXJidWZmZXJ0YXJnZXQsIHJlbmRlcmJ1ZmZl
cik7Ci0gICAgfSBlbHNlCi0gICAgICAgIDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVCh0
YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgcmVuZGVyYnVmZmVyKTsKKyAg
ICA6OmdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXJFWFQodGFyZ2V0LCBhdHRhY2htZW50LCByZW5k
ZXJidWZmZXJ0YXJnZXQsIChHTHVpbnQpIGJ1ZmZlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25l
ZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgdGV4dGFyZ2V0LCBQbGF0Zm9ybTNET2Jq
ZWN0IHRleHR1cmUsIGxvbmcgbGV2ZWwpCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDcxMzcw
KQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDEyIEBACisyMDEwLTExLTA0ICBaaGVueWFvIE1vICA8em1vQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmVlZCB0byBzaW11bGF0
ZSBERVBUSF9TVEVOQ0lMIGluIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyIC8gZ2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00OTAyMAorCisgICAgICAgICogc3JjL1dlYkdyYXBoaWNzQ29udGV4dDNE
RGVmYXVsdEltcGwuY3BwOiBSZW1vdmUgREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UIGVtdWxhdGlv
biBhdCB0aGlzIGxldmVsLgorCiAyMDEwLTExLTA0ICBLYXZpdGEgS2FuZXRrYXIgIDxra2FuZXRr
YXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4
OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViR3JhcGhpY3NDb250ZXh0M0RE
ZWZhdWx0SW1wbC5jcHAJKHJldmlzaW9uIDcxMzcwKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJHcmFwaGljc0NvbnRleHQzRERlZmF1bHRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODM4
LDE2ICs4MzgsNyBAQCBERUxFR0FURV9UT19HTChmaW5pc2gsIEZpbmlzaCkKIAogREVMRUdBVEVf
VE9fR0woZmx1c2gsIEZsdXNoKQogCi12b2lkIFdlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdElt
cGw6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25l
ZCBsb25nIGF0dGFjaG1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcmVuZGVyYnVmZmVydGFyZ2V0
LCBXZWJHTElkIGJ1ZmZlcikKLXsKLSAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICBpZiAo
YXR0YWNobWVudCA9PSBHTF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQpIHsKLSAgICAgICAgZ2xG
cmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVCh0YXJnZXQsIEdMX0RFUFRIX0FUVEFDSE1FTlQsIHJl
bmRlcmJ1ZmZlcnRhcmdldCwgYnVmZmVyKTsKLSAgICAgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1
ZmZlckVYVCh0YXJnZXQsIEdMX1NURU5DSUxfQVRUQUNITUVOVCwgcmVuZGVyYnVmZmVydGFyZ2V0
LCBidWZmZXIpOwotICAgIH0gZWxzZQotICAgICAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
RVhUKHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBidWZmZXIpOwotfQor
REVMRUdBVEVfVE9fR0xfNChmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciwgRnJhbWVidWZmZXJSZW5k
ZXJidWZmZXJFWFQsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcs
IFdlYkdMSWQpCiAKIERFTEVHQVRFX1RPX0dMXzUoZnJhbWVidWZmZXJUZXh0dXJlMkQsIEZyYW1l
YnVmZmVyVGV4dHVyZTJERVhULCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25l
ZCBsb25nLCBXZWJHTElkLCBsb25nKQogCg==
</data>
<flag name="review"
          id="63386"
          type_id="1"
          status="+"
          setter="kbr"
    />
    <flag name="commit-queue"
          id="63387"
          type_id="3"
          status="-"
          setter="zmo"
    />
          </attachment>
      

    </bug>

</bugzilla>