Add reset to QASM parser

This PR solves #6704
Note / 20240914:
After further inspection, I wonder why resets are implemented quite different to regular gates, despite following a somewhat similar terminology (cirq.R or cirq.reset) however, returning a ResetChannel. It appears to me that the reset is more similar to a measurement than compared to say a Hadamard gate.

Rebased on top of main.

Squashing everything into one commit after we finish review. Thus I leave the generic 'Fix comments & typos' as it is for now.

Hey guys, you have any feedback on the solution proposal here?

It looks like there is an error in the parser:
ERROR: /home/runner/work/Cirq/Cirq/cirq-core/cirq/contrib/qasm_import/_parser.py:508: Symbol 'qreg' used, but not defined as a token or a rule
Also, please run check/formatting in order to pass the format check.

It looks like there is an error in the parser:
ERROR: /home/runner/work/Cirq/Cirq/cirq-core/cirq/contrib/qasm_import/_parser.py:508: Symbol 'qreg' used, but not defined as a token or a rule
Also, please run check/formatting in order to pass the format check.

Hello everyone, is there anything remaining to address in this PR before it can be finalized?

@rscircus - thank you for contributing this and apologies for slow response.
I have fixed the typo in parser definition and complaints from format checker.
I also added a test of the reset instruction with OpenQASM 3.
Please take a look if you are fine with the PR as is.  LGTM from my POV.

Thanks. I'll pull at the weekend and give it a final run.

Thanks. I'll pull at the weekend and give it a final run.

I have merged, hope it is OK.  LMK if you see anything amiss and we can address it in a follow-up PR.

Thanks, @pavoljuhas


[6.x] Make consistent null type order in DocBlocks

This is trivial change. Just to keep all the DocBlocks style consistent. This is only one place where null type defined as first one.

Thanks


Add a cloud provider for ECS

What this PR does / why we need it:
Which issue(s) this PR fixes:
Fixes #1665
Does this PR introduce a user-facing change?:

NONE

@TaKO8Ki Seems like you checked out from TaKO8Ki:support-deployment-for-ecs, forked branch. Way to go! While It's a good custom, you are now in an admin team. From next time, you can create a branch on this repository as you like 😄

@nakabonne
As is my habit, I checked out from the forked branch. From next time, I'm going to create a branch on this repository! 👍

Great work!
/lgtm

🥳 🥳 🥳
/approve


api sessions don't get logged out

Describe the bug
When running ansible-zabbix-agent, the sessions used to update the zabbix-server are not logged out. This leaves the session state in the sessions table at active ('0'), instead of passive ('1'). When sessions remain active, they are not cleaned up by the zabbix housekeeper. This causes the zabbix sessions table to become very large.
Installation method/version
ansible-zabbix-agent role tag 1.5.0 via ansible galaxy
agent is installed as rpm by dj-wasabi role
Ansible Version
versions between 2.5 and 2.8, most are at 2.7

Targeted hosts
Concerns the following OS(es):

CentOS

Expected behavior
Sessions are logged out after contacting the zabbix API. Session table entries in zabbix gets set to passive ('1') and get cleaned up by zabbix server.
Additional context
in 2 weeks, we got this:
mysql> select count(*) as count, userid from sessions group by userid;
+--------+--------+
| count  | userid |
+--------+--------+
|      4 |      1 |
|     25 |      2 |
|      1 |      5 |
|      2 |      9 |
|      1 |     14 |
|      1 |     15 |
|      2 |     23 |
|      1 |     31 |
| 686776 |     36 |
|      2 |     46 |
|      1 |     49 |
|      1 |     50 |
|      2 |     51 |
|      2 |     52 |
|      1 |     53 |
+--------+--------+

This is after deleting 11 million rows from that table from previous dj-wasabi runs.

Hi, I created an issue at @ansible : https://github.com/ansible/ansible/issues/63774

@mvernimmen the issue has been fixed in ansible 2.9 (yet to be released) -> https://github.com/ansible/ansible/pull/58525
While we can try to backport the fix to the 2.8/2.7 releases, you should be able to use the module from devel branch by the putting it in the library folder of your ansible management host

Thank you for the quick response and backport, it's greatly appreciated! We'll wait for the fix to be in 2.8 or 2.9 and will clean up the mysql zabbix table periodically until it is there.
@dj-wasabi Besides the changes in ansible, is a change needed to your module also to make use of the logout?

Hi @mvernimmen No changes needed in this role once the PR's are merged in Ansible. Library contains the importing of a module and doing the logout when the library is finished, so no new argument/options needed to use the logout.

Hey guys, just to pop in:

ansible/ansible#63783 - backport was merged. 2.8.7 will include this fixes when released
ansible/ansible#64735 - original fix, unfortunately, fixed all zabbix modules except zabbix_host. This backport PR should fix that. I really hope this gets merged before 2.9.1 goes out

Thank you @D3DeFi !! 👍


Improve PNG loading code in order to support 8 bit ( and not expand to 32 )

From @ispebo on May 20, 2015 6:14
As well as updating the pixel format code to be ARGB32, RGB8, etc ..
Copied from original issue: openfl/openfl#672

I believe that loading support for 8-bit PNG was done some time ago, but at runtime, I would like to see us being able to reduce the memory footprint of 8-bit or 24-bit images as well
https://trello.com/c/4qz08zQd/39-enable-support-for-8-bit-images-to-reduce-memory-use
Thanks :smile:

Hi. Is it 8bit paletized? Not sure if this is still somewhat useful for reference https://github.com/madrazo/lime/commits/master
I need a little  update 😄
I was thinking that GL_OES_compressed_paletted_texture expands the texture anyway instead of rendering it directly. We only used that code in a non GL renderer.


Try to fix #113

Try to update pip before using it

