The implementation of DMP is NOT consistent with the paper.

Thanks for your interesting work and code. I have a question about your implementation of DMP in GPS-Net.
In your implementation, the entities feature refined by graph message passing
https://github.com/taksau/GPS-Net/blob/dfbe63a793026b231b3cd60073aaa91a2ad4d06a/gpsnet-detectron/lib/modeling_rel/model_builder_rel_gpsnet.py#L509-L521
seems not been used for predicate classification.
https://github.com/taksau/GPS-Net/blob/dfbe63a793026b231b3cd60073aaa91a2ad4d06a/gpsnet-detectron/lib/modeling_rel/model_builder_rel_gpsnet.py#L554-L561
the initial ROI features are used instead, and the entities' features refined by message passing are just used for entities classification.
https://github.com/taksau/GPS-Net/blob/dfbe63a793026b231b3cd60073aaa91a2ad4d06a/gpsnet-detectron/lib/modeling_rel/model_builder_rel_gpsnet.py#L496-L499
It seems that the implementation is not consistent with the description in paper. Is this a bug or have I misunderstood something?
Looking forward to your reply!

furthermore, the parameters of GNN in each message passing iterations are different. According to the description from paper, it should share across different iterations. Is that a glitch or have I misunderstood something?
https://github.com/taksau/GPS-Net/blob/dfbe63a793026b231b3cd60073aaa91a2ad4d06a/gpsnet-detectron/lib/modeling_rel/model_builder_rel_gpsnet.py#L517

For the nodes' attention computation, the paper shows the softmax normalization is used. But in code implementation, the attention score is the output of the sigmoid function and normalized by the manner of dividing by the sum.
https://github.com/taksau/GPS-Net/blob/dfbe63a793026b231b3cd60073aaa91a2ad4d06a/lib/direction_aware_context.py#L22-L26
https://github.com/taksau/GPS-Net/blob/dfbe63a793026b231b3cd60073aaa91a2ad4d06a/gpsnet-detectron/lib/modeling_rel/refine_obj_feats.py#L108-L121
I'm quite confused about that, is this version of codebase consistent with your paper?

Thanks for your interesting work and code. I have a question about your implementation of DMP in GPS-Net.
In your implementation, the entities feature refined by graph message passing
https://github.com/taksau/GPS-Net/blob/dfbe63a793026b231b3cd60073aaa91a2ad4d06a/gpsnet-detectron/lib/modeling_rel/model_builder_rel_gpsnet.py#L509-L521
seems not been used for predicate classification.
https://github.com/taksau/GPS-Net/blob/dfbe63a793026b231b3cd60073aaa91a2ad4d06a/gpsnet-detectron/lib/modeling_rel/model_builder_rel_gpsnet.py#L554-L561
the initial ROI features are used instead, and the entities' features refined by message passing are just used for entities classification.
https://github.com/taksau/GPS-Net/blob/dfbe63a793026b231b3cd60073aaa91a2ad4d06a/gpsnet-detectron/lib/modeling_rel/model_builder_rel_gpsnet.py#L496-L499
It seems that the implementation is not consistent with the description in paper. Is this a bug or have I misunderstood something?
Looking forward to your reply!

We use the refined features for predicates classification in the framework of MOTIFS, which can improve the performance of predicates classification.
https://github.com/taksau/sglabv1/blob/868a7128e3438be980e7197bdd894310cf3aa699/lib/rel_model_mp_lstm.py#L559-L574
However, we find that the sampling method of RelDN is effective for its backbone. But we haven't figured out how to pass the refined features with the sampling method yet. As a result, we do not pass the feature when using its backbone.

furthermore, the parameters of GNN in each message passing iterations are different. According to the description from paper, it should share across different iterations. Is that a glitch or have I misunderstood something?
https://github.com/taksau/GPS-Net/blob/dfbe63a793026b231b3cd60073aaa91a2ad4d06a/gpsnet-detectron/lib/modeling_rel/model_builder_rel_gpsnet.py#L517-L518
https://github.com/taksau/GPS-Net/blob/dfbe63a793026b231b3cd60073aaa91a2ad4d06a/gpsnet-detectron/lib/modeling_rel/model_builder_rel_gpsnet.py#L149-L151

We share the parameter in a later version, but it makes little difference to the result.
https://github.com/taksau/sglabv1/blob/868a7128e3438be980e7197bdd894310cf3aa699/lib/rel_model_mp_lstm.py#L549-L559

For the nodes' attention computation, the paper shows the softmax normalization is used. But in code implementation, the attention score is the output of the sigmoid function and normalized by the manner of dividing by the sum.
https://github.com/taksau/GPS-Net/blob/dfbe63a793026b231b3cd60073aaa91a2ad4d06a/lib/direction_aware_context.py#L22-L26
https://github.com/taksau/GPS-Net/blob/dfbe63a793026b231b3cd60073aaa91a2ad4d06a/gpsnet-detectron/lib/modeling_rel/refine_obj_feats.py#L108-L121
I'm quite confused about that, is this version of codebase consistent with your paper?

We use the sigmoid function for normalization by dividing the sum of each row. But due to space limitations of the paper, we have not described this approach in detail.

For the nodes' attention computation, the paper shows the softmax normalization is used. But in code implementation, the attention score is the output of the sigmoid function and normalized by the manner of dividing by the sum.
https://github.com/taksau/GPS-Net/blob/dfbe63a793026b231b3cd60073aaa91a2ad4d06a/lib/direction_aware_context.py#L22-L26
https://github.com/taksau/GPS-Net/blob/dfbe63a793026b231b3cd60073aaa91a2ad4d06a/gpsnet-detectron/lib/modeling_rel/refine_obj_feats.py#L108-L121
I'm quite confused about that, is this version of codebase consistent with your paper?

We use the sigmoid function for normalization by dividing the sum of each row. But due to space limitations of the paper, we have not described this approach in detail.

It seems that the implementation in "rel_model_mp_lstm.py" shows there is a stacked-LSTM model and object re-classify model before the DMP module. Is this LSTM also been omitted due to space limitations of the paper?
https://github.com/taksau/sglabv1/blob/868a7128e3438be980e7197bdd894310cf3aa699/lib/rel_model_mp_lstm.py#L546-L567
Thanks for your reply.

Thanks for your interesting work and code. I have a question about your implementation of DMP in GPS-Net.
In your implementation, the entities feature refined by graph message passing
https://github.com/taksau/GPS-Net/blob/dfbe63a793026b231b3cd60073aaa91a2ad4d06a/gpsnet-detectron/lib/modeling_rel/model_builder_rel_gpsnet.py#L509-L521
seems not been used for predicate classification.
https://github.com/taksau/GPS-Net/blob/dfbe63a793026b231b3cd60073aaa91a2ad4d06a/gpsnet-detectron/lib/modeling_rel/model_builder_rel_gpsnet.py#L554-L561
the initial ROI features are used instead, and the entities' features refined by message passing are just used for entities classification.
https://github.com/taksau/GPS-Net/blob/dfbe63a793026b231b3cd60073aaa91a2ad4d06a/gpsnet-detectron/lib/modeling_rel/model_builder_rel_gpsnet.py#L496-L499
It seems that the implementation is not consistent with the description in paper. Is this a bug or have I misunderstood something?
Looking forward to your reply!

We use the refined features for predicates classification in the framework of MOTIFS, which can improve the performance of predicates classification.
https://github.com/taksau/sglabv1/blob/868a7128e3438be980e7197bdd894310cf3aa699/lib/rel_model_mp_lstm.py#L559-L574
However, we find that the sampling method of RelDN is effective for its backbone. But we haven't figured out how to pass the refined features with the sampling method yet. As a result, we do not pass the feature when using its backbone.

I'm quite confused that why the sampling method can influence how the backbone works?

@taksau  Hi, how to get the performance reported in your paper with this codebase?

Can you run through the code?

请问你跑通代码了吗？

请问你跑通代码了吗？

提这个issue的时候还跑不了的，我只是读了一遍然后直接把他的实现搬到我自己的codebase去了。 他这个现在应该可以跑了吧，我没测试。

但是好像还是没有完整的代码~那个草稿版本没有readme。
谢谢解答哦~

但是好像还是没有完整的代码~那个草稿版本没有readme。 谢谢解答哦~

直接run这个能跑起来吗？
https://github.com/taksau/GPS-Net/blob/master/gpsnet-detectron/tools/train_net_step_rel_mps.py
基于relDN 的 codebase 这里的readme 看起来好像是完整的 。

这个不行，缺一些文件~

这个不行，缺一些文件~

好吧😂  我这周应该会release我之前复现的版本，到时候你可以参考参考hhh

好的好的谢谢兄弟！

好的~谢谢了

同学，请问你什么时候发你复现的版本呢？

同学，请问你什么时候发你复现的版本呢？

明天发明天发 （拖延症犯了hhh

好像还是没有发？还是我没找到hhh

https://github.com/SHTUPLUS/PySGG
这里面有的  可能需要改一下启动的scripts和config 把模型换成GPSNet.
其他一大堆的模型的启动script 我还得再整理一下, 重构之后不一定都能用了.

同学，这个代码你跑过了吗~？

没 我实现到我自己codebase了之后就没搞这个了


Cleanup the project configuration mess

There are lots of unused/unclear project configurations.
To make the whole solution maintainable again, unused configurations should be removed.
The final goal is to have exactly two solution configurations (Debug/Release) that map to the same configuration in every project.

I have already started addressing this issue. I will submit a PR soon.

Since that's the perfect test case for my new project (https://github.com/tom-englert/ProjectConfigurationManager) I will do it too, so I can verify your changes...

@tom-englert A PR with working tests is ready - #356. Projects need some more work to be nice and tidy but I am still working on it. If you want you can just take a look at the current work. If you find anything wrong just let me know.


highlightjs.org/usage - List of supported languages

Hi guys,
I just wanted to see a list of supported languages a notices that your markdown table is not displaying at all.
If you click on The list of supported languages and corresponding classes on the usage page you will see the markdown table appear as text rather than a table.
Thanks
(PS. I am creating lessons to teach kids programming and Highlight.js is awesome and saves me from using images to show code highlighting!)

Weird.

@isagalaev possibly some issue with the web server?  It looks good on Github.

Well… The technical reason is that Python's markdown library has no idea what a table is. Nor should it, as neither original markdown, nor even modern CommonMark has them.
A quick look shows that there's a plugin for tables, and there's a bunch of other markdown implementations I could try on the server side. On the other hand, may be that's another argument against having the full list directly within the Readme (I remember there was a discussion about that, but I don't remember the outcome).
My personal slight preference is always towards something standard, which currently means CommonMark, no matter how popular Github's flavor is. But I won't fight for it :-)
@yyyc514 @egor-rogov what do you think?

We can always just convey it to HTML too. ;)

My personal slight preference is always towards something standard, which currently means CommonMark, no matter how popular Github's flavor is.

How popular does it have to be before it becomes "standard"? :-)

We had some discussion on this in #2096
+1 for a separate page with the list of supported languages, and link to it from README. Just can't find some time to do it.

I don't mind it being in the readme and would probably fix this by switching to a parser that supported GitHub style markdown and just be done with it.  Also don't see this as a super high priority though so time is an issue.


superhero active hover menu items color stays dark

Greetings and thanks for the great themes.  I tried out the superhero theme with semantic-ui-react, and it looks awesome.  However, there is an issue with the styling of some items, where the font color would be black on a #333 background-color.
I initially noticed it on a Dropdown menu item (the Electronics item is hovered in this image):

The Dropdown is nested in a Menu.
When I viewed the demo of the superhero theme on http://semantic-ui-forest.com/themes/bootswatch/superhero/, the dropdown menu's hovered items had white font.
If I remove the Menu parent component, the Dropdown is styled correctly.  I tried a few things, including downgrading semantic-ui from 2.3.1 to 2.2.0, but ultimately just downloaded the semantic.superhero.min.css and replaced the one in my dist/ folder, and it corrected the problem locally.
Using the css from the demo site:

