sharjeelyunus/github-issues-dataset huggingface dataset:
Repository: rust
Issue: impl-trait return type is bounded by all input type parameters, even when unnecessary
Labels: A-lifetimes,T-compiler,A-impl-trait,C-bug,WG-async,F-precise_capturing

```
rustc 1.20.0-nightly (f590a44ce 2017-06-27)
binary: rustc
commit-hash: f590a44ce61888c78b9044817d8b798db5cd2ffd
commit-date: 2017-06-27
host: x86_64-pc-windows-msvc
release: 1.20.0-nightly
LLVM version: 4.0
```

```rust
trait Future {}

impl<F> Future for Box<F> where F: Future + ?Sized {}

struct SomeFuture<'a>(&'a Client);
impl<'a> Future for SomeFuture<'a> {}

struct Client;
impl Client {
    fn post<'a, B>(&'a self, _body: &B) -> impl Future + 'a /* (1) */ {
        SomeFuture(self)
    }
}

fn login<'a>(client: &'a Client, username: &str) -> impl Future + 'a {
    client.post(&[username])
}

fn main() {
    let client = Client;
    let _f = {
        let username = "foo".to_string();
        login(&client, &username)
    };
}
```

Since `SomeFuture` borrows `'a Client`, I'd expect `impl Future + 'a` to be the correct return type, but it gives this error:

```
error[E0700]: hidden type for `impl Future + 'a` captures lifetime that does not appear in bounds
  --> src/main.rs:16:5
   |
15 | fn login<'a>(client: &'a Client, username: &str) -> impl Future + 'a {
   |                                            ----     ---------------- opaque type defined here
   |                                            |
   |                                            hidden type `impl Future + 'a` captures the anonymous lifetime defined here
16 |     client.post(&[username])
   |     ^^^^^^^^^^^^^^^^^^^^^^^^
   |
help: add a `use<...>` bound to explicitly capture `'_`
   |
15 | fn login<'a>(client: &'a Client, username: &str) -> impl Future + 'a + use<'a, '_> {
   |                                                                      +++++++++++++

```

- Changing `_body` to have an explicit lifetime like `_body: &'b B` where `'b` is independent of `'a` or where `'a: 'b`  does not change the error. This and the original error make it seem that returning an `impl trait` is somehow causing the `_body` parameter to get the `'a` lifetime, even though it's clearly unused, let alone used in a way that it would require the `'a` lifetime.

- Changing `(1)` from `impl Future + 'a` to `SomeFuture<'a>` fixes it.

- Changing `(1)` from `impl Future + 'a` to `Box<Future + 'a>` and returning `Box::new(SomeFuture(self))` fixes it.
Repository: vscode
Issue: auto indenting issues with C# files
Labels: feature-request,editor-autoindent,c#

testing #29493