:x: Build SMT 0.1.421 failed (commit https://github.com/SMTorg/SMT/commit/153453863a by @relf)

:x: Build SMT 0.1.424 failed (commit https://github.com/SMTorg/SMT/commit/04ec76006e by @relf)

:x: Build SMT 0.1.426 failed (commit https://github.com/SMTorg/SMT/commit/98523cb314 by @relf)

:x: Build SMT 0.1.428 failed (commit https://github.com/SMTorg/SMT/commit/b25603399c by @relf)

Hmmm... Does not get any better :disappointed:

I think we first need to merge the version where py36 is deactivated because the regression tests of the master have already failed

This PR is my attempt (failing for now) to fix the test failure with py36 (#113). It is a bug related to numpy installation with Appveyor on Windows and not directly related to SMT.

:x: Build SMT 0.2.431 failed (commit https://github.com/SMTorg/SMT/commit/0c9cdf2bba by @relf)


[fix](partial update) mishandling of exceptions in the publish phase may result in data loss

Proposed changes
Issue Number: close #xxx
We found in our stress test environment that when performing concurrent partial column updates, data was lost or inconsistent due to not to handle write exceptions of the newly generated segment well in publish phase:

when two concurrent partial column update job try to update an identical key at the same time, additional conflict handling needs to be done in the publish phase
and the load task with a higher version needs to generate the new rows and write them to the newly generated segmnet, while marking the corresponding key in the original segment for deletion
this deletion marker is updated in txn_info->delete_bitmap in real time, when writing the new segment failed, these deletion markers for the original segment are not rolled back
and the next time the publish task retries, it will not process these keys because they have already been marked for deletion.

Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

run buildall

run buildall

run buildall

run buildall


Validate that there is enough space to actually perform the mirror

There has been a user report of the following stack trace:
INFO: download_url=https://anaconda.org/conda-forge/gdal/2.1.1/download/win-64/gdal-2.1.1-np111py34_4.tar.bz2
Traceback (most recent call last):
  File "/opt/miniconda3/lib/python3.5/site-packages/conda_mirror/conda_mirror.py", line 253, in _download
    tf.write(data)
OSError: [Errno 28] No space left on device

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/miniconda3/bin/conda-mirror", line 11, in <module>
    sys.exit(cli())
  File "/opt/miniconda3/lib/python3.5/site-packages/conda_mirror/conda_mirror.py", line 183, in cli
    blacklist, whitelist)
  File "/opt/miniconda3/lib/python3.5/site-packages/conda_mirror/conda_mirror.py", line 427, in main
    _download(url, download_dir, repodata)
  File "/opt/miniconda3/lib/python3.5/site-packages/conda_mirror/conda_mirror.py", line 253, in _download
    tf.write(data)
OSError: [Errno 28] No space left on device

I'm pretty sure that this is because there is not enough space in the /tmp directory on the host machine where this command was being run.
One way to fix this would be to compute the space required to perform the mirror for all packages that are in the to_mirror set by using the bytes stored in the size key in repodata[pkg_name]['size'].  Would need to check that there is enough space in the temp directory located at download_dir and the final location for these packages at 'local_directory'.

Hello,
To verify that it is the fault of low space on /tmp I replaced the line 418 with
with tempfile.TemporaryDirectory( dir="/media/myfilesysten......" ) as download_dir:
With this change it worked, so to face my issue, it would be sufficient to make the temp folder configurable.
But what is the point of the tmp folder, why is the download not directly written to the target folder?

With this change it worked, so to face my issue, it would be sufficient to make the temp folder configurable.

Great, I'll do that in the next week or so

But what is the point of the tmp folder, why is the download not directly written to the target folder?

I run conda-mirror as an hourly cron job.  It felt easier to download everything to a staging directory and then validate all the packages in that staging directory, removing packages that do not pass validation (size/md5/sha256).  Only once packages have been downloaded are they promoted from the staging directory to the directory where they are being served from.  I honestly hadn't considered that /tmp might not have enough space to do a full channel mirror.  This issue will only be hit the first time you mirror the channel since that's going to require >10GB of space.  Additionally, if I directly download to the directory where the packages are being served from,  I occasionally hit the issue where conda install <package> would be grabbing a partially downloaded package and fail.  Though that issue could also be avoided by downloading the file to a temp file in that directory and then moving it to its actual package name <package_version_buildnumber.tar.bz2>.
In any event, the problem should be solved by adding a command line argument that will allow you to specify where the transient download directory should be.

Thanks for the explanation, that makes sense

@MWigger I'd also welcome a PR from you implementing this feature :smile:  I'll get to it eventually, but it's not a priority for me at the moment

Closed by #21. Thanks for the report @MWigger and thanks for the implementation @jneines !  New release is available on pypi that has these changes (0.6.0)


[ISSUE-7880] Change Password Screen and Backend Code

Add completed Backend tsx file for ISSUE-7880.
Add completed screen for Changing Password.

Hello @yeebenja,
Thanks for your pull request! A Core Committer will review your pull request soon. For code contributions, you can learn more about the review process here.
Per the Mattermost Contribution Guide, we need to add you to the list of approved contributors for the Mattermost project.
Please help complete the Mattermost contribution license agreement?
Once you have signed the CLA, please comment with /check-cla and confirm that the CLA check is green.
This is a standard procedure for many open source projects.
Please let us know if you have any questions.
We are very happy to have you join our growing community! If you're not yet a member, please consider joining our Contributors community channel to meet other contributors and discuss new opportunities with the core team.

This PR has been automatically labelled "stale" because it hasn't had recent activity.
A core team member will check in on the status of the PR to help with questions.
Thank you for your contribution!


Duplicit API call to Graphite API

Calls of Graphite REST API from https://github.com/obfuscurity/nagios-scripts/blob/master/check_graphite#L95 and
https://github.com/obfuscurity/nagios-scripts/blob/master/check_graphite#L99  are redundant and double the load.
Proposed way:
  response = JSON.parse(RestClient.get(URI.encode(url)))
  if response.empty?
    puts "UNKNOWN no data reported by Graphite"
    exit EXIT_UNKNOWN
  else
    response.each do |cache|

Thanks!


ErrorType of Cancelled

Awesome videos and NuGet package.
It would be nice to have a cancelled error type to handle the user cancelled scenarios for APIs etc

Hi, you can use the NumericType  property on Error with ErrorType.Custom. Then you can have your enum with other types of errors, like Cancelled, etc.
Then you can check the error NumericType against this enum.

I am doing this currently, but switching is a bit convoluted.

@FAdrianJ, do you use the enum and your custom types together? Or do you use only your custom types and you find working with the NumbericType is convoluted?

Closing as not planned


[5.4] Remove unnecessary role="form" from auth templates

The role="form" attribute for form elements is unnecessary.
Source:

In the majority of cases setting an ARIA role and/or aria-* attribute that matches the default implicit ARIA semantics is unnecessary and not recommended as these properties are already set by the browser.

I think it doesn't matter. Nobody keeps the default form for the final production site.


Update services.md

BizTalk Services capabilities are now covered by Azure Logic Apps.  Updated references of Logic Apps to be stand alone (not under App Services).

@kevinlam1,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/aws-professional/services.md
:white_check_mark:Succeeded
View

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.

#sign-off

@lbrader  Please review - thx!

#sign-off


feat(map): Codegen for PlantUML Target

Sample

Author Checklist

[x] Ensure you provide a DCO sign-off for your commits using the --signoff option of git commit.
[x] Vital features and changes captured in unit and/or integration tests
[x] Commits messages follow AP format
[ ] Extend the documentation, if necessary
[ ] Merging to main from fork:branchname

coverage: 98.918% (+0.001%) from 98.917%
when pulling fa55c173029ff8f6ef80ef5c446f3e325da94cad on jonathan/codegen_map_plantuml
into e22a321f1c432a1defc8dda2a50d70112974c51f on main.

@Jonathan-Casey There appear to be two edges for employeeDirectory in the screenshot. Is that expected?

You can ignore that, it was an additional association added while tinkering in planttext. Screenshot updated.


Optimize Spring-Security Firewall Deny Request Response 400

What's the purpose of this PR

Before modification.
Requesting a service using a non-compliant URL specification returns 500 and the server side reports an exception, e.g.

After modification.
Return 400 , e.g.

This scenario is more appropriate to use Bad Request (400), in our production environment, because of this problem, the gateway layer alerts often misreported Apollo Server exceptions

Codecov Report

Merging #4428 (7813489) into master (b8c795a) will decrease coverage by 0.03%.
The diff coverage is 0.00%.

@@             Coverage Diff              @@
##             master    #4428      +/-   ##
============================================
- Coverage     53.42%   53.39%   -0.04%
  Complexity     2688     2688
============================================
  Files           490      490
  Lines         15254    15255       +1
  Branches       1586     1586
============================================
- Hits           8150     8145       -5
- Misses         6548     6553       +5
- Partials        556      557       +1

Impacted Files
Coverage Δ

...ip/framework/apollo/common/ApolloCommonConfig.java
0.00% <0.00%> (ø)

...mework/apollo/portal/component/PortalSettings.java
57.81% <0.00%> (-7.82%)
:arrow_down:

.../apollo/internals/RemoteConfigLongPollService.java
77.84% <0.00%> (-0.60%)
:arrow_down:

...ervice/service/ReleaseMessageServiceWithCache.java
87.05% <0.00%> (+1.17%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update b8c795a...7813489. Read the comment docs.


Regarding rotation and translation matrix in 3DMatch.pkl file

@ShengyuH
Could you please let me know how you preprocessed the 3DMatch dataset to get the rotation and translation matrix for the pair of point clouds, that we use to evaluate and get the evaluation results? I am trying to evaluate on Redwood dataset where I have ground truth information but no rotation and translation matrix associated with each point cloud pair as we have in 3DMatch.pkl file.
Please help me out with this issue. That would be helpful for me to evaluate the predator model on the Redwood dataset as well.

hi,
I don't know about redwood dataset, but if each point cloud fragment is associated with one transformation matrix, then it's likely to be the global transformation matrix that aligns it to the global coordinate framework. Let's say we align two point cloud fragments X1 and X2 using T1 and T2 to global coordinate framework as T1X1 and T2X2, then their relative transformation matrix is: inv(T1)T2, that aligns X2 to X1, then inv(T1)T2[:3, :3] is the rotation matrix and inv(T1)T2[:3,3] the translation vector.
Hope this helps.

close due to in-activity.

hi,
I don't know about redwood dataset, but if each point cloud fragment is associated with one transformation matrix, then it's likely to be the global transformation matrix that aligns it to the global coordinate framework. Let's say we align two point cloud fragments X1 and X2 using T1 and T2 to global coordinate framework as T1X1 and T2X2, then their relative transformation matrix is: inv(T1)T2, that aligns X2 to X1, then inv(T1)T2[:3, :3] is the rotation matrix and inv(T1)T2[:3,3] the translation vector.
Hope this helps.

Hi,I want to consult whether the rotation matrix and the translation matrix obtained by preprocessing the data set are based on the global coordinate system or the carrier coordinate system (sensor coordinate system)?Please help me.Thanks a lot!

@ShengyuH Could you please let me know how you preprocessed the 3DMatch dataset to get the rotation and translation matrix for the pair of point clouds, that we use to evaluate and get the evaluation results? I am trying to evaluate on Redwood dataset where I have ground truth information but no rotation and translation matrix associated with each point cloud pair as we have in 3DMatch.pkl file.
Please help me out with this issue. That would be helpful for me to evaluate the predator model on the Redwood dataset as well.

Hello, if using my own dataset, do you know how to build point cloud data pth files?


[PE-D][Tester C] Details are truncated when data is long

Information is cut off when the length is too long.

Labels: severity.Low type.FeatureFlaw
original: junianob/ped#10

Limit name to 50 char


(Bug) TPCDS Query 60 return wrong results in in-memory arrow acceleration compared with direct Datafusion Execution result

Update 10/10/2024:
The results turns out to be the same as the result obtained from Datafusion v42 Rust runner, therefore closed the issue:
Spice snapshot: https://github.com/spiceai/spiceai/blob/trunk/crates/runtime/benches/snapshots/bench__s3_arrow_memory_tpcds_q60.snap
Datafusion v42 result:
i_item_id,total_sales
AAAAAAAAAABEAAAA,63.40
AAAAAAAAAABEAAAA,10202.19
AAAAAAAAAABEAAAA,11682.23
AAAAAAAAAACAAAAA,239.21
AAAAAAAAAACAAAAA,691.52
AAAAAAAAAACAAAAA,3024.62
AAAAAAAAAACDAAAA,1701.84
AAAAAAAAAACDAAAA,8061.19
AAAAAAAAAAEAAAAA,2099.52
AAAAAAAAAAEAAAAA,10389.41
AAAAAAAAAAFAAAAA,1552.98
AAAAAAAAAAFAAAAA,3257.57
AAAAAAAAAAGBAAAA,428.82
AAAAAAAAAAGBAAAA,6204.20
AAAAAAAAAAGBAAAA,6342.30
AAAAAAAAAAHDAAAA,4738.37
AAAAAAAAAAICAAAA,2192.25
AAAAAAAAAAICAAAA,3479.75
AAAAAAAAAAIDAAAA,5186.39
AAAAAAAAAAIDAAAA,5932.08
AAAAAAAAAAIDAAAA,7357.56
AAAAAAAAAAKAAAAA,134.19
AAAAAAAAAAKAAAAA,2364.02
AAAAAAAAAAKAAAAA,9446.83
AAAAAAAAAALCAAAA,68.64
AAAAAAAAAALCAAAA,213.60
AAAAAAAAAALCAAAA,2576.20
AAAAAAAAAAMCAAAA,41.04
AAAAAAAAAAMCAAAA,4514.20
AAAAAAAAAAMCAAAA,7562.09
AAAAAAAAAANAAAAA,1761.76
AAAAAAAAAANAAAAA,3182.07
AAAAAAAAAAOCAAAA,1403.90
AAAAAAAAAAOCAAAA,5302.94
AAAAAAAAAAODAAAA,582.75
AAAAAAAAAAODAAAA,8446.14
AAAAAAAAAAODAAAA,10134.44
AAAAAAAAAAPCAAAA,366.92
AAAAAAAAAAPCAAAA,5870.70
AAAAAAAAAAPCAAAA,8799.42
AAAAAAAAABAEAAAA,4649.76
AAAAAAAAABAEAAAA,9190.70
AAAAAAAAABCCAAAA,1257.75
AAAAAAAAABCCAAAA,1538.65
AAAAAAAAABECAAAA,2023.91
AAAAAAAAABECAAAA,15520.05
AAAAAAAAABECAAAA,16579.67
AAAAAAAAABKAAAAA,75.42
AAAAAAAAABKCAAAA,4372.50
AAAAAAAAABKCAAAA,16058.14
AAAAAAAAABKDAAAA,253.76
AAAAAAAAABKDAAAA,3624.52
AAAAAAAAABKDAAAA,7265.82
AAAAAAAAABMAAAAA,6686.68
AAAAAAAAABMAAAAA,8063.16
AAAAAAAAABNDAAAA,773.70
AAAAAAAAABNDAAAA,5481.11
AAAAAAAAABPAAAAA,3994.17
AAAAAAAAABPAAAAA,8328.58
AAAAAAAAACCEAAAA,616.77
AAAAAAAAACCEAAAA,2851.37
AAAAAAAAACDDAAAA,5752.14
AAAAAAAAACDDAAAA,8942.85
AAAAAAAAACEEAAAA,149.31
AAAAAAAAACEEAAAA,385.40
AAAAAAAAACFAAAAA,3069.31
AAAAAAAAACFAAAAA,18344.48
AAAAAAAAACIAAAAA,114.00
AAAAAAAAACIDAAAA,1460.42
AAAAAAAAACIDAAAA,10031.97
AAAAAAAAACLDAAAA,4631.16
AAAAAAAAACMDAAAA,84.30
AAAAAAAAACMDAAAA,808.86
AAAAAAAAACMDAAAA,5783.90
AAAAAAAAACNBAAAA,15060.31
AAAAAAAAACOAAAAA,471.92
AAAAAAAAACOAAAAA,742.00
AAAAAAAAACOAAAAA,3139.56
AAAAAAAAADBEAAAA,384.30
AAAAAAAAADBEAAAA,4244.00
AAAAAAAAADBEAAAA,10921.39
AAAAAAAAADCCAAAA,193.50
AAAAAAAAADCCAAAA,2116.31
AAAAAAAAADCCAAAA,3581.76
AAAAAAAAADDCAAAA,941.77
AAAAAAAAADDCAAAA,1125.60
AAAAAAAAADDCAAAA,3002.89
AAAAAAAAADEAAAAA,2991.56
AAAAAAAAADEAAAAA,5278.09
AAAAAAAAADEEAAAA,407.20
AAAAAAAAADEEAAAA,480.55
AAAAAAAAADEEAAAA,6183.11
AAAAAAAAADLAAAAA,5005.11
AAAAAAAAADLAAAAA,6701.76
AAAAAAAAADLCAAAA,3211.23
AAAAAAAAADLCAAAA,8180.96
AAAAAAAAADOAAAAA,172.00
AAAAAAAAADOAAAAA,2997.99
AAAAAAAAADOAAAAA,4663.88
AAAAAAAAADPBAAAA,2588.96

Closed as duplicate of https://github.com/spiceai/spiceai/issues/3085


Could add a boilerplate of nextjs?

Could add a boilerplate of nextjs?

I’m not sure what you’re requesting. Can you elaborate?

I mean, could add some sample like hasura?
Not as many as it，focus on react，such as nextjs.
https://github.com/hasura/graphql-engine/tree/master/community/sample-apps

We do have three example projects, listed at the top of the Readme. We will be adding more examples and full documentation as Hammer matures!


Displaying Flashcard in GUI

Done, nice implementation! We can build on it when displaying an image file :)


Cache build artifacts to improve CI execution time

Is your feature request related to a problem or challenge? Please describe what you are trying to do.
CI is slow as it will build all crates twice
Description
Only build workspace once. And reuse the artifact to run tests.
Proposal
GitHub action provides a plugin cache to pass files across jobs that may help.
Additional context
Add any other context or screenshots about the feature request here.

A brilliant post about how to speed up rust builds, CI cache included https://matklad.github.io/2021/09/04/fast-rust-builds.html


Can't download y2b

I can't download y2b.zip from your google drive. It says "quota exceeded". Seems like there are some restrictions from your side. Could you resolve it?

I can't download y2b.zip from your google drive. It says "quota exceeded". Seems like there are some restrictions from your side. Could you resolve it?

Hi, I tried the download link just now, and it seems normal. Is there anything wrong with your internet? Besides, how about the download link in Trackit.


Create t

Summary

Changes

Closes:
Task list

[ ] For workflow changes, I have verified the Actions workflows function as expected.
[ ] For content changes, I have reviewed the style guide.

https://www.youtube.com/watch?v=uC8sc0cQa9M


current_window() shows question mark for Microsoft Edge

Instead of "Microsoft Edge", it's rendered as "Microsoft? Edge":

The built-in Alt-Tab view in Windows shows the same title except without the question mark.
My bar config:
nog.bar.configure(#{
    font_size: 16,
    components: #{
        center: [
            components.current_window()
        ],
...

 I use nog on two computers and don't really mess with fonts much but I have noticed that one of my computers supports emojis in my config and the other doesn't, but they're both configured for the same font and I use the same config on both so one of them shows emojis I have configured and the other just shows question marks. I guessing there's some character after the word "Microsoft" that the font is displaying as ?. I'm seeing the same thing as you when I open edge but.. yeah, in edge it doesn't show anything, just a space.
So... we might be able to do something where we can set it to show a space instead of a question mark... but I also suspect there might be an alternative solution involving installing fonts which seems like a small nightmare.

No I'm not specifying a font. I can try different fonts, but was hoping the default would be safe.
What determines what font is used if none is specified?

The default font is Consolas (you can see here)
We use GetWindowTextA to get the value of the window's title. I can see that this is the output of that call when Edge is focused.

77 105 99 114 111 115 111 102 116 32 69 100 103 101 32 45 32 80 114 111 102 105 108 101 32 49 32 45 32 77 105 99 114 111 115 111 102 116 63 32 69 100 103 101

which... is

Microsoft Edge - Profile 1 - Microsoft? Edge

This is the Microsoft? part

77 105 99 114 111 115 111 102 116 63
M    i     c    r     o     s       o     f      t     ?

63 is literally question mark "?"
So... I don't know what to say, for some reason it's literally outputting the ? character and there must be something in the Edge browser that interprets it differently. Currently, I'm leaning toward closing this as won't fix because I don't think there's much we can do outside of adding code to handle this specific thing which seems kinda hacky, especially since we wouldn't be able to tell what's an actual question mark that should display as a question mark.
Let me know what you think though @garymm

Thanks for looking at this.
I reported the bug through the "send feedback" menu in Microsoft edge. Hopefully someone will take a look.
"Won't fix" seems reasonable to me.

The Edge team replied to me that they inserted a zero-width space character into the window title to hack around some other app that had special behavior for the old non-Chromium Edge.
I guess the A in GetWindowTextA stands for "ANSI", and so I think it may be expected that this non-ANSI character gets converted to a question mark before being returned.
Can you switch to GetWindowTextW instead?

This is hopefully fixed in the latest release.

Closing as this seems to be fixed.


Change docker command to be able to run with selinux

The docker command refused to work on my Fedora 34.
Adding the Z argument solved it.

Hey @n1r1 does this prevent non-selinux based Distros from working per normal?

This should be ignored by regular docker distributions if they don't use SELinux.


What Happened This Time Period

What happened this week (or time periods), how many service - event - user - application - acceptance - handshake done.

This is filtered on service, event and user dashboard pages.


Add range search capability to indexes with AnnIterator support

tested using sparse index.
issue: https://github.com/zilliztech/knowhere/issues/193
/kind: feature

/hold
It won't compile with swig for now

/hold It won't compile with swig for now

fixing in https://github.com/zilliztech/knowhere/pull/509, will unhold after that is merged.

/unhold

/lgtm


Fix issue on the AWS env when the module is failing with healthcheck  /mod-remote-storage/admin/health

Just added the healthcheck endpoint to resolve the issue when the module is dropping on the AWS environment
Note: The AWS loadbalancer is checking the /mod-remote-storage/admin/health endpoint
@gurleenkaurbp  Could you please take a look at this? Pls change it the way that you need but the "include: health" should be in place

we need the new release with this healthcheck fix


[K8s] Fix K8s integration test

What changes were proposed in this pull request?
Apparently #29466 broke the K8s integration test:
[ERROR] [Error] /home/jenkins/workspace/SparkPullRequestBuilder-K8s/resource-managers/kubernetes/integration-tests/src/test/scala/org/apache/spark/deploy/k8s/integrationtest/DecommissionSuite.scala:29: value WORKER_DECOMMISSION_ENABLED is not a member of object org.apache.spark.internal.config.Worker

This PR fixes that.
Why are the changes needed?
Enables running K8s integration tests again.
Does this PR introduce any user-facing change?
No
How was this patch tested?
K8s testing from Github

cc: @holdenk and @Ngone51 for review please.
This is to unblock https://github.com/apache/spark/pull/29452

Test build #127665 has started for PR 29480 at commit 50afa71.

Test build #127665 has finished for PR 29480 at commit 50afa71.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/127665/
Test PASSed.

There’s actually two failures in that test and I’ve made a PR for that.

See https://github.com/apache/spark/pull/29479

Abandoning in favor of  #29479

Lets get this in soon, so that it can unblock other PRs.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/32288/

Kubernetes integration test status failure
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/32288/

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/32288/
Test FAILed.


ChatByUsername telegram: chat not found (400)

Hello, please advise.
Task:
Need to get the username of a user from admin and then ban him.
How I see this solution
Take the Ban command and pass the username to it via ChatMember
func (*Bot) Ban
func (b *Bot) Ban(chat *Chat, member *ChatMember, revokeMessages ...bool) error
Ban will ban user from chat until `member.RestrictedUntil`.

So it goes something like this
	b.Handle("/s", func(c tele.Context) error {
		user := &tele.User{Username: "@y123"}

		err := b.Ban(c.Chat(), &tele.ChatMember{User: user})
		log.Println(err)
		return c.Send("Hello world!")

	})

but that's how we get the error
telegram: Bad Request: invalid user_id specified (400)
I also tried using BanSenderChat
type Test struct {
	User string
}

func (t Test) Recipient() string {
	return t.User
}

	b.Handle("/s", func(c tele.Context) error {
		user := Test{User: "@Nikqwerty123"}

		err := b.BanSenderChat(c.Chat(), user)
		log.Println(err)
		return c.Send("Hello world!")

	})

but I'm getting the error again
telegram: Bad Request: sender_chat_id is not a valid Integer (400)
after which I just switched to using ChatByUsername
There was a lot of hope for this method, as it seems to give data including user data. But it doesn't work at all.
	b.Handle("/s", func(c tele.Context) error {
		cha, err := b.ChatByUsername("@Nikq")
		log.Println(cha, err)
		return c.Send("Hello world!")

	})

on any attempts to pass different data to the method I always get this error
<nil> telegram: chat not found (400)

Can you please tell me what I'm doing wrong?
Thank you in advance, I really hope for your answer)
Don't throw slippers at me, I'm a beginner.

I also tried using Entities()
But it comes up with an empty User structure
for _, element := range c.Entities() {
	log.Println(element.Type)
	if element.Type == "mention" {
		log.Println(element.User)
	}
}

Hello @poikl246, I'm afraid you can't do this, as telegram makes bots unable to get an user's id (Or any information whatsoever) by its username.
What you are searching is an userbot, you can create a local api that does the job for you, I suggest the "plug-n-play" solution provided here:
https://github.com/Poolitzer/usernameToChatAPI
You will just need to create a tiny wrapper for the api.
Hope this answers your question!

Another solution is to have a database that contains every user's username and their id.
This would however lead to unexpected problems if you don't update the database in the right time. For example:

@userA changes his username to @userABC
@userB changes his username to @userA
Neither of them sends an update to the bot after changing their usernames. Now, if you try to /ban @userA, even if you want to ban @userB you will instead ban the original owner of @userA (now @userABC)

@im-trisha
Okay, thank you very much.
It's very sad that the standard doesn't have this functionality(
Thank you.


Refact definitions

Endpoint related definitions are stored in a dict under  /definitions
This PR will :

move all the definitions to oandapyV20/definitions
dynamically generate classes from the definitions
provide the documentation
add tests

The new structure will allow us to write:
>>> import oandapyV20.definitions.orders as orderdefs
>>> print orderdefs.OrderType.MARKET
MARKET
>>> c = orderdefs.OrderType()
>>> print c['MARKET']
A Market Order

Coverage increased (+0.03%) to 99.203% when pulling 4078b15229bd1a634cda33bd58e360f877e28de2 on refact-definitions into 6a793590cfd69d55c7d5c23a1dc41c7f5596c551 on master.

Coverage increased (+0.03%) to 99.203% when pulling 4078b15229bd1a634cda33bd58e360f877e28de2 on refact-definitions into 6a793590cfd69d55c7d5c23a1dc41c7f5596c551 on master.

Coverage increased (+0.03%) to 99.203% when pulling 4078b15229bd1a634cda33bd58e360f877e28de2 on refact-definitions into 6a793590cfd69d55c7d5c23a1dc41c7f5596c551 on master.

Coverage increased (+0.05%) to 99.223% when pulling 9c31766803e09f05ff274d049d839eef33150200 on refact-definitions into 6a793590cfd69d55c7d5c23a1dc41c7f5596c551 on master.

Coverage increased (+0.05%) to 99.225% when pulling 621ec69bf223e84011a3921e649ec5260b7acc12 on refact-definitions into 6a793590cfd69d55c7d5c23a1dc41c7f5596c551 on master.


In the log I see something about waiting for lock and timeout for statistics.

LOGS
dbservers :
WARNING [4512c] {queries} timed out after 900 s waiting for exclusive-lock on collection 's8010020'
WARNING [4512c] {queries} timed out after 900 s waiting for write-lock on collection 's8010020'
WARNING [8bcee] {queries} slow query: 'FOR doc IN @@collection FILTER doc.@indexAttribute >= 0 && doc.@indexAttribute <= @stamp SORT doc.@indexAttribute LIMIT @limit REMOVE doc IN @@collection OPTIONS { ignoreErrors: true }', bind vars: {"@collection":"s8010020","indexAttribute":["createdAt"],"stamp":1.5957639941853433e+9,"limit":999717}, took: 900.006094 s
WARNING [08300] {ttl} error during TTL document removal for collection 's8010020': AQL: lock timeout (while loading collections)
WARNING [4512c] {queries} timed out after 900 s waiting for exclusive-lock on collection 's8010020'
WARNING [4512c] {queries} timed out after 900 s waiting for exclusive-lock on collection 's8010020'
coordinators :
2020-07-27T11:55:22Z [1] ERROR [abcde] {communication} communication error: 'Request timeout' from destination 'shard:s4010024'
2020-07-27T11:55:22Z [1] WARNING [8bcee] {queries} slow query: 'FOR doc IN @@collection FILTER doc.mount == "/_api/foxx" LIMIT 0, 1  RETURN doc', bind vars: {"@collection":"_apps"}, took: 120.016846 s
2020-07-27T11:55:22Z [1] ERROR [24213] ArangoError 1457: AQL: timeout in cluster operation (while optimizing plan)
2020-07-27T11:55:22Z [1] ERROR [24213]     at ArangoStatement.execute (/usr/share/arangodb3/js/server/modules/@arangodb/arango-statement.js:84:16)
2020-07-27T11:55:22Z [1] ERROR [24213]     at ArangoDatabase._query (/usr/share/arangodb3/js/server/modules/@arangodb/arango-database.js:102:45)
2020-07-27T11:55:22Z [1] ERROR [24213]     at SimpleQueryByExample.execute (/usr/share/arangodb3/js/server/modules/@arangodb/simple-query.js:136:42)
2020-07-27T11:55:22Z [1] ERROR [24213]     at SimpleQueryByExample.SimpleQuery.toArray (/usr/share/arangodb3/js/common/modules/@arangodb/simple-query-common.js:171:8)
2020-07-27T11:55:22Z [1] ERROR [24213]     at ArangoCollection.firstExample (/usr/share/arangodb3/js/server/modules/@arangodb/arango-collection.js:239:71)
2020-07-27T11:55:22Z [1] ERROR [24213]     at Object.getServiceDefinition (/usr/share/arangodb3/js/common/modules/@arangodb/foxx/manager-utils.js:178:23)
2020-07-27T11:55:22Z [1] ERROR [24213]     at initLocalServiceMap (/usr/share/arangodb3/js/server/modules/@arangodb/foxx/manager.js:439:39)
2020-07-27T11:55:22Z [1] ERROR [24213]     at ensureFoxxInitialized (/usr/share/arangodb3/js/server/modules/@arangodb/foxx/manager.js:459:5)
2020-07-27T11:55:22Z [1] ERROR [24213]     at Object.getMountPoints [as mountPoints] (/usr/share/arangodb3/js/server/modules/@arangodb/foxx/manager.js:1068:3)
2020-07-27T11:55:22Z [1] ERROR [24213]     at buildRouting (/usr/share/arangodb3/js/server/modules/@arangodb/actions.js:1055:33)
2020-07-27T11:56:13Z [1] ERROR [abcde] {communication} communication error: 'Request timeout' from destination 'shard:s8010020'
2020-07-27T11:56:13Z [1] ERROR [abcde] {communication} communication error: 'Request timeout' from destination 'shard:s8010020'
2020-07-27T11:56:33Z [1] ERROR [abcde] {communication} communication error: 'Request timeout' from destination 'shard:s8010020'
2020-07-27T11:56:33Z [1] ERROR [abcde] {communication} communication error: 'Request timeout' from destination 'shard:s8010020'
2020-07-27T11:57:01Z [1] ERROR [abcde] {communication} communication error: 'Request timeout' from destination 'shard:s8010020'
2020-07-27T11:57:01Z [1] ERROR [abcde] {communication} communication error: 'Request timeout' from destination 'shard:s8010020'
2020-07-27T11:57:11Z [1] ERROR [abcde] {communication} communication error: 'Request timeout' from destination 'shard:s4010024'
2020-07-27T11:57:11Z [1] WARNING [8bcee] {queries} slow query: '\n    FOR doc IN @@value0\n    FILTER LEFT(doc.mount, 2) != "/"\n    LET bundleExists = DOCUMENT(@@value1, doc.checksum) != null\n    RETURN [doc.mount, doc.checksum, doc._rev, bundleExists]\n  ', bind vars: {"@value0":"_apps","@value1":"_appbundles"}, took: 120.014009 s
2020-07-27T11:57:52Z [1] ERROR [abcde] {communication} communication error: 'Request timeout' from destination 'shard:s8010020'

2020-07-13T14:20:54Z [1] ERROR [30467] {cluster} cannot create connection to server: 'CRDN-xxw8kgxw' at endpoint '', timeout: -1.000000
2020-07-13T14:20:54Z [1] ERROR [24213] Service "/_admin/aardvark" encountered error 500 while handling GET http://<IP_ADDRESS>:8529/_db/queries/_admin/aardvark/statistics/coordshort
2020-07-13T14:20:54Z [1] ERROR [24213] via ArangoError: couldn't queue async request
2020-07-13T14:20:54Z [1] ERROR [24213]     at coordinators.map.coordinator (/usr/share/arangodb3/js/apps/system/_admin/aardvark/APP/statistics.js:502:36)
2020-07-13T14:20:54Z [1] ERROR [24213]     at Array.map ()
2020-07-13T14:20:54Z [1] ERROR [24213]     at Route._handler (/usr/share/arangodb3/js/apps/system/_admin/aardvark/APP/statistics.js:501:37)
2020-07-13T14:20:54Z [1] ERROR [24213]     at next (/usr/share/arangodb3/js/server/modules/@arangodb/foxx/router/tree.js:412:15)
2020-07-13T14:20:54Z [1] ERROR [24213]     at /usr/share/arangodb3/js/node/node_modules/lodash/lodash.js:10052:25
2020-07-13T14:20:54Z [1] ERROR [24213]     at Middleware.router.use (/usr/share/arangodb3/js/apps/system/_admin/aardvark/APP/statistics.js:405:3)
2020-07-13T14:20:54Z [1] ERROR [24213]     at next (/usr/share/arangodb3/js/server/modules/@arangodb/foxx/router/tree.js:414:15)
2020-07-13T14:20:54Z [1] ERROR [24213]     at next (/usr/share/arangodb3/js/server/modules/@arangodb/foxx/router/tree.js:410:7)
2020-07-13T14:20:54Z [1] ERROR [24213]     at next (/usr/share/arangodb3/js/server/modules/@arangodb/foxx/router/tree.js:410:7)
2020-07-13T14:20:54Z [1] ERROR [24213]     at dispatch (/usr/share/arangodb3/js/server/modules/@arangodb/foxx/router/tree.js:426:3)

What you are experiencing here is something like this: A long running transaction is preventing the replication to finish. To explain a little bit: The replication process on a follower shard, when it first wants to catch up with the leader after a restart or after an adjustment to the collection to raise the replication level gets from the leader whatever it is missing. And to finish it off, gets a read lock on the shard to get whatever has been added in the meantime. Followed by the release of the lock and normal replicating operation from the leader.
What you are seeing it that the finalisation of the catchup is not able to acquire said lock.
There are a couple of things that you could do to start with in this order

Check all your queries for potential veeeeeery long holds of locks. Try to identify it and rewrite it in a way, where the lock could be handled more gracefully. There really is not much we can do there on the side of the database code.
Restart the leader db server for the shard in question to kill the lock.
Restart all coordinators one after the other.

If you don't identify the problematic query, this situation will come up again.,

We still have the same problem. We check all our requests and simplified them as much as possible, plus removed all transactions from the code
Yesterday it locked on our collection when try to remove old data:
2020-08-09T11:34:41Z [1] ERROR [abcde] {communication} communication error: 'Request timeout' from destination 'shard:s4010867'
2020-08-09T11:47:52Z [1] WARNING [d728e] {queries} slow query: 'FOR doc IN @@collection FILTER doc.@indexAttribute >= 0 && doc.@indexAttribute <= @stamp SORT doc.@indexAttribute LIMIT @limit REMOVE doc IN @@collection OPTIONS { ignoreErrors: true }', bind vars: {"@collection":"s4010867","indexAttribute":["createdAt"],"stamp":1.5968863889096797e+9,"limit":1000000}, took: 883.309665 s, loading took: 883.309155 s
Today it locks on system collection '_graphs' .
2020-08-11T10:45:26Z [1] ERROR [abcde] {communication} communication error: 'Request timeout' from destination 'shard:s10010043'' . I check that problem shard 10010043==_graphs

one more question . Now we have all our collections with
Replication factor: 1
Write concern: 1
Wait for sync:	No
Maybe you need to change something for the cluster to avoid locking?


Followup Event page

⭐ Suggestion
Based on previously merged PR #89 .

FIx comments on merged PR
Implement TODOs from the same PR:

Add event gallery with photos
Add event slides link

📃 Motivating Example
We want to improve the event page & add as much features as possible

EDIT:
you can find event slides link here

We want to improve the event page & add as much features as possible

What does the event page miss to be completed in you opinion? Give me an example @coluzziandrea
I only understand we need a more complete event page, but any ideas?

@salvatorericcardi It would be nice for example to have a carousel that shows the event photos , like this example here: https://flowbite.com/docs/components/carousel/

Ok, how do you want to handle the event photos?
Directly in the filesystem or using google drive and calling them through google apis, that are free to use under limits?
Flowbite could give us a good carousel kit. I think I have not more questions for the moment

I think that it is better to have all the photos in the repo (maybe using .WEBP format for performance)


Use 'tar' filter when extracting tarfiles

Fix #700.
This is to address a Snyk warning. The new code will only run on Python 3.11.4 and above.
Tested locally with Python 3.11.2 and 3.11.5. Although we can't see it in the code coverage with a single version of Python, I can confirm personally that both arms of the conditional are being entered.

Oops; looks like this change caused this failure on Windows: https://github.com/miurahr/aqtinstall/actions/runs/5997958636/job/16265345067
On that CI runner, it looks like Python 3.10 is installed, and the test is not expecting to see the warning Extracting may be unsafe; consider updating Python to 3.11.4 or greater. Let me fix that...


Initial list of WG Members

I seeded the list with (all folks part of @nodejs/smoke-test + @jasnell who isn't for some reason) @rvagg @jasnell @cjihrig @Starefossen @thefourtheye @Trott and myself.
If I left out anyone or if anyone would like to not be part of this list, please either comment or send a PR to update the list. I can manage any merge conflicts that arise between them.
I'd like everyone to confirm they'd like to be on this as well. Please comment to confirm you are alright being part of the WG. When everyone has commented, I'll close this issue and further additions can happen in new issues.

Please count me in.

:+1:

In.

I'd like to be in as well

would be good to get releasers in the list if they have bandwidth: @misterdjules, @chrisdickinson, @Fishrock123

You missed @cjihrig

Should this repository be deleted(?/cleaned up?) in favor of https://github.com/nodejs/citgm? / cc @mikeal & @TheAlphaNerd

If anything it makes sense to simply fold into build imho.


Remove READ_PHONE_STATE permission as it is not necessary

I checked android code, none of our functions needs READ_PHONE_STATE, why do we need this very sensible permission?
https://developer.android.com/reference/android/telephony/TelephonyManager#getSimCountryIso()
https://developer.android.com/reference/android/telephony/TelephonyManager#getNetworkOperatorName()
https://developer.android.com/reference/android/telephony/TelephonyManager#getSimState()
https://developer.android.com/reference/android/telephony/TelephonyManager#getSimOperator()
Tested on android 9, everything works normally without READ_PHONE_STATE permission

Tested on Android 9, everything works normally without READ_PHONE_PERMISSION

LGTM! Thanks for your PR!


Use LWT for task delete statement

Without this, a delete can come in with a timestamp that is earlier than the timestamp of some fields, resulting in a row with only some fields defined.

https://ocd.appscale.com:8080/job/Daily Build/3030/

https://ocd.appscale.com:8080/job/Daily Build/3039/

@jeanleonov Lightweight transaction. Anytime an 'IF' statement is added to a mutation, it uses a different write path. https://www.datastax.com/dev/blog/lightweight-transactions-in-cassandra-2-0

@cdonati , now I see. Quite useful feature

https://ocd.appscale.com:8080/job/Daily Build/3136/
https://ocd.appscale.com:8080/job/Euca-Faststart/999/


Enable curves to change into dots/circles or other shapes?

Is your feature request related to a problem? Please describe.
Enable curves to change into dots/circles or other shapes?
Describe the solution you'd like
Unsure whether this should be a flag or object? Unsure if data should be in main data with curves with depth or separate depth/curve object for dots?

Maybe simplify to “allow change of line width and style, with an option for no line between points”

I suspect line style is independent of where actual points are (so that might not be possible as dots would not align with real values) but will look into

quick search, saving for later work:

https://stackoverflow.com/questions/38235240/adding-dots-to-d3-js-graph &
https://stackoverflow.com/questions/36902028/d3-lines-between-dots-not-working

plan to append circles as optional step & combined with ability to zero out the line as there is no innate d3 way to have a line appear to be circles but have the circles be positioned at the real points.

some hover tooltips work on the basis of interacting with circles over lines, so this issue relates potentially this the hover on #13 as well.


OST' Composer

OST' Composer
User Story:
As a user, I want to deploy my own contracts in the side chain. To do this I need OST ' on the auxiliary chain.
Scenario:
As a company/user, I want to write contracts like custom rules. To get OST' on test net we already have faucet that can provide the OST'. But for mainnet, it is still a manual/centralized work. Instead of this, it will be helpful for the user if they can stake OST on origin chain and mint OST' on an auxiliary chain.
Proposal:
“Composer” contract, where (open or whitelisted) facilitator pool can accept (or ignore, and a user can revoke) stakeRequests of OST-> OST’ on mainnet; MVP contract + executable (like a faucet)

Specifications:
Composer contract:
Please note: the contract is referred to Composer, but this is not final name. Suggest a better name.

Composer contract will be Organized
Single Composer contract must work for arbitrary gateway.
Any address(user) must be able to request stake for OST on origin chain by calling requestStake function.

function requestStake(
        address _gateway,
        uint256 _amount,
        address _beneficiary,
        uint256 _gasPrice,
        uint256 _gasLimit,
        uint256 _nonce
    )
        external
        returns (
            bytes32 stakeRequestHash_
        )

Composer should have a function that returns the current nonce for the given address that can be used for stakeRequest

function getNonce(
        address _account,
        address _gateway
    )
        external
        view
        returns (uint256 nonce_)

Facilitators (whitelisted, for now, later it can be open) can facilitate the stake and mint process on behalf of the user by providing the hash lock. A whitelisted address can call acceptStakeRequest to facilitate stake and mint.

function acceptStakeRequest(
        bytes32 _stakeRequestHash,
        bytes32 _hashLock
    )
        onlyWorker // only whitelisted address can call this
        external
        returns (bytes32 messageHash_)

The staker can revoke the stake request any time unless it has been accepted and processed by the facilitator. Staker can call revokeStakeRequest() function to revoke the stake request. Staker can revoke only its own stake requests.

function revokeStakeRequest(
        bytes32 _stakeRequestHash
    )
        external

A facilitator can reject the stakeRequest by calling rejectStakeRequest. We should evaluate if this function is needed. If the facilitator pool will be open then we may not need this function.

function rejectStakeRequest(
        bytes32 _stakeRequestHash
    )
        onlyWorker // only whitelisted address can call this
        external

All events of the composer contracts must be sufficient for the facilitator to decide if they want to accept or ignore the facilitation.

<To be added>

Currently, there is a limitation of one stake request at a time in the Gateway contracts. This must be gracefully handled in the composer contract. One of the proposals is given below that uses proxy contract for staker.
The organization can deactivate the new stake requests. By doing this no one can call stakeRequest. Facilitators can still accept stake requests. Staker can still revoke the stake requests.

StakerProxy contract:
Please note: the contract is referred to StakerProxy, but this is not final name. Suggest a better name.
Gateways can do one stake - mint process at a time for a given staker address. So the composer contract cannot call gateway.stake() function, it will be not able to serve all stake requests from multiple stakers addresses. So a proxy contract is introduced as a proposal here.

This contract has a minimal code, that gets deployed from the Composer contract.
It is deployed per user once.
It can be used for arbitrary gateways.
Actual staker is the owner, and it can be destroyed by the owner only.
All other functions can be called only by Composer contract.

This contract can have following variables.
address  public composer;
address  public owner;

Constructor
    constructor(
        address _composer,
        address _owner
    )
        public;

Accept stake request
     function acceptStakeRequest(
        uint256 _amount,
        address _beneficiary,
        uint256 _gasPrice,
        uint256 _gasLimit,
        uint256 _nonce,
        bytes32 _hashLock,
        address _staker,
        address _gateway
    )
        onlyComposer
        external
        returns (bytes32 messageHash_);

<Ignore this section, for now, this will be updated>
Executable (Facilitator):

The executable must be able to support multiple chains simultaneously.

Use mosaic-chains to run chains.

Support multiple workers simultaneously.

Subscribe to StakeRequested event.

Workers should avoid race on acceptStakeRequest; eg round-robin

Track the gas available for each worker, if the worker gas too low to perform any transaction then it must not do facilitation.

Calculate if the gasPrice and gasLimit should be acceptable to do facilitation.

It must act as a hunter for any failed facilitation.

Use mosaic.js to interact with Contracts.

To start the facilitator, provide composer address, and chain id
./facilitator start <chainId> <composer_contract_address>
example:
./facilitator start 3 '0xA574BAE4B1853132a35291a853817B8F19928cFD'

Add workers (non interactive)
Since the workers will need to do transactions, the worker account must be unlocked.
For this we should do it in non-interactive way by providing the password path
Adding Single worker
./facilitator addworker <address> --non-interactive ./password.txt --chain-ids <chainId,...>
Example:
./facilitator addworker '0xA574BAE4B1853132a35291a853817B8F19928cFD' --non-interactive ./password.txt --chain-ids 2 1407 1406
Adding multiple workers
./facilitator addworkers <worker_config_path>
Example:
./facilitator addworkers <./worker/path/config.json>
config.json proposal
{
  <address>: {
  	password: <password>,
  	chianids: <chianId,....>
  },
}

List workers
./facilitator listworkers <chainid>

List worker balances in all chain ids
./facilitator listworkersbalance

List stakeRequests
./facilitator liststakerequests <chainid>

Handle SIGTERM gracefully

Implementation Proposal
Gateways can do one stake - mint process at a time. Also, the stake function of gateway contract is called by the staker address.
There are multiple ways to implement this

First is like existing gateway composer for branded token. It requires one gateway composer per user. This will require a bookkeeper that tracks all the composers (onchain in contract or off-chain in DB)

The second way is to have a single composer that internally manages the proxy staker account.
In this approach, staker can call stakeRequest on Composer contract. Composer contract internally deploys a proxy contract per user (only once per user).
Proxy contract is just used to maintain the nonce and acts as the staker. This proxy contract can be called only by the Composer contract.
An incomplete rough implementation is available here.

Composer.sol
pragma solidity ^0.5.0;

import "./GatewayInterface.sol";
import "./Organized.sol";
import "./StakerProxy.sol";
import "./EIP20Interface.sol";

contract Composer is Organized {
    // Stake request struct.
    struct StakeRequest {
        uint256 amount;
        address beneficiary;
        uint256 gasPrice;
        uint256 gasLimit;
        uint256 nonce;
        address staker;
        address gateway;
    }

    // Maps staker address to its proxy contract.
    mapping (address => StakerProxy) public stakerProxies;

    // Maps staker address to stake request hash.
    mapping (address => bytes32) public StakeRequestHashes;

    // Maps stake request hash to StakeRequest.
    mapping (bytes32 => StakeRequest) public stakeRequests;

    // constructor
    constructor(
        OrganizationInterface _organization
    )
        public
        Organized(_organization)
    {

    }

    // - Staker can call this function.
    // - Staker needs to approve Composer contract for stake amount.
    function requestStake(
        uint256 _amount,
        address _beneficiary,
        uint256 _gasPrice,
        uint256 _gasLimit,
        uint256 _nonce,
        address _gateway
    )
        external
        returns (
            bytes32 stakeRequestHash_
        )
    {
        // Do basic validations.

        // get stakerProxy
        StakerProxy stakerProxy = stakerProxies[msg.sender];

        // if staker proxy contract addresses does not exists.
        if (address(stakerProxy) == address(0)) {

            // deploy the proxy contract.
            stakerProxy = new StakerProxy(
                address(this),
                msg.sender
            );
            stakerProxies[msg.sender] = stakerProxy;
        }

        // generate stakeRequestHash_;

        StakeRequest storage stakeRequest = stakeRequests[stakeRequestHash_];
        require(stakeRequest.staker == address(0), 'Staker request is already in progress.');

        uint256 nonce = GatewayInterface(_gateway).getNonce(msg.sender);
        require(_nonce == nonce, "Nonce must match.");

        // store stake requests in proxy contract.

        // update the stakeRequests mapping.
        stakeRequests[stakeRequestHash_] = StakeRequest(
            _amount,
            _beneficiary,
            _gasPrice,
            _gasLimit,
            _nonce,
            msg.sender,
            _gateway
        );

        // Transfer the stake amount to this address.
        address token = GatewayInterface(_gateway).token();
        require(
            EIP20Interface(token).transferFrom(msg.sender, address(this), _amount),
            "Stake amount must be transferred to Composer."
        );

        // Emit stake requested event.
    }

    // This can be called by the workers (white listed facilitators).
    // workers/facilitators needs to approve the Composer contract for bounty amount Transfer.
    function acceptStakeRequest(
        bytes32 _stakeRequestHash,
        bytes32 _hashLock
    )
        onlyWorker
        external
        returns (bytes32 messageHash_)
    {
        // do basic validations.

        StakeRequest storage stakeRequest = stakeRequests[_stakeRequestHash];
        require(stakeRequest.staker != address(0), 'Staker request must exists.');

        GatewayInterface gateway = GatewayInterface(stakeRequest.gateway);
        delete stakeRequests[_stakeRequestHash];

        // get stakerProxy
        StakerProxy stakerProxy = stakerProxies[msg.sender];
        require(address(stakerProxy) != address(0), 'Staker proxy must exists.');

        // bount amount.
        uint256 bounty = gateway.bounty();
         // Transfer the bounty amount to stakerProxy.
        address token = gateway.token();
        require(
            EIP20Interface(token).transferFrom(msg.sender, address(stakerProxy), bounty),
            "bounty amount must be transferred to stakerProxy."
        );

        address baseToken = gateway.baseToken();
        // transfer the stake amount
        require(
            EIP20Interface(baseToken).transfer(address(stakerProxy), stakeRequest.amount),
            "Stake amount must be transferred to stakerProxy."
        );

        messageHash_ = stakerProxy.acceptStakeRequest(
            stakeRequest.amount,
            stakeRequest.beneficiary,
            stakeRequest.gasPrice,
            stakeRequest.gasLimit,
            stakeRequest.nonce,
            _hashLock,
            stakeRequest.staker,
            stakeRequest.gateway
        );

        // Emit event
    }

    // For below 2 functions the common code can be extracted.

    function rejectStakeRequest(
        bytes32 _stakeRequestHash
    )
        onlyWorker
        external
    {
        // Basic validations.

        StakeRequest storage stakeRequest = stakeRequests[_stakeRequestHash];
        require(stakeRequest.staker != address(0), 'Staker request must exists.');

        address staker = stakeRequest.staker;
        uint256 amount = stakeRequest.amount;

        delete stakeRequests[_stakeRequestHash];

        address token = GatewayInterface(stakeRequest.gateway).token();
        // transfer back the stake amount
        require(
            EIP20Interface(token).transfer(staker, amount),
            "Stake amount must be transferred to staker address."
        );

        // Emit event
    }

    function revokeStakeRequest(
        bytes32 _stakeRequestHash
    )
        external
    {
        StakeRequest storage stakeRequest = stakeRequests[_stakeRequestHash];
        require(stakeRequest.staker == msg.sender, 'Only staker can call revokeStakeRequest.');

        address staker = stakeRequest.staker;
        uint256 amount = stakeRequest.amount;

        delete stakeRequests[_stakeRequestHash];

        address token = GatewayInterface(stakeRequest.gateway).token();
        // transfer back the stake amount
        require(
            EIP20Interface(token).transfer(staker, amount),
            "Stake amount must be transferred to staker address."
        );

        // Emit event

    }

    function getNonce(
        address _account,
        address _gateway
    )
        external
        view
        returns (uint256 nonce_)
    {
        StakerProxy stakerProxy = stakerProxies[_account];
        if (address(stakerProxy) == address(0)) {
            return 0;
        }
        nonce_ = GatewayInterface(_gateway).getNonce(_account);
    }

}

StakerProxy.sol
pragma solidity ^0.5.0;

import "./GatewayInterface.sol";
import "./EIP20Interface.sol";

contract StakerProxy {

    address  public composer;
    address  public owner;

    modifier onlyComposer {
        require(
            msg.sender == composer,
            "Msg.sender must be composer address."
        );
        _;
    }

    modifier onlyOwner {
        require(
            msg.sender == owner,
            "Msg.sender must be owner address."
        );
        _;
    }

    constructor(
        address _composer,
        address _owner
    )
        public
    {
        composer = _composer;
        owner = _owner;
    }

     function acceptStakeRequest(
        uint256 _amount,
        address _beneficiary,
        uint256 _gasPrice,
        uint256 _gasLimit,
        uint256 _nonce,
        bytes32 _hashLock,
        address _staker,
        address _gateway
    )
        onlyComposer
        external
        returns (bytes32 messageHash_)
    {
        require(owner == _staker, "Staker must be the owner.");

        // may be we not this step here.
        uint256 nonce = GatewayInterface(_gateway).getNonce(msg.sender);
        require(nonce == _nonce, "nonce must be equal.");

        // Approve gateway for token transfer.
        address token = GatewayInterface(_gateway).token();
        EIP20Interface(token).approve(_gateway, _amount);

        // Approve gateway for bounty transfer.
        address baseToken =GatewayInterface(_gateway).baseToken();
        uint256 bounty = GatewayInterface(_gateway).bounty();
        EIP20Interface(baseToken).approve(_gateway, bounty);

        // This will call stake of gateway contract
        messageHash_ = GatewayInterface(_gateway).stake(
            _amount,
            _beneficiary,
            _gasPrice,
            _gasLimit,
            _nonce,
            _hashLock
        );

    }
}

questions, notes, thoughts

look into multiplexing it for arbitrary gateway
should the stakerProxy be delete-able if wanted by the staker? -- but not the Composer contract
gateway.revert does not need to be implemented
gasprice should be high enough for facilitators to pick up; for now deal with this out-of-contract
Add disable contract functionality that can restrict stakeRequests but the revokeStakeRequest can still work.

Facilitator

avoid race on acceptStakeRequest; eg roundrobin
use mosaic-chains to run chains

The interface for removeStakerProxy method in StakerProxy contract:
function removeStakerProxy(address _owner) external returns(bool) {
}

Closing this epic as all tickets are closed.


Store state files in $XDG_STATE_HOME by default

This PR is targeted at #3176

@JoeKar So far I only updated the docs. Please let me know if such changes make sense, so I can start implementing them.

This isn't gonna be backwards compatible, is it?

I was thinking about it, but in the initial proposal I decided to omit this. But I definitely would like to make this change completely painless for everyone. Making anyone lose time over such a minor change would be unprofessional.
By "backward compatibility", do you mean that if ~/.config/micro/backups and ~/.config/micro/buffers exist, they should be used and whatever is in ~/.local/state/micro should be ignored?

Dunno. Neither option seems perfect.

The backward compatibility will be a nasty thing.

Another option would be to copy ~/.config/micro/backups and ~/.config/micro/buffers to ~/.local/state/micro.

In that case you will do this with every startup, right? Maybe it's better to move it then and maintain the new location only. :thinking:

Maybe it's better to move it then and maintain the new location only.

Yeah, it's also an option.
The situation where the change I'm planning to make would matter seems vert rare: Micro would have to crash, the user would have update in the meantime, and then the backup would be missing.

micro_state_dir.patch.txt
Here is a patch to separate micro's state files from micro's config files. With this patch files that were previously searched for in $MICRO_CONFIG_HOME/buffers are now searched for in $MICRO_STATE_HOME/buffers. If that directory does not exist $XDG_STATE_HOME/micro/buffers is used instead. If that doesn't exist either $HOME/.local/state/micro/buffers is used.
This patch simply adds a config.StateDir variable (alongside the existing config.ConfigDir) and uses it for state stuff. The patch will create the state directory if it doesn't already exist but does not touch the old location.
I don't do anything for migration because IMO it's not worth adding code that will sit in micro forever to address the minor one-time slight annoyance of history and cursor positions being reset. I think a small external migration script would be better for that (not included).
If anyone would like to test this without the hassle of building micro from source a statically linked version for 64-bit Linux (x86_64) can be found here. It should work on any x86_64 Linux distribution.

@clipcarl could you make the change as a Github pull request to make it easier to review?

@clipcarl could you make the change as a Github pull request to make it easier to review?

Honestly I've never used Github for development (I'm old-school) so I'm not sure how to do that!

?


run trust4 with 5' sorted T-cell data

Hello,
Thanks again for creating this nice package! I want to let you know that It has been instrumental to build up a paper that will be soon published in Nature Communications (and your software has been cited accordingly :) ).
I have the following question. I want to extract TCR sequences from a 5' GEX library from 10x. The SRA data shows the following structure of the fastq files

R1-R2 are technical reads. I have identified the 10x barcode in the first 16nt of the R3 but my question is...as r4 is 100bp only (compared to prior runs where r4 or r2, depending on the experiment where 120bp long), will I loose a lot of potential sequences because of this fastq structure?
Which command shall I use to handle properly this data? I tried to run it with this one:
./run-trust4 -f human_IMGT+C.fa --ref human_IMGT+C.fa -u /mnt/f/data/_4 -t 10 --barcode /mnt/f/data/_3 --barcodeRange 0 15 +
but It gave me a lot of B cell sequences...when data was apparently sorted for ab T cells and GEX data looks like that, full of ab T cells.
Thanks a lot for your advice,
Guillem

Thank you for using TRUST4 and glad it helps with your research! For the format, I guess there is some read sequence in read1 as well, and this is a paried-end data set. Since the read1 contains both barcode and read sequence information, you may also need to specify the read1Range as well. For example, there might be UMI sequences in read1.  One way to check it is if you have cellranger's BAM file, you can infer some of the format information there, such as whether it is paired-end, and the length for each read end.
For getting too many B cells, they could be from ambient cells or some other noise. Do you also see many T cells too? Usually I also see a lot of noise, but after overlaying with Seurat/Scanpy-QC'ed barcodes, they are much cleaner.
Hope this helps. Looking forward to your publication! Congratulations!

Sadly I do not have acces to the BAM data (fastq are downloaded from GEO)...
I have experienced also some background noise specially from nonFACS sorted data. But in other FACS sorted data from others and also in my own experiments TRUST4 extraction of TCR reads is quite pure (few B sequences...). I was wondering if the read issue that you mentioned can affect somehow the alignment and assembly giving false positives?
Thanks a lot for your quick feedback,
Guillem

That could be the reason. If most of the CDR3 information is on read1, then the assembly results may capture some artifacts. Could you please share some of the reads? I can take a look. Thank you.

Here some of the R3 reads:
@SRR25644424.295796 A00521:279:HTWJ3DSX2:1:1102:13774:16235 length=101
TCACAAGTCATGGTCACGTGCTCGGTTTTCTTATATGGGGAGTCGCGCGTCTCCCCCGCAGTAGCGGTAAAGCGGAAGTTATGCTGCAGCCGGAGCCCGGG
+SRR25644424.295796 A00521:279:HTWJ3DSX2:1:1102:13774:16235 length=101
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
@SRR25644424.295797 A00521:279:HTWJ3DSX2:1:1102:13829:16235 length=101
GTCCTCAAGTTAGGTATTCTAAGGTGTTTTCTTATATGGGGTCCTGAAATTCTGCCAGATGAATCTAGTAGTGATGAAGATGAAAAGAAAAACAAGGAAGA
+SRR25644424.295797 A00521:279:HTWJ3DSX2:1:1102:13829:16235 length=101
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF::F:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF:FFF,FFFFFFFFFFFFFFFFFFFF
@SRR25644424.295798 A00521:279:HTWJ3DSX2:1:1102:14082:16235 length=101
CTCGAGGGATATGAAGCACCGCCAGGTCCTTTGAGTTTTAAGCTGTGGCTCGTAGTGTTCTGGCGAGCAGTTTTGTTGATTTAACTGTTGAGGTTTAGGGC
+SRR25644424.295798 A00521:279:HTWJ3DSX2:1:1102:14082:16235 length=101
,FFFFF:FFFFFFF:F:FF,,::FFFFF:FFF,FFF::FFF::FF:FF:FFFFFFF:F:FFFFFFFF,FFF:FFF,:FFFFFF:FFF:FFFFF:FFFFFF:
@SRR25644424.295799 A00521:279:HTWJ3DSX2:1:1102:14479:16235 length=101
TGATGTGTTATGCCCGCCTCTTCACGGGCAGGTCAATTTCACTGGTTAAAAGTAAGAGACAGCTGAACCCTCGTGGAGCCATTCATACAGGTCCCTATTTA
+SRR25644424.295799 A00521:279:HTWJ3DSX2:1:1102:14479:16235 length=101
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF::FF:,:FFFFFFFFFFFFFFFFFFF:FFFFFFFFFFFFFFFFFFFFFFFF:FFFFFFFFFFFFFFF,FFF
@SRR25644424.295800 A00521:279:HTWJ3DSX2:1:1102:15293:16235 length=101
TACCTTATCACTGGGCAGGTGAGCAGTTTCTTATATGGGAGAGGGCGCCGGCTGCGGAGCCGCCCTCAGAGTCGCGAGGCCGGACGCAGCGCGGCGCCGCC
+SRR25644424.295800 A00521:279:HTWJ3DSX2:1:1102:15293:16235 length=101
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,FF:FFF::FFFFFFFFFFFFFFFF
@SRR25644424.295801 A00521:279:HTWJ3DSX2:1:1102:15402:16235 length=101
CGGGTCACATGGGAACCTCTTCGGCGTTTCTTATATGGGGCTTTTCCAAGCGGCTGCCGAAGATGGCGGAGGTGCAGGTCCTGGTGCTTGATGGTCGAGGC
+SRR25644424.295801 A00521:279:HTWJ3DSX2:1:1102:15402:16235 length=101
FFFFFFFFFFFFFFFFFFFFFFFFFFF,F,::,F:,F,FF:FFFF,FFF,FFFFFFFFF:FF:FFF,FFFFFFFF:FFFFF:FFFFFFFF,FFFFF:,FFF
@SRR25644424.295802 A00521:279:HTWJ3DSX2:1:1102:15781:16235 length=101
TACTCATAGAAGGTTTGATACACCATTTTCTTATATGGGGGGCGCGCCCAGCCTGCCAGCCGCGCTGCTGCTGCTCCTCCTGCTGTGGGACCGCTGACCGC
+SRR25644424.295802 A00521:279:HTWJ3DSX2:1:1102:15781:16235 length=101
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
@SRR25644424.295803 A00521:279:HTWJ3DSX2:1:1102:16052:16235 length=101
AGGTCCGTCGATCCCTCTGAGTTGAGTTTCTTATATGGGGACCGCCGAGACCGCGTCCGCCCCGCGAGCACAGAGCCTCGCCTTTGCCGATCCGCCGCCCG
+SRR25644424.295803 A00521:279:HTWJ3DSX2:1:1102:16052:16235 length=101
FFFF::FF:FF:FF:FFFF:F,F,F:FFFF,FFFFF::FFFFFFFF:F:FFFFF,FFFFFFFF:FFFFFFFF,FFFF:F,:F:F:,FFFFF,F::FFFFF,
@SRR25644424.295804 A00521:279:HTWJ3DSX2:1:1102:16251:16235 length=101
CTGAAACGTCAGTGGATTGTTGTATCTTTCTTATATGGGGCTCTTTCCCTGCCGCCGCCGAGTCGCGCGGAGGCGGAGGCTTGGGTGCGTTCAAGATTCAG
+SRR25644424.295804 A00521:279:HTWJ3DSX2:1:1102:16251:16235 length=101
FFFFFFFFFFFFFFFFFFFFFFFFFFFF:FFFFF:::FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
@SRR25644424.295805 A00521:279:HTWJ3DSX2:1:1102:16468:16235 length=101
AGAATAGTCTGAAAGACTATTTTGGTTTTCTTATATGGGATGACCCACCAATCACATGCCTATCATATAGTAAAACCCAGCCCATGACCCCTAACAGGGGC
+SRR25644424.295805 A00521:279:HTWJ3DSX2:1:1102:16468:16235 length=101
:FFFFFFFFFFFFFF,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF:FFFFFFFFFFFFFFFFFFFFFFFFFF
@SRR25644424.295806 A00521:279:HTWJ3DSX2:1:1102:16758:16235 length=101
TGAGAGGAGTGCGTGACTCTTCACCGTTTCTTATATGGGGCTAAACCTAGCCCCAAACCCACTCCACCTTACTACCAGACAACCTTAGCCAAACCATTTAC
+SRR25644424.295806 A00521:279:HTWJ3DSX2:1:1102:16758:16235 length=101
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
@SRR25644424.295807 A00521:279:HTWJ3DSX2:1:1102:18186:16235 length=101
AGTAGTCAGACGCTTTAATTCCACTTTTTCTTATATGGAAAGATTTGTAAGAAATTACTGGCTACTCAGCTTTGTGGGAGCAGCTGGTGACCCCAGGCAGA
+SRR25644424.295807 A00521:279:HTWJ3DSX2:1:1102:18186:16235 length=101
FFFFFFFFFFFFFFFFFFFFFFFF,FFFF:,FFF,,,FFFFFFFFF:F:FF:FFFFFF:FFFFFFFFFFFFFFFFFFF:FFFFFFFFFFFFFFFFFFFFFF
@SRR25644424.295808 A00521:279:HTWJ3DSX2:1:1102:18801:16235 length=101
AACACGTTCCTATGTTTTTCGGCCGTTTTCGTATATGGGGATTCCTGAAGCTGACAGCATTCGGGCCGAGATGTCTCGCTCCGTGGCCTTAGCTGTGCTCG
+SRR25644424.295808 A00521:279:HTWJ3DSX2:1:1102:18801:16235 length=101
FFFFFFFFFFFFFFFFFFFFFFFFFF,FF,FF:,F,,,,FF,F:F:,FF,F,,F,:,FF,:,,FFFF,,:F:,F,F::F::FF:FFFF,FFFFFFF::F,F
@SRR25644424.295809 A00521:279:HTWJ3DSX2:1:1102:19018:16235 length=101
CTACGTCCAGCAGTTTTGACTTTATTTTTTCTTATATGGGGGCAGCCGTGGCTGAGGAGCCTGTGGCGGCAGCGGCGATGGAACCAGCGGAGCAGCCGAGC
+SRR25644424.295809 A00521:279:HTWJ3DSX2:1:1102:19018:16235 length=101
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF:,,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
@SRR25644424.295810 A00521:279:HTWJ3DSX2:1:1102:19723:16235 length=101
CAGTAACCAAACAACAACTTCAGGGATTTCTTATATGGGGCTTCTTTCTCGCCTAACGCTGCCAACATGGTGTTCAGGCGCTTCGTGGAGGTTGGCCGGGT
+SRR25644424.295810 A00521:279:HTWJ3DSX2:1:1102:19723:16235 length=101
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
@SRR25644424.295811 A00521:279:HTWJ3DSX2:1:1102:20121:16235 length=101
GGTGAAGTCTAACGGTAGTCAACGCTTTTCTTATATGGGGAGCTACGGCGGCGGCAGCGGCGGCGCGGGTGCGATTCCGAGCCGTTGAGACGCCTCTGCGG
+SRR25644424.295811 A00521:279:HTWJ3DSX2:1:1102:20121:16235 length=101
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,:FFF,FF,:FFF,FFFFFFFF::,:F,F,,,FF,:,,:FF
@SRR25644424.295812 A00521:279:HTWJ3DSX2:1:1102:21025:16235 length=101
GATCAGTTCAGAAATGCGCGGGCTAGTTTCTTATATGGGGAGAGCCCGAGCAGCGGCCAGGGTAACGCTGTCTTGTGGACCCGCACTTCCCACCAGAGACC
+SRR25644424.295812 A00521:279:HTWJ3DSX2:1:1102:21025:16235 length=101
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
@SRR25644424.295813 A00521:279:HTWJ3DSX2:1:1102:23122:16235 length=101
AGCATACAGTGAACATCATTGCTGCTTTTCTTATATGGGGGCCGGGGGACGGCGACAGCGGGTCGGCGGGCCGCAGGAGGGGGTCATGGGTAAAGACTACT
+SRR25644424.295813 A00521:279:HTWJ3DSX2:1:1102:23122:16235 length=101
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF:FFFFFFFFFFFFFF
@SRR25644424.295814 A00521:279:HTWJ3DSX2:1:1102:23140:16235 length=101
TCACAAGCAGATAATGCGTGTTAGGTTTTCTTATATGGGGAGTCTCCGGGATCCCCAGGCCTGGAGGGGGGTCTGTGCGCGGCCGGCTGGCTCTGCCCCGC
+SRR25644424.295814 A00521:279:HTWJ3DSX2:1:1102:23140:16235 length=101
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
@SRR25644424.295815 A00521:279:HTWJ3DSX2:1:1102:23249:16235 length=101
CTAATGGCACCAACCGGTGTCAAATATTTCTTATATGGGGGCGCAATAGATATAGTACCGCAAGGGAAAGATGAAAAATTATAACCAAGCATAATATAGCA
+SRR25644424.295815 A00521:279:HTWJ3DSX2:1:1102:23249:16235 length=101
FFFFFFFF:FF:FFFFFFFFFFFFFFFFFFFFFFFFFF:FFFFFFFFFFFF,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
@SRR25644424.295816 A00521:279:HTWJ3DSX2:1:1102:24117:16235 length=101
GTTACAGTCGGAAACGGCTTGTTACATTTCTTATATGGGATGACCCCAATACGCAAAACTAACCCCCTAATAAAATTAATTAACCACTCATTCATCGACCT
+SRR25644424.295816 A00521:279:HTWJ3DSX2:1:1102:24117:16235 length=101
FFFFFFFFFFFFFF:FFFFFFF:FFFFFFFF:FFFF:FFF:FF:FFFFFFFFFFFFFFFFF:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
@SRR25644424.295817 A00521:279:HTWJ3DSX2:1:1102:24514:16235 length=101
ACGATACTCTGTCTCGAGTCTTCATTTTTCTTATATGGGGGAGCCAGGGCTTGGCGCGGCGGCCGTGGTTGCGGCGCGGGAAGTTTGGATCCTGGTTCCGT
+SRR25644424.295817 A00521:279:HTWJ3DSX2:1:1102:24514:16235 length=101

Thank you for sharing the data. I've blasted some of the reads and they definitely hit some transcript. Based on 10X tradition, I think the bases other than the first 26bp (16bp barcode+10bp UMI) should be the transcriptomic sequence data. Though some reads hit the transcript with all the 101bp. I think you can try to run TRUST4 with some options like "--readFormat bc:0:15,r1:26:-1" (a simplified read format specification starting from TRUSt4 v1.0.10. The old arguments also work) to ignore the first 26bp of read1 (R3 file).


Support for css nesting

Hi!
What about css nesting support?

---
Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/35602926-support-for-css-nesting?utm_campaign=plugin&utm_content=tracker%2F214563&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F214563&utm_medium=issues&utm_source=github).

That's not part of standard, so we're not planning to support it yet.


Central Topology API definition and implementation

Is your feature request related to a problem? Please describe.
There is no data for the dashboard about the status of edge/cloud defined in Redis or how to capture it.
Describe the solution you'd like
For the multiple Middleware instances deployed in the topology, there is a necessity for each of the Middleware to report the status of the platform they are running on (edge/cloud). The status should be online, CPU usage, disk space etc. This is necessary for the dashboard and resource planner.
On top of this, the ActionServer/Client in the Robot could query for all the possible locations of the Middleware through the Central TopologyAPI. The Robot could decide by itself which Middleware location suits it the best.

Added the proposed schema of the topology


Send data every 30 Seconds(or X seconds)

Describe the bug
i want to sent the location data even in foreground or in background in every 30 seconds. i tried to set the Interval and fastest interval to 30000 but still the data sending before the given second. anyone have an idea to fix this?

For me the location event fires when you use the locationProvider ACTIVITY_PROVIDER. The DISTANCE_FILTER_PROVIDER works only when the devices moves the set stationaryRadius and/or distanceFilter


Remove unnecessary Kubernetes version checks in chart manifests

Longhorn supports Kubernetes 1.19 as the minimum version, hence Kubernetes version checks for the older versions are not required.
Which issue(s) this PR fixes:
Issue https://github.com/longhorn/longhorn/issues/7601

@c3y1huang Please help review this.


write a separate requirements.txt for docker build

At the moment, many of the packages that are needed for development and CI are being loaded into the docker container, where they are not used.
Write a second requirements file just for docker builds

done


Controller Issues: Xbox One wired no longer able to drive boats

After new update my Xbox one controller cannot drive boats. I can ride passenger but I can’t drive it myself. This was not an issue in the last version of Minecraft I played 1.21.1 but in 1.21.3/4 it doesn’t work
I don’t know if it’ll happen to others but I downloaded the most recent version of midnightcontrols and other required mods and got on Minecraft. Make a boat and try to drive, it doesn’t move
Expected behavior
The boat to move forward in water
Desktop (please complete the following information):

Have you checked #263 No

the co troller has Bluetooth capability but the batteries don’t work no matter what I do so it is being played wired

OS: Windows 11

Minecraft 1.21.4

Fabric Loader 0.16.9

Fabric Api 0.111.0 + 1.21.4

Complementary shaders bound r5.3, dynamic FPS 3.7.7, essential mod <IP_ADDRESS>, Iris shaders 1.8.3+1.2, lithium mc1.21.4, midnightlib 1.6.6-fab, modmenu 13.0.0-beta.1, sodium mc1.21.4, text placeholder api 2.5.1+1.21.3

midnightcontrols 1.10.2-fabric

Additional context
It worked in 1.21.1. Unlike usual, I didn’t just duplicate my instance in modrinth and update/pick mods out to create this modpack, I just created a new instance and redownloaded all the mods I wanted in the pack. This means it didn’t remember my settings, but I can’t offhand find a setting that would fix the boat movement problem
EDIT: I recreated the modpack on 1.21 and confirmed that it works, and then updated it to 1.21.1 and it still works, then starting at 1.21.2 the boats no longer work

Good morning!
How did you solve It?

If you can solve it please let me know, I really like playing with my boyfriend. We are from Brazil and many people here love your work

Good morning! How did you solve It?

They released a new update that fixes it


Added dependencies in bower.json

This will make applications depending on Bower to load Leaflet before Leaflet.markercluster.

Cool


Feedback for vim theme needed

I’ve attached a first draft for a vim theme based on rnb (zipped because github doesn’t allow the filetype), it would be awesome if someone could test drive it before I add it to the main repository.
The main issue is that rnb asks for regular and dark colours so I wasn’t sure which ones are the normally used ones. Therefore please compare what you see with the sample images in the readme (ideally also by posting screenshots).
I’ve also found this tool https://vimcolors.org/ which only takes one type of colour per hue.
To get light/dark colours I need to use those from the regular and the contrast++ version, so another open question would be whether to just do one theme or with different levels of background contrast.
A light version is sadly impossible if two colours are needed per hue.
I’d also love feedback on how good the rnb defaults are in terms of distributing the colours.
removed, see current version at the bottom
Originally posted by @nealmckee in https://github.com/nealmckee/penumbra/issues/4#issuecomment-1208447919

I think something's not quite right. I wanted to try on my vim but this was the result:

Thanks, looks like I messed up the background colour completely. I think this version should be better:
penumbra_dark.vim.zip
It should have the correct background colour now and uses a colour from the contrast++ palette as black, not sure how necessary that is either way. The exact colour for black is also debatable, could also potentially be a little less dark.

I did syntax on and verified that colorscheme was set to penumbra-dark, but this still happens. :(

I've tried creating a (Neo)Vim theme using base16 (https://github.com/RRethy/nvim-base16.git and the styling guides at https://chriskempson.com/projects/base16/). Some of the categories don't quite align well yet: https://gist.github.com/edwintorok/6bd1fc9b7f702d462c11c061c1c53732, but perhaps base16 would be an easier framework to use here?
At least conceptually it maps nicely to the colors used here: 8 "shades" and 8 accent colors (although there is no "brown" colors, so I used "magenta" for the 8th color).

I've got a work in progress theme for vim using the https://github.com/lifepillar/vim-colortemplate toolkit plugin.
@nealmckee Would you prefer a pull request, or just share the .vim file for review?

I've got a work in progress theme for vim using the https://github.com/lifepillar/vim-colortemplate toolkit plugin.
@nealmckee Would you prefer a pull request, or just share the .vim file for review?

Pls share your POC here.  (I was about to develop the same thing, then found this thread.)

Here's the output vim file with the colorscheme:
penumbra.vim
And here's the template I used with vim-colortemplate to create it:
penumbra.colortemplate

penumbra.vim

I get this error when using it with Vim 8.2

On version 9.0, it works, but the colors are strange…

Both are being done via puttty connection to different linux servers.

Both are being done via puttty connection to different linux servers. Might be a limitation of the amount of terminal colors, so I'm not that much surprised.

I'm not surprised. There a way for it to fall back for 8 color terms etc, but I didn't experiment with those. I'm guessing at the moment it works only with 256 and true colors.

Okay, so with 16 or 8 color this will use the terminal colors. So you'll need a penumbra terminal theme to look okay.
I've also updated the scheme to fallback better. It's not 100%, but 256 and true color should match.
penumbra.vim
penumbra.colortemplate

I haven’t tested these on anything except my system, but I used https://github.com/arcticlimer/djanho some time ago to play with these colours and have found them quite pleasing overall, especially penumbradark++.
penumbra-vim.zip

Hi, if you use neovim, you can add this information "Neovim: yes" in penumbra.colortemplate, the t_Co should be correctly
define in neovim.


[Mirror] Show staking APY on the Staking Screen

Is your feature request related to a problem? Please describe.

Revamp UI related with #246

I will remove this ticket from 1.7.0 because it's related to #246 .


Avoid placing the Settings dialog "always on top"

I'm trying to add a path to the "Ignore list", and when hitting the "Add" button, the open dialog gets obscured by the Settings' window.
(fresh install of QuickLaunch on beta5 64 bits)

Yeah, it's all a bit complicated, managing the change of "feel" of windows.

I want the main window to be normally on top of all else, but allow user interaction with the other windows.
When the Settings window is open, I want that on on top of the main window.
The file dialog OTOH should be on top of Settings and Main window, but only for as long as it's open.

I'll keep it in mind, but it's on the back-burner. Normally there should be enough space to move the obscuring Settings window out of the way while using the file dialog. Not ideal, but it's not an action one does regularly. :)


SpaceInvaders(SAC_Discrete) : Error

Dear Petros,
Thank you very much for the implementations and it is very useful. I was able to successfully execute the code in the file Cart_Pole.py.  I am now am trying to run the Space_Invaders.py file with SAC_Discrete,  but had received the following error.
AttributeError: 'LazyFrames' object has no attribute 'size'.
This same error persists for other games in Atari environment(Road_Runner,Pong etc.) as well as for other methods (SAC_Discrete, DDQN, DQN etc). I have also installed Atari_py of version : 0.2.6.
It would be very helpful if you could provide your suggestions/insights on the error and methods to fix it. I have attached the python file and a snapshot of the error with this request.
Thanks,
Farha Parveen
Space_Invaders.txt
![ErrorFile_SpaceInvaders_SAC(Discrete)](https://user-images.githubusercontent.com/56920928/80626164-a4ac7a00-8a13-11ea-81fb-0e9096dc4b0d.png

Excuse me, have you finally solved this problem？

+1 error also for SpaceInvaders + SAC_Discrete.

Hello! I have the same problem AttributeError: 'LazyFrames' object has no attribute 'size'.
Any help greatly appreciated! :)

您好，我是范仁义，您的邮件我已经收到，我会尽快处理，谢谢。


Common libraries in src/lib

The next step is to move some of the helper functions into src/lib/*.js files and make them available via impress().lib so that plugins can use them as well. In the code already existing here, navigation plugin uses lib.util.triggerEvent().
The other library is gc, a rather complex "garbage collector" mechanism. It is used to keep track of any changes done to the DOM, mostly as an effect of impress().init(), so that they can be undone with impress().tear(). This was a request in the queue, and I ended up needing it myself too. (The other plugins in my own repo all use this library, so therefore it is merged now.)
@bartaz Based on your comment in the previous PR, I will no longer mark you as a reviewer for PRs, but will continue to ping you so you see these. For this one I will in any case now do something else over the weekend, so it will stay here for review for several days.

After talking with @bartaz, as you can see on the messages, my only concerns are:

[ ] Can we extract and unit test some parts of the functionality? See this comment.
[ ] What about the "GC" concept, can we make it clearer? See this comment from @bartaz  and this one from me.

Given what @bartaz said in regards to just move this over into the dev branch and review it later, I guess that most of my comments do not apply anyway.
It looks good to merge then.

@FagnerMartinsBrack comments:

I see that there are a lot of changes and no testing. Can we at least build test coverage for the new code if we don't think it's worth to spend time building coverage and refactoring the existing ones?

That is a correct observation. As you may remember, in 2015-2016 I wrote some tests for core impress.js, but they were never merged upstream, so I gave up on writing new tests in favor of speeding up feature development. As I was working alone in my own fork, the risk of doing so was a lesser priority. Now the object of this work is to merge 2 years worth of code back upstream, none of which has test coverage beyond what was already merged in my first PR to dev branch. (On the bright side, and kind of because of this, there are several new demo presentations, which indirectly act as testing the new features. None of them test impress().tear() though.)
The history that led us down this path is unfortunate, but the situation is what it is. Test coverage will of course have to be added eventually, and now that I'm back as maintainer in impress.js upstream, I do intend to work on that in the future, since I know I can commit that work. But will not do it as part of these merges.

Can we extract and unit test some parts of the functionality?

Yes, obviously, but this series of merges is focused on just merging, no new code.
@bartaz comments:

I don't have bigger issues with this PR, but I'd like to hear your comments on 'garbage collector' - it's naming and API.
Would it be possible to rename it now to something less confusing?

The concept and naming of garbage collector comes from Symbian :-) It had a similar mechanism where C++ classes would manually register themselves to a service that would then ensure objects are deleted when application closes. (I think all apps were running in the same process, or something else weird, that caused this kind of unusual need.)
I think the name can definitively be changed, just couldn't think of a better one myself. Otoh, a benefit of the current name is that "gc" is a nice and short name for a library that gets used everywhere. In any case, if you can propose a better name (that more clearly describes the library) then I would make such a change at the end of this process, once all plugins are merged to dev branch.

Could we limit the list of function it has in API to make it more straightforward?

No.
As for naming of the library methods, the appendChild and addEventListener are intentionally similar to the same DOM method names, and IMO should stay like that. The push* equivalents are needed for cases where DOM elements are already created by someone else, and you just need to register them for deletion later, so yes, they are needed.
The addCallback() method can be renamed to addTeardownCallback() if you prefer, but I would argue that once someone is familiar with what the gc library does, then gc.addCallback() should be quite clear?
In fact, as mentioned in the commit message, I feel that there's rather a need for more methods to the API: a pair that would remove/reset an attribute, not the whole element.

Possibly. When I know what it does (that the callback is called on teardown) then I know what it does and I don't need 'teardown' in the name. So again - maybe it's not a problem with API/name but with documentation and/or examples?

I guess it all boils down to us not having the context of how it's being used. I guess we'll be able to provide more meaningful contributions once we see how everything "fits". Maybe with some future Pull Requests on top of all the landed plugins.
IMHO this should land on dev ASAP so that we can keep looking at the next bunch of code and have a better grasp of how it works.

While I understand the reasoning behind having different methods in this API: low lever push*, convenience DOM equivalents, and 'fallback' addCallback and I understand practical need for all of them to cover different use cases from API 'cleanness' point of view it feels wrong to me to mix them in one 'gc' API.

I'm glad to have found someone who's taste is even more minimalist than mine!

So maybe the answer is not in reducing this API, but documenting it and maybe changing the names of the methods to make them more clear?

I admit that documentation for this is maybe a bit sparse. The gc stuff was a lot of work, and it took several commits to move all plugins to using it, and once I got everything working, didn't really spend time documenting it as much as some other parts. Adding better documentation is actually something I CAN do within this PR (just like I've already promised to add impress().tear() documentation).

One little suggestion - I like how push* methods use the similar naming and distinguish the 'low-level' gc methods. Maybe addCallback should be pushCallback as well?

Yup, this is a great suggestion and easy to agree with. In addition to minimalism, I'm a big fan of consistency in naming.
Btw, in case it wasn't obvious already, the push* naming is because gc builds a stack, and when you call teardown, it correspondingly pops items in last-in-first-out order.
But I'm afraid this is another thing that is better done later, once all the code is "on the same side" of the big merge.

IMHO this should land on dev ASAP so that we can keep looking at the next bunch of code and have a better grasp of how it works.

Thanks both of you. Once I write some better docs, will merge later in the week.


fastbin_dup_consolidate wrong explanation

Allocating a tcache-sized chunk will trigger the malloc_consolidate and merge [...]

It doesn't need to be tcache-sized. Changing the chunk size of p3 and p4 to a large-bin works perfectly. This is because this malloc_consolidate is hit: https://elixir.bootlin.com/glibc/latest/source/malloc/malloc.c#L4041
Even if tcache was disabled, and it was a small chunk, I'm pretty sure this: https://elixir.bootlin.com/glibc/latest/source/malloc/malloc.c#L4468 would still be hit (and it is what is being hit in the exploit currently).
Even the further text:
        printf("The double free added the chunk referenced by p1 \n");
	printf("to the tcache thus the next similar-size malloc will\n");
	printf("point to p3: p3=%p, p4=%p\n\n",p3, p4);

Is a bit misleading, since the exploit works if p3 gets consolidated with top and doesn't go into the tcache (which is the case when larger malloc values for p3 and p4 are provided).
As a side note:
	void* p1 = calloc(1,0x40);

	printf("Allocate another chunk of the same size p1=%p \n", p1);
  	printf("Freeing p1 will add this chunk to the fastbin list...\n\n");
  	free(p1);

Utilizes a non-obvious mechanic of calloc to not take p1 out of the tcache. It would probably be better to allocate p1 with malloc before the tcache is freed, since its more obvious what is going on.

I can write a PR for cleaning up this file if given the go-ahead

I think the point is malloc_consolidate can allow the same chunk to be taken twice. And the idea of the existing description is to teach readers that freeing tache-sized chunk can also trigger malloc_consolidate. unsortedbin-sized chunk can trigger it is a widely known behavior so the technique forgets to mention that as well. It'd be definitely more complete to mention it.
Notice that when doing free, there is only tcache and unsortedbin (we leave out mmap here). smallbin and largebin are basically sorted unsortedbins.
About the calloc call, I'd say it'd be better if we keep its current implementation but add some explanations for it. As a repo with educational purposes, it should guide readers to try out and understand different new mechanisms.

And please feel free to clean up the file and PRs are welcome