I used create-react-app to initialize my react app.  I have the semantic.superhero.min.css file in src/semantic/dist, and I import that into my src/index.js.  I'm not applying any other css.  Here are my dependencies:
"dependencies": {
   "ajv": "^6.0.0",
   "react": "^15.4.2",
   "react-dom": "^15.4.2",
   "react-router": "^3.0.0",
   "react-scripts": "1.1.4",
   "semantic-ui-react": "^0.80.2"
 },
 "devDependencies": {
   "gulp": "^3.9.1",
   "semantic-ui": "^2.3.1"
 }

I don't know if the problem is related to my build of the css or not.  But, if I can track down the root cause, I'll report back.

Thanks for your report. Will work on it soon.


user.follower_count doesn't work

Idk if its working or not I did user.follower_count and it gave <bound method User.follower_count of <scratchattach._user.User object at 0x7feb6dc1ff70>> any ideas what it is :)

Maybe you should try: user.follower_count()

yes, you have to do user.follower_count()

oh lol sorry i meant i typed user.follower_count() and it gave that error.

Can you please give your code and the full error?


[Release] Add crossbow task to verify ARM64 wheels on travis

Although we're going to ship ARM64 wheels with release 4.0 we have not verified them using the automatized crossbow tasks. We should cover those binaries as well.
Reporter: Krisztian Szucs / @kszucs
Note: This issue was originally created as ARROW-12553. Please see the migration documentation for further details.

ARM64 wheels now use the same GHA workflows as x86 wheels, closing.


zfsUnstable fixes for kernel 4.14

Motivation for this change
zfsUnstable broke on kernel 4.14
Verified working with tests from https://github.com/NixOS/nixpkgs/pull/31618 and manually on my laptop.
Stable is still broken.
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option build-use-sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[x] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[x] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[x] Fits CONTRIBUTING.md.

Thanks!


language/unsorted/flatten_test fails with dart2wasm-linux-chrome (but not with d8)

It looks like the runtime errors are not thrown synchronously, and with Chrome the test ends before throwing the exception.
I'm not sure if the test needs asyncStart/asyncEnd or this is a dart2wasm issue.
Minimal repro:
import 'dart:async';

class Derived<T> implements Future<T> {
  noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
}

test() async {
  // flatten(Derived<int>) = int
  Future<int> x = (() async => new Derived<int>())();
}

main() {
  test();
}

This fails with a runtime error in d8, but passes in Chrome.