![image](https://user-images.githubusercontent.com/1487073/27608238-894db968-5b3b-11e7-8cc8-8b204721c1cf.png)

1. Create a simple C# file that looks like this:

``` c#
using System;

namespace ConsoleApplication
{
    public class Program
    {
        public static void Main(string[] args)
        {
            // Console.WriteLine("Adfasdf");
            // Console.WriteLine("Hello World!");

        }

    }
}
```

2. Install the C# extension if not already installed
3. Put cursor on line 12, the most inner closing curly brace
4. Move line up, above the first comment:

![image](https://user-images.githubusercontent.com/1487073/27608300-c7ead16a-5b3b-11e7-8a33-ef64e72759c9.png)

Result: Closing brace is indented incorrectly (IMO).  

5. Move the line back down to where it was:

![image](https://user-images.githubusercontent.com/1487073/27608485-929f6a24-5b3c-11e7-98bb-213f060ecfcd.png)

Result: the closing brace is not indented properly
Repository: go
Issue: runtime: TestGdbPython* fails on solaris
Labels: Testing,OS-Solaris,NeedsFix,compiler/runtime

On a development build of Solaris, TestGdbPythonCgo fails:

```
$ uname -a
SunOS darwin-sunw 5.12 s12_127 i86pc i386 i86pc
```
```
$ gdb --version
GNU gdb (GDB) 7.12.1
```

```
$ go version
go version devel +33b3cc1568 Tue Jun 27 20:45:38 2017 +0000 solaris/amd64
```

```
$ go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="solaris"
GOOS="solaris"
GOPATH="/builds/srwalker/gocode"
GORACE=""
GOROOT="/builds/srwalker/golang/go-trunk"
GOTOOLDIR="/builds/srwalker/golang/go/pkg/tool/solaris_amd64"
GCCGO="gccgo"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build788895360=/tmp/go-build -gno-record-gcc-switches"
CXX="g++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
```

```
$ go test -v -run TestGdbPythonCgo
=== RUN   TestGdbPythonCgo
--- FAIL: TestGdbPythonCgo (2.51s)
        runtime-gdb_test.go:55: gdb version 7.12
        runtime-gdb_test.go:218: goroutine 1 bt failed: #0  0x00007fffbf25574a in __nanosleep () from /lib/64/libc.so.1
                #1  0x00007fffbf23d8e3 in nanosleep () from /lib/64/libc.so.1
                Backtrace stopped: previous frame inner to this frame (corrupt stack?)
FAIL
exit status 1
FAIL    runtime 2.520s
```

At the moment, it's unclear if this is due to GDB 7.12 or because of something else as all other runtime tests pass.  I intend to investigate and root cause if possible soon.
Repository: go
Issue: runtime: add test for syscall failing to create new OS thread during syscall.Exec
Labels: Testing,NeedsFix

Please answer these questions before submitting your issue. Thanks!

### What version of Go are you using (`go version`)?

`go version go1.8 linux/amd64` (same behavior with 1.8.3)

### What operating system and processor architecture are you using (`go env`)?

```
GOARCH="amd64"          
GOBIN=""                
GOEXE=""                
GOHOSTARCH="amd64"      
GOHOSTOS="linux"        
GOOS="linux"            
GOPATH="/home/jvshahid/codez/gocodez"           
GORACE=""               
GOROOT="/home/jvshahid/.gvm/gos/go1.8"          
GOTOOLDIR="/home/jvshahid/.gvm/gos/go1.8/pkg/tool/linux_amd64"                                  
GCCGO="gccgo"           
CC="gcc"                
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build588313748=/tmp/go-build -gno-record-gcc-switches"
CXX="g++"               
CGO_ENABLED="1"         
PKG_CONFIG="pkg-config" 
CGO_CFLAGS="-g -O2"     
CGO_CPPFLAGS=""         
CGO_CXXFLAGS="-g -O2"   
CGO_FFLAGS="-g -O2"     
CGO_LDFLAGS="-g -O2"    
```

### What did you do?

Run [this app](https://play.golang.org/p/bdTxZynzT4) in a while loop, e.g. `while true; do go run main.go; done`

### What did you expect to see?

```
/path/to/pwd
/path/to/pwd
/path/to/pwd
/path/to/pwd
/path/to/pwd
/path/to/pwd
```

### What did you see instead?

```
runtime: failed to create new OS thread (have 5 already; errno=11)                               
runtime: may need to increase max user processes (ulimit -u)                                     
fatal error: newosproc                                                                           
```

### Kernel version (uname -a)

```
Linux amun 4.4.0-81-generic #104-Ubuntu SMP Wed Jun 14 08:17:06 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
```

There are few issues that were opened in the past with the same error message. The most relevant comment i found in all of them is [this comment](https://github.com/golang/go/issues/13968#issuecomment-171985380) which suggests that this could be a kernel issue and was looking for a way to reproduce the problem. Some interesting notes:

1. setting `GOMAXPROCS` to `1` make the problem hard to reproduce (may be event eliminate it)
2. the go runtime usually gets a chance to run for a while before the process threads are killed. that means that the process will sometime exec successfully and exit 0 and will sometimes exit with non-0 status code after panicing
Repository: vue
Issue: Callback refs as additional alternative to "named" refs
Labels: feature request

### What problem does this feature solve?
Currently if you want to use refs to elements (DOM elements or Vue components - see attribute/prop "ref") you have to provide a string as "ref" attribute. A callback function as "ref" attribute like in React is currently not supported in Vue.
It would be great if also callback functions could be provided as "ref" attributes (especially when doing a bit more advanced stuff using the "render" function).

The callback function should be called both when the referred element is created and also when it is disposed (React for example passes null in the latter case).

It seems that this feature had already been implemented in the past but has been reverted later (I do not know for what reasons the changes have been reverted) => see: "[WIP] Support for ref callback #4807"

Thank you very much.

### What does the proposed API look like?
Please see line 178 here:
https://github.com/vuejs/vue/pull/4807/commits/90c6c2902b1f124093ad0d514984230194cb818e

const myRefCallback(ref, remove) {...} (where "remove" is boolean) seems to me like a better solution that the one that is used in React where in the "remove" case the ref callback function is just called with null.

<!-- generated by vue-issues. DO NOT REMOVE -->
Repository: go
Issue: x/mobile: SIGABRT when trying to call Go functions on Android
Labels: mobile

Please answer these questions before submitting your issue. Thanks!

### What version of Go are you using (`go version`)?
go version go1.8.3 darwin/amd64

### What operating system and processor architecture are you using (`go env`)?
OSX Sierra 10.12.5
GOARCH="amd64"
GOOS="darwin"

### What did you do?
1. Create empty Android project in Android studio.
2. Build hello.aar from mobile examples by
`gomobile bind -target=android golang.org/x/mobile/example/bind/hello`
3. Import hello.aar as a new module into existed Android project.
4. Make golang call from Java code
`hello.Hello.greetings("Test");`
5. Build and run

### What did you expect to see?
Everything works OK.

### What did you see instead?
App is built and run, but it crashes when golang call is happened. 
There's a logcat output:

06-27 13:54:27.849 10901-10930/? A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 10930 (upikin.mygotest)
                                         
[ 06-27 13:54:27.849   160:  160 W/         ]
debuggerd: handling request: pid=10901 uid=10071 gid=10071 tid=10930
06-27 13:54:27.883 10931-10931/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
06-27 13:54:27.883 10931-10931/? A/DEBUG: Build fingerprint: 'google/fugu/fugu:7.1.2/N2G47X/4026974:user/release-keys'
06-27 13:54:27.883 10931-10931/? A/DEBUG: Revision: '0'
06-27 13:54:27.883 10931-10931/? A/DEBUG: ABI: 'x86'
06-27 13:54:27.883 10931-10931/? A/DEBUG: pid: 10901, tid: 10930, name: upikin.mygotest  >>> com.example.dtupikin.mygotest <<<
06-27 13:54:27.883 10931-10931/? A/DEBUG: signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
06-27 13:54:27.883 10931-10931/? A/DEBUG:     eax 00000000  ebx 00002a95  ecx 00002ab2  edx 00000006
06-27 13:54:27.883 10931-10931/? A/DEBUG:     esi d0c47978  edi d0c47920
06-27 13:54:27.883 10931-10931/? A/DEBUG:     xcs 00000023  xds 0000002b  xes 0000002b  xfs 0000006b  xss 0000002b
06-27 13:54:27.883 10931-10931/? A/DEBUG:     eip ffffe430  ebp d0c474e8  esp d0c4748c  flags 00000296
06-27 13:54:27.886 10931-10931/? A/DEBUG: backtrace:
06-27 13:54:27.886 10931-10931/? A/DEBUG:     #00 pc ffffe430  [vdso:ffffe000] (__kernel_vsyscall+16)
06-27 13:54:27.887 10931-10931/? A/DEBUG:     #01 pc 000893dc  /system/lib/libc.so (tgkill+28)
06-27 13:54:27.887 10931-10931/? A/DEBUG:     #02 pc 00084c35  /system/lib/libc.so (pthread_kill+85)
06-27 13:54:27.887 10931-10931/? A/DEBUG:     #03 pc 00036c2a  /system/lib/libc.so (raise+42)
06-27 13:54:27.887 10931-10931/? A/DEBUG:     #04 pc 0002e186  /system/lib/libc.so (abort+86)
06-27 13:54:27.887 10931-10931/? A/DEBUG:     #05 pc 000a42e3  /data/app/com.example.dtupikin.mygotest-2/lib/x86/libgojni.so

I do my tests on Asus Nexus Player (Android TV 7.1.2). 
The issue doesn't happen on Android TV emulator (versions 5,6,7)

Tried to build aar on another PC (Windows 10 x64). The same crash happens.
Repository: TypeScript
Issue: Generic functon doesn't resolve type property  when accept this as  a parameter ?
Labels: Bug

**TypeScript Version:**  2.4.0 

**Code**

```ts
function getValue<T, TK extends keyof T>(obj: T, key: TK): T[TK] {
    return obj[key];
}
class TestClass {
    z: number;

    testtest1(): number {
        return getValue(this as TestClass, 'z') + 1; // ok
    }
    testtest2(): number {
        return getValue(this, 'z') + 1; // error is here
    }
}
```

**Expected behavior:**
No error.
**Actual behavior:**
Getting an error "Operator + cannot be applied to types 'this["z"]' and '1' "
Repository: rust
Issue: Closure arguments are inferred monomorphically
Labels: C-enhancement,A-inference

Without an explicit annotation, closure arguments are inferred to have a concrete lifetime. You must manually annotate the argument in order to satisfy a HRTB.

```rust
#[derive(PartialEq)]
struct Foo;

fn use_a_foo(_: &Fn(&Foo)) {}

fn main() -> () {
    // This doesn't compile
    // let function = |foo_arg| {
    //   assert!(&foo == foo_arg);
    // };
    // explicit_for(&foo, &function);

    // This does
    let function = |foo_arg: &_| {};
    use_a_foo(&function);
}
```
Repository: pytorch
Issue: [feature request] time-distributed layers for application of normal layers to sequence data
Labels: module: nn,triaged

As we move from images to videos, it seems imperative to feed sequential data into common image layers. However, the problem of dealing sequential data with such layers is not clears on Pytorch. I suggest here to devise something like -time-distributed layers for wrapping normal layers and aligning them for sequential inputs and outputs. I think in the course of time, it is going to be a more important pattern to have in Pytorch. Hope, I explain the problem clearly?

Lately, I solved that problem for 1D feat vectors as follows; I wait some comments to generalize it if necessary. 
```python
class TimeDistributed(nn.Module):
    def __init__(self, module):
        super(TimeDistributed, self).__init__()
        self.module = module

    def forward(self, x):
        if len(x.size()) <= 2:
            return self.module(x)
        t, n = x.size(0), x.size(1) 
        # merge batch and seq dimensions
        x_reshape = x.contiguous().view(t * n, x.size(2))
        y = self.module(x_reshape)
        # We have to reshape Y
        y = y.contiguous().view(t, n, y.size()[1])
        return y
```
Repository: pytorch
Issue: Feature Request: ReLU on LSTMs and GRUs
Labels: feature,module: nn,module: rnn,triaged

Hello, I would really like the functionality to use a different activation function on the output of the RNNs. I have found ReLU more useful in classification models because, for instance, tanh output from an LSTM makes it easy for a subsequent softmax-linear layer to produce values near .999. Just throwing the idea out there incase someone wants to include that in an upcoming release.

cc @zou3519
Repository: flutter
Issue: Consider migrating AccessibilityNodeProvider to ExploreByTouchHelper
Labels: platform-android,engine,a: accessibility,P3,team-android,triaged-android

According to the Android Accessibility folks `ExploreByTouchHelper` would be better suitable for our use case as it supposedly already implements much of the logic we need.

https://github.com/flutter/engine/blob/1009e9c0977d266c3af7eea3148f855e34006450/shell/platform/android/io/flutter/view/AccessibilityBridge.java#L26

https://developer.android.com/reference/android/support/v4/widget/ExploreByTouchHelper.html
Repository: opencv
Issue: cv::cudacodec::VideoReaderImpl cannot correctly catch several RTP streams
Labels: bug,priority: low,category: videoio,category: gpu/cuda (contrib)

##### System information (version)

- OpenCV => 3.2
- Operating System / Platform => Ubuntu 16.04, x86_64
- Compiler => gcc-5
- Cuda => 8.0
- NVidia Card => GTX 1070

##### Detailed description

When I try to show videos from multiple IP-cameras in one application, I see that all streams is "broken" like here: http://answers.opencv.org/question/34012/ip-camera-h264-error-while-decoding/. But when I try to show only one video from one camera, all is perfect. All streams from cameras is encoded in H264.

##### Steps to reproduce

```
// C++ Code: video_reader.cpp
#include <iostream>

#include "opencv2/opencv_modules.hpp"
#include <string>
#include <vector>
#include <algorithm>
#include <numeric>
#include <thread>
#include <opencv2/core.hpp>
#include <opencv2/core/opengl.hpp>
#include <opencv2/cudacodec.hpp>
#include <opencv2/highgui.hpp>

struct source
{   
    std::string filename;
    cv::Ptr<cv::cudacodec::VideoReader> d_reader;
    cv::cuda::GpuMat current_frame;
};

int main(int argc, const char* argv[])
{
    if (argc < 2)
        return -1;
    cv::cuda::setGlDevice();
    std::vector<source> src;
    for(uint32_t i=1;i<argc;++i)
    {
        cv::namedWindow(argv[i], cv::WINDOW_OPENGL);
        source s;
        s.filename=argv[i];
        printf("%s\n",s.filename.c_str());
        s.d_reader=cv::cudacodec::createVideoReader(s.filename);
        src.push_back(s);
    }
    for (;;)
    {
        for(auto it : src)
        {
            if (!it.d_reader->nextFrame(it.current_frame))
                break;
            cv::imshow(it.filename, it.current_frame);
            if (cv::waitKey(3) > 0)
                break;
        }
    }
return 0;
}
```

For compile:

$ g++ -std=c++11 video_reader.cpp -lopencv_core -lopencv_cudacodec -lopencv_imgproc -lopencv_imgcodecs -lopencv_highgui -lopencv_videoio -o reader

Example of using:

$ ./reader rtsp://91.5.1.106:554/Streaming/Channels/1/?transportmode=unicast \ rtsp://91.5.1.105:554/Streaming/Channels/1/?transportmode=unicast
Repository: flutter
Issue: Detect incompatible plugin Maven/CocoaPod dependencies
Labels: tool,t: gradle,t: xcode,P2,a: plugins,team-tool,triaged-tool

If a developer is using multiple plugins that depend on mutually incompatible Maven or CocoaPods dependencies, it would be nice to detect this and help them resolve it (ideally automatically, but that would require teaching pub to do dependency resolution across both CocoaPods and Maven, which seems hard or even impossible).

More context: https://stackoverflow.com/questions/44826801/flutter-app-doesnt-build-when-i-add-google-sign-in-or-firebase-dependencies-to
Repository: go
Issue: image: Decode drops interfaces
Labels: NeedsDecision,early-in-cycle

### What version of Go are you using (`go version`)?
1.8

Background: I am trying to register an image decoder for Webm (to make thumbnails).  Commonly the reader passed to `image.Decode()` is an `*os.File` or a `multipart.File`.  

### What did you see instead?
The Reader passed to the decoder function (register with `image.RegisterFormat`) is almost never the same one as was passed to `image.Decode`.  It is wrapped in a `reader` which also implements `Peek` (for looking at the first few bytes without accidentally consuming them.

The problem is that wrapping in this type drops all the other interfaces of the reader, which may be useful to the Decoder.  For example, in my case, the image decoding will be delegated to an executable.  It would be better to pass the file name to the subprocess rather than streaming it over stdin.  The `interface{Name() string}`  interface of `*os.File`, and the `io.ReaderAt` and `io.Seeker` shared by  `*os.File` and `multipart.File` cannot be accessed.

It would be nice if the image package forwarded commonly used methods by optionally implementing them if the source reader did.  For example:

```
type readernamer interface {
  reader
  Name() string
} 
```

which the image package would pass instead.  I realize that would result in 2^n interfaces, but I don't see a way around it without exposing the original reader.

One thing worth noting:  The peeker interface is unnecessary if the input reader implements Seeker.  Peek can be implemented with Read and Seek
Repository: TypeScript
Issue: 2.4: Readonly<Map<k,v>> vs. ReadonlyMap<k,v>
Labels: Bug,Help Wanted,Domain: lib.d.ts

**TypeScript Version:**  2.4.1 

**Code**

```ts
function GenMap() : ReadonlyMap<string, number> {
    const theMap = new Map<string, number>();
    theMap.set("one", 1);
    theMap.set("two", 2);
    return Object.freeze(theMap);
}
```

**Expected behavior:**
Compiles without error in tsc@<2.4.0

**Actual behavior:**
```
TryX.ts(5,5): error TS2322: Type 'Readonly<Map<string, number>>' is not assignable to type 'ReadonlyMap<s
tring, number>'.
  Property '[Symbol.iterator]' is missing in type 'Readonly<Map<string, number>>'.
```
Repository: go
Issue: image/gif: decoding gif returns `frame bounds larger than image bounds` error
Labels: NeedsInvestigation

Please answer these questions before submitting your issue. Thanks!

### What version of Go are you using (`go version`)?
```
go version go1.8.3 darwin/amd64
```

### What operating system and processor architecture are you using (`go env`)?
```
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/montanaflynn/Development/go"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/w7/gd1mgc9n05q_9hrtt2sd75dw0000gn/T/go-build873139005=/tmp/go-build -gno-record-gcc-switches -fno-common"
CXX="clang++"
CGO_ENABLED="1"
PKG_CONFIG="pkg-config"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
```

### What did you do?

Tried to decode [this gif](https://cdn.keycdn.com/img/analytics.gif):

```go
package main

import (
    "flag"
    "fmt"
    "image/gif"
    "net/http"
    "os"
)

func exitIfError(err error) {
    if err == nil {
        return
    }

    fmt.Fprintf(os.Stderr, "%v\n", err)
    os.Exit(1)
}

func main() {
    gifURL := flag.String("url", "https://cdn.keycdn.com/img/analytics.gif", "the URL of the GIF")
    flag.Parse()
    res, err := http.Get(*gifURL)
    exitIfError(err)
    _, err = gif.DecodeAll(res.Body)
    _ = res.Body.Close()
    exitIfError(err)
}

```

### What did you expect to see?

The gif decoding not to return an error. The gif opens up in browsers, ffmpeg and photoshop. 

When using ffmpeg you see this warning log:

```
[gif @ 0x7faca2801000] Image too wide by 1, truncating.
```

### What did you see instead?

```
gif: frame bounds larger than image bounds
```

I found this link which seems related:

https://groups.google.com/forum/#!topic/golang-codereviews/3zxEsAv4IuU
Repository: go
Issue: cmd/compile: generate same code regardless of whether return values are named
Labels: NeedsFix,compiler/runtime

There's an article at the top of Hacker News right now,

https://blog.minio.io/golang-internals-part-2-nice-benefits-of-named-return-values-1e95305c8687
https://news.ycombinator.com/item?id=14668323

... which advocates for naming return values for the benefit of better generated code.

It concludes:

> So we will be gradually adopting named return values more and more, both for new code as well as for existing code.
>
> In fact we are also investigating if we can develop a little utility to help or automate this process.

This is totally counter to:

https://golang.org/s/style#named-result-parameters

... which says that naming result parameters should only be for godoc cleanliness.

We should fix the compiler to generate the same code regardless.

/cc @randall77 @mdempsky @josharian @brtzsnr @cherrymui