One explanation why these tests pass with d8 but fail with Chrome can be that we currently use setTimeout for scheduling (this will change with https://dart-review.googlesource.com/c/sdk/+/305201), which in d8 does not wait before calling the callback. So some of the async callbacks will be called almost synchronously.
With https://dart-review.googlesource.com/c/sdk/+/305201 we override d8's setTimeout, but the new event loop implementation used in d8 waits for all tasks to complete, so these tests will still work as expected with d8 and fail with Chrome because the test driver we use in Chrome does not wait (and has no way to wait) for all events to complete.

Note that the compile-time error in 'language/unsorted/flatten_test.dart' isn't relevant for the behavior of the flatten function, so we might want to delete line 36, or we could rewrite it to use a local function with a declared return type rather than a function literal (like the one in line 35).

The language/async/divergent_flatten_test and language/nnbd/static_errors/unchecked_use_of_nullable_test are passing now.
The tests should be using asyncStart/asyncEnd which I'll do in cl/368581
The issue with test runner not recognizing async tests has been fixed some time ago.


works with minimal modification and dev versions of KnetLayers, Knet, AutoGrad

We should tag a new version of KnetLayers and test a couple of experiments to see if anything changed. We might be able to upgrade the code with minimal effort!

Also works with released AutoGrad, Knet and KnetLayers https://github.com/ekinakyurek/KnetLayers.jl/pull/12

should we merge current PRs?

Sure, and I think they still replicate paper results.
Then we gotta work on making all pretrained models easy to use and get the
poster ready.
On Mon, Oct 28, 2019 at 5:35 AM Ekin Akyürek<EMAIL_ADDRESS>wrote:

should we merge current PRs?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/ai-ku/Morse.jl/pull/8?email_source=notifications&email_token=AAN43JRBDUPGEKXZGB5IY6LQQZFYNA5CNFSM4JDMMU4KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECLQNWY#issuecomment-546768603,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAN43JWHFL6SGFUWQZNJTADQQZFYNANCNFSM4JDMMU4A
.

Just added compat entries in Project.toml for the latest tagged versions of AutoGrad, Knet, KnetLayers. Please test and merge.


Feature request: GBC-V2 Cavium support for DVT

Product: (OC-SDR, OC-LTE, OC-LTE, OC-Power, others)
OC-SDR
Component: (PSU, GBC, BBU, FEM, LED, ME)
GBC
Category: (Hardware, Software/stack, Firmware/bootloader, Documentation)
Software/stack
Describe the solution you'd like
Description : Software validation support for all GBCV-2 peripherals.
Excel sheet is attached for all the software requirements.
[Test_plan_for-GBCV2.xlsx]
(https://github.com/Telecominfraproject/OpenCellular/files/2433591/Test_plan_for-GBCV2.xlsx)
Is your feature request related to a problem? Please describe.

Attached GBC DVT software support doc.
GBC_DVT.zip

GBC_DVT.docx
Updated host application testing to the doc

Closing the ticket as DVT SW support almost completed and no more new request from HW team.


load_vcf_fast fails when sample names contain spaces

I was looking at a VCF where the sample name was "medullary thyroid" and got the following error from load_vcf_fast:
CParserError: Too many columns specified: expected 11 and found 10

Using just load_vcf worked.

@timodonnell Did you ever get around to fixing this? If not I can take a look at it.

Sorry, I started working on this then got side tracked. I think #160 should fix it.


migrate kubebuilder v3 to v4

What
Describe what the change is solving
How
Describe the solution
Breaking Changes
Are there any breaking changes in this PR?

Current dependencies on/for this PR:

main

PR #326   👈

This stack of pull requests is managed by Graphite.


Add Metadata type for holding annotations and renames

Move those fields from CircuitState to Metadata
Here's Metadata, PR-ed against the refactor annotations branch
Some things get kind of annoying to express, like adding annotations to the ones already there:
val newAnnos = ...
// Before
state.copy(annotations = state.annotations ++ newAnnos)
// After
state.copy(metadata = state.metadata.copy(annotations = state.metadata.annotations ++ newAnnos))

Thoughts?

We decided against this approach, instead we're going to make some changes to CircuitState.


ListBlobFlatSegmentResponse shouldn't include delimiter

https://github.com/Azure/azure-rest-api-specs/blob/ccf01ab1567a0ced8bd9d8de5d897e2cb1a03e0e/specification/storage/data-plane/Microsoft.BlobStorage/preview/2019-02-02/blob.json#L8257
/cc @XiaoningLiu

@jasonyang-msft @xiaonlimsft Can one of you have a look at this issue?

@jeremymeng
As the agreement, for all dataplane issues, please add "Client" label, or our monitor of storage SRP issues will raise false alarm.
Thanks!

This can be resolved by removing this from swagger and re-generate, @jeremymeng if like to take this in preview.4 please go head update the swagger in this repo.

Closing as it's fixed.


Fix function serialization

This fixes an error I'd been struggling with for a while. Previously, func_dump was trying to decode the marshaling output using the raw_unicode_escapes codec for portability, then encode it to get back to the original. This is the exact opposite of what you want to be doing: you want to encode the bytes returned by marshal into some portable format, then decode it back into the original bytes.
As a result of this confusion, instead of (as I presume was intended) encoding the bytes as Unicode escapes, the code was searching the bytes for anything that looked like a Unicode escape and parsing it as such. This is seriously problematic, as marshaled output can contain invalid Unicode escapes, which was the problem I was having. Specifically, my marshaled output contained a path, which, since I'm on Windows, included c:\users\, which is an invalid Unicode escape and thus failed the decoding.
Presumably, the reason this mistake was made is that marshal returns bytes, which needed to be converted to a string, and decode is the method used to do that, despite the fact that semantically decoding is the opposite of the operation that needs to be performed. This is due to the fact that, for Python, encoding is the operation of encoding a string into bytes and decoding is the operation of decoding bytes into a string. Thus, since here you want to do the opposite, and encode bytes into a string and decode a string into bytes, the default methods fight back against you.
My fix is fairly simple. I explicitly use codecs to force the right type of encoding/decoding to be performed, and for portability, I'm using the base64 codec. Thus, the code takes the marshaled output, converts it to base 64 for portability, then converts it back into bytes when it needs to be loaded. This does the semantically correct thing, and solves the issue I was experiencing above.

@fchollet Added a test and fixed the string delimiters.

It looks like the tests are failing: https://travis-ci.org/fchollet/keras/builds/306493889
(binary strings are not JSON-serializable).

For a look at a test that covers functions with closure values, have a look at https://github.com/fchollet/keras/pull/8592
(file tests/keras/utils/generic_utils_test.py)

@rh314 @fchollet: This PR seems to have broken backwards compatibility w.r.t. models serialized before this change.  I tried to boil this down to the following simple example:
In [22]: import codecs

In [23]: import marshal

In [24]: from keras.activations import softmax  # just an example function

In [25]: code = marshal.dumps(softmax.__code__).decode('raw_unicode_escape')  # old serialization

In [26]: codecs.decode(code.encode('ascii'), 'base64')  # new deserialization
---------------------------------------------------------------------------
UnicodeEncodeError                        Traceback (most recent call last)
<ipython-input-26-83df9bd56477> in <module>()
----> 1 codecs.decode(code.encode('ascii'), 'base64')

UnicodeEncodeError: 'ascii' codec can't encode character u'\x8f' in position 18: ordinal not in range(128)
> <ipython-input-26-83df9bd56477>(1)<module>()
----> 1 codecs.decode(code.encode('ascii'), 'base64')


Day317

Resolves #645.

Pull Request Test Coverage Report for Build 1212

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 100.0%

Totals

Change from base Build 1209:
0.0%

Covered Lines:
5

Relevant Lines:
5

💛  - Coveralls

Pull Request Test Coverage Report for Build 1220

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 100.0%

Totals

Change from base Build 1209:
0.0%

Covered Lines:
5

Relevant Lines:
5

💛  - Coveralls


pull request for e2e test at 11/26/2016 01:26:04

:white_check_mark: Validation status: passed
For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Ensure int/date/timestamp conversions are clearly marked as experimental

This change is

cc @sploiselle since this touches one of the known limitations you pinged me about.

http://cockroach-docs-review.s3-website-us-east-1.amazonaws.com/b961ebd5661037a42e283ad4b2994425bc193cdf/

TFYR


Add an alias for the translate tag

Using <translate foo> is pretty nice, but a bit verbose. Lets add a <text foo> tag that does the same.

It may be confusing. What if I have a variable (not translation) saved in foo variable.
I would  expect that text tag rather than translation interpolate a variable.

Makes sense, I'll close this for now.


Display exception

Describe the bug
Display exception
Screenshots

Desktop (please complete the following information):

OS:  win 10
RAM: 8G
CPU:  i7 8086k
Graphic Card: 1060
Version: last

Closing this since I cannot reproduce this issue on multiple Windows 10 systems.
Reopen if someone else faces the same issue.


Possible support for ADN ?

Do you think you could add support for ADN ?
https://animationdigitalnetwork.fr/

sry - i will probably not add support for other services
i always only planned to make a downloader for CR

ok no pbs


I want to top up my default channel with a default amount

User Story
As Chris, I want to top up my default channel with a default amount so that I can make new payments.
Acceptance criteria
Tasks
Story Points

Outdated


Sets up publishing for main/trigger tags

we are still publishing release on commit!

took instructions from here noticing pinot and also schema-registry are still publishing on every tag https://github.com/hypertrace/kafka/pull/10


Enforce user intent around zones in Cassandra

We should probably make this test not set detect_zones? https://github.com/mesosphere/dcos-commons/blob/cassandra_racks/frameworks/cassandra/tests/test_racks.py#L31

@mpereira Thanks.  Fixed.

Cassandra failed in a way I haven't seen before: a marathon app update hung.
Re-running


add placebo test for create_iam_roles

Like the ones for s3, introduces placebo json replies that can be replayed and tests the creation of a role by checking the returned arn

I've pulled this into https://github.com/Miserlou/Zappa/pull/27
Thanks!


Support float values and uppercase letters in labels

Adds support for:

float values
labels with uppercase letters

And updates deps

I somehow entirely missed this, thanks!


Apply MS SQL suppressions to official artifactId (fixes #1017)

Fixes Issue
Fixes #1017 (at least the initial reported part of it, the rest of that issue should probably moved to a new issue)
Description of Change
See #1017, the official GA of the MS SQL JDBC driver is com.microsoft.sqlserver:mssql-jdbc - I left com.microsoft.sqlserver:sqljdbc4 intact since that seems to be a common GA used before the driver was OpenSource...

Can one of the admins verify this patch?

The travis failure seems to be due to unreachable Maven Central :(

Thanks for the PR!  And yes, lots of failures due to CentralAnalyzer and CentralSearch tests failing.  I'm thinking about just putting @ignore on them...


feat: Add agent to collect metrics in the container (or in the host)

Some metrics are not available now, e.g. GPU metrics. We may need a agent process in the container or in the host (not sure if NVML is available in the container) to achieve this

cadvisor
Pros: No need to have an agent
Cons: Need root privilege
https://github.com/google/cadvisor/blob/master/docs/running.md#standalone

dup with #669


Character Sound Issues on 1.18.x

Describe the problem
Audio Issues
Hello, ever since upgrading from 1.17.2 to 1.18.1 and 1.18.2 I am getting a strange audio issue, where the chickens sounds are sounding like trap doors opening and closing.
Anyone experienced these issues before? I am open for any suggestions.
My upgrade path
the container has persistent data, so I've bumped up the tag, and redeployed.
Container definition
  minecraft-server:
    image: itzg/minecraft-server:latest
    container_name: minecraft-server
    ports:
      - 25565:25565
    environment:
      SERVER_NAME: "$SERVER_NAME"
      MOTD: "Forge Minecraft Server"
      EULA: "TRUE"
      TYPE: "FORGE"
      VERSION: "1.18.2"
      MODE: "survival"
      MEMORY: "1G"
      LEVEL_TYPE: "DEFAULT"
      ENABLE_RCON: "true"
      RCON_PASSWORD: $PASSWORD
      RCON_PORT: 28016
      WHITELIST: "$USER_LIST"
      OPS: "$USER_LIST"
      MAX_PLAYERS: 20
      ANNOUNCE_PLAYER_ACHIEVEMENTS: "true"
      SPAWN_ANIMALS: "true"
      SPAWN_MONSTERS: "true"
      PVP: "true"
      LEVEL: "cold"
      TZ: "Africa/Johannesburg"
      GUI: "FALSE"
      ENABLE_WHITELIST: "true"
      MODS_FILE: /extras/mods.txt
      REMOVE_OLD_MODS: "true"
      ONLINE_MODE: "TRUE"
    restart: unless-stopped
    user: "1002:1002"
    volumes:
      - ./data:/data
      - ./mods.txt:/extras/mods.txt:ro
    logging:
      driver: "json-file"
      options:
        max-size: "1m"

Container logs
No errors:
minecraft-server      | [14:52:57] [Server thread/INFO] [ne.mi.co.AdvancementLoadFix/]: Using new advancement loading for net.minecraft.server.PlayerAdvancements@4331cea
minecraft-server      | [14:52:57] [Server thread/INFO] [minecraft/PlayerList]: x[/x.x.x.x:64049] logged in with entity id x at (x.x, -x.0, -x.4527779625238)
minecraft-server      | [14:52:57] [Server thread/INFO] [minecraft/DedicatedServer]: x joined the game

Audio behavior is completely done on the client side. So, it has nothing to do with this container since it runs the server side.

Thanks @itzg for confirming


Error: invalid file magic when importing Safetensors models

What is the issue?

ollama create test -f Modelfile
transferring model data
creating model layer
Error: invalid file magic

This happens for all the Safetensors models I try to import.
Modelfile content
FROM ./model.safetensors

What did you expect to see?
expect to working :)
Steps to reproduce
No response
Are there any recent changes that introduced the issue?
No response
OS
Windows
Architecture
amd64
Platform
No response
Ollama version
0.1.29
GPU
Nvidia
GPU info
No response
CPU
Intel
Other software
No response

What safetensors model were you trying to import? Right now only Mistral and Mistral fine tunes are supported. More are coming soon though!

Oh ok, didn't know that, I was just try to test random models too see how is working  :D
I tried three and four text models, but none of them worked, anyway none of them were Mistral.

Sorry about that! I have Gemma now working, but haven't yet sent out the PR. I'll add an error message saying that that the models aren't yet supported.

@amnweb can you list which models you tried? I just realized there should be code to catch that.

I think this is the last one I tried
https://huggingface.co/google-bert/bert-base-uncased/tree/main
or this
https://huggingface.co/pysentimiento/robertuito-sentiment-analysis/tree/main
Already delete from disk and can't remember what I was downloaded

Can you post one of the modelfiles? I'm trying to figure out if you had converted/quantized these yourself or got ollama to convert the safetensors files.

I have downloaded model.safetensors https://huggingface.co/google-bert/bert-base-uncased/resolve/main/model.safetensors
Created Modelfile with content FROM ./model.safetensors and run command from terminal. If I understand Ollama should be convert safetensors or I'm thinking wrong ?

I'm having this same issue with ollama in docker and using https://huggingface.co/TheBloke/CodeLlama-7B-Instruct-GGUF codellama-7b-instruct.Q4_0.gguf file.. here is my modelfile

FROM /models/CodeLlama-7B-Instruct-GGUF/codellama-7b-instruct.Q4_0.gguf
TEMPLATE """[INST] <<SYS>>{{ .System }}<</SYS>>

{{ .Prompt }} [/INST]"""
PARAMETER rope_frequency_base 1000000
PARAMETER stop [INST]
PARAMETER stop [/INST]
PARAMETER stop <<SYS>>
PARAMETER stop <</SYS>>

I'm having this same issue with ollama in docker and using https://huggingface.co/TheBloke/CodeLlama-7B-Instruct-GGUF codellama-7b-instruct.Q4_0.gguf file.. here is my modelfile

I had a corrupt file.

@amnweb sorry for the slow response! I somehow lost track of this. I don't believe any of the models you converted will work inside of the llama.cpp runner unfortunately.

I'm having this same issue with ollama, I used it on linux 20.04


Implement compact attribute for markup card

There may be too much whitespace in the markup card due to padding. There should be a possibility to remove/decrease it.
Describe the solution you'd like
Implement compact attribute for markup card, similar to https://github.com/h2oai/wave/pull/1735.

Implementation notes since marked as good first issue:

Make sure to read https://wave.h2o.ai/docs/contributing/#development-setup.
In order to test out the new attribute, once added to the TS definition, make generate from project root is needed to be run - generates Py/R type definitions that you can then use in your python test code.

@mturoci Can I please be assigned this issue? I submitted the pull request for issue #1867 and would also love to tackle this as part of my software engineering assignment. Thank you for your consideration.

Go ahead @dthiagarajan7!


Flow doesn't respect interface definition when implementation exists

I was trying to type check some code that uses Immutable.JS and this interface definition: https://gist.github.com/kastermester/ad79da3e48064effd82e
I was getting stumped when this code wasn't throwing any Flow errors:
import { fromJS, Map as IMap } from 'immutable';

export async function createClientIdAndSecret() : Promise<IMap<string, string>> {
  const clientId: string = uuid.v1();
  const clientSecret: string = crypto.randomBytes(48).toString('hex');

  const shasum = crypto.createHash('sha512');
  shasum.update(clientSecret);
  const clientSecretToStore = shasum.digest('hex');

  await OAuthClient.forge({
    client_id: clientId,
    client_secret: clientSecretToStore
  }).save();

  return 'hello';
}

But this code was throwing the correct error (that "number" and "string" weren't compatible):
import { fromJS, Map as IMap } from 'immutable';

export async function createClientIdAndSecret() : Promise<number> {
  const clientId: string = uuid.v1();
  const clientSecret: string = crypto.randomBytes(48).toString('hex');

  const shasum = crypto.createHash('sha512');
  shasum.update(clientSecret);
  const clientSecretToStore = shasum.digest('hex');

  await OAuthClient.forge({
    client_id: clientId,
    client_secret: clientSecretToStore
  }).save();

  return 'hello';
}

After discussing with @jeffmo on IRC, it seems that the reason this is happening is because Flow can't reason about the Immutable.js build properly, and since it isn't tagged with @flow, treats it's exports as any, and ignores the immutable library def.
Sure enough, when I ignore node_modules/immutable in my .flowconfig, it uses my Immutable interface definition and throws errors (seemingly correct ones too!).

cc @bhosmer

Seems like a duplicate of https://github.com/facebook/flow/issues/447

Any idea if/when this will be fixed?

I only today discovered that Flow actually supports type-checking of props passed to React components, but you have to add a line like .*/node_modules/react\(-dom\)?/.* to your .flowconfig [ignore] to make it work. I'm really surprised there's such a useful feature hidden by an issue like this.

I can't get this working, even with the above line in .flowconfig

@JoeStanton I got this working
Header.jsx
`
type HeaderType = {
isAdmin: boolean,
dispatch: Function
};
const Header = ({
isAdmin,
dispatch
}: HeaderType ) => (

...
`
.flowconfig
[ignore]
.*/node_modules/react\(-dom\)?
...

@JoeStanton I got this working
Header.jsx
type HeaderType = {
  isAdmin: boolean,
  dispatch: Function
};

const Header = ({
  isAdmin,
  dispatch
}: HeaderType ) => (
  <Toolbar style={style.bar}>
    <ToolbarGroup float="left" firstChild>
      <MenuIcon dispatch={dispatch}/>
...

.flowconfig
[ignore]
.*/node_modules/react\(-dom\)?
...


Dockerfile: Add git ref labels

In order to be able to resolve for each image what is the git
commit it was built from using docker inspect.
Can be inspected by using
docker inspect --format '{{ index .Config.Labels "multi.GIT_URL"}}'
docker inspect --format '{{ index .Config.Labels "multi.GIT_SHA"}}'
Beside that:
2nd commit is a cosmetic to capitalize the first word in a sentence.

Thanks
Validation passed (for latest, didnt try tagged since we dont have yet)
$ docker run --rm quay.io/skopeo/stable:latest inspect docker://ghcr.io/alonakaplan/kubesecondarydns@sha256:984bc570b2c119dff4e6283e2679d50cdb0caebea9a6ab8be9840f250d6ee329 | grep GIT
        "multi.GIT_SHA": "5b7a764ffdba6bd8527b3bdccea5861562e609b1",
        "multi.GIT_URL": "https://github.com/AlonaKaplan/kubesecondarydns",


Tableau buttons

Coverage increased (+0.3%) to 91.703% when pulling 2f0e1bf1fd37ef0a75ec6feee872bc06f22b25a9 on tableau-buttons into cfb812197a53958687a1b09b6aea46ab16e5ae38 on search-pagination.

Coverage increased (+0.3%) to 91.703% when pulling 2f0e1bf1fd37ef0a75ec6feee872bc06f22b25a9 on tableau-buttons into cfb812197a53958687a1b09b6aea46ab16e5ae38 on search-pagination.


Fix shadow texture uniform warning

Fix useless shadow texture binding during cast
Removes useless uniforms for none/pcf
Add shadow offset rotation

(Not Ready For Merge)

needs a rebase

this is not fixed https://github.com/cedricpinson/osgjs/pull/411/files#r39389990


spreadsheet import feature

Now that I've added spreadsheet export capability, a corresponding import ability using Excel2SqlServer would be really nifty!
Needs to support worksheet selection, per this issue

No worksheet selection yet, but can import files


SQL Managed Instance ARM Template on Azure Red Hat Openshift, AMA-logs pods failing, Data controller pods not coming up.

Is your issue related to a Jumpstart scenario, ArcBox, HCIBox, or Agora?
This issue is related to the Azure Red Hat OpenShift deployment with SQL MI.
Describe the issue or the bug
The issue occurs when deploying the data controller for the custom location. The data controller gets stuck in the "creating resource state"

This occurs after the creation of the custom location.
The containers for the namespace are not coming up correctly.

I see that the ama-logs containers are also failing.

I am unsure why these pods are failing, I cannot see the logging information here either.
With regards to the data controller, I am seeing this in the logs
The required pre-checks for onboarding have succeeded.
Azure resource provisioning has begun.
Azure resource provisioning has finished.
Unable to fetch the Object ID of the Azure AD application used by Azure Arc service. Unable to enable the 'custom-locati
ons' feature. Insufficient privileges to complete the operation.
I am using an owner role on the subscription, same I used for ArcBox, so it should work, its more than the required roles in the documentation.
az ad sp create-for-rbac -n "" --role "Contributor" --scopes /subscriptions/$subscriptionId
az ad sp create-for-rbac -n "" --role "Security admin" --scopes /subscriptions/$subscriptionId
az ad sp create-for-rbac -n "" --role "Security reader" --scopes /subscriptions/$subscriptionId
az ad sp create-for-rbac -n "" --role "Monitoring Metrics Publisher" --scopes /subscriptions/$subscriptionId

I have tried deploying into two separate locations. West Europe and North Europe.
I have tried deploying with failover and without failover group for MI.
I have also disabled PostgreSQL part of the deployment as well.
To Reproduce
I deploy the template using the following options in the parameter file, I deploy using the az CLI to deploy the ARM template.
},
"windowsAdminUsername": {
  "value": "wadutoit-admin"
},
"windowsAdminPassword": {
  "value": "ArcPassword123!!"
},
"logAnalyticsWorkspaceName": {
  "value": "wadutoit-aro-la"
},
"deploySQLMI": {
  "value": true
},
"SQLMIHA": {
  "value": false
},
"deployPostgreSQL": {
  "value": false
},
"bastionHostName": {
  "value": "Arc-Data-Demo-Bastion"
},
"deployBastion": {
  "value": false
},

Once template is deployed, you login to the Arc-Data-Client
Let the login script run and it never completes.
Expected behavior
Expected for the script to complete and deploy the ARO cluster with custom location, data controller, and SQL MI.
Environment summary
AZ CLI is up to date. Repo was synced about 2 weeks ago. However the template command refers to the github repo directly. its only the parameter file that is local.
az group create --name wadutoit-aro-demo-rg --location northeurope
az deployment group create
--resource-group wadutoit-aro-demo-rg
--name wadutoit-aro-demo
--template-uri https://raw.githubusercontent.com/microsoft/azure_arc/main/azure_arc_data_jumpstart/aro/ARM/azuredeploy.json
--parameters azuredeploy.parameters.json
It also seems that the created log analytics workspace is not being used for the deployment ?

From the logs
Enabling Container Insights cluster extensions
Ignoring name, release-namespace and scope parameters since microsoft.azuremonitor.containers only supports cluster scop
e and single instance of this extension.
Defaulting to extension name 'azuremonitor-containers' and release-namespace 'azuremonitor-containers'
(ExtensionOperationFailed) The extension operation failed with the following error:  Error: [ InnerError: [Helm installa
tion failed : Timed out waiting for the resource to come to a ready/completed stateDaemonSet is not ready: kube-system/a
ma-logs. 0 out of 5 expected pods are ready : Recommendation Please contact Microsoft support for further inquiries : In
nerError [release azuremonitor-containers failed, and has been uninstalled due to atomic being set: timed out waiting fo
r the condition]]] occurred while doing the operation : [Create] on the config.
Code: ExtensionOperationFailed
Message: The extension operation failed with the following error:  Error: [ InnerError: [Helm installation failed : Time
d out waiting for the resource to come to a ready/completed stateDaemonSet is not ready: kube-system/ama-logs. 0 out of
5 expected pods are ready : Recommendation Please contact Microsoft support for further inquiries : InnerError [release
azuremonitor-containers failed, and has been uninstalled due to atomic being set: timed out waiting for the condition]]]
occurred while doing the operation : [Create] on the config.
Have you looked at the Troubleshooting and Logs section?
There is no troubleshooting section for ARO and the pods failing
Screenshots
Screenshots have been added inline.
Additional context

Please find the logs below.
Logs.zip

@warrendt Thanks for submitting this issue. It has now been resolved


Small example errors

the example hardware_setup for the XPT2046 has  tpad = XPT2046(spi, cspin=Pin(0), ssd) which gives the error 'positional arg after keyword arg'   Of course tpad = XPT2046(spi, Pin(0), ssd) works OK.
Also, for the ssd parameters I have usd=False and the screen demo's work ok.
However the touch demo - simple.py - whilst it displays the yes and no labels and the quit label in the expected place, the touch coordinates are still operating in the usd=True place.  (i.e as if the sreen is upside down)
I expect one of the 'True' parameters in the  tpad.init(240, 320, 270, 330, 3890, 3980, True, True, True) should be set to False but not sure, so I thought I would ask the man who knows :-)
Its looking quite good for one of my ili9341 screens and I think I should be able work with it.

Thanks for the report - I had already found that first bug.
Re setup.py the version I released was needlessly complex and may well be buggy. I've just posted an update, perhaps you could try it and see if the boolean values are now correct.
If you are still having problems please report and I will do some more testing. it's quite tricky to test all the possible combinations.
It is possible to figure the booleans out manually if you run touch.check as described here. The meaning of the bools is described here. If you're in landscape mode it sounds like you need to toggle the middle one (reflect rows).
As is probably obvious I'm actively working on the setup side of things (I'm reasonably confident of the GUI itself) so please wath this space.

The default is 1MHz. Data rates on the touch interface is not critical: specifying 2.5MHz won't make the slightest difference to performance. I quote datasheet values simply for reference.
I'm glad it's working for you, thank you for the report. I'll close this, but please report anything else that crops up.


fix(tests): flaky select ui test (VIV-000)

the select implements a light dismiss feature that collapses it on focusout.
our ui tests need (at the time of writing) two open selects at the same time in the same page, which can sometimes work or fail depending on how fast the screenshot is taken. this PR short circuits the focusout handler in the ui tests. miserably fails to fix that and simply removes open in the second example.

the issue with the test is FF applying the open defiantly sometimes.
That was originally fixed with setting the selects flow in one line.
A PR was added that created another line - making the test flaky again.


Examples in documentation don't work

After reading the documentation, I created a test page with a button for executing a bandwidth test. I cut/paste from the documentation into my test, which is a PHP page and nothing happens when I click the button that invokes the boomerang init and subscribe. I would hope that documented stuff would work first time everytime. Disappointed. Can someone fill in what the documentation lacks or assumes as basic boomerang knowledge?
The beacon url is a JPG. A simple JPG. I tested the URL and the JPG displays. Running Safari on MAC, with debugger enabled. There is no boomer object. created when I click my execute test button. I want a button, so that a bandwidth test is an option for the user.
This all fails silently. So I don't have any messages to report.

 Bandwidth Report

Or
BOOMR.init({
beacon_url: "http://myweb/test.jpg",
RT: {
cookie: "cookie-rt",
strict_referrer: false
}
});
Which also fails to do anything.

Boomerang doesn't run on button clicks, it runs on the onload event. You have to call init before onload, and then wait.
The bandwidth test will also not block the beacon, so the beacon will actually get sent before the rest completes. To get the beacon to wait for the bandwidth test, you need to pass block_beacon to the BW plugin via init.
See the docs at http://www.lognormal.com/boomerang/doc/api/BW.html

You can fire the event after onload by calling BOOMR.pageReady()

Thanks for the information. I will work with it later today. In my application, I want use of Boomerang to be optional and therefore controlled by a button, which calls a function to initiate Boomerang.
Another problem I experienced is trying to run Boomerang more than once. I believe .pageReady() may resolve this situation.
In my test case, I needed to include rt.js. Without it, Boomerang failed. With it Boomerang returned data. Include rt.js resolved my situation. One set of documentation has rt.js, but the other HowTo+0 or +1 does not.
AK
Date: Sun, 14 Jun 2015 20:12:33 -0700
From<EMAIL_ADDRESS>To<EMAIL_ADDRESS>CC<EMAIL_ADDRESS>Subject: Re: [boomerang] Examples in documentation don't work (#64)
Boomerang doesn't run on button clicks, it runs on the onload event. You have to call init before onload, and then wait.
The bandwidth test will also not block the beacon, so the beacon will actually get sent before the rest completes. To get the beacon to wait for the bandwidth test, you need to pass block_beacon to the BW plugin via init.
See the docs at http://www.lognormal.com/boomerang/doc/api/BW.html
—
Reply to this email directly or view it on GitHub.

You don't need rt.js specifically. Any boomerang plugin will do as long as
it calls sendBeacon()
You can set autorun to false to stop it from running on onload and only
run when you call pageReady.
http://www.lognormal.com/boomerang/doc/api/BOOMR.html
I don't think calling pageReady more than once will do what you want
though. It sets an internal flag.

When Boomerang.init sits inside a function, it does not run onLoad. In my code test, .init() sat within a function with a diagnostic alert. I only saw the alert when I clicked my button to invoke the function.
Is it possible for Boomerang to gather data more than once?
Date: Mon, 15 Jun 2015 05:39:56 -0700
From<EMAIL_ADDRESS>To<EMAIL_ADDRESS>CC<EMAIL_ADDRESS>Subject: Re: [boomerang] Examples in documentation don't work (#64)
You don't need rt.js specifically. Any boomerang plugin will do as long as
it calls sendBeacon()
You can set autorun to false to stop it from running on onload and only
run when you call pageReady.
http://www.lognormal.com/boomerang/doc/api/BOOMR.html
I don't think calling pageReady more than once will do what you want
though. It sets an internal flag.
—
Reply to this email directly or view it on GitHub.

init should be called only once when the page is being constructed...
before onload happens. The init function will not fire a beacon.
Beacons fire based on when various plugins tell them to fire. Most plugins
do this when pageReady is called, which by default happens on onload, but
you can change that with autorun=false and calling pageReady manually.
To collect data multiple times, you'll need to tell the relevant plugins to
do their work at different times, which might involve writing your own
plugin or changing existing plugin code.
If it's a single page app, then the auto XHR functionality might help.

Phillip,
Using the documentation, I am trying to get bandwidth to work. My code is below. I see the alertsAK001AK009
I don't see AK002, which is in the .subscribe method/call. In the develop console, I don't see the cookie created and I don't see a beacon request to the image. The page "runs" as php, and the JavaScript executes but no bandwidth or beacon. What have I missed?
If I include rt.js, then I see, AK001, AK009, beacon, no cookie, and no bandwidth.

Updated your comment to make it easier to read.
I noticed that you're missing a closing </script> tag.  I wonder if that could cause a problem.

I added the closing script tag and no change. I downloaded the boomerang.js from the website earlier in the week and I have made no changes.
/*

Copyright (c) 2011, Yahoo! Inc.  All rights reserved.
Copyright (c) 2012, Log-Normal, Inc.  All rights reserved.
Copyright (c) 2014, SOASTA, Inc. All rights reserved.
Copyrights licensed under the BSD License. See the accompanying LICENSE.txt file for terms.
*/

/**
\file boomerang.js
boomerang measures various performance characteristics of your user's browsing
experience and beacons it back to your server.
\details
To use this you'll need a web site, lots of users and the ability to do
something with the data you collect.  How you collect the data is up to
you, but we have a few ideas.
*/
/eslint-env browser/
/global BOOMR:true, BOOMR_start:true, BOOMR_lstart:true, console:false/
/eslint no-mixed-spaces-and-tabs:[2, true], console:0, camelcase:0, strict:0, quotes:[2, "double", "avoid-escape"], new-cap:0/
/eslint space-infix-ops:0, no-console:0, no-delete-var:0, no-space-before-semi:0, no-multi-spaces:1, space-unary-ops: 0, key-spacing: 0, dot-notation: [2, {"allowKeywords": false }]/
// Measure the time the script started
// This has to be global so that we don't wait for the entire
// BOOMR function to download and execute before measuring the
// time.  We also declare it without var so that we can later
// delete it.  This is the only way that works on Internet Explorer
BOOMR_start = new Date().getTime();
/**
Check the value of document.domain and fix it if incorrect.
This function is run at the top of boomerang, and then whenever
init() is called.  If boomerang is running within an iframe, this
function checks to see if it can access elements in the parent
iframe.  If not, it will fudge around with document.domain until
it finds a value that works.
This allows customers to change the value of document.domain at
any point within their page's load process, and we will adapt to
it.
*/
function BOOMR_check_doc_domain(domain) {
/eslint no-unused-vars:0/
var test;
// If domain is not passed in, then this is a global call
// domain is only passed in if we call ourselves, so we
// skip the frame check at that point
if(!domain) {
	// If we're running in the main window, then we don't need this
	if(window.parent === window || !document.getElementById("boomr-if-as")) {
		return;// true;	// nothing to do
	}

	domain = document.domain;
}

if(domain.indexOf(".") === -1) {
	return;// false;	// not okay, but we did our best
}

// 1. Test without setting document.domain
try {
	test = window.parent.document;
	return;// test !== undefined;	// all okay
}
// 2. Test with document.domain
catch(err) {
	document.domain = domain;
}
try {
	test = window.parent.document;
	return;// test !== undefined;	// all okay
}
// 3. Strip off leading part and try again
catch(err) {
	domain = domain.replace(/^[\w\-]+\./, "");
}

BOOMR_check_doc_domain(domain);

}
BOOMR_check_doc_domain();
// beaconing section
// the parameter is the window
(function(w) {
var impl, boomr, d, myurl, createCustomEvent, dispatchEvent, visibilityState, visibilityChange;
// This is the only block where we use document without the w. qualifier
if(w.parent !== w
&& document.getElementById("boomr-if-as")
&& document.getElementById("boomr-if-as").nodeName.toLowerCase() === "script") {
w = w.parent;
myurl = document.getElementById("boomr-if-as").src;
}
d = w.document;
// Short namespace because I don't want to keep typing BOOMERANG
if(!w.BOOMR) { w.BOOMR = {}; }
BOOMR = w.BOOMR;
// don't allow this code to be included twice
if(BOOMR.version) {
return;
}
BOOMR.version = "0.9";
BOOMR.window = w;
if (!BOOMR.plugins) { BOOMR.plugins = {}; }
// CustomEvent proxy for IE9 & 10 from https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent
(function() {
try {
if (new w.CustomEvent("CustomEvent") !== undefined) {
createCustomEvent = function (e_name, params) {
return new w.CustomEvent(e_name, params);
};
}
}
catch(ignore) {
}
try {
	if (!createCustomEvent && d.createEvent && d.createEvent( "CustomEvent" )) {
		createCustomEvent = function (e_name, params) {
			var evt = d.createEvent( "CustomEvent" );
			params = params || { cancelable: false, bubbles: false };
			evt.initCustomEvent( e_name, params.bubbles, params.cancelable, params.detail );

			return evt;
		};
	}
}
catch(ignore) {
}

if (!createCustomEvent && d.createEventObject) {
	createCustomEvent = function (e_name, params) {
		var evt = d.createEventObject();
		evt.type = evt.propertyName = e_name;
		evt.detail = params.detail;

		return evt;
	};
}

if(!createCustomEvent) {
	createCustomEvent = function() { return undefined; };
}

}());
/**
dispatch a custom event to the browser
@param e_name	The custom event name that consumers can subscribe to
@param e_data	Any data passed to subscribers of the custom event via the event.detail property
@param async	By default, custom events are dispatched immediately.
Set to true if the event should be dispatched once the browser has finished its current
JavaScript execution.
*/
dispatchEvent = function(e_name, e_data, async) {
var ev = createCustomEvent(e_name, {"detail": e_data});
if (!ev) {
return;
}
function dispatch() {
	if(d.dispatchEvent) {
		d.dispatchEvent(ev);
	}
	else if(d.fireEvent) {
		d.fireEvent("onpropertychange", ev);
	}
}

if(async) {
	BOOMR.setImmediate(dispatch);
}
else {
	dispatch();
}

};
// visibilitychange is useful to detect if the page loaded through prerender
// or if the page never became visible
// http://www.w3.org/TR/2011/WD-page-visibility-20110602/
// http://www.nczonline.net/blog/2011/08/09/introduction-to-the-page-visibility-api/
// https://developer.mozilla.org/en-US/docs/Web/Guide/User_experience/Using_the_Page_Visibility_API
// Set the name of the hidden property and the change event for visibility
if (typeof document.hidden !== "undefined") { // Opera 12.10 and Firefox 18 and later support
visibilityState = "visibilityState";
visibilityChange = "visibilitychange";
}
else if (typeof document.mozHidden !== "undefined") {
visibilityState = "mozVisibilityState";
visibilityChange = "mozvisibilitychange";
}
else if (typeof document.msHidden !== "undefined") {
visibilityState = "msVisibilityState";
visibilityChange = "msvisibilitychange";
}
else if (typeof document.webkitHidden !== "undefined") {
visibilityState = "webkitVisibilityState";
visibilityChange = "webkitvisibilitychange";
}
// impl is a private object not reachable from outside the BOOMR object
// users can set properties by passing in to the init() method
impl = {
// properties
beacon_url: "",
// beacon request method, either GET, POST or AUTO. AUTO will check the
// request size then use GET if the request URL is less than 2000 chars
// otherwise it will fall back to a POST request.
beacon_type: "AUTO",
// strip out everything except last two parts of hostname.
// This doesn't work well for domains that end with a country tld,
// but we allow the developer to override site_domain for that.
// You can disable all cookies by setting site_domain to a falsy value
site_domain: w.location.hostname.
replace(/.*?([^.]+.[^.]+).?$/, "$1").
toLowerCase(),
//! User's ip address determined on the server.  Used for the BA cookie
user_ip: "",
strip_query_string: false,

onloadfired: false,

handlers_attached: false,
events: {
	"page_ready": [],
	"page_unload": [],
	"before_unload": [],
	"dom_loaded": [],
	"visibility_changed": [],
	"before_beacon": [],
	"onbeacon": [],
	"xhr_load": [],
	"click": [],
	"form_submit": []
},

public_events: {
	"before_beacon": "onBeforeBoomerangBeacon",
	"onbeacon": "onBoomerangBeacon",
	"onboomerangloaded": "onBoomerangLoaded"
},

vars: {},

errors: {},

disabled_plugins: {},

xb_handler: function(type) {
	return function(ev) {
		var target;
		if (!ev) { ev = w.event; }
		if (ev.target) { target = ev.target; }
		else if (ev.srcElement) { target = ev.srcElement; }
		if (target.nodeType === 3) {// defeat Safari bug
			target = target.parentNode;
		}

		// don't capture events on flash objects
		// because of context slowdowns in PepperFlash
		if(target && target.nodeName.toUpperCase() === "OBJECT" && target.type === "application/x-shockwave-flash") {
			return;
		}
		impl.fireEvent(type, target);
	};
},

fireEvent: function(e_name, data) {
	var i, handler, handlers;

	e_name = e_name.toLowerCase();

	if(!this.events.hasOwnProperty(e_name)) {
		return false;
	}

	if (this.public_events.hasOwnProperty(e_name)) {
		dispatchEvent(this.public_events[e_name], data);
	}

	handlers = this.events[e_name];

	for(i=0; i<handlers.length; i++) {
		try {
			handler = handlers[i];
			handler.fn.call(handler.scope, data, handler.cb_data);
		}
		catch(err) {
			BOOMR.addError(err, "fireEvent." + e_name + "<" + i + ">");
		}
	}

	return true;
}

};
// We create a boomr object and then copy all its properties to BOOMR so that
// we don't overwrite anything additional that was added to BOOMR before this
// was called... for example, a plugin.
boomr = {
t_lstart: null,
t_start: BOOMR_start,
t_end: null,
url: myurl,

// Utility functions
utils: {
	objectToString: function(o, separator, nest_level) {
		var value = [], k;

		if(!o || typeof o !== "object") {
			return o;
		}
		if(separator === undefined) {
			separator="\n\t";
		}
		if(!nest_level) {
			nest_level=0;
		}

		if (Object.prototype.toString.call(o) === "[object Array]") {
			for(k=0; k<o.length; k++) {
				if (nest_level > 0 && o[k] !== null && typeof o[k] === "object") {
					value.push(
						this.objectToString(
							o[k],
							separator + (separator === "\n\t" ? "\t" : ""),
							nest_level-1
						)
					);
				}
				else {
					if (separator === "&") {
						value.push(encodeURIComponent(o[k]));
					}
					else {
						value.push(o[k]);
					}
				}
			}
			separator = ",";
		}
		else {
			for(k in o) {
				if(Object.prototype.hasOwnProperty.call(o, k)) {
					if (nest_level > 0 && o[k] !== null && typeof o[k] === "object") {
						value.push(encodeURIComponent(k) + "=" +
							this.objectToString(
								o[k],
								separator + (separator === "\n\t" ? "\t" : ""),
								nest_level-1
							)
						);
					}
					else {
						if (separator === "&") {
							value.push(encodeURIComponent(k) + "=" + encodeURIComponent(o[k]));
						}
						else {
							value.push(k + "=" + o[k]);
						}
					}
				}
			}
		}

		return value.join(separator);
	},

	getCookie: function(name) {
		if(!name) {
			return null;
		}

		name = " " + name + "=";

		var i, cookies;
		cookies = " " + d.cookie + ";";
		if ( (i=cookies.indexOf(name)) >= 0 ) {
			i += name.length;
			cookies = cookies.substring(i, cookies.indexOf(";", i));
			return cookies;
		}

		return null;
	},

	setCookie: function(name, subcookies, max_age) {
		var value, nameval, savedval, c, exp;

		if(!name || !impl.site_domain) {
			BOOMR.debug("No cookie name or site domain: " + name + "/" + impl.site_domain);
			return false;
		}

		value = this.objectToString(subcookies, "&");
		nameval = name + "=" + value;

		c = [nameval, "path=/", "domain=" + impl.site_domain];
		if(max_age) {
			exp = new Date();
			exp.setTime(exp.getTime() + max_age*1000);
			exp = exp.toGMTString();
			c.push("expires=" + exp);
		}

		if ( nameval.length < 500 ) {
			d.cookie = c.join("; ");
			// confirm cookie was set (could be blocked by user's settings, etc.)
			savedval = this.getCookie(name);
			if(value === savedval) {
				return true;
			}
			BOOMR.warn("Saved cookie value doesn't match what we tried to set:\n" + value + "\n" + savedval);
		}
		else {
			BOOMR.warn("Cookie too long: " + nameval.length + " " + nameval);
		}

		return false;
	},

	getSubCookies: function(cookie) {
		var cookies_a,
		    i, l, kv,
		    gotcookies=false,
		    cookies={};

		if(!cookie) {
			return null;
		}

		if(typeof cookie !== "string") {
			BOOMR.debug("TypeError: cookie is not a string: " + typeof cookie);
			return null;
		}

		cookies_a = cookie.split("&");

		for(i=0, l=cookies_a.length; i<l; i++) {
			kv = cookies_a[i].split("=");
			if(kv[0]) {
				kv.push("");	// just in case there's no value
				cookies[decodeURIComponent(kv[0])] = decodeURIComponent(kv[1]);
				gotcookies=true;
			}
		}

		return gotcookies ? cookies : null;
	},

	removeCookie: function(name) {
		return this.setCookie(name, {}, -86400);
	},

	cleanupURL: function(url) {
		if (!url) {
			return "";
		}
		if(impl.strip_query_string) {
			return url.replace(/\?.*/, "?qs-redacted");
		}
		return url;
	},

	hashQueryString: function(url, stripHash) {
		if(!url) {
			return url;
		}
		if(!url.match) {
			BOOMR.addError("TypeError: Not a string", "hashQueryString", typeof url);
			return "";
		}
		if(url.match(/^\/\//)) {
			url = location.protocol + url;
		}
		if(!url.match(/^(https?|file):/)) {
			BOOMR.error("Passed in URL is invalid: " + url);
			return "";
		}
		if(stripHash) {
			url = url.replace(/#.*/, "");
		}
		if(!BOOMR.utils.MD5) {
			return url;
		}
		return url.replace(/\?([^#]*)/, function(m0, m1) { return "?" + (m1.length > 10 ? BOOMR.utils.MD5(m1) : m1); });
	},

	pluginConfig: function(o, config, plugin_name, properties) {
		var i, props=0;

		if(!config || !config[plugin_name]) {
			return false;
		}

		for(i=0; i<properties.length; i++) {
			if(config[plugin_name][properties[i]] !== undefined) {
				o[properties[i]] = config[plugin_name][properties[i]];
				props++;
			}
		}

		return (props>0);
	},

	/**
	 Add a MutationObserver for a given element and terminate after `timeout`ms.
	 @param el		DOM element to watch for mutations
	 @param config		MutationObserverInit object (https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver#MutationObserverInit)
	 @param timeout		Number of milliseconds of no mutations after which the observer should be automatically disconnected
				If set to a falsy value, the observer will wait indefinitely for Mutations.
	 @param callback	Callback function to call either on timeout or if mutations are detected.  The signature of this method is:
					function(mutations, callback_data)
				Where:
					mutations is the list of mutations detected by the observer or `undefined` if the observer timed out
					callback_data is the passed in `callback_data` parameter without modifications

				The callback function may return a falsy value to disconnect the observer after it returns, or a truthy value to
				keep watching for mutations. If the return value is numeric and greater than 0, then this will be the new timeout
				if it is boolean instead, then the timeout will not fire any more so the caller MUST call disconnect() at some point
	 @param callback_data	Any data to be passed to the callback function as its second parameter
	 @param callback_ctx	An object that represents the `this` object of the `callback` method.  Leave unset the callback function is not a method of an object

	 @returns	- `null` if a MutationObserver could not be created OR
			- An object containing the observer and the timer object:
			  { observer: <MutationObserver>, timer: <Timeout Timer if any> }

			The caller can use this to disconnect the observer at any point by calling `retval.observer.disconnect()`
			Note that the caller should first check to see if `retval.observer` is set before calling `disconnect()` as it may
			have been cleared automatically.
	 */
	addObserver: function(el, config, timeout, callback, callback_data, callback_ctx) {
		var o = {observer: null, timer: null};

		if(!window.MutationObserver || !callback || !el) {
			return null;
		}

		function done(mutations) {
			var run_again=false;

			if(o.timer) {
				clearTimeout(o.timer);
				o.timer = null;
			}

			if(callback) {
				run_again = callback.call(callback_ctx, mutations, callback_data);

				if(!run_again) {
					callback = null;
				}
			}

			if(!run_again && o.observer) {
				o.observer.disconnect();
				o.observer = null;
			}

			if(typeof run_again === "number" && run_again > 0) {
				o.timer = setTimeout(done, run_again);
			}
		}

		o.observer = new MutationObserver(done);

		if(timeout) {
			o.timer = setTimeout(done, o.timeout);
		}

		o.observer.observe(el, config);

		return o;
	},

	addListener: function(el, type, fn) {
		if (el.addEventListener) {
			el.addEventListener(type, fn, false);
		} else if (el.attachEvent) {
			el.attachEvent( "on" + type, fn );
		}
	},

	removeListener: function (el, type, fn) {
		if (el.removeEventListener) {
			el.removeEventListener(type, fn, false);
		} else if (el.detachEvent) {
			el.detachEvent("on" + type, fn);
		}
	},

	pushVars: function (form, vars, prefix) {
		var k, i, l=0, input;

		for(k in vars) {
			if(vars.hasOwnProperty(k)) {
				if(Object.prototype.toString.call(vars[k]) === "[object Array]") {
					for(i = 0; i < vars[k].length; ++i) {
						l += BOOMR.utils.pushVars(form, vars[k][i], k + "[" + i + "]");
					}
				} else {
					input = document.createElement("input");
					input.type = "hidden";	// we need `hidden` to preserve newlines. see commit message for more details
					input.name = (prefix ? (prefix + "[" + k + "]") : k);
					input.value = (vars[k]===undefined || vars[k]===null ? "" : vars[k]);

					form.appendChild(input);

					l += encodeURIComponent(input.name).length + encodeURIComponent(input.value).length + 2;
				}
			}
		}

		return l;
	},

	sendData: function (form, method) {
		var input  = document.createElement("input"),
		    urls = [ impl.beacon_url ];

		form.method = method;
		form.id = "beacon_form";

		// TODO: Determine if we want to send as JSON
		//if (window.JSON) {
		//	form.innerHTML = "";
		//	form.enctype = "text/plain";
		//	input.name = "data";
		//	input.value = JSON.stringify(impl.vars);
		//	form.appendChild(input);
		//} else {
			form.enctype = "application/x-www-form-urlencoded";
		//}

		if(impl.secondary_beacons && impl.secondary_beacons.length) {
			urls.push.apply(urls, impl.secondary_beacons);
		}

		function remove(id) {
			var el = document.getElementById(id);
			if (el) {
				el.parentNode.removeChild(el);
			}
		}

		function submit() {
			/*eslint-disable no-script-url*/
			var iframe,
			    name = "boomerang_post-" + encodeURIComponent(form.action) + "-" + Math.random();

			// ref: http://terminalapp.net/submitting-a-form-with-target-set-to-a-script-generated-iframe-on-ie/
			try {
				iframe = document.createElement('<iframe name="' + name + '">');	// IE <= 8
			}
			catch (ignore) {
				iframe = document.createElement("iframe");				// everything else
			}

			form.action = urls.shift();
			form.target = iframe.name = iframe.id = name;
			iframe.style.display = form.style.display = "none";
			iframe.src="javascript:false";

			remove(iframe.id);
			remove(form.id);

			document.body.appendChild(iframe);
			document.body.appendChild(form);

			form.submit();

			if (urls.length) {
				BOOMR.setImmediate(submit);
			}

			setTimeout(function() { remove(iframe.id); }, 10000);
		}

		submit();
	}
},

init: function(config) {
	var i, k,
	    properties = ["beacon_url", "beacon_type", "site_domain", "user_ip", "strip_query_string", "secondary_beacons"];

	BOOMR_check_doc_domain();

	if(!config) {
		config = {};
	}

	for(i=0; i<properties.length; i++) {
		if(config[properties[i]] !== undefined) {
			impl[properties[i]] = config[properties[i]];
		}
	}

	if(config.log !== undefined) {
		this.log = config.log;
	}
	if(!this.log) {
		this.log = function(/* m,l,s */) {};
	}

	for(k in this.plugins) {
		if(this.plugins.hasOwnProperty(k)) {
			// config[plugin].enabled has been set to false
			if( config[k]
				&& config[k].hasOwnProperty("enabled")
				&& config[k].enabled === false
			) {
				impl.disabled_plugins[k] = 1;
				continue;
			}

			// plugin was previously disabled
			if(impl.disabled_plugins[k]) {

				// and has not been explicitly re-enabled
				if( !config[k]
					|| !config[k].hasOwnProperty("enabled")
					|| config[k].enabled !== true
				) {
					continue;
				}

				// plugin is now enabled
				delete impl.disabled_plugins[k];
			}

			// plugin exists and has an init method
			if(typeof this.plugins[k].init === "function") {
				try {
					this.plugins[k].init(config);
				}
				catch(err) {
					BOOMR.addError(err, k + ".init");
				}
			}
		}
	}

	if(impl.handlers_attached) {
		return this;
	}

	// The developer can override onload by setting autorun to false
	if(!impl.onloadfired && (config.autorun === undefined || config.autorun !== false)) {
		if(d.readyState && d.readyState === "complete") {
			BOOMR.loadedLate = true;
			this.setImmediate(BOOMR.page_ready, null, null, BOOMR);
		}
		else {
			if(w.onpagehide || w.onpagehide === null) {
				BOOMR.utils.addListener(w, "pageshow", BOOMR.page_ready);
			}
			else {
				BOOMR.utils.addListener(w, "load", BOOMR.page_ready);
			}
		}
	}

	BOOMR.utils.addListener(w, "DOMContentLoaded", function() { impl.fireEvent("dom_loaded"); });

	(function() {
		var forms, iterator;
		if(visibilityChange !== undefined) {
			BOOMR.utils.addListener(d, visibilityChange, function() { impl.fireEvent("visibility_changed"); });

			// record the last time each visibility state occurred
			BOOMR.subscribe("visibility_changed", function() {
				BOOMR.lastVisibilityEvent[BOOMR.visibilityState()] = BOOMR.now();
			});
		}

		BOOMR.utils.addListener(d, "mouseup", impl.xb_handler("click"));

		forms = d.getElementsByTagName("form");
		for(iterator = 0; iterator < forms.length; iterator++) {
			BOOMR.utils.addListener(forms[iterator], "submit", impl.xb_handler("form_submit"));
		}

		if(!w.onpagehide && w.onpagehide !== null) {
			// This must be the last one to fire
			// We only clear w on browsers that don't support onpagehide because
			// those that do are new enough to not have memory leak problems of
			// some older browsers
			BOOMR.utils.addListener(w, "unload", function() { BOOMR.window=w=null; });
		}
	}());

	impl.handlers_attached = true;
	return this;
},

// The page dev calls this method when they determine the page is usable.
// Only call this if autorun is explicitly set to false
page_ready: function(ev) {
	if (!ev) { ev = w.event; }
	if (!ev) { ev = { name: "load" }; }
	if(impl.onloadfired) {
		return this;
	}
	impl.fireEvent("page_ready", ev);
	impl.onloadfired = true;
	return this;
},

setImmediate: function(fn, data, cb_data, cb_scope) {
	var cb = function() {
		fn.call(cb_scope || null, data, cb_data || {});
		cb=null;
	};

	if(w.setImmediate) {
		w.setImmediate(cb);
	}
	else if(w.msSetImmediate) {
		w.msSetImmediate(cb);
	}
	else if(w.webkitSetImmediate) {
		w.webkitSetImmediate(cb);
	}
	else if(w.mozSetImmediate) {
		w.mozSetImmediate(cb);
	}
	else {
		setTimeout(cb, 10);
	}
},

now: (function() {
	try {
		if("performance" in window && window.performance && window.performance.now) {
			return function() {
				return Math.round(window.performance.now() + window.performance.timing.navigationStart);
			};
		}
	}
	catch(ignore) { }
	return Date.now || function() { return new Date().getTime(); };
}()),

visibilityState: ( visibilityState === undefined ? function() { return "visible"; } : function() { return d[visibilityState]; } ),

lastVisibilityEvent: {},

subscribe: function(e_name, fn, cb_data, cb_scope) {
	var i, handler, ev, unload_handler;

	e_name = e_name.toLowerCase();

	if(!impl.events.hasOwnProperty(e_name)) {
		return this;
	}

	ev = impl.events[e_name];

	// don't allow a handler to be attached more than once to the same event
	for(i=0; i<ev.length; i++) {
		handler = ev[i];
		if(handler && handler.fn === fn && handler.cb_data === cb_data && handler.scope === cb_scope) {
			return this;
		}
	}
	ev.push({ "fn": fn, "cb_data": cb_data || {}, "scope": cb_scope || null });

	// attaching to page_ready after onload fires, so call soon
	if(e_name === "page_ready" && impl.onloadfired) {
		this.setImmediate(fn, null, cb_data, cb_scope);
	}

	// Attach unload handlers directly to the window.onunload and
	// window.onbeforeunload events. The first of the two to fire will clear
	// fn so that the second doesn't fire. We do this because technically
	// onbeforeunload is the right event to fire, but all browsers don't
	// support it.  This allows us to fall back to onunload when onbeforeunload
	// isn't implemented
	if(e_name === "page_unload" || e_name === "before_unload") {
		unload_handler = function(evt) {
						if(fn) {
							fn.call(cb_scope, evt || w.event, cb_data);
						}
					};

		if(e_name === "page_unload") {
			// pagehide is for iOS devices
			// see http://www.webkit.org/blog/516/webkit-page-cache-ii-the-unload-event/
			if(w.onpagehide || w.onpagehide === null) {
				BOOMR.utils.addListener(w, "pagehide", unload_handler);
			}
			else {
				BOOMR.utils.addListener(w, "unload", unload_handler);
			}
		}
		BOOMR.utils.addListener(w, "beforeunload", unload_handler);
	}

	return this;
},

addError: function(err, src, extra) {
	var str;
	if (typeof err !== "string") {
		str = String(err);
		if(str.match(/^\[object/)) {
			str = err.name + ": " + (err.description || err.message).replace(/\r\n$/, "");
		}
		err = str;
	}
	if (src !== undefined) {
		err = "[" + src + ":" + BOOMR.now() + "] " + err;
	}
	if (extra) {
		err += ":: " + extra;
	}

	if (impl.errors[err]) {
		impl.errors[err]++;
	}
	else {
		impl.errors[err] = 1;
	}
},

addVar: function(name, value) {
	if(typeof name === "string") {
		impl.vars[name] = value;
	}
	else if(typeof name === "object") {
		var o = name, k;
		for(k in o) {
			if(o.hasOwnProperty(k)) {
				impl.vars[k] = o[k];
			}
		}
	}
	return this;
},

removeVar: function(arg0) {
	var i, params;
	if(!arguments.length) {
		return this;
	}

	if(arguments.length === 1
			&& Object.prototype.toString.apply(arg0) === "[object Array]") {
		params = arg0;
	}
	else {
		params = arguments;
	}

	for(i=0; i<params.length; i++) {
		if(impl.vars.hasOwnProperty(params[i])) {
			delete impl.vars[params[i]];
		}
	}

	return this;
},

hasVar: function(name) {
	return impl.vars.hasOwnProperty(name);
},

requestStart: function(name) {
	var t_start = BOOMR.now();
	BOOMR.plugins.RT.startTimer("xhr_" + name, t_start);

	return {
		loaded: function(data) {
			BOOMR.responseEnd(name, t_start, data);
		}
	};
},

responseEnd: function(name, t_start, data) {
	if(typeof name === "object" && name.url) {
		impl.fireEvent("xhr_load", name);
	}
	else {
		BOOMR.plugins.RT.startTimer("xhr_" + name, t_start);
		impl.fireEvent("xhr_load", {
			"name": "xhr_" + name,
			"data": data
		});
	}
},

sendBeacon: function() {
	var k, form, furl, img, length, errors=[];

	BOOMR.debug("Checking if we can send beacon");

	// At this point someone is ready to send the beacon.  We send
	// the beacon only if all plugins have finished doing what they
	// wanted to do
	for(k in this.plugins) {
		if(this.plugins.hasOwnProperty(k)) {
			if(impl.disabled_plugins[k]) {
				continue;
			}
			if(!this.plugins[k].is_complete()) {
				BOOMR.debug("Plugin " + k + " is not complete, deferring beacon send");
				return false;
			}
		}
	}

	// use d.URL instead of location.href because of a safari bug
	impl.vars.pgu = BOOMR.utils.cleanupURL(d.URL.replace(/#.*/, ""));
	if(!impl.vars.u) {
		impl.vars.u = impl.vars.pgu;
	}

	if(impl.vars.pgu === impl.vars.u) {
		delete impl.vars.pgu;
	}

	impl.vars.v = BOOMR.version;

	if(BOOMR.visibilityState()) {
		impl.vars["vis.st"] = BOOMR.visibilityState();
		if(BOOMR.lastVisibilityEvent.visible) {
			impl.vars["vis.lv"] = BOOMR.now() - BOOMR.lastVisibilityEvent.visible;
		}
		if(BOOMR.lastVisibilityEvent.hidden) {
			impl.vars["vis.lh"] = BOOMR.now() - BOOMR.lastVisibilityEvent.hidden;
		}
	}

	if(w !== window) {
		impl.vars["if"] = "";
	}

	for (k in impl.errors) {
		if (impl.errors.hasOwnProperty(k)) {
			errors.push(k + (impl.errors[k] > 1 ? " (*" + impl.errors[k] + ")" : ""));
		}
	}

	if(errors.length > 0) {
		impl.vars.errors = errors.join("\n");
	}

	impl.errors = {};

	// If we reach here, all plugins have completed
	impl.fireEvent("before_beacon", impl.vars);

	// Don't send a beacon if no beacon_url has been set
	// you would do this if you want to do some fancy beacon handling
	// in the `before_beacon` event instead of a simple GET request
	BOOMR.debug("Ready to send beacon: " + BOOMR.utils.objectToString(impl.vars));
	if(!impl.beacon_url) {
		BOOMR.debug("No beacon URL, so skipping.");
		return true;
	}

	form = document.createElement("form");
	length = BOOMR.utils.pushVars(form, impl.vars);

	// If we reach here, we've transferred all vars to the beacon URL.
	impl.fireEvent("onbeacon", impl.vars);

	if(!length) {
		// do not make the request if there is no data
		return this;
	}

	// using 2000 here as a de facto maximum URL length based on:
	// http://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-a-url-in-different-browsers
	BOOMR.utils.sendData(form, impl.beacon_type === "AUTO" ? (length > 2000 ? "POST" : "GET") : "POST");

	return true;
}

};
delete BOOMR_start;
if(typeof BOOMR_lstart === "number") {
boomr.t_lstart = BOOMR_lstart;
delete BOOMR_lstart;
}
else if(typeof BOOMR.window.BOOMR_lstart === "number") {
boomr.t_lstart = BOOMR.window.BOOMR_lstart;
}
(function() {
var make_logger;
if(typeof console === "object" && console.log !== undefined) {
	boomr.log = function(m, l, s) { console.log(s + ": [" + l + "] " + m); };
}

make_logger = function(l) {
	return function(m, s) {
		this.log(m, l, "boomerang" + (s?"."+s:""));
		return this;
	};
};

boomr.debug = make_logger("debug");
boomr.info = make_logger("info");
boomr.warn = make_logger("warn");
boomr.error = make_logger("error");

}());
(function() {
var ident;
for(ident in boomr) {
if(boomr.hasOwnProperty(ident)) {
BOOMR[ident] = boomr[ident];
}
}
if (!BOOMR.xhr_excludes) {
//! URLs to exclude from automatic XHR instrumentation
BOOMR.xhr_excludes={};
}
}());
dispatchEvent("onBoomerangLoaded", { "BOOMR": BOOMR }, true );
}(window));
// end of boomerang beaconing section

I have one JPG in the bandwidth_images folder, with a filename. Should the images in the bandwidth folder have special names? Are JPGs acceptable. I could not find a description of the images in this folder in the documentation.

The boomerang.js you downloaded from the website is not sufficient to send beacons because it does not contain any plugins.  You need to build boomerang using the make command along with at least one plugin.  In your case you'll need to add the bw plugin.
The images in the bandwidth testing folder need to be the images from here: https://github.com/lognormal/boomerang/tree/master/images
You should pull the code locally using git, then run the make command based on the docs, copy the bandwidth images and the built boomerang to the appropriate locations on your server and you should be good to go.

Arrgh. When I attempt to collect image-6.png, I am forced to save it as image-6.png.dms.
It works intermittently, still trying to collect the output.
Instead of doing a "make," which is not described, I just included bw.js.
The documentation for the HowTo3, should list, bw.js, and where to find the images, and that the images go in the BW image folder.

I don't understand what you mean by collect image-6.png.  Are you using git to fetch the code? You can also download a zip of the entire repository from here: https://github.com/lognormal/boomerang/archive/master.zip
including bw.js is sufficient, but I've also updated the docs with details on both methods.

The link that you gave me listed the images. I don't have git. Don't know git. I clicked each image and did a save image as. I tried to download link as which resulted in image.png.html, which was not useful.
I did system software for 20+ years. This is like pulling teeth. Good for me is that I have it working.
Date: Thu, 18 Jun 2015 08:03:23 -0700
From<EMAIL_ADDRESS>To<EMAIL_ADDRESS>CC<EMAIL_ADDRESS>Subject: Re: [boomerang] Examples in documentation don't work (#64)
I don't understand what you mean by collect image-6.png.  Are you using git to fetch the code? You can also download a zip of the entire repository from here: https://github.com/lognormal/boomerang/archive/master.zip
including bw.js is sufficient, but I've also updated the docs with details on both methods.
—
Reply to this email directly or view it on GitHub.

understood.  we should probably make the zip download easier to find on the homepage.

Maybe boomerang should give examples of "standalone bandwidth test".
Example usage to use BOOMR only as a BW speed tester without running other features

                        // somewhere in click handler

                        // init BOOMR only on this click. Note that repeated clicks will break everything: please block clicks after first and/or prevent repeated runs of this handler
			BOOMR.init({
				beacon_url: "",
				BW: {
					base_url: bw_test_images_base_url,
					block_beacon: true, // block beacon so that we can receive test results in 'before_beacon` handler
					cookie_exp: 1 // expire results almost immediately to rerun test on each click
				}
			});

			BOOMR.subscribe('before_beacon', function(o) {
				if (o.bw) {
					bw_processing(o.bw, o.bw_err);
				}
				if (o.lat) {
					lat_processing(o.lat);
				}
				return false
			})

if this works, please submit a pull request

@bluesmoon it worked when repository was under your account. I'll test it later and will submit a pool request if it still works

Thank you.  The repository under my account is a little out of date, but the BW plugin should be identical.


Nextjs

LGTM

LGTM

Open as an issue, not a PR, to get credit. Link to your repository so we can review the source.

Open as an issue, not a PR, to get credit. Link to your repository so we can review the source.


Update copy-activity-fault-tolerance.md

the json specified is not in the right JSON format and missed the name and type field

@microsoft-github-policy-service agree

@dearandyxu
Can you review the proposed changes?
When the changes are ready for publication, add a #sign-off comment to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

Merged in https://github.com/MicrosoftDocs/azure-docs-pr/pull/252749. #please-close


[Question] Can LLava inference on CPU?

Question
I was trying to run LLava inference on cpu, but it complains "Torch not compiled with CUDA enabled".  I noticed that cuda() is called when loading model. If I remove all the cuda() invocation, is it possible to run inference on cpu?
thanks.

you need to install torch cpu and set device map to cpu in model loading side @wenli135

I made some changes in the code to run inference on CPU, the model is loading but I am getting an error: while trying to optimize the model(model = ipex.optimize(model, dtype=torch.bfloat16))

did anyone able to run Llava inference on CPU  without installing Intel Extention for Pytorch environment for inference? Any pointer will be really helpful

Hi Ratan
Here is the bare metal intel cpu solution intel xFasterTransformer for LLM, but there is no llava support yet. You can try firstly.
llama.cpp also support CPU. We will enable intel dGPU/iGPU later.
Could you tell why you don't want to use Intel Extention for Pytorch?  Thanks.

Tried some of this paths:

llama.cpp. I tried to convert_hf_to_gguf.py the HF model (to process LlavaMistralForCausalLM the way it does for LlamaForCausalLM), but stumbled upon other problems (Can not map tensor 'model.image_newline')

So, natively, from HF:

With low_cpu_mem_usage = False

transformers/modeling_utils.py; ValueError: Passing along a device_map requires low_cpu_mem_usage=True

With low_cpu_mem_usage = True

You can't pass load_in_4bit or load_in_8bit as a kwarg when passing quantization_config argument at the same time
(mentioned/replied to in https://github.com/haotian-liu/LLaVA/issues/1638)

Fixing the above we get

transformers/quantizers/quantizer_bnb_4bit.py : ValueError: Some modules are dispatched on the CPU or the disk. Make sure you have enough GPU RAM to fit the quantized model

which I don't explain because using load_pretrained_model(load_4bit=True, device='cpu') leads to a device_map = {'': 'cpu'} which is quite clear. Still, we can bypass this adding llm_int8_enable_fp32_cpu_offload=True to the BitsAndBytesConfig, but does it makes any sense with load_4bit?). Well, anyway, it loads (took only 10 minutes)

Now comes intel-extension-for-pytorch which indeed has a config for this model.

Whether ipex.optimize(inplace=True) is passed or not (if not, memory footprint is doubled), we get

RuntimeError: could not create a primitive descriptor for a convolution forward propagation primitive

=> blocked here.
Finally, regarding https://github.com/intel/xFasterTransformer, it's not quite clear whether it replace or complements intel-extension-for-pytorch [CPU/XPU] and for which specific hardware.
If any one could come up with answers/solutions for at least some of these, that'd be great.


Uncatchable NullReferenceException is occasionally thrown from FtpClient.ConnectAsync()

FTP OS: None (localhost with no FTP server set up).
FTP Server: None (localhost with no FTP server set up).
Computer OS: Windows 10
FluentFTP Version: 32.4.4
We are seeing occasional uncatchable NullReferenceExceptions being thrown from FtpClient.ConnectAsync() that crash our program. I've been able to create a minimal reproduction for this issue that should help locate the issue.
In our app we have also seen what looks like a similar issue in FtpClint.GetNameListingAsync() so this problem may not be limited to ConnectAsync().
I haven't analysed the code and stack trace too deeply but it looks like FtpClient.m_socket is being set to null and then the CancellationToken times out and calls m_socket.Close() resulting in the NRE, and since the NRE is happening on the CancellationToken's background thread it crashes the program.
This is a major issue for us since the exception can't be caught and always crashes our program when it occurs.
Logs :
Here are the logs from reproducing the issue using the attached code FluentFTPNullReferenceException.zip:
[...prior successful runs omitted...]
2020-09-11 14:37:19,237 [5] DEBUG FluentFTPNullReferenceException.Program - Run number: 81749
2020-09-11 14:37:19,237 [5] INFO  FluentFTP.FtpClient - Level: Info; Message: Status:   Connecting to <IP_ADDRESS>:21
2020-09-11 14:37:19,237 [5] INFO  FluentFTP.FtpClient - Level: Verbose; Message: Status:   Disposing FtpSocketStream...
2020-09-11 14:37:19,237 [5] INFO  FluentFTP.FtpClient - Level: Verbose; Message: >         Dispose()
2020-09-11 14:37:19,238 [5] INFO  FluentFTP.FtpClient - Level: Verbose; Message: Status:   Disposing FtpClient object...
2020-09-11 14:37:19,238 [5] DEBUG FluentFTPNullReferenceException.Program - Run number: 81750
2020-09-11 14:37:19,238 [5] INFO  FluentFTP.FtpClient - Level: Info; Message: Status:   Connecting to <IP_ADDRESS>:21
2020-09-11 14:37:19,238 [7] INFO  FluentFTP.FtpClient - Level: Verbose; Message: Status:   Disposing FtpSocketStream...
2020-09-11 14:37:19,239 [9] FATAL FluentFTPNullReferenceException.Program - CurrentDomain.UnhandledException: Uncatchable exception was thrown. IsTerminating: True.
System.AggregateException: One or more errors occurred. ---> System.NullReferenceException: Object reference not set to an instance of an object.
   at FluentFTP.FtpSocketStream.<ConnectAsync>b__80_0()
   at System.Threading.CancellationToken.ActionToActionObjShunt(Object obj)
   at System.Threading.CancellationCallbackInfo.ExecutionContextCallback(Object obj)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.CancellationCallbackInfo.ExecuteCallback()
   at System.Threading.CancellationTokenSource.CancellationCallbackCoreWork(CancellationCallbackCoreWorkArguments args)
   at System.Threading.CancellationTokenSource.ExecuteCallbackHandlers(Boolean throwOnFirstException)
   --- End of inner exception stack trace ---
   at System.Threading.CancellationTokenSource.ExecuteCallbackHandlers(Boolean throwOnFirstException)
   at System.Threading.CancellationTokenSource.NotifyCancellation(Boolean throwOnFirstException)
   at System.Threading.CancellationTokenSource.TimerCallbackLogic(Object obj)
   at System.Threading.TimerQueueTimer.CallCallbackInContext(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.TimerQueueTimer.CallCallback()
   at System.Threading.TimerQueueTimer.Fire()
   at System.Threading.TimerQueue.FireNextTimers()
   at System.Threading.TimerQueue.AppDomainTimerCallback(Int32 id)
---> (Inner Exception #0) System.NullReferenceException: Object reference not set to an instance of an object.
   at FluentFTP.FtpSocketStream.<ConnectAsync>b__80_0()
   at System.Threading.CancellationToken.ActionToActionObjShunt(Object obj)
   at System.Threading.CancellationCallbackInfo.ExecutionContextCallback(Object obj)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.CancellationCallbackInfo.ExecuteCallback()
   at System.Threading.CancellationTokenSource.CancellationCallbackCoreWork(CancellationCallbackCoreWorkArguments args)
   at System.Threading.CancellationTokenSource.ExecuteCallbackHandlers(Boolean throwOnFirstException)<---

2020-09-11 14:37:19,239 [7] INFO  FluentFTP.FtpClient - Level: Verbose; Message: >         Dispose()
2020-09-11 14:37:19,263 [7] INFO  FluentFTP.FtpClient - Level: Verbose; Message: Status:   Disposing FtpClient object...
2020-09-11 14:37:19,263 [7] DEBUG FluentFTPNullReferenceException.Program - Run number: 81751
2020-09-11 14:37:19,264 [7] INFO  FluentFTP.FtpClient - Level: Info; Message: Status:   Connecting to <IP_ADDRESS>:21
2020-09-11 14:37:19,264 [5] INFO  FluentFTP.FtpClient - Level: Verbose; Message: Status:   Disposing FtpSocketStream...
2020-09-11 14:37:19,265 [5] INFO  FluentFTP.FtpClient - Level: Verbose; Message: >         Dispose()

Good find, I'll look into this.
On Sat, Sep 12, 2020, 3:24 AM RedwoodForest<EMAIL_ADDRESS>wrote:

FTP OS: None (localhost with no FTP server set up).
FTP Server: None (localhost with no FTP server set up).
Computer OS: Windows 10
FluentFTP Version: 32.4.4
We are seeing occasional uncatchable NullReferenceExceptions being thrown
from FtpClient.ConnectAsync() that crash our program. I've been able to
create a minimal reproduction for this issue that should help locate the
issue.
In our app we have also seen what looks like a similar issue in
FtpClint.GetNameListingAsync() so this problem may not be limited to
ConnectAsync().
I haven't analysed the code and stack trace too deeply but it looks like
FtpClient.m_socket is being set to null and then the CancellationToken
times out and calls m_socket.Close() resulting in the NRE, and since the
NRE is happening on the CancellationToken's background thread it crashes
the program.
This is a major issue for us since the exception can't be caught and
always crashes our program when it occurs.
Logs :
Here are the logs from reproducing the issue using the attached code
FluentFTPNullReferenceException.zip
https://github.com/robinrodricks/FluentFTP/files/5211618/FluentFTPNullReferenceException.zip
:
[...prior successful runs omitted...]
2020-09-11 14:37:19,237 [5] DEBUG FluentFTPNullReferenceException.Program - Run number: 81749
2020-09-11 14:37:19,237 [5] INFO  FluentFTP.FtpClient - Level: Info; Message: Status:   Connecting to <IP_ADDRESS>:21
2020-09-11 14:37:19,237 [5] INFO  FluentFTP.FtpClient - Level: Verbose; Message: Status:   Disposing FtpSocketStream...
2020-09-11 14:37:19,237 [5] INFO  FluentFTP.FtpClient - Level: Verbose; Message: >         Dispose()
2020-09-11 14:37:19,238 [5] INFO  FluentFTP.FtpClient - Level: Verbose; Message: Status:   Disposing FtpClient object...
2020-09-11 14:37:19,238 [5] DEBUG FluentFTPNullReferenceException.Program - Run number: 81750
2020-09-11 14:37:19,238 [5] INFO  FluentFTP.FtpClient - Level: Info; Message: Status:   Connecting to <IP_ADDRESS>:21
2020-09-11 14:37:19,238 [7] INFO  FluentFTP.FtpClient - Level: Verbose; Message: Status:   Disposing FtpSocketStream...
2020-09-11 14:37:19,239 [9] FATAL FluentFTPNullReferenceException.Program - CurrentDomain.UnhandledException: Uncatchable exception was thrown. IsTerminating: True.
System.AggregateException: One or more errors occurred. ---> System.NullReferenceException: Object reference not set to an instance of an object.
at FluentFTP.FtpSocketStream.b__80_0()
at System.Threading.CancellationToken.ActionToActionObjShunt(Object obj)
at System.Threading.CancellationCallbackInfo.ExecutionContextCallback(Object obj)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.CancellationCallbackInfo.ExecuteCallback()
at System.Threading.CancellationTokenSource.CancellationCallbackCoreWork(CancellationCallbackCoreWorkArguments args)
at System.Threading.CancellationTokenSource.ExecuteCallbackHandlers(Boolean throwOnFirstException)
--- End of inner exception stack trace ---
at System.Threading.CancellationTokenSource.ExecuteCallbackHandlers(Boolean throwOnFirstException)
at System.Threading.CancellationTokenSource.NotifyCancellation(Boolean throwOnFirstException)
at System.Threading.CancellationTokenSource.TimerCallbackLogic(Object obj)
at System.Threading.TimerQueueTimer.CallCallbackInContext(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.TimerQueueTimer.CallCallback()
at System.Threading.TimerQueueTimer.Fire()
at System.Threading.TimerQueue.FireNextTimers()
at System.Threading.TimerQueue.AppDomainTimerCallback(Int32 id)
---> (Inner Exception #0) System.NullReferenceException: Object reference not set to an instance of an object.
at FluentFTP.FtpSocketStream.b__80_0()
at System.Threading.CancellationToken.ActionToActionObjShunt(Object obj)
at System.Threading.CancellationCallbackInfo.ExecutionContextCallback(Object obj)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.CancellationCallbackInfo.ExecuteCallback()
at System.Threading.CancellationTokenSource.CancellationCallbackCoreWork(CancellationCallbackCoreWorkArguments args)
at System.Threading.CancellationTokenSource.ExecuteCallbackHandlers(Boolean throwOnFirstException)<---
2020-09-11 14:37:19,239 [7] INFO  FluentFTP.FtpClient - Level: Verbose; Message: >         Dispose()
2020-09-11 14:37:19,263 [7] INFO  FluentFTP.FtpClient - Level: Verbose; Message: Status:   Disposing FtpClient object...
2020-09-11 14:37:19,263 [7] DEBUG FluentFTPNullReferenceException.Program - Run number: 81751
2020-09-11 14:37:19,264 [7] INFO  FluentFTP.FtpClient - Level: Info; Message: Status:   Connecting to <IP_ADDRESS>:21
2020-09-11 14:37:19,264 [5] INFO  FluentFTP.FtpClient - Level: Verbose; Message: Status:   Disposing FtpSocketStream...
2020-09-11 14:37:19,265 [5] INFO  FluentFTP.FtpClient - Level: Verbose; Message: >         Dispose()
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/robinrodricks/FluentFTP/issues/617, or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABT3UKVZFNG2DJRPTAZD4ATSFKMCVANCNFSM4RINEYWQ
.

Can you try this build:
FluentFTP_32.4.5_Beta.zip

The beta seems to fix the issue for us.
Using the 32.4.5 beta I am no longer able to reproduce this issue. If I switch back to 32.4.4 I am able to reproduce this issue again.

Awesome, Ill release it now then.

Released in https://www.nuget.org/packages/FluentFTP/32.4